操作系统原理20110905

上传人:mg****85 文档编号:50734430 上传时间:2018-08-10 格式:PPT 页数:66 大小:2.02MB
返回 下载 相关 举报
操作系统原理20110905_第1页
第1页 / 共66页
操作系统原理20110905_第2页
第2页 / 共66页
操作系统原理20110905_第3页
第3页 / 共66页
操作系统原理20110905_第4页
第4页 / 共66页
操作系统原理20110905_第5页
第5页 / 共66页
点击查看更多>>
资源描述

《操作系统原理20110905》由会员分享,可在线阅读,更多相关《操作系统原理20110905(66页珍藏版)》请在金锄头文库上搜索。

1、Operating System Principlesl 操作系统概述l 进程管理l 存储管理l 文件系统与I/O1第一部分第一部分 操作系统概述操作系统概述一、操作系统的功能一、操作系统的功能 实现对计算机资源的管理实现对计算机资源的管理 (CPU, (CPU, 存储器,存储器,I/OI/O设备)设备) 控制应用程序的执行控制应用程序的执行 提供应用程序访问计算机资源的接口(系统调用)提供应用程序访问计算机资源的接口(系统调用) 实现对操作系统内核及应用程序的保护实现对操作系统内核及应用程序的保护操作系统给计算机一个灵活的大脑、 一个强健的心脏和突出的个性 2二、二、OSOS的分类的分类l

