计算机操作系统 第二章

本文均为自己听课笔记以及自己的理解,若有错误,联系改正.

  1. 程序顺序执行及其特征:程序段的执行必须是顺序的,程序顺序执行的特征:顺序性、封闭性、可再现性。顺序性是指在执行过程中严格按照程序所规定的顺序进行执行。封闭性是指,在执行过程中程序一旦开始,其计算结果不受外界影响,即在相同的输入条件下,计算结果具有唯一性。可再现性是指程序执行结果与其执行速度无关,至于初始条件有关

  2. 前驱图:有向无循环图,拓扑排序。有节点,前驱,后继。节点的重量是节点执行所需要的时间。

  3. 程序并发执行及其特征:同一程序的输入、计算、输出不可以并发执行,但是不同程序的输入、计算、输出可以并发执行。间断性:在多道程序设计环境下,程序的并发执行,未完成某项任务而相互制约,因共享系统资源而相互制约的关系。相互制约导致并发程序“执行-暂停-执行”的间断活动。失去封闭性:系统的状态由多道程序来改变,程序运行失去封闭性。比如打印机在执行不同任务时,所得结果不同。不可再现性:程序并发执行时,多次运行初始条件相同的同一程序会得出不同的结果。例如:共享公共变量的两个程序,他们执行时可能产生不同的解果

  4. 进程:程序关于某数据集合的一次执行过程

  5. 进程的特征:(1)结构特征:结构控制块PCB+程序+数据=进程实体 (2)动态性-最基本特征,进程是进程实体的一次执行过程,有生命周期。程序是一组有序指令的集合,是静态的 (3)并发性 (4)独立性 (5)异步性:程序各自独立,按不可预知的速度执行

  6. 进程的三种基本状态:就绪状态:进程已获得除了CPU之外的所有资源,一旦得到CPU就可以直接运行。 运行状态:已获得所有必须的资源,正在执行。 阻塞状态:正在执行的进程因为某件事而不得不停止运行便放弃处理器(CPU)而处于暂停状态,例如:请求打印机但是打印机正在执行其他任务,导致申请不上,就会处于暂停状态,而此时该任务还占用CPU,导致资源浪费,需要让其放弃CPU,从而使利用率更高。是自己阻塞自己。

  7. 进程三种状态之间的转换:进程从就绪态通过进程调度进入执行状态,若该进程是时间片用完,则回到就绪态。若执行时出现IO请求导致进程阻塞,则主动放弃CPU进入就绪队列,当存在满足条件的IO时则重新调度进入执行态进而继续完成。就绪态不可能直接进入阻塞态,因为其没有CPU的调度,阻塞态也不能直接回到执行态,因为执行态必须从就绪队列中调度在这里插入图片描述

  8. 挂起状态:CPU和内存资源是非常宝贵的,故不应占用太多,而暂时得不到IO或者阻塞的进行会因得不到资源不能执行而占用内存资源,故引入挂起装态。挂起就是把进程从内存引入外存的一种操作,为了释放更多内存空间。引入挂起后又增加了活动就绪和活动阻塞,静止就绪和静止阻塞,静止状态是在外存上,活动阻塞是在内存上,静止状态可以通过激活到达活动状态,活动状态可以通过挂起进入静止状态。当内存资源不足时,我们需要把内存的进程挂起到外存此时优先挂起活动阻塞状态的进程,因为没有满足它所需要的资源,在短时间内不可再调用去执行,而活动就绪状态具备执行的所有资源,除了CPU,一经调用可立马执行。当内存资源充足时,我们需要把外存的静止就绪的进程激活到内存中使其变为活动就绪,因为此时激活静止就绪的进程之后可以直接调用它,分配CPU后直接执行,而静止阻塞的进程激活后也不一定可以直接执行。在这里插入图片描述

  9. 进程控制块PCB:存放进程管理和控制信息的数据结构,在创建进程是创建PCB并伴随进程运行的全过程,并直到进程撤销。PCB是进程控制块的唯一存在标志

  10. 进程控制块的组织方式:链接方式和索引方式
    链接方式:把具有相同状态的PCB链接成一个队列.类似于数据结构中的链表
    索引方式:系统根据所有的进程状态建立几张索引表,把各表的内存首地址记录存放在相应的内存单元中,实质上是在索引表中查找进程 .

  11. 进程的撤销,首先明白进程树,即数据结构中的树,存在子进程,父进程的概念,与子节点与父节点的概念相同,在撤销进程时,撤销父进程也要一并把它的子进程进行撤销,回收他们所拥有的所有资源。

  12. 原语:是有若干条指令组成能够完成一定功能的程序段,要么全部执行,要么一条也不执行。

  13. 进程的创建:操作系统发现要求创建新进程的事件后,调用进程创建原语Create()创建新进程。过程:申请空白PCB→为新进程分配资源→初始化进程控制块→将新进程插入就绪队列

  14. 进程的终止:引起进程终止的事件:①正常结束 ②异常结束:越界错误(每个进程有自己的内存空间的界限不可越界)、非法指令等 ③外界干预:操作员或操作系统干预、父进程请求、父进程终止。父进程终止之前一定要先将子进程的资源回收,否则子进程将会成为游离态无人看管。

  15. 进程终止过程:找出被终止进程的PCB→若进程状态为运行态,置CPU调度标志为真(告诉CPU可以重新调度资源)→若其有子孙进程,终止其子孙进程并回收其资源→回收终止进程的资源→回收终止进程的PCB;要将PCB回收不然会占用内存资源,造成资源浪费.

  16. 进程的唤醒:把阻塞进程从等待该事件的阻塞队列中移出→置进程状态为就绪状态,将PCB插入到就绪队列中**.阻塞原语与唤醒原语作用相反.**

  17. 进程的挂起:suspend()操作,检查被挂起的进程状态:若处于活动就绪,则改为静止就绪,若处于活动阻塞,则改为静止阻塞,若挂起到进程正在执行,则重新进行进程调度.优先挂起活动阻塞.

  18. 进程的激活:active()操作,激活原语先将进程从外村调到内存.检查进程状态:若处于静止就绪,则改为活动就绪,若处于静止阻塞,则改为活动阻塞.优先激活静止就绪.

  19. 进程间两种形式的制约关系:间接相互制约关系–源于资源共享,例如两个打印进程抢占打印机资源.直接相互制约关系–源于进程合作,例如流水线上有一个先后制约的关系,A的工作不作完B就不能开始.

  20. 临界资源:把一段时间内只允许一个进程访问的资源成为临界资源或独占资源.临界区:每个进程中访问临界资源的那段代码称为临界区,例如在一段进程使用打印机资源的这个过程叫做临界区,两个进程不能同时进入同一个临界区

  21. 临界资源:生产消费者的问题 把进程当成一个队列,先生产(插入)后消费(取走),生产者进程和消费者进程是异步方式运行,意思是生产和消费互不影响,你生产你的我消费我的,但他们之间必须保持同步,即先生产后消费,消费的速度和生产的速度同步,不然会造成生产之后无处放和消费完了无处取.此种问题有一个重置指针的过程. ②把①中的队列改为循环队列,就不需要重置指针了,(数据结构终端循环队列概念)

  22. 进入区:请求资源 临界区:使用资源 退出区:释放资源

  23. 同步机制应遵循的规则:空闲让进、忙则等待、有限等待、让权等待(放弃所占的CPU)

  24. 信号量机制:信号量就是OS提供管理公有资源的有效手段,实现进程同步的工具信号量代表可用资源实体的数量,即有两台打印机资源,就有两个信号量

  25. 整形信号量:把整形信号量定义为一个用于表示资源数目的整形量S,除初始化外,仅能通过两个原子操作P操作wait(s),V操作signal(s)来访问.P操作进入区,去申请资源,V操作退出区,释放资源.任何进程都必须执行P,V操作去先申请使用,再释放资源.P,V操作是原子操作,不可中断

  26. 整形信号量的P,V操作:P操作:先判断资源数目是否小于0,即是否有可用资源,若无,则无操作,若有则资源数减一,V操作:释放占有资源,将总资源数目加一。

  27. 记录型信号量:引入整型变量value(代表资源数目)、进程链表L(链接所有等待进程),把申请不上资源的进程或阻塞进程全部链接到链表L中,可在L中找到阻塞的进程。

  28. 记录型信号量的P,V操作:P操作wait(),先申请资源,再进行减量操作,s.value=s.value-1,当s.value<0时,表示资源分配完,进程进行自我阻塞。V操作signal(),释放资源,增量操作,s.value=s.value+1,当s.value<=0时,唤醒L链表中的阻塞进程。s.value()的绝对值表示L中等待资源的数量。在这里插入图片描述

  29. 整形和记录型的PV操作的区别在于:前者先判断后申请,后者先申请在判断。

  30. AND型信号量:两个进程A和B都需要共享数据D和E,为其分别设置互斥信号量Dmutex和Emutex,初值为1,A在执行时需要资源D和E,B在执行时也需要资源D和E.若A和B并发执行此处涉及到死锁问题,共享的资源越多,死锁的可能性越大。基本思想:将进程在整个运行过程中所需要的所有资源,一次性全部分配给进程,待进程使用完后一次性释放。只要有一个资源尚未分配给进程,其他所有为之分配的资源也不分配给他,即对临界资源进行原子操作。

  31. 对AND信号量的扩充:s为信号量,t为下限值,d为需求量。意思是有s个信号量,进程的需求是d个,但是没有,那你最少得给我t个,s必须大于t才满足分配。

  32. 利用信号量实现进程互斥:为使多个进程互斥的访问某临界资源,须为该资源设置互斥信号量mutex,并设其初值为1(临界资源有多少就设置多少),然后将各进程访问资源的临界区CS设置wait(mutex)和signal(mutex)之间即可。

  33. 利用信号量实现前驱关系:设有两个并发执行的进程P1和P2,P1 中有语句S1,P2中有语句S2,希望在S1执行后再执行S2.使进程P1和P2共享一个公用信号量S,并赋予其初值0.

  34. 利用记录型信号量实现同步:P1、P2两进程 因合作完成一项任务而共用一个变量x。进程P2将处理结果送入x,进程P1将x的结果打印,P2先放,P1再取。定义两个资源信号量empty和full代表缓冲区的空和满,当缓冲区空时,full=0,empty=n(有n个资源)。同一个进程的PV操作对应的是不同的信号量,不同进程的PV操作对应的是相同的信号量。例如P2先执行:在这里插入图片描述

  35. 利用记录型信号量来解决生产者-消费者问题:可利用互斥信号量mutex实现诸进程对缓冲池的互斥使用,用信号量empty和full分别表示缓冲池中空缓冲池和满缓冲池的数量。每个程序中实现互斥的wait(mutex)和signal(mutex)必须成对的出现。对资源信号量empty和full的wait和signal操作,同样需要成对的出现,但是在不同的程序中。每个程序中多个wait操作顺序不能颠倒。应先执行对资源信号量的wait操作,在执行对互斥信号量的wait操作,否则可能引起进程死锁。例如:假设先执行wait(mutex),在执行wait(empty),缓冲区中没有位置给放生产者生产的东西,生产者可以申请到资源的使用权,但是却不能放入,他会等待消费者去消费,而消费者再去申请资源的使用权,也就是wait(mutex)操作,此时消费者申请不到,所以会出现死锁,生产者不释放资源,消费者申请不上。生产者在等消费者消费,消费者等生产这者释放信号量。在这里插入图片描述

  36. 利用AND型信号量来解决生产者-消费者问题:一次申请一次释放

  37. 哲学家进餐问题的解决方法:①至多只允许四位哲学家同时去拿左边的筷子,最终能保证至少有一位哲学家能够进餐,并在用完后释放出他所用的两只筷子,从而使更多的哲学家可以进餐。 ②仅当哲学家左右两边的筷子都可以使用时才允许他拿起筷子进餐。 ③规定奇数号哲学家先拿他左边的筷子,然后再去拿右边的筷子,偶数号哲学家则相反。

  38. 第一个解决方法:设置一个互斥信号量,四个资源信号量,C0到C3申请上筷子之后资源信号量为0,故C4,即第五个人申请不上,C3可申请第五根筷子,C3可以吃上饭,等C3释放资源之后其他人陆续可以吃上饭。

  39. 读者-写者问题:一个数据文件或记录可被多个进程共享。只要求读文件的进程为“Reader进程”,其他进程则称为“Writer进程”。允许多个进程同时读一个数据对象,但不允许一个Writer进程和其他Reader进程或Writer进程同时访问共享对象。保证一个Writer进程必须与其他进程互斥的访问共享对象的同步问题。读读共享,读写互斥,写写互斥

  40. 用记录型信号量来解决读者-写者问题:设置互斥信号量wmutex:实现Reader和Writerj进程间在读或在写时的互斥,整形信号量Readcount表示正在读进程的数目;由于只要有一个Reader在读就不许Writer写。所以,仅当Read count=0时,即无reader进程在读时,Reader才需要执行wait(wmutex)操作。Reader进程便可去读,并且Readcount+1.若有一个Reader在读,其他Reader想要读,就不需要申请信号量了。因为读写是互斥的,所以仅当Reader进程执行了Readcount-1之后,其值变为0时,才需要执行signal(wmutex)操作,以便让Writer写。(读写互斥,都进程申请信号量后,写进程是申请不上的,只有当读进程释放后,写进程才可以申请)

  41. 区分Wmutex和rmutex:Wmutex是读写互斥,写写互斥。Rmutex读期间访问Readcount互斥,Readcount是读者记录进程数。

  42. 利用信号量机制解决读者-写者问题:要清楚各个函数的作用以及用法,引入信号量L,赋予初值RN,通过执行Swait(L,1,1)操作,来控制读者数目。每当有一个读者进入时,要先执行Swait(L,1,1)操作,使L的值减一,当有RN个读者进入后,L便减为0,当RN+1个读者要进入时,会因为Swait(L,1,1)操作失败而阻塞.L实现读进程数目<=RN,mx实现读写互斥,写写互斥,例如:①若有读者在读,且mx>1,则可继续执行读操作,当有RN个读者后,L<1,执行Swait(L,1,1)阻塞 ②先执行读操作,读者申请信号量,然后用Swait控制读者数目mx>1即可读,若不满足这个条件则阻塞,此时若想执行写操作,因为L<RN,说明有读者在读,则操作失败,不可执行写操作. ③先执行写操作,要执行读操作时mx<1,成立,不可读.
    在这里插入图片描述

  43. 进程通信:指进程之间的信息交换.低级通信:进程间仅交换一些状态和少量数据.缺点:效率低,通信对用户不透明(用户看得见).高级通信:进程间可交换大量数据.用户可直接利用操作系统提供的一组通信命令,高效的传送大量数据的一种通信方式.操作系统隐藏了一些进程通信细节,对用户透明,减少通信程序编制上的复杂性

  44. 高级进程通信的类型分为三大类:共享存储器系统、消息传递系统度、管道通信系统.

  45. 共享存储器系统:相互通信的进程间共享某些数据结构或共享存储区,通过某些空间进行通信. ① 基于共享数据结构的通信方式(低级通信):进程共用某些数据结构借以实现某进程间的信息交换.低效,只适合传递相对少量的数据.基于共享存储区的通信方式:在存储器中划出一块共享存储区,诸进程可通过对共享存储区中数据的读或写来实现读写.

  46. 消息传递系统:进程间的数据交换,以格式化的消息为单位.

  47. 管道系统:用于链接一个读进程和一个写进程以实现他们之间通信的一个打开的共享文件.管道机制提供的协调能力:互斥,同步,确定对方是否存在在这里插入图片描述

  48. 消息传递通信的实现方法:进程间通信时,源进程可以直接或间接的将消息传送给目标进程,由此可将进程通信分为直接通信和间接通信。 ①直接通信方式:发送进程利用OS提供的发送命令,直接把消息发送给目标进程.发送进程和接受进程都以显示方式提供对方的标识符.通信原语:Send(Receiver,message),Receiver(Send,message),message作为一个中间临时变量存放发送的内容. ②间接通信方式–通过信箱通信:信箱用来暂存发送进程发送给目标进程的消息,接收进程则从信箱中取出发送给自己的消息.消息在信箱中可安全保存,只允许核准的目标用户随时读取利用信箱读取方式,即可实时通信,又可非实时通信.信箱分类:私用信箱、公用信箱、共享信箱.私用信箱由用户创建,是单向的.公用信箱由操作系统创建,是双向的.共享信箱由进程创建.

  49. 消息的格式:消息头和消息的正文.消息头:消息在传输时所需要的 控制信息.消息的正文:发送进程实际上所发送的数据.

  50. 进程同步方式:在进程之间进行通信时,辅以进程同步机制,使诸进程间能协调通信.发送进程或接收进程在完成消息的发送或接收后,都存在两种可能性:进程或者继续发送或者阻塞.①发送进程阻塞、接收进程阻塞.(紧密同步,即中间无缓存)②发送进程不阻塞、接收进程阻塞.③发送进程和接收进程均不阻塞.(二者速度不匹配的情况下 ,接收方接收太快,无数据可取,就会将自己阻塞)

  51. 引入线程:进程的两个基本属性:(1)进程是一个可以拥有资源的独立单位;(2)进程是一个可以独立调度和分派的基本单位,由此是进程为了能独立运行的基本单位,构成了进程并发执行的基础. 进程拥有资源使进程的创建、撤销和调度付出较大的时空开销,这就限制了系统中所设置的进程数目,而且进程切换也不宜过于频繁,从而限制了并发程度进一步提高,因此将进程的两个属性分开处理,其中第二个属性由线程来实现.

  52. 线程-作为调度和分配的基本单位: (1)轻型实体 (2)独立调度和分派的基本单位 (3)可并发执行 (4)共享进程资源

  53. 线程有执行状态、就绪状态、阻塞状态,线程有TCB

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值