Chapter 1:导论
计算机系统可以大致分为4个部分:硬件,操作系统,系统程序与应用程序,用户
操作系统是配置在计算机硬件上的第一层软件,是对硬件的首次扩充,它位于硬件与其他 软件之间,是所有其他软件运行的基础。
对操作系统的公认的定义:操作系统是一直在计算机上运行的程序(通常称为内核)
操作系统是计算机系统中的一个 系统软件 ,它管理和控制计算机系统中的 硬件和软件资源 。
裸机:没有配置软件的计算机,即计算机硬件 虚拟机:覆盖了软件的机器
最基本的操作系统类型有三种:批处理操作系统,分时操作系统,实时操作系统
批处理系统:单道批处理系统,多道批处理系统
在单处理机系统中,多道程序运行的特点是多道、 宏观上并行 和 微观上串行 。
分时系统:时间片轮转,设置多路卡,(用户能在很短时间内获得响应)人机交互,共享主机,方便用户上机
实时系统:系统能及时响应外部事件的请求,在规定的时间范围内完成对该事件的处理,并控制实时任务协调一致地运行。(响应时间由控制对象决定,可靠性高)
在主机控制下进行的输入/输出操作称为_联机输入输出_操作。(联机批处理,脱机批处理,联机I/O,脱机I/O)
作业是用户在一次解题或一个事务处理过程中要求计算机系统所做的工作集合,包括用户程序、所需的数据及命令等
操作系统的4个基本特征:并发,共享,虚拟,不确定(并发和共享互为存在条件)
计算机系统的两种运行状态:核心态(kernel mode),0,用户态(user mode),1
Chapter2:操作系统结构
用户接口:命令行接口(联机命令接口,脱机命令接口)、批处理接口以及图形用户接口(GUI)
系统调用(system calls):系统调用在运行程序和操作系统之间提供接口
运行程序和操作系统之间的参数传递有3种常用方法:寄存器中的参数传递,参数存在内存的一张表中表地址作为寄存器的参数传递,程序把参数压入栈由操作系统弹出
系统调用的类型:大致可分为5类:进程控制,文件管理,设备管理,信息维护,通信
系统调用与过程调用的区别:系统调用在核心态下运行,子程序在用户态下运行;系统调用通过中断机构进入以实现运行状态的改变,子程序直接调用不涉及运行状态改变
系统结构:
MS-DOS:以最小的空间提供最多的功能。不划分模块,其接口和功能层次没有划分清楚
早起的UNIX:受硬件功能限制,由两个独立的部分组成,系统程序和内核 内核包括了在物理硬件之上,系统调用之下的一切。内核通过系统调用提供文件系统、CPU调度、存储管理和其他操作系统功能
操作系统分层:0层为硬件层,N层(最高层)为用户接口,每层都利用较低层的功能和服务,为较高层隐藏一定的数据结构、操作和硬件的存在
层次结构:给模块赋予了层次顺序使调用关系变得有序,在上下两层不变的基础上可以换掉某层便于移植和扩充,但牺牲一定的灵活性为代价
微内核:微内核通常包括最小的进程和内存管理以及通信功能
微内核特点:降低了开发难度,具有较好的扩展性及可移植性,特别适合大规模开放式的分布系统。但是效率较低
模块结构,将操作系统内核按照功能划分为一个个独立的模块,模块之间相对独立,只能通过事先规定好的接口方式来调用。每个模块实现一个完整独立的功能,所有模块之间相互调用,共同构成一个完整的系统内核。
模块结构特点:效率高,但全局函数使用多造成访问控制困难,结构不清晰可理解性可维护性可移植性差
宏内核:在运行过程中,它是一个独立的进程。模块结构、层次结构的系统内核基本都是宏内核
微内核:大部分内核模块都作为独立的进程,它们之间通过信息通信使模块之间互相提供服务。
Chapter3 进程
进程的顺序执行:程序通常由若干个程序段所组成,它们必须按照某种先后次序来执行,仅当前一个操作执行完后才能执行后继操作
顺序执行的特征:顺序性,封闭性(一旦开始运行结果不受外界影响),可再现性(执行情况相同重复执行获得相同结果)
程序的并发执行:若干程序或程序段同时在系统中运行 并发执行的特性:间断性,失去封闭性(进程共享资源),不可再现性
Bernstein条件:能保证两个程序段并发执行而不会产生与时间有关的错误(全局变量的改变什么的)
R(Si)∩ W(Sj)={ } 这两条保证
R(Sj)∩ W(Si)={ } 两次读之间数据不变
W(Si)∩ W(Sj)={ } 本条保证写操作结果不丢 考虑下面是条语句:
S1:a=x+y S2:b=z+1 S3:c=a-b S4:d=c+1
R(S1)={x,y} R(S2)={z} R(S3)={a,b} W(S1)={a} W(S2)={b} W(S3)={c}
因R(S1)∩ W(S2)∪R(S2)∩ W(S1)∪W(S1)∩W(S2)={ },故S1和S2可以并发执行 。
因R(S2)∩ W(S3)∪R(S3)∩ W(S2)∪W(S3)∩W(S2)={b},故S2和S3不能并发执行 。
并发语句描述:cobegin .....coend
进程:进程是执行中的程序。一个进程包括,代码段,程序计时器和处理机寄存器内容,栈,数据部分 进程的特征:动态性(进程是动态存在和消失的而程序是静态实体),并发性(多个进程实体同时在内存并能在一段时间内同时发生),独立性(进程是独立运行的基本单位),异步性(进程各自以独立的不可预知的速度向前推进),结构性(由很多段组成(程序段,数据段,控制块)) 进程状态:新建,运行,等待,就绪,终止
通常一个进程至少应有以下三种基本状态:就绪状态,执行状态(运行),阻塞状态(等待状态通常是I/O请求)
进程由PCB,程序段,数据段 三部分组成
进程控制块(PCB,process-control-block):每个进程在操作系统内用进程控制块表示。PCB是描述和管理进程的数据结构。它是进程实体的一部分,操作系统通过PCB感知进程的存在,PCB是进程存在的唯一标志。
进程的挂起状态:(由于系统故障,检查,资源内存不足等原因)人为将进程挂起使之处于静止状态。
/*进程调度*/
作业队列:系统中所有进程的集合
就绪队列:内存中就绪并等待执行的所有进程的集合(常用链表实现) 设备队列:等待某I/O设备的进程队列 长程调度(作业调度):选择可以进入就绪队列的进程 短程调度(CPU调度):选择下一个执行并分配CPU
长程调度(作业调度)的频率相对低,长程调度控制了多道
进程可以分为:I/O型进程,和CPU型进程
上下文切换:将CPU切换到另一个进程需要保存当前进程的状态并恢复另一个进程的状态,这个任务称为上下文切换
原语:原语是由若干条机器指令构成的,用以完成特定功能的一段程序,实现对进程的管理和控制。这段程序在执行期间不可分割(原语不允许被中断。不同层次之间的对话的语言称为原语)
种类:创建原语,撤销原语,阻塞原语,唤醒原语,挂起原语,激活原语...
进程创建:通过创建进程系统调用可以创建多个新进程,创建进程称为父进程,被创建进程称为子进程。每个新进程可以再创建新进程,从而形成了进程树。进程树又称为进程图或进程家族树
有的系统中,若父进程终止不允许子进程继续,这种现象称为:级联终止
进程的组织:线性方式,链接方式(链表方式),索引方式
进程通信:进程之间的信息交换
低级进程通信方式:进程互斥与同步交换的信息量较少且效率较低。P、V操作是一种低级进程通信原语
高级进程通信方式:进程之间以较高的效率传送大量数据
高级进程通信方式分为三大类:共享存储器系统,消息传递系统,管道通信系统或共享文件系统
共享存储器系统:相互通信的进程共享某些数据结构或共享存储区
消息传递系统:进程间的数据交换以消息为单位,程序员直接利用系统提供的一组通信命令(原语)来实现通信。
消息传递系统因其实现方式不同可分为:直接通信方式(讲消息直接发在接受进程的消息队列上),间接通信方式(将消息发送到信箱)
管道(共享文件)通信:通过连接读进程和写进程的共享文件来实现读写进程之间通信
缓冲(Buffering) :通信进程交换的信息都驻留在临时队列中,队列实现有三种形式,零容量(发送者必须等待接受者),有限容量(线路满则发送者必须等待),无限容量(发送者无需等待)
管道:使用管道通信时,基本上采用文件系统的原有机制实现。包括创建、打开、关闭、读写等。
管道机制应提供以下三方面的 协调能力:互斥(互斥读写管道),同步(管道空满情况处理),存在(确定对方是否存在)
在单处理机计算机系统中,如果有N个进程(只考虑等待,就绪,运行) 那么
运行状态最多1个,最少0个; 等待状态最多N个,最少0个; 就绪状态最多N-1个,最少0个。