2、l 批系统批系统 (batch systembatch system)成批提交作业,作业完成或无法继续执行时发生切换成批提交作业,作业完成或无法继续执行时发生切换 l l 交互(分时)系统(交互(分时)系统(interactive, Time-sharing system)interactive, Time-sharing system)多个用户(应用程序)分享计算机资源多个用户(应用程序)分享计算机资源 Windows, Linux, Windows, Linux, l l 实时系统(实时系统(Real-time systemReal-time system)满足应用的时间约束要求满足应用的

3、时间约束要求 VxWorksVxWorks, QNX, , QNX, 3三、操作系统的体系结构三、操作系统的体系结构 单内核结构(单内核结构( Monolithic, macro-kernelMonolithic, macro-kernel)与微内核结构)与微内核结构 (micro-kernelmicro-kernel)孰优?4Monolithic vs. micro-kernelq(quoting Linus Torvalds):. message passing as the fundamental operation of the OS is just an exercise in co

4、mputer science masturbation. It may feel good, but you dont actually get anything DONE.qMonolithic:内核中所有的子系统运行在相同的特 权级(privileged mode),拥有相同的地址空间,通信 采用常规C函数调用的形式。5四、操作系统的硬件支持四、操作系统的硬件支持 特权级(区分特权级(区分OSOS与应用程序的权限)与应用程序的权限) MMUMMU CacheCache 中断中断6五、系统调用五、系统调用 操作系统提供给应用程序的一个接口,使得应用程序能够获得操作系统提供给应用程序的一个接口

5、,使得应用程序能够获得 操作系统的服务操作系统的服务 进程管理、文件管理、存储管理、系统管理等进程管理、文件管理、存储管理、系统管理等系统调用是一个复杂的 过程系统调用往往通过软中 断的方式实现系统调用在为应用程序 提供操作系统服务的同 时,也实现了对计算机 资源和应用程序的保护7第二部分第二部分 进程管理进程管理一一、进程、进程nProcess - a program in executiontext section, data section, stack, current activity n进程是资源拥有的基本单位(unit of resource ownership)nCPU、存储空

6、间,及其他资源(I/O设备、文件等)进程控制块(PCB)及其管理进程的状态:running,ready,blocked,stopped,zombie8二、线程(thread)qThread an execution path in a processqThread the unit of dispatching进程中的线程共享进程资源,但拥有私有堆栈及线程 控制块(TCB,存储寄存器值、优先级及其他线程状态信息)q核心级线级线 程(KLT:kernel-level thread)应应用程序通过过API调调用核心线线程管理例程(kernel thread facility)来管理:需要进进行模式

7、切换换是OS调调度的基本单单位线线程阻塞不会导导致整个进进程的阻塞在多处处理器环环境下,内核可使线线程在不同的处处理器 上运行E.g. windows thread9q用户级线户级线 程(ULT:user-level thread)由应应用程序自己通过线过线 程库库(thread library) 来管理:线线程创创建、终终止、线线程间间通信,线线程调调 度与切换换OS感知不到ULT的存在线线程阻塞会导导致整个进进程的阻塞理论论上讲讲,在任何OS下都可以实现实现无法利用多处处理器1011#include #include int sum; void *runner(void *param);

8、main(int argc, char *argv) pthread_t tid;pthread_attr_t attr;pthread_attr_init( /初始化线程属性为缺省属性pthread_create( /创建线程pthread_join(tid,NULL); /等待线程tid结束printf(“sum=%dn”,sum); void *runner(void *param) int upper=atoi(param);int i;sum = 0;if (upper 0)for ( i = 1; i i) while (flag j ) ;turn := i ; flag i =

9、 false; while (1);q此算法正确吗?16Peterson算法:算法直观观,只能解决二个进进 程同步P0:do flag0:=true; /希望进入turn := 1; /给对 方一次机会while flag1 and turn = 1 donothing; /如果对方先申请则 等待flag0:= false; while (1)172. 利用硬件支持中断屏蔽(interrupt disable)代价大,无法做到程序的交叉执执行(interleave)多处处理环环境下无法实现实现特殊机器指令Test and Set InstructionExchange Instruction优

10、优点:适合多处处理器环环境、简单简单缺点:必须须忙等待(busy waiting)、可能导导致饥饿饥饿183. 信号量(semaphore,无忙等待)qOS提供的装置,用于进进行进进程/线线程的同步与互斥q数据结结构(s)count:integer;=0表示可用资资源数,0,其绝对值绝对值 表示挂 起进进程数,初始化非负负queue:list of process;正在等待该类资该类资 源的进进程q进程只能通过OS提供的wait和signal两个操作原语语访问信号量Wait(s):等待资资源s.count = s.count 1;if s.count 0 then beginplace thi

11、s process in s.queue;block this process;end;Signal(s):释释放资资源s.count = s.count +1;if s.count =0 then beginremove a process P from s.queue;place process P on ready list;end;19信号量full,初始化为为0,表示缓缓冲区中可消费费的资资源数mutex,初始化为为1,用于对缓对缓 冲区的互斥操作empty, 初始化为缓为缓 冲区的长长度N,表示缓缓冲区中空闲单闲单 元 数 Producer:repeatproduce; wait(

12、empty);wait(mutex); append; signal(mutex) ;signal(full);forever Consumer:repeatwait(full); wait(mutex); take; signal(mutex);signal(empty);consumeforever利用信号量解决CS问题实例:生产者/消费者问题20例:有n个进程(P1,P2,Pn)向容量为M的缓冲区写数据,每个进程 一次写1个数据,当缓冲区写满时,另一个读进程Pr一次将M个数据全部读完 ,如此反复。请用信号量解决这些进程的同步互斥问题。 答:本题中需要定义下述变量和信号量: data_ty

13、pe bufferM; /* data_type对应于所需要的数据类型,如int、float等 */ int in=0; /* 用来指示下一个可存放数据的缓冲区 */ semaphore empty=M; /* 对应空闲的缓冲区 */ semaphore full=0; /* 对应缓冲区中的数据 */ semaphore mutex=1; /* 用来实现Pi进程对变量in的互斥访问 */ 进程Pi可描述为: Pi()while(1)wait(empty); wait(mutex); 向缓冲区bufferin中写数据;in=(in+1)%M; signal(mutex); signal(full

14、); 进程Pr可描述为: Pr()int i;while(1)for(i=0;iM;i+) wait(full); wait(mutex);取出缓冲buffer0到bufferM-1中的数据;signal(mutex);for(i=0;iM;i+) signal(empty); 21例:有一个仓库 ,可以存放A和B两种产品,但要求: (1)每次只能存入一种产品(A或B); (2)-NA产品数量-B产品数量M。 其中,N和M是正整数。试用信号量来同步产品A与产品B的入库过 程。 答:本题中,首先需要设置一个初值为 1的互斥信号量mutex,以保证每次 只存入一种产品。另外,为了保证“-NA产品数

15、量-B产品数量M”,还需设置 信号量SA,表示仓库 中目前可再存放的A产品的数量,其初值为 M-1;SB,表 示目前还可再存放的B产品的数量,其初值为 N-1。 A产品入库的过程可描述为: B产品入库的过程可描述为: while(1) while(1) wait(SA); /* 还可放A产品? */ wait (SB); /* 还可放B产品? */ wait(mutex); wait(mutex); 将A产品放入仓库 ; 将B产品放入仓库 ; signal(mutex); signal(mutex); signal(SB); /*可放B产品数增1*/ signal(SA); /*可放A产品数增1*/

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号