第一章操作系统引论1.1操作系统的目标与作用操作系统的目标:①方便性②有效性:有效性包含的第一层含义是提高系统资源的利用率,第二层含义是,提高系统吞吐量③可扩充性④开放性用户实现与操作系统通信的三种方式:①命令方式②系统调用③图标——窗口操作系统会管理处理机、存储器、I/O设备以及文件,处理机管理是应用于分配和控制处理机;存储器管理主要负责内存的分配与回收;I/O设备管理是负责I/O设备的分配与操纵;文件管理是用于实现对文件的存取、共享和保护。
1.2几种操作系统①单道批处理系统,内存中只允许存放一个作业,当前正在运行的作业驻留内存,执行顺序是先进先出。
在单道批处理系统中,一个作业单独进入内存并独占系统资源,直到运行结束后下一个作业才能进入内存,当进行输入操作时,cpu 处于等待状态。
单道批处理系统的缺点是系统中的资源得不到充分的利用。
②多道批处理系统,用户所提交的作业先存放在外存上,并排成一个队列成为“后备队列”。
然后由作业调度程序按一定的算法,从后备队列中选择若干个作业调入内存,使它们共享cpu和系统中各种资源。
多道批处理系统的优点有:1.资源利用率高2.系统吞吐量大缺点有:1.平均周转时间长2.无交互能力③分时系统,是指一台主机上连接多个带有显示器和键盘的终端,同事允许多个用户通过主机的终端,以交互方式使用计算机,共享主机中的资源。
分时系统的特性为:1.多路性2.独立性3.及时性4.交互性④实时系统,是指计算的正确性不仅取决于程序的逻辑正确性,也取决于结果产生的时间。
实时系统的特征有:1.多路性2.独立性3.及时性4.交互性5.可靠性1.3操作系统的基本特征①并发,是指一个时间段中有几个进程都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,担任一个时刻点上只有一个进程在处理机上运行。
这里要和并行加以区分,并行是两个或多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔内发生。
进程,是指在做系统中能独立运行并作为资源分配的基本单位②共享,是指系统中的资源可供内存这中多个并发执行的进程共同使用。
由于资源的属性不同,所以多个进程对资源的共享方式也不同,可以分为互斥共享和同时访问。
③虚拟,是指通过技术(spooling技术)把一个物理实体变成若干个逻辑上的对应物。
④异步,是指进程以人们不可预知的速度向前推进(和线程的异步性类似)1.4操作系统的主要功能处理机管理功能:1.进程控制2.进程同步3.进程通信4.调度(作业调度,进程调度)存储器管理功能:1.内存分配2.内存保护3.地址映射4.内存扩充设备管理功能:1.缓冲管理2.设备分配3.设备处理文件管理功能:1.文件存储空间管理2.目录管理3.文件读写管理与保护许可 I/O 完成 进程调度时间片完 I/O 请求 释放第二章 进程的描述和控制2.1前趋图和程序的执行前趋图的画法(略)①程序顺序执行时特征:1.顺序性:指处理机严格按照程序所规定的顺序执行,即每一操作必须在下一个操作开始之前结束;2.封闭性:在程序在封闭的环境下运行,即程序运行时独占全机资源,资源的状态只有本程序才能改变它,程序一旦开始执行,其中执行结果不受外界因素影响;3.可再现性:这种只要称必须执行时的环境和初始条件相同,当程序重复执行时,不论它是从头到尾不停顿地执行,还是”走走停停”地执行,都可获得相同的结果。
②程序并发执行时的特征:1.间断性2.失去封闭性3.不可再现性2.2进程的描述进程的定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。
它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。
进程的特征:①动态性;②并发性;③独立性;④异步性。
进程的三种基本状态:①就绪态ready ;②执行态running ;③阻塞态block 三种基本状态的转换:进程控制块pcb 的作用:① 作为独立运行基本单位的标志;② 能实现间断性与运行方式;③ 提供进程管理所需要的信息;④ 提供进程调度所需要的信息;⑤ 实现与其他进程的同步与通信;进程控制块中的信息:② 进程标识符(外部标识符,内部标识符);②处理机状态(通用寄存器,指令寄存器,程序状态字psw ,用户栈指创建 就绪 阻塞 执行 终止针);③进程调度信息(进程状态,进程优先级,其他信息,事件);④进程控制信息(程序和数据的地址,进程同步和通信机制,资源清单,链接指针);进程控制块的组织方式:①线性方式;②链接方式;③索引方式;2.3进程控制OS内核的作用:①保护内核中的程序,防止其遭受其他应用的破坏;②提高OS的运行效率;处理机的执行状态:①系统态(管态):具有较高的特权,能执行一切的指令,访问所有的寄存器和存储区,传统的OS都在系统态与运行;②用户态(目态):具有较低的特权的执行状态,仅能执行规定的指令,访问指定的寄存器和存储区;原语:由若干条指令组成的,用于完成一定功能的过程。
原语的操作称为原子操作,一个原子操作中的所有动作要么全做,要么全不做(类似于)2.4进程同步临界资源:一次仅允许一个进程使用的共享资源;临界区:每个进程访问临界资源的那段代码。
每次只允许一个进程进入临界区,进入后不允许其他进程进入;同步机制应遵循的规则:①空闲让进;②忙则等待;③有限等待;④让权等待;信号量机制①整型信号量:信号量S是一个整数,S大于等于零是代表可供并发进程使用的资源实体数,当S小于零时则表示正在等待使用临界区的进程数,它仅能被两个原子操作来访问,分别是wait(S)和signal(S),它们被称为P、V原语,它们的代码如下:wait(S){ signal(S){while(S<=0) S++;; }S--;}②记录型信号量:记录型信号量是在整型信号量的基础上,添加一个进程链表指针list,用于链接所有等待进程,它所包含的数据项可描述如下:typedef struct{int value;struct process_control_block *list;}semaphore;相应的,wait(S)和signal(S)的代码如下:wait(semaphore *S){ signal(semaphore *S){S->value--; S->value++;if(S-->value<0) if(S->value<=0)block(S->list); wakeup(S->list);} }③AND型信号量:将进程在整个运行过程中需要要的所有资源,一次性全部地分配给进程,带进程使用完后再一起释放。
只要尚有一个资源未能分配给进程,其它所有可能为之分配的资源也不分配给它。
就是在wait操作中增加了一个“AND”条件,故称为AND同步。
两个操作的代码如下:Swait(S1,S2,...,Sn){while(TRUE){if(Si>=1&&...&&Sn>=1){for(i=1;i<=n;i++)Si--;break;}else{place the process in the waiting queue associated with the first Si found withSi<1,and set the program count of this process to the beginning of Swait operation}}}Ssignal(S1,S2,...,Sn){while(TRUE){for(i=1;i<=n;i++){Si++;Remove all the process waiting in the queue associated with Si into the ready queue}}}④信号量集:对进程所申请的所有资源以及每类资源不同的资源需求量,在一次P、V原语操作中完成申请和释放。
进程对信号量Si的测试值不再是1,而是该资源的分配下限值ti,即要求Si>=ti,否则不予分配。
一旦允许分配,进程对该资源的需求值为di,即表示资源占用量,进行Si=Si-di操作,而不是简单的Si=Si-1。
由此形成一般化信号量机制。
对应的Swait和Ssignal代码如下:Swait(S1,t1,d1,......,Sn,tn,dn);Ssignal(S1,d1,......,Sn,dn);信号量的应用:①利用信号量实现进程互斥;②利用信号量实现前趋关系;管程:系统中的各个硬件资源和软件资源均可以用数据结构抽象地描述其资源特性,即用少量信息和对该资源所执行的操作来表征该资源,而忽略它们的内部结构和实现细节。
利用共享数据结构抽象地表示系统中的共享资源,而把对该共享数据结构实施的操作定义为一组过程。
代表共享资源的数据结构,以及由对该数据结构实施操作的一组过程做组成的资源管理程序,共同构成了一个操守做系统的资源管理模块,我们称之为管程。
wait():挂起调用进程并释放管程,直至另一进程正在条件变量上执行signal()signal():如果有其他他的进程因对条件变量执行wait()而被挂起,便释放之。
如果没有进程等待,这信号被忽略,不保存。
管程的语法描述如下:Monitor monitor_name{ //管程名share variable declarations; //共享变量说明cond declaration; //条件变量说明public: //能被进程调用的过程void P1(......) //对数据结构操作的过程{......}void P2(......){.......}......{ //管程主体initialization code; //初始化代码......}}管程的特性:①模块化②抽象数据类型③信息掩蔽管程和进程的不同:①虽然二者都定义了数据结构,但进程定义的是私有数据结构PCB,过程定义的是公共数据结构;②二者都存在对各自数据结构上的操作,但进程是由顺序程序执行有关操作,而管程主要是进行同步操作和初始化操作;③设置进程的目的在于实现系统的并发性,而管程的设置则是解决共享紫云园的互斥使用问题;④进程通过调用管程中的过程对共享数据结构实行操作,该过程就如通常的子程序一样被调用,因而管程为被动工作方式,进程则为主动工作方式;⑤进程之间能并发执行,而管程择不能与其调用者并发;⑥进程具有动态性,由“创建”而诞生,由“撤销”而消亡,而管程则是操作系统中的一个资源管理模块,工进程调用;2.5经典进程同步问题生产者——消费者问题利用记录型信号量利用AND型信号量利用管程哲学家进餐问题利用记录型信号量利用AND型信号量读者——写者问题利用记录型信号量利用信号量集机制2.6进程通信进程通信的类型①共享存储器系统1.基于共享数据结构的通信方式:要求进程公用某些数据结构,借意义实现进程间的信息交换2.机遇与共享存储区的通信方式:为了传输大量数据,在内存中话术了一块共享存储区域,进程可以通过对该共享区的读或写交换信息,实现通信。