操作系统是控制和管理整个计算机系统的硬件与软件资源,合理地组织、调度计算机的工作与资源的分配,进而为用户和其他软件提供方便接口与环境的程序集合。操作系统是计算机系统中最基本的系统软件。
并发、共享、虚拟、异步。其中并发和共享是操作系统两个最基本的特征,二者互为存在条件。
1.并发
两个或多个事件在同一时间间隔内发生。这些事件宏观上是同时发生的,但微观上是交替发生的。操作系统的并发性是指计算机系统中同时存在多个运行的程序,因此它具有处理和调度多个程序同时执行的能力。
2.共享
系统中的资源可供多个并发执行的进程使用
(1)互斥共享方式
在一段时间内只允许一个进程访问该资源
(2)同时访问方式
系统中的某些资源,允许一个时间段内,由多个进程“同时”对他们进行访问(宏观上同时,微观上交替)
3.虚拟
把一个物理上的实体变为若干逻辑上的的对应物
4.异步
多道程序环境允许多个程序并发执行,但由于资源有限,进程的执行并不是一贯到底的,而是走走停停的,它以不可预知的速度向前推进(争抢资源时不一定谁停下来等待)
1.操作系统的功能
处理机管理、存储器管理、文件管理、设备管理
2.向上层提供方便易用的服务/接口
(1)直接给用户使用的:GUI、命令接口
(2)给软件/程序员使用的:程序接口
程序接口由一组系统调用组成,编程人员可以使用它们来请求操作系统服务。如:C语言输出hello world时printf函数的底层使用了操作系统提供的显示相关的系统调用。
程序员通过在纸带上打孔的方式运行程序,手工操作时间过长,人机速度矛盾导致效率极低。
1.单道批处理系统
系统对作业的处理是成批进行的,但内存中始终保持一道作业。
程序员将程序放到纸带机上,由外围机将程序放到磁带上,计算机通过磁带读取程序,由监督程序负责自动从磁带中输入输出数据。


2.多道批处理系统
多道程序设计技术允许多个程序同时进入内存并允许它们在CPU中交替地运行,这些程序共享系统中的各种软/硬件资源。
特点:多道、宏观上并行、微观上串行
优点:资源利用率高,系统吞吐量大
缺点:用户响应时间较长,不提供人机交互能力
把处理器的运行时间分成很短的时间片,按时间片轮流把处理器分配给各联机作业使用。若某个作业在分配给它的时间片内不能完成其计算,则该作业暂时停止运行,把处理器让给其他作业使用,等待下一轮再继续执行。由于计算机速度很快,作业运行轮转得也很快,因此给每个用户的感觉就像是自己独占一台计算机。
特点:同时性、交互性、独立性、及时性
①同时性:允许多个终端用户同时使用一台计算机
②交互性:用户能够方便的与系统进行人机对话,从而直接控制程序运行
③独立性:系统中多个用户可以彼此独立地进行操作,互不干扰
④及时性:用户请求能在很短时间内获得响应
缺点:不能优先处理紧急任务,完全公平。因此诞生了实时操作系统
在实时操作系统的控制下,计算机系统接收到外部信号后及时进行处理,并且要在严格的时限内处理完事件。
特点:及时性、可靠性
分类:硬实时系统(必须在绝对严格的规定时间内完成处理,eg.火箭发射)、软实时系统(能接受偶尔违反时间规定,eg.12306)

操作系统内核作为“管理者”,可能会让CPU执行一些特权指令,不正确使用特权指令可能影响其他程序正常运行,为了让CPU知道此时正在执行的指令是应用程序的指令还是内核程序的指令,引出了内核态和用户态,并通过PSW(程序状态字寄存器)中的某个二进制位确定当前状态
(1)内核态:正在运行的是内核程序,此时可以执行特权指令
(2)用户态:正在运行的是应用程序,此时只能执行非特权指令
(3)转化
①内核态→用户态:执行一条特权指令,修改PSW的标志位为“用户态”,这个动作意味着操作系统将主动让出CPU使用权
②用户态→内核态:由“中断”引发,硬件自动完成CPU状态转换过程,触发中断信号意味着操作系统将强行夺回CPU使用权
中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。
中断处理的过程:关中断→保存断点→中断服务程序寻址→保存现场和屏蔽字→开中断→执行中断服务程序→关中断→恢复现场和屏蔽字→开中断、中断返回

(1)内中断/异常
与当前执行的指令有关,中断信号来源于CPU内部
①故障。由错误条件引起的,可能被内核程序修复。内核程序修复故障后会把CPU使用权还给应用程序,让它继续执行下去。如:缺页故障。
②终止。由致命错误引起,内核程序无法修复该错误,因此一般不再将CPU使用权还给引发终止的应用程序,而是直接终止该应用程序。如:参数非法(整数除0)、非法使用特权指令(试图在用户态下执行特权指令。在用户态发现特权指令,触发中断信号,拒绝执行该指令,并转变为内核态,执行处理中断信号相关的内核程序)
③陷入指令/trap指令/访管指令。陷入指令不是特权指令。应用程序想请求操作系统内核的服务,此时会执行一条特殊的指令陷入指令,该指令会引发一个内部中断信号,CPU转向中断信号相应的处理程序进行处理。执行“陷入指令”,意味着应用程序主动地将CPU控制权还给操作系统内核。 系统调用是通过陷入指令完成的。
(2)外中断
与当前执行的指令无关,中断信号来源于CPU外部
①时钟中断。时钟部件每隔一段时间给CPU发一个中断信号,通过时钟中断信号实现多道程序并发运行。
②I/O中断。由输入/输出设备发来的中断信号
CPU在执行指令时会检查是否有异常(内中断)发生,CPU在每个指令结束的时候都会检查是否有外中断信号。不同的中断信号,需要用不同的中断处理程序来处理。当CPU检测到中断信号后,会根据中断信号的类型去查询“中断向量表”,以此来找到相应的中断处理程序在内存中的存放位置。

系统调用是操作系统的一部分,是内核为用户提供的程序接口,运行在内核空间中。系统调用是通过陷入指令完成的。
系统调用的过程:传递系统调用参数→执行陷入指令(用户态)→执行相应的请求内核程序处理系统调用(核心态)→返回应用程序





①CPU从一个特定主存地址开始,取指令,执行ROM中的引导程序(先进行硬件自检,再开机)
②将磁盘的第一块主引导记录读入内存,执行磁盘引导程序,扫描分区表
③从活动分区(又称主分区,即安装了操作系统的分区)读入分区引导记录,执行其中的程序
④从根目录下找到完整的操作系统初始化程序(即启动管理器)并执行,完成“开机”的一系列动作

虚拟机:使用虚拟化技术,将一台物理机器虚拟化为多台虚拟机器(Virtual Machine,VM),每个虚拟机器都可以独立运行一个操作系统。

