一、基本简介
1.1 VIRTUAL MACHINE
操作系统向用户提供了一个容易理解和使用的”计算机“(虚拟机),用户对这个计算机的操作都将被操作系统转换成对计算机硬件的操作。
应用程序可以通过操作系统向上提供的接口来操作硬件,而不能直接调用操作硬件的接口,操作硬件由操作系统来完成。
1.2 操作系统可以做什么?
-
用户角度
提供良好的用户界面
标准的函数库,供开发人员使用,无需关注硬件
使得编程更加方便并且不容易出错
-
系统角度
资源管理,包含硬件资源(处理器、存储器、设备)、信息资源(文件)
解决申请资源时产生的冲突
阻止错误的产生和对计算机不正当的使用
1.3 操作系统定义
- An operating system acts an intermediary between user of a computer and the computer hardware(作为计算机用户和计算机硬件的中间人)
- The purpose of an operating system is to provide an environment in which a user can execute programs in a convenient and efficient manner(为用户便利、高效地执行程序提供环境)
- An operating system is sofeware that manages the computer hardware(是一个管理计算机硬件地软件)
1.4 操作系统管理哪些构件
- CPU(中央处理单元)
- memory(内存)
- 通过disk controller 管理磁盘
- 通过USB controller管理鼠标、键盘、打印机等USB设备
- graphics adapter(显示适配器=显卡)
所有的管控单元通过总线与内存和CPU相连
二、构件介绍
2.1 磁盘
磁盘由多层盘片和磁头构成,每个盘面都要有磁头,用于读写数据,其中盘片上又细分有磁道、扇区
- 盘片:磁性数据载体,分单面和双面,双面的磁盘上下两面都可以存储数据
- 磁道:能被磁头访问的盘面上的一组同心圆
- 扇区:数据存放的基本单元,一个磁道可以划分多个扇区
- 柱面:所有盘片相同磁道构成的立体面
主引导扇区(BOOT SECTOR)
- 磁盘的0柱面、0磁头、1扇区称为主引导扇区,在这个扇区里面存放着一段代码:主引导记录MBR(Main Boot Record),它用于硬盘启动时将系统控制权转给用于指定的、在分区表中登记了某个操作系统分区
- MBR的内容是在硬盘分区时由分区软件写入该扇区的,MBR不属于任何一个操作系统,不随操作系统的不同的而不同,即使不同,MBR也不会夹带操作系统的性质,具有公共引导的特性。
BOOTSTARP(启动) OF COMPUTER
- 打开电源,CPU将控制权交给BIOS(基本输入输出系统,存放在CMOS中),BIOS是主板上寄存器里面的一段代码
- BIOS运行第一个程序:通电自测试程序
- BIOS确认所有外部设备:硬盘或扩充卡
- BIOS找到磁盘的引导区,将其中的主引导程序bootloader载入内存(主引导程序是一段代码,它可以将OS余下部分装入内存,其中MBR存放了关于操作系统的位值信息)
- 引导操作系统结束,操作系统接管计算机
2.2 存储系统
-
CPU负责将指令从内存读入寄存器,所以程序必须在内存中才能运行
-
内存以字节为存储单位,每个字节都有一个地址与之对应。通过load/store指令即可访问指定地址的内存数据:
load:将内存数据装入寄存器(Register)
store:将寄存器数据写入内存
寄存器、缓存、内存属于易失性存储设备,设备断电后数据就没有了
SSD、磁盘、光盘、磁带属于非易失性设备,只要不损害,数据永久保存
2.3 I/O结构
-
存储器只是众多IO设备的一种,IO设备是计算机体系结构中种类最丰富的设备类型,而且有着很强的扩展性
-
管理IO设备是操作系统非常重要的组成部分,操作系统中有一个专门的IO子系统负责完成这项工作
所有的IO设备由操作系统的驱动程序管理
三、处理器系统
3.1 单处理器系统
-
只有一个CPU,执行通用指令集
-
带有其他专用处理器,为特殊设备服务,如:磁盘、键盘、图形控制器
它们能够执行的指令有限,不处理用户进程
操作系统会向它们发出任务,并监控它们的状态
3.2 多处理器系统
-
有两个或多个紧密通信的CPU,它们共享计算机总线、时钟、内存和外设等
非对称处理(Asymmetric multiprocessing):主CPU执行主要任务,从CPU处理细枝末节的任务
对称处理(Symmetric Multiprocessing):各个CPU相互独立,平等分配任务执行
3.3 集群系统(cloud)
-
该系统由若干个节点(node)通过网络连接在一起,每个节点可以为单处理器或多处理器系统,节点之间是松耦合(loosely coupled)关系。
高可用性(high availability)
高性能计算(high-performance computing)
四、操作系统模式
4.1 单用户单道模式
-
输入500个字符(花费78ms),经CPU处理52ms后,将结果2000个字符存到磁带上(花费20ms),重复进行。每个任务串行处理
CPU利用率=52/(78+52+20)≈35%
4.2 多道程序设计模式
- 操作系统最重要的一点是具有多道程序(multiprogramming)能力
- 单道程序不能让CPU和IO设备始终忙碌,多道程序设计通过安排任务使得CPU总有一个执行任务,从而提供CPU利用率
- 实现的硬件保证:处理器和IO设备具有并行工作能力
分时系统
分时系统将CPU的使用时间划分为多个时间片,CPU给程序分配时间片,时间片使用完之后,由被分配了下一个时间片的程序执行
-
分时系统(time sharing)也称多任务系统(multitasking),是多道程序设计的自然延伸
-
应用多个用户(应用程序)共享同一台计算机
用户只有输入和输出设备
分时系统为每个用户轮流分配等量的CPU时间
用户从发出指令到得到即时结果的时间称为响应时间
五、操作系统提供的服务
对于用户,操作系统提供了三种类型的用户接口:GUI、command line、batch
-
GUI(Graphic User Interface)
图形用户接口,用于可以通过可视化图形界面进行操作(windows桌面)
-
CLI(Command Line Interface)
用户通过命令行来调用操作系统的接口(shell)
-
Batch
包含多条命令的可执行文件,比如windows中的bat文件,linux中的可执行文件
六、系统调用
6.1 系统调用
-
系统调用提供了访问和使用操作系统所提供的服务的接口
- 系统调用的是代码是操作系统级的
- 这个接口通常是面向程序员的
-
API(Application Programming Interface)
指明了参数和返回值的一组函数
- 应用程序APP的开发人员通过API简介访问了系统调用
- Windows API/POSIX API/JAVA API
6.2 双重模式(DUAL MODE)
-
现代计算机系统有个特殊的硬件,用于划分系统的运行状态,至少需要两种单独运行模式:
- 用户模式(user mode):执行用户代码
- 内核模式(kernel mode):执行操作系统代码
-
确保操作系统正确运行
-
实现方式
用一个硬件模式位来表示当前模式:0表示内核模式,1表示用户模式
6.3 运行模式的切换
系统调用在内核模式下执行,应用程序运行在用户模式
例子:调用API函数printf时,运行模式如何切换?
应用程序调用printf函数,系统调用write函数,将文本显示在界面,然后返回,进入用户模式
6.4 实现机制
- 每个系统调用都有一个唯一的数字编号,被称为系统调用号
- 用户代码调用API时,API中会向系统调用接口指明其所要用的系统调用号,操作系统内核中维护了一张索引表,依据这个调用号,可以检索到系统调用代码在内核中的位置
七、题外话
Linux的全称是GNU/Linux,linux只是一个内核,GNU系统和Linux合并后才是今天的Linux。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/153688.html