计算机操作系统原理主讲人:李东目录第一章操作系统概述第二章用户接口第三章进程管理第四章死锁及其对策第五章处理机管理第六章存储管理第七章I/O系统及设备管理第八章文件系统第九章Linux操作系统第十章操作系统的进一步发展第一章操作系统概述操作系统的概念操作系统的虚拟机观点(P1)操作系统的概念(1)操作系统的资源管理观点(P3)处理机管理存储器管理设备管理文件管理操作系统的用户服务观点(用户接口P3)命令接口图形接口系统功能调用操作系统的概念(2)操作系统的形成过程及解决的主要问题人工操作阶段单道批处理阶段多道程序系统阶段(P4-P7)解决的主要问题资源独占问题串行工作问题人工干预问题多道程序系统是现代OS的一个基本环境多道批处理系统多道分时系统多道实时系统多道程序系统的基础(通道/中断)OS形成/解决的主要问题(1)OS形成/解决的主要问题(2)P6P7操作系统基本类型多道批处理系统(P8)资源利用率高系统吞吐量大无交互能力平均周转时间长分时系统(P9)多路性独立性及时性(响应时间:T=n*q)交互性操作系统基本类型(1)实时系统(实时控制系统/信息处理系统P12)多路性独立性及时性交互性高可靠性(双机系统/多级容错措施)通用操作系统(P13)前面三种基本操作系统的结合批处理系统/分时系统•交互型作业前台作业•批处理型作业后台作业网络操作系统(P13)操作系统基本类型(2)操作系统的特征(P14)并发(并行)共享互斥共享同时访问并发与共享的关系虚拟(分时使用/分时系统)异步性(不可再现性的隐患)操作系统的特征第二章用户接口(作业管理)命令接口(P29)脱机命令接口(P29)联机命令接口(P30)程序接口(系统功能调用P33)图形接口(图形/多媒体/智能接口P35)P35第三章进程管理主要内容(P37)进程概念/进程控制进程同步/进程通信程序的顺序执行并发执行(P38)顺序执行(顺序性/封闭性/可再现性)并发执行(间断性/失去封闭性/不可再现性)图3-1程序的顺序执行Count=?程序的并发执行进程的概念为何要引入进程?(并发性/动态性/异步性)进程的定义(P42)进程是程序的一次执行进程是可以和别的计算并发的计算进程可定义为一个数据结构,及能在其上执行的一个程序进程是一个程序在一个数据集合上的运行过程,它是系统进行资源分配和调度的一个独立(基本)单位进程是一个具有独立功能的程序关于某个数据集合的一次运行活动(1978年全国操作系统会议)进程的概念(1)进程的特征(P42)动态性(有一定的生命期)并发性独立性(运行的基本单位/申请资源的独立单位)异步性(共享资源/协同合作间断性…)结构特征(进程的三要素/PCB描述和控制进程)进程的概念(2)进程的基本状态及其变迁(P43)进程基本状态变迁及原因(P44)状态变迁间的关联进程的概念(3)进程的实现进程的结构(P45)进程控制块PCB程序段数据段PCB的结构(P46)PCB的组织形式(进程队列组织方式P47)链接方式(P47)索引方式(P48)进程的实现(1)进程的实现(2)进程的实现(3)进程控制进程控制机构(P48)进程控制概念OS内核(中断处理程序、常用的设备驱动程序、运行频率较高的模块/紧靠硬件的层次/安全/提高了OS效率)系统态(管态)/用户态(目态)原语进程管理(进程控制/同步/互斥/通信)进程控制原语(P49)进程家族树(P50)进程控制原语(P50)进程控制(1)进程控制(2)进程控制(3)进程控制(4)进程控制(5)进程的互斥与同步进程互斥(P53)进程间由于共享资源而构成的间接制约关系,进程间往往没有直接的逻辑关系。临界资源/临界区(criticalsection)进入区(entrysection)/临界区/退出区(exitsection)进程同步(P55)进程间合作而必须达到的执行速度上相互协调,合作进程间有直接的逻辑关系。这是进程间由于共享资源而构成的直接制约关系。进程所需的资源往往要靠其他与其合作的进程产生。或者说一个进程的执行要依赖另一个进程的消息。进程互斥与同步(1)Count=?进程互斥与同步(2)利用信号量机制解决进程互斥、同步及前趋图问题(P56)记录型信号量机制(P57)进程互斥与同步(3)typedefstructsemaphore{intvalue;PCB*p;}voidP(s)structsemaphores;{s.value=s.value-1;if(s.value0)block(s.p);}//s.value原=0,无资源,阻塞//s.value原0,有资源,获得资源,资源数-1voidV(s)structsemaphores;{s.value=s.value+1;if(s.value=0)wakeup(s.p);}//s.value原0,有阻塞队列,唤醒//s.value原=0,可获资源+1s.value0可获取资源个数s.value=0无资源,无等待s.value0无资源,阻塞队列长度(多余资源与阻塞队列是不共存的)semaphore:信号,旗语利用信号量机制解决进程互斥问题(P58)进程互斥与同步(4)structsemaphoremutex=1;cobeginvoidprocessi(void)(i=1,2,…n){while(TRUE){remaindersection1;P(mutex);criticalsection1;V(mutex);remaindersection2;}}coend利用信号量机制解决进程同步问题(P59)进程互斥与同步(5)structsemaphoreempty,full=1,0;//(SC,SP)numberx,y,buffer;cobeginvoidcp(void){while(TRUE){computenextnumberintox;P(empty);//P(SC);buffer=x;V(full);//V(SP);}}voidpp(void){while(TRUE){P(full);//P(SP);y=buffer;V(empty);//V(SC);printy;}}P:-1V:+1??利用信号量机制解决前趋图问题(P60)进程互斥与同步(6)structsemaphorea,b,c,d,e,f,g,h,i,j=0,0,0,0,0,0,0,0,0,0cobeginvoidP1{…s1;V(a);V(b);V(c);…}voidP2{…P(a);s2;V(d);…}voidP3{…P(b);s3;V(e);V(f);…}voidP4{…P(c);s4;V(g);…}voidP5{…P(d);P(e);s5;V(h);…}voidP6{…P(f);P(g);s6;V(i);…}voidP7{…P(h);P(i);s7;V(j);…}voidP8{…P(j);s8;…}利用信号量机制解决经典进程同步问题生产者-消费者问题(P61)经典进程同步问题(1)structsemaphores1,s2,empty,full=1,1,n,0messagebuffer[n];intin,out=0,0;cobeginvoidproduceri(i=1,2,…k){messagex;while(TRUE){produceanewmessageintox;P(empty);P(s1);buffer[in]=x;in=(in+1)modn;V(s1);V(full);}}voidconsumerj(j=1,2,…m){messagey;while(TRUE){P(full);P(s2);y=buffer[out];out=(out+1)modn;V(s2);V(empty);consumemessagey;}}coend利用信号量机制解决经典进程同步问题生产者-消费者问题(P61)经典进程同步问题(2)structsemaphores,empty,full=1,1,n,0messagebuffer[n];intin,out=0,0;cobeginvoidproduceri(i=1,2,…k){messagex;while(TRUE){produceanewmessageintox;P(empty);P(s);buffer[in]=x;in=(in+1)modn;V(s);V(full);}}voidconsumerj(j=1,2,…m){messagey;while(TRUE){P(full);P(s);y=buffer[out];out=(out+1)modn;V(s);V(empty);consumemessagey;}}coend利用信号量机制解决经典进程同步问题生产者-消费者问题(P61)经典进程同步问题(3)structsemaphores,empty,full=1,1,n,0messagebuffer[n];intin,out=0,0;cobeginvoidproduceri(i=1,2,…k){messagex;while(TRUE){produceanewmessageintox;P(s);P(empty);buffer[in]=x;in=(in+1)modn;V(s);V(full);}}voidconsumerj(j=1,2,…m){messagey;while(TRUE){P(s);P(full);y=buffer[out];out=(out+1)modn;V(s);V(empty);consumemessagey;}}coendIfempty=0?s.value=1哲学家进餐问题(P64)经典进程同步问题(4)structsemaphorechopstick[5]=(1,1,1,1,1);structsemaphorecount=4;//限制为只有4个人可以抢筷子cobegin//防止5个人一起抢可能出现的饥饿问题voidphi(i)(i=0,1,2,3,4)inti;{while(TRUE){think;P(count);P(chopstick[i]);P(chopstick[(i+1)mod5]);eat;V(chopstick[i]);V(chopstick[(i+1)mod5]);V(count);}}coend读者-写者问题(P66)经典进程同步问题(5)structsemaphoremutex,wrt=1,1;intreadcount=0;cobeginvoidreaderi(void)(i=1,2,…k){while(TRUE){P(mutex);if(readcount==0)P(wrt);readcount=readcount+1;V(mutex);performreadoperation;P(mutex);readcount=readcount-1;if(readcount==0)V(wrt);V(mutex);}}voidwriteri(void)(i=1,2,…m){while(TRUE){P(wrt);performwriteoperation;V(wrt);}}coend进程通信进程通信的类型(P67)共享存储器系统(shmget/shmid/shmcat/shmctl/同步机制)消息传递系统•直接通信方式(消息缓冲队列通信方式)•间接通信方式(信箱通信方式/电子邮件系统)管道通信方式(共享文件/互斥/同步/确认对方)进程通信(1)消息传递系统(P68)直接通信方式(消息缓冲)发送原语:Send(receiver,message)接收原语:Reveive(sender,message)Send(A,m1)/Receive(B,m2)/Receive(m2)进程通信(2)