控制和管理整个计算机系统的硬件与软件资源。合理地组织、调度计算机的工作与资源。为用户和其他软件提供方便接口与环境的程序集合。
特征:并发,共享,虚拟,异步
并发:两个或多个事件在同一时间间隔内发生。使得系统具有处理和调度多个程序同时执行的能力。操作系统的并发是通过分时实现的。注意:并发是指在一个时间段,并行是指在同一个时段。并行是指系统具有同时执行或操作(硬件支持:多流水线或者多处理机)。对于单机处理来说,并行宏观上程序是同时在运行的,微观上程序是交替执行的,多道程序轮流占有CPU,交替执行。
重要考点:单核CPU同一时刻只能执行一个程序,各个程序只能并发地执行。多核CPU同一时刻可以同时执行多个程序,多个程序可以并行地执行。
共享:互斥共享方式。例如打印机、磁带,同一时刻只能供一个进程对资源进行访问。这种资源称作:临界资源或者独占资源。
同时访问方式:一段时间内允许多个进程对资源进行访问。典型代表:磁盘设备,重入码编写的文件。
虚拟:一个物理上的实体变为若干逻辑上的对应物,这种技术被称为虚拟技术。虚拟处理器:采用多道程序并发的方式,让每个终端用户感觉到有多个处理器。时分复用技术。
虚拟存储器:将物理存储变为虚拟存储器,逻辑上扩充存储器用量。空分复用技术。
也可以将一台IO设备虚拟为多台逻辑上的IO设备,并允许每个用户占用一台逻辑上的IO设备。
异步:多道程序走走停停,进程以不可预知的速度向前进。
程序运行:程序运行的过程是执行CPU一条条的机器指令的过程。
操作系统的运行机制:
CPU执行的两种性质程序,操作系统内核程序,用户自编程序。
内核:
时钟管理:操作系统为用户提供标准时间,根据时钟对进程进行管理,实现进程切换。
中断机制:初衷是为了提高多道程序运行环境中的CPU利用率。保护和回复中断线程的信息,转移控制权到相关程序。
原语:处于系统的最底层,最接近硬件。运行具有原子性,只能一气呵成。系统控制的数据结构及处理。
中断与异常:
为了进行核心态和用户态两种状态的切换,引入了中断机制。核心态可以执行用户态无法执行的特权指令。访管指令是在用户态使用,将用户态转换为核心态,所以访管指令不是特权指令。
中断是让操作系统内核夺回CPU使用权的唯一途径。
中断(外中断):来自于CPU指令之外的事件发生。I/O中断:输入输出已经完成。时钟中断:固定时间片已到,让处理机处理。
异常(内中断):源自于CPU执行指令内部的事件。非法操作码,除零,地址越界,算术溢出。陷入指令:用户自行设置,执行陷入后,用户态转换为核心态。异常不能被屏蔽。
系统调用:用户在程序中调用操作系统提供的一些子功能。设备功能:完成设备的请求或者释放,设备启动等功能。文件管理:完成文件的读、写、创建以及删除功能。进程控制:完成进程的创建、撤销、阻塞以及唤醒功能。进程通信:完成进程之间的消息传递和信号传递功能。内存管理:完成内存的分配、回收以及获取作业占有内存区大小及始址等功能。
用户态与内核态:处于内核态时,说明此时正在运行的是内核程序,此时可以执行特权指令。
处于用户态时,说明此时正在执行的时应用程序,此时只能运行非特权指令。
cpu中有一个寄存器叫程序状态字寄存器(psw),其中有个二进制位,1表示内核态,0表示用户态。
别名:内核态=核心态=管态。用户态=目态。
内核态->用户态。执行一条特权指令——修改psw的标志位为用户态,意味着操作系统主动让出CPU使用权。
用户态->内核态。由中断引发,硬件自动完成变态过程,触发中断信号意味着操作系统强行夺回CPU使用权。
大内核:将操作系统的主要功能模块进行集中,从而用以提供高性能的系统服务。优点:各个管理模块间共享信息,能够有效利用相互间的有效特性,有巨大性能优势。缺点:层次交互关系复杂,层次接口难定义,层次间界限模糊。
微内核:计算机体系结构发展,操作系统提供服务越来越多,接口形式越来越复杂。将内核中最基本的功能保留在内核,将不需要在核心态执行的功能转移到用户态执行,降低内核设计的复杂性。优点:有效分离内核与服务、服务与服务、使得它们间的接口更清晰,维护代价大大降低。各部分可以独立的优化和演进。缺点:性能问题,需要频繁的在用户态和内核态之间切换。
进程的概念:
进程是程序一次执行过程。进程是一次程序及其数据在处理机上顺序执行时发生的活动。进程时具有独立功能的程序在一个数据集合上运行的过程,是资源分配和调度的独立单位。是为了更好描述和控制程序的并发执行,实现操作系统的并发性和共享性。
进程控制块PCB:为了更好的描述进程的基本情况和运行状态,进而控制和管理进程。PCB是进程存在的唯一标志。
进程的特征:
动态性、并发性、独立性、异步性、结构性。
动态性:进程具有生命周期,有创建、活动、暂停、终止等过程。
并发性:多个进程同时存在于内存中,使得程序与程序之间可以并发执行。
独立性:进程能独立获得资源和接受调度。
异步性:进程相互制约,以不可预知的速度向前推进。操作系统中配置有相应的进程同步机制。
结构性:每个进程都配置一个PCB用于描述。
状态:创建态、就绪态、运行态、阻塞态、结束态。
创建态:进程正在被创建,尚未进入就绪态。
就绪态:进程已处于准备运行状态。
运行态:进程在处理机上运行。
阻塞态:又称等待态,进程正在等待某个时间而暂停运行。
结束态:进程正在从系统中消失(正常结束或异常终止)
相互转换:
就绪态->运行态:处于就绪态的进程获得处理机进入运行态。
运行态->就绪态:处于运行态的进程时间片用完后,让出处理机进入就绪态。
运行态->阻塞态:进程请求除处理机外的其他资源,此时运行态进入阻塞态。
阻塞态->就绪态:进程获得所等待的资源,如IO资源,或中断结束。
进程的创建:
分配进程标识号,申请PCB(PCB有限)。为进程分配资源,为程序和数据以及用户栈分配必要的内存空间。初始化PCB,包括初始化标志信息、初始化处理机状态信息、初始化处理机控制信息、设置进程的优先级。若进程就绪队列可以接纳新进程,进程就进入就绪态。
进程的终止:
结束分类:正常结束:进程的任务已经完成并且准备退出运行。异常结束:进程正在运行,出现了某些异常事件,导致程序无法继续运行。外界干预:进程应外界请求终止运行。
结束过程:根据被终止进程的标识符,检索PCB,读取进程状态。若进程处于运行态,终止运行,剥夺处理机。终止进程之下的子进程。该进程拥有的全部资源还给父进程或者操作系统。将PCB从队列中删除。
进程的阻塞和唤醒:
阻塞原语执行过程:找到要被阻塞进程标识号对应的PCB。若该进程处于运行态,保护其现场,将其状态转换为阻塞态,停止运行。将PCB插入相应时间的等待队列。
唤醒原语的执行过程:找到等待队列中进程相应的PCB。将其从等待队列中移除,置其状态为就绪态。将PCB插入就绪队列,等待调度程序调度。
进程切换:
进程切换是在内核态下完成的。
过程:保存处理机上下文,包括程序计数器和其它寄存器。更新PCB信息。把进程的PCB移入相应的队列,如就绪、阻塞等队列。选择另一个进程执行,更新其PCB。更新内存管理的数据结构。恢复处理机上下文。
进程的组织:
进程是一个独立的运行单位,也是操作系统进行资源分配和调度的基本单位,由以下三部分组成:
进程控制块:
进程描述信息:进程标识符:标志进程。用户标识符:标识进程归属的用户,主要为了共享和保护服务。
进程控制和管理信息:进程当前状态:描述进程状态信息。进程优先级:描述进程抢占处理机的优先级。代码运行入口地址。程序外存地址。进入内存时间。处理机占用时间。信号量使用。
资源分配清单:
用以说明有关内存地址空间或者虚拟地址空间状况,所打开的文件的列表和所使用的输入/输出设备信息。代码段指针、数据段指针、堆栈段指针、文件描述符、键盘、鼠标。
处理机相关信息:
处理机中各寄存器的值。通用寄存器,地址寄存器,控制寄存器,标志寄存器值,状态字。
程序段:能被进程调度程序调度到CPU执行的程序代码段。
数据段:进程对应的程序加工处理的原始数据或者程序执行时产生的中间或最终结果。
进程的组织方式:
链接方式:按照进程状态将PCB分为多个队列,操作系统由指向各个队列的指针。
索引方式:根据进程状态不同,建立几张索引表。操作系统持有指向各个索引表的指针。
共享存储:通信进程之间存在一块可以被直接访问的共享空间。
低级方式:基于数据结构共享。
高级方式:基于存储区共享。
消息传递:进程间的数据交换是已格式化的消息为单位的,进程通过系统提供的发送消息和接收消息的两个原语进行数据交换。
直接通信方式:发送进程直接发消息给接收进程,并将它挂在接收进程的消息缓冲队列上,接收进程从消息缓冲队列中取得消息。
间接通信方式:发送进程把消息发给某个中间实体,接收进程从中间实体获得消息。
通道通信:发送进程以字符流形式将大量数据送入写管道,接收进程从管道中接收数据。当管道写满时,写进程的write()系统调用将被阻塞,等待读进程将数据取走。当读进程将数据全部取走后,管道变空,此时读进程的read()系统调用将被阻塞。
通道通信是半双工通信,不可以同时读和写。要求互斥和同步,确定对方存在。
线程的基本概念:
减少程序在并发执行时付出的时空开销,提高操作系统的并发性能。
引入线程后,进程只作为系统资源的分配单元,线程作为处理机的分配单元。
线程与进程的比较:
调度:进程是独立调度的基本单位,线程是资源的基本单位。不同线程切换回引起进程切换。
拥有资源:进程是资源分配的基本单位。
并发性:引入线程后,进程可以并发执行,多个线程间也可以并发执行,提高系统吞吐量。
系统开销:同一进程的线程切换要比进程切换开销小。
地址空间和其它资源:进程的地址空间相互独立,同一进程的各线程之间共享进程资源,某进程的线程对其它进程不可见。
通信方面:进程间通信需要进程同步和互斥手段的辅助,保证数据的一致性。线程间可以直接读/写进程程序段来通信。
线程属性:不拥有系统资源,拥有唯一标识符和线程控制块。不同线程可以执行相同的程序,同一服务程序被不同用户调用时,操作系统为其创建不同线程。同一进程的线程共享该进程全部资源。线程时处理机的独立调度单位。线程也有生命周期,如阻塞、就绪、、运行等状态。多CPU计算机中,各个线程可占用不同的CPU。每个线程都有一个线程ID、线程控制块(TCB)。切换同进程中的线程开销小,切换进程开销大。由于共享内存地址空间,同一进程中的线程间通信甚至无需系统干预。
(持续更新中...)