操作系统设计与实现(第二章)课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《操作系统设计与实现(第二章)课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 设计 实现 第二 课件
- 资源描述:
-
1、 Chapter 2 Processes2.1 Introduction to processes*common Parallelism=Pseudoparallelism*It is the cpu rapid switching back and forth*multiprocessor is the real parallelism*people design a model,sequential processes 顺序进程顺序进程2.1.1 The process modelABCDABCDABCDProcess-Program理解进程和程序的区别:理解进程和程序的区别:CPU:计算
2、机科学家程序1:烘制生日蛋糕的食谱数据:面粉、鸡蛋、糖和香草汁等对应的进程1:阅读食谱、取来各种原料以及烘制蛋糕的一系列动作的总和。事件:女儿被蜜蜂螫伤保存进程1的当前状态:计算机科学家就记录下自己照着食谱做到哪儿了。程序2:急救手册数据:药物等对应的进程2:实施医疗救治(高优先级进程)当蜜蜂螫伤处理完之后,计算机科学家又回来做蛋糕,从他当蜜蜂螫伤处理完之后,计算机科学家又回来做蛋糕,从他离开时的那一步继续做下去。离开时的那一步继续做下去。进程的创建进程的创建1.系统初始化系统初始化2.(1)前台进程:同用户交互并替它们完成工作的哪些进程。3.(2)后台进程:守护进程,处理网页、打印之类活动的
3、进程。2.正在运行的一个进程执行了创建进程的系统调用。正在运行的一个进程执行了创建进程的系统调用。3.用户请求创建一个新进程。用户请求创建一个新进程。在交互式系统中,用户可以通过键入命令启动程序。4.批处理作业的初始化批处理作业的初始化 在操作系统认为有资源运行另一个作业时,它创建一个新的进程,并运行其输入队列中的一个作业。进程的终止进程的终止1.正常退出:正常退出:多数进程由于完成了它们的工作而终止。2.出错退出(自愿)出错退出(自愿):进程发现了严重错误。3.严重错误(非自愿):严重错误(非自愿):通常是由于程序中的错误所致。例如,执行了一条非法指令,引用了不存在的内存,或除数是零。4.被
4、其它进程杀死:被其它进程杀死:当一个进程终止时,由该进程所创建的所有进程也都立即被杀死。Process hierarchies Process States1.运行态(运行态(Running,在该时刻实际占用处理机)。,在该时刻实际占用处理机)。2.就绪态(就绪态(Ready,可运行,因为其它进程正在运行而暂时,可运行,因为其它进程正在运行而暂时被挂起)。被挂起)。3.阻塞态(阻塞态(Blocked,除非某种外部事件发生,否则不能运,除非某种外部事件发生,否则不能运行)。行)。RunningBlockedReady1234123n-3 n-2n-12.1.2 Implementation of
5、 Processes多线程的应用(多线程的应用(1)多线程的应用(多线程的应用(2)网络蚂蚁网络蚂蚁(NetAnts)是从因特网下载文件的工具软件,设计特是从因特网下载文件的工具软件,设计特点如下:点如下:(A)支持支持HTTP和和FTP协议,可同时下载协议,可同时下载1-5个文件;个文件;(B)可随时中止正在下载的任务,任务将自动保存当前状可随时中止正在下载的任务,任务将自动保存当前状态;态;(C)支持拖放,可从浏览器中将链接拖入任务列表;支持拖放,可从浏览器中将链接拖入任务列表;(D)裁剪板自动监视,并可指定将捕获的文件类型;裁剪板自动监视,并可指定将捕获的文件类型;(E)捕获浏览器的动作
6、,当用户在浏览器中单击链接时,捕获浏览器的动作,当用户在浏览器中单击链接时,网络蚂蚁将自动激活。网络蚂蚁将自动激活。To A:when sever is busy,it will stopped,the writing will stopped.save the destination to.To B:when server is busy,other threads will still try.the writing wont stopped.use flashget netant进程和线程的区别进程和线程的区别每个进程项每个进程项每个线程项每个线程项地址空间全局变量打开文件子进程定时器信
7、号和信号处理程序统计信息程序计数器寄存器堆栈状态 允许在同一个进程环境中有多个执行流(线程),允许在同一个进程环境中有多个执行流(线程),这些流在很大程度上相对独立,但共享相同的地址这些流在很大程度上相对独立,但共享相同的地址空间。空间。进程用来集合资源,而线程是进程用来集合资源,而线程是CPU中调度的实体。中调度的实体。The difference of the two kind of OS临界区的定义:临界区的定义:假如两个或更多的进程需要访问一个不可共享的资源假如两个或更多的进程需要访问一个不可共享的资源(打印机),在执行过程中,每个进程都给该(打印机),在执行过程中,每个进程都给该I/
8、O设备发送设备发送命令,接受状态信息,发送数据,接收数据。我们把这类资命令,接受状态信息,发送数据,接收数据。我们把这类资源称作临界资源,使用临界资源的那一部分程序称作成程序源称作临界资源,使用临界资源的那一部分程序称作成程序的临界区。的临界区。一次只允许有一个程序在临界区中。一次只允许有一个程序在临界区中。互斥的定义:互斥的定义:用某种手段,避免多个进程访问同一个临界区的操作用某种手段,避免多个进程访问同一个临界区的操作叫做互斥。叫做互斥。互斥,指多个进程不能同时使用同一个共享资源;互斥,指多个进程不能同时使用同一个共享资源;死锁,指多个进程互不相让,都得不到足够的资源;死锁,指多个进程互不
9、相让,都得不到足够的资源;饥饿,指一个进程一直得不到资源(其他进程可能轮流占用资源饥饿,指一个进程一直得不到资源(其他进程可能轮流占用资源相互感知的程度相互感知的程度 交互关系交互关系 一个进程对其他进程一个进程对其他进程 的影响的影响 潜在的控制问题潜在的控制问题 相互不感知相互不感知(完全不完全不了解其它进程的存了解其它进程的存在在)竞争竞争(competition)一个进程的操作对其一个进程的操作对其他进程的结果无影响他进程的结果无影响 互斥,死锁(可释放的互斥,死锁(可释放的资源),饥饿资源),饥饿 间接感知间接感知(双方都与双方都与第三方交互,如共享第三方交互,如共享资源资源)通过共
10、享进行协作通过共享进行协作 一个进程的结果依赖一个进程的结果依赖于从其他进程获得的于从其他进程获得的信息信息 互斥,死锁(可释放的互斥,死锁(可释放的资源),饥饿,数据一资源),饥饿,数据一致性致性 直接感知直接感知(双方直接双方直接交互,如通信交互,如通信)通过通信进行协作通过通信进行协作 一个进程的结果依赖一个进程的结果依赖于从其他进程获得的于从其他进程获得的信息信息 死锁,饥饿死锁,饥饿 忙等待形式的互斥忙等待形式的互斥*Close interrupt(关中段)(关中段)the simplest way,when the process entered the critical area
11、.It will close the interrupt,when it is finished,it will open the interrupt again;Shortage:it is fool to let the user has right to start or close interrupt.and to multi-processor PC,close interrupt is effected to one processor,and to other processors,the visit of the shared memory will continue.*锁变量
12、锁变量对于某一个临界区,在它之外设置一个锁,每个进对于某一个临界区,在它之外设置一个锁,每个进程要进入临界区的时候,首先要测试这把锁,如果锁打开程要进入临界区的时候,首先要测试这把锁,如果锁打开着的(锁的值为着的(锁的值为0 0),则该进程可以进入(并将锁置),则该进程可以进入(并将锁置1 1),),如果关闭着的如果关闭着的(锁的值为(锁的值为1),则该进程不能够进入;同,则该进程不能够进入;同样,一个进程进入了临界区后就把这把锁给锁上,当它出样,一个进程进入了临界区后就把这把锁给锁上,当它出来后再打开这把锁,这样会对这个临界区有很好的保护作来后再打开这把锁,这样会对这个临界区有很好的保护作用
13、,实现了互斥。用,实现了互斥。临界区临界区锁锁Process 1Process 2Process 3但是矛盾依然有,但是矛盾依然有,跟跟SpoolerSpooler目录一目录一样。样。严格轮换法是指几个进程轮换进入某一临界区,且顺序严格轮换法是指几个进程轮换进入某一临界区,且顺序不能紊乱。不能紊乱。While(TRUE)while(turn!=0);/*wait*/critical_region();turn=1;noncritical_region();While(TRUE)while(turn!=1);/*wait*/critical_region();turn=0;noncritical
14、_region();初始值:初始值:turn=0;忙等待:进程不断地读忙等待:进程不断地读turn的值,只是他没有做任何有的值,只是他没有做任何有意义的事(等待),而且浪费了意义的事(等待),而且浪费了cpu的时间(忙)。故的时间(忙)。故称作忙等待称作忙等待 busy waiting turn=1正常情况正常情况假如两个进程:假如两个进程:首先首先A进程进入,使用临界区后,修改进程进入,使用临界区后,修改turn的值,然后的值,然后进入非临界区,然后进入非临界区,然后B进程进入,根据判断,发觉可以进入,进程进入,根据判断,发觉可以进入,就进入临界区,执行完后,修改临界区的值,在然后进入自己就
15、进入临界区,执行完后,修改临界区的值,在然后进入自己的非临界区。依次的非临界区。依次A、B轮换执行。轮换执行。异常异常:(此时虽然不会竞争,但浪费了资源此时虽然不会竞争,但浪费了资源)如果进程如果进程A的非临界区很快能执行完,而进程的非临界区很快能执行完,而进程B的非临界区却的非临界区却非常慢,则会:非常慢,则会:ttt 此时,此时,两个进程的完成时间的衡量就应该两个进程的完成时间的衡量就应该按照慢的那个来衡量按照慢的那个来衡量,而且,如果任何一个进,而且,如果任何一个进程死掉了,则进程则会永远堵塞下去,不管是程死掉了,则进程则会永远堵塞下去,不管是在临界区内还是在临界区外。在临界区内还是在临
16、界区外。荷兰数学家荷兰数学家T.Dekker通过设置通过设置加警告变量加警告变量的方法的方法来回避这种情况的发生,但警告的同时也必须来回避这种情况的发生,但警告的同时也必须能够监测其他进程此时对临界区的使用情况,能够监测其他进程此时对临界区的使用情况,即出现了即出现了Dekker算法。参考别的书籍。(操算法。参考别的书籍。(操作系统内核与设计原理作系统内核与设计原理P154)Dekkers AlgorithmPeterson算法是正确的算法turn=j;描述可进入的进程(同时修改标志值)检查对方flag,如果不在临界区则自己进入空闲则入;否则再检查turn:保存的是较晚的一次赋值,则较晚的进程
17、等待,较早的进程进入先到先入,后到等待。硬件方法的优点硬件方法的优点 适用于任意数目的进程,在单处理器或多处理器上适用于任意数目的进程,在单处理器或多处理器上 简单,容易验证其正确性简单,容易验证其正确性 可以支持进程内存在多个临界区,只需为每个临界区设立一可以支持进程内存在多个临界区,只需为每个临界区设立一个布尔变量个布尔变量硬件方法的缺点硬件方法的缺点 等待要耗费等待要耗费CPU时间,不能实现时间,不能实现让权等待让权等待 可能可能饥饿饥饿:从等待进程中随机选择一个进入临界区,有的:从等待进程中随机选择一个进入临界区,有的进程可能一直选不上进程可能一直选不上 可能死锁(见下页)可能死锁(见
18、下页)对于对于Peterson和和TSL问题,都能够很好地实现互斥,但也都问题,都能够很好地实现互斥,但也都同时存在问题:同时存在问题:*忙等待,浪费忙等待,浪费CPU的资源。的资源。*进程的优先级有差别:当有两个进程,进程的优先级有差别:当有两个进程,A、B,A的优先的优先级高,处于就绪状态,而此时,级高,处于就绪状态,而此时,B在临界区内,由于优先级低,在临界区内,由于优先级低,故无法被调度,也就无法离开临界区,那故无法被调度,也就无法离开临界区,那A就只能够在临界区就只能够在临界区外等待。外等待。解决的途径就是引入新的概念:睡眠解决的途径就是引入新的概念:睡眠 唤醒唤醒睡眠:对应着在临界
19、区外的不停判断和等待;睡眠:对应着在临界区外的不停判断和等待;唤醒:对应着触发另一个满足条件的进程进入临界区。唤醒:对应着触发另一个满足条件的进程进入临界区。问题描述:问题描述:若干进程通过有限的共享缓冲区交换数据。其中,若干进程通过有限的共享缓冲区交换数据。其中,生产生产者者进程不断写入,而进程不断写入,而消费者消费者进程不断读出;共享缓冲区共进程不断读出;共享缓冲区共有有N个;任何时刻只能有一个进程可对共享缓冲区进行操作。个;任何时刻只能有一个进程可对共享缓冲区进行操作。等待使用资源的消费者等待使用资源的消费者#define N 100int count=0;void producer(v
20、oid)while(TRUE)produce_item();if(count=N)sleep();enter_item();count=count+1;if(count=1)wakeup(consumer)void consumer(void)while(TRUE)remove_item();if(count=0)sleep();enter_item();count=count-1;if(count=N-1)wakeup(producer)对于生产者:对于生产者:只有当缓冲区里为零的时候,这时候消费者才有可能睡觉;只有当缓冲区里为零的时候,这时候消费者才有可能睡觉;对于消费者:对于消费者:只有
21、当缓冲区里装满的时候,这时候生产者才有可能睡觉。只有当缓冲区里装满的时候,这时候生产者才有可能睡觉。导致的问题:类导致的问题:类SpoolerSpooler目录问题目录问题 缓冲区为空,消费者检查,得到缓冲区为空,消费者检查,得到count=0,count=0,但未睡觉的时但未睡觉的时候,被调度程序挂起,此时它将保留一个局部变量来存储候,被调度程序挂起,此时它将保留一个局部变量来存储countcount的值,此时生产者开始工作并向缓冲区内放入资源,当资源等的值,此时生产者开始工作并向缓冲区内放入资源,当资源等于于1 1后,向消费者发送唤醒信号,而此时消费者没有睡眠,等消后,向消费者发送唤醒信号
22、,而此时消费者没有睡眠,等消费者被恢复以后,检查自己存储过的费者被恢复以后,检查自己存储过的countcount,发觉它等于零,则,发觉它等于零,则开始睡眠,而生产者则不停生产,当缓冲区满了以后自己也开开始睡眠,而生产者则不停生产,当缓冲区满了以后自己也开始睡眠,这时候他们就都处于睡眠状态。始睡眠,这时候他们就都处于睡眠状态。1965年,由荷兰学者Dijkstra提出(所以P、V分别是荷兰语的test(proberen)和increment(verhogen)),是一种卓有成效的进程同步机制。原理:两个或多个进程可以通过简单的信号进行合作,一个进程可以被迫在某一个位置停止,直到他接受到一个特定
23、的信号。为了发信号,需要一个特殊的变量-信号量s为了通过信号量s传送信号,进程可执行原语signal(s);为了通过信号量s接收信号,进程可执行原语wait(s);1.一个信号量可以初始化为非负数一个信号量可以初始化为非负数2.Wait操作是信号量减一,如果值变为了负数,则执行操作是信号量减一,如果值变为了负数,则执行wait的进程被阻塞;的进程被阻塞;Signal操作是信号量加一,如果值不是正数,则被操作是信号量加一,如果值不是正数,则被wait操作操作阻塞的进程被解除阻塞。阻塞的进程被解除阻塞。除了以上三种操作以外,没有任何其他地方可以检查或操除了以上三种操作以外,没有任何其他地方可以检查
24、或操作信号量。作信号量。Wait=PSignal=VStruct semaphore int count;queueType queue;Void wait(semaphore s)s.count-;if(s.count 0)place this process in s.queue;block this process;Void signal(semaphore s)s.count+;if(s.count =0)remove a process P from s.queue;place process P on ready list;此处的此处的wait wait 和和signal sign
25、al 都是原子操都是原子操作,不会被中断影响。作,不会被中断影响。Void waitB(binary_semaphore s)if(s.value=1)s.value=0;else place this process in s.queue;block this process;Void signalB(binary_semaphore s)if(s.queue.is_empty()s.value=1;else remove a process P from s.queue;place process P on ready list;Struct binary_semaphore enmu(z
展开阅读全文