操作系统笔记小结

1. CPU时间浪费即所有的进程都处于I/O的空闲状态,CPU利用率 = 1 - p^n(这边的是指在并行状态下)

例题1:一个计算机系统的内存有足够的空间容纳5个程序。这些程序又一半时间处于等待I/O的空闲状态。请问CPU时间浪费的比例是多少?

答:五个进程都空闲的概率是1/32,所以CPU空闲时间是1/32。

例题2:一个计算机的RAM有4GB,其中操作系统占512M。所有进程都占256M并且特征相同。要是CPU利用率达到99%, 最大I/O等待是多少?

答:内存中有足够的空间容纳14个进程。如果一个进程的I/O是P,那么它们都在等待I/O的概率是P14。通过将其等于0.01,我们得到方程p14=0.01。解决这个问题,我们得到p=0.72,因此我们可以容忍高达72% I/O等待的进程。

2. 实时系统可调度指的是:各进程CPU使用时间与周期之比的和>1则不可调度,<1则可调度。

例题1:一个软实时系统有4个周期时间,其周期分别为50ms,100ms,200ms和250ms。假设这4个事件分别需要35ms,20ms,10ms和x ms的CPU时间。保持系统可调度的最大x值是多少?

答:所使用的 CPU 的片断为 35/50 + 20/100 + 10/200 + x/250。为了使得进程可调度,必须是总和小于因此,x必须小于12.5ms。

例题2:一个实时系统需要处理两个语音通信,每个运行5ms,然后每次突发消耗1ms CPU时间,加上25帧/秒的一个视频,每一帧需要20ms的CPU时间。这个系统是可调度的吗?

答:每个语音通信运行200次/秒,每次突发消耗1毫秒,所以每个语音通信需要200毫秒/秒或两个语音通信需要400毫秒/秒。视频运行25次/秒,每次使用了20毫秒的时间,总共为500毫秒/秒。它们一起消耗900毫秒/秒,所以还有时间剩余,系统是可调度的。

3. 用户程序在用户态下要使用特权指令引起的中断属于(D )。
A.硬件故障中断
B.程序中断
C.外部中断
D.访管中断

4. 在运行一个中断处理程序时,禁止再次发生中断,这可以通过屏蔽中断来实现。中断屏蔽禁止CPU响应中断或禁止中断产生的作用,

一是延迟或禁止某些中断的响应,系统程序执行过程中不希望产生干扰事件,以免共享数据结构收到破坏

二是协调中断响应与中断处理的关系,确保高优先级中断可以打断低优先级中断。

三是防止同级中断相互干扰。

5. 进程创建的目的是:1.刻画程序的并发性;2.解决资源的共享性。

进程依赖于程序运行而存在,进程是动态的,程序是静态的;每个进程拥有独立的地址空间,地址空间包括代码区、数据区和堆栈区,进程之间的地址空间是隔离的,互不影响。创建进程需要两个步骤:为新进程分配所需资源和建立必要的管理信息,然后设置进程为就绪态并等待被调度执行。进程终止也需要两个步骤:先等待操作系统或相关进程进行善后处理,然后回收占用的资源并被系统删除。

6. 在大多数情况下,状态转换不一定引起上下文切换。上下文是指进程物理实体和支持进程运行的环境的合称。

7. 进程完成特定工作或出现严重错误后必须被撤销:进程执行非法指令,进程在用户态执行特权指令,进程运行时间超过所分配的最大时间配额,进程等待时间超过所设定的最长等待时间,对共享内存区的非法使用等。

8. 用户级线程不能利用多重处理的优点,一个用户级线程的阻塞将引起整个进程阻塞,进程由内核分配到CPU上,仅有一个用户级线程可以执行,因此不能得益于多线程的并发执行。

对于用户级线程,由于内核并不知道有线程存在,所以操作系统调度程序还是以进程为单位进行调度,由进程的线程调度程序决定哪个线程运行。

9. 内核级线程更倾向于调度与刚好阻塞的线程属于同一个进程的线程,而不是另一个属于其他进程的线程。通常操作系统调度程序会选择一个优先级高的线程运行,不用

考虑该线程属于哪个进程。

10. 带权作业周转时间:周转时间与作业实际需要执行时间的比值,平均带权作业周转时间越小越好

11. 先来先服务算法(FCFS)的平均作业周转时间与作业的提交和调度顺序有关。解决饥饿问题最简单的方法就是FCFS资源分配策略。

响应比=1+作业等待时间/作业处理时间。

多级反馈队列调度算法会导致“饥饿”问题,长作业最终必将移入优先级最低的就绪队列中,如果有短作业源源不断地进入系统,则长作业一直等待。

12. 管程提供了一种高级的同步原语,它将共享资源和对资源的操作封装在一个单元中,并提供了对这个单元的访问控制机制。相比于信号量机制,用管程编写程序更加

简单,写代码更加轻松。

13. 管程所定义的是公用数据结构,而进程所定义的是私有数据结构。管程是为了解决进程共享资源的互斥而建立的。管程被欲使用共享资源的所有进程所调用,管程和调用它的进程不能并行工作。管程提供了互斥访问共享资源的机制,同一时间只允许一个线程或进程进入管程并执行操作,以避免数据竞争和冲突。管程将共享资源和对资源的操作封装在一起,对外部提供了一组抽象的接口或方法,使得其他线程或进程只能通过这些接口来访问和修改共享资源。

14. 作业调度程序从后备状态的队列中选取适当的作业投入运行。

15. 在实时操作系统中,经常采用可抢占的优先级调度算法来分配处理器。

UNIX 操作系统采用的进程调度算法为不可强占处理机的动态化先数调度算法(UNIX操作系统是分时系统)

16. V操作不可能引起死锁,P操作可能引起死锁,PV操作使用得当也可能导致死锁。死锁的定义是:多个进程由于竞争互斥使用的资源又互不相让而进入死锁

17. 考虑到公平对待进程和提高系统资源工作的并行度,操作系统会经常调整进程的优先级,通常应提高启动外设次数多和在就绪队列中等待时间长的的进程优先级。

18. 采用时间片轮转调度算法时,对不同的进程可以规定不同的时间片。一般来说,对需要经常启动外设的进程给一个较小的时间片比较合适。分时系统中进程调度算法通常采用时间片轮转法。

19. 死锁防止:破环死锁的四个条件之一:互斥条件,占有和等待条件,不剥夺条件,循环等待条件。对资源采用按序分配策略能达到防止死锁的目的。

20. 死锁避免:通过对每一次资源申请进行认真的分析来判断它是否能够完全的分配,从而避免死锁的发生。常见方法有:资源轨迹图和银行家算法。

资源轨迹图比较直观和简单,但是只适合在两个进程间进行判断,只适合描述只有单个实例的资源。

银行家算法的缺点是:进程很难在运行前知道其锁需要资源的最大值,无法处理有同步关系的进程,而且只可以处理进程数量和资源的数目是固定不变的情况。

21. 死锁的检测和解除:资源分配图和死锁检测算法。如果每个资源类型只有一个实例,那么资源分配图中出现环则意味着出现死锁,如果每个资源类型有多个实例,那么环并不意味着出现死锁。可以对资源分配图进行简化来判断是否发生死锁。解除死锁的两个方法:进程终止和资源抢占。

22. 设系统中仅有一类数量为 M 的独占资源,系统中 N 个进程竞争该类资源,其中各进程对该类资源的最大需求量为 W M N W 满足关系式 N(W-1)<M 不会发生死锁。(注意此处是严格小于)。

23. 若计算型进程的优先级高于 I/O 型进程的优先级,计算型进程一旦占有了 CPU 便忙于计算,使 I/O 型进程得不到运行的机会,导致 I/O 设备空闲,达不到 CPU I/O 操作并行的目的;多个 I/O 型进程在系统中停留时间增加,系统的平均周转时间增加。

I/O 型进程的优先级高于计算型进程的优先级,当它完成一项 I/O 操作后,便能立即获得 CPU ,为下 I/O 作准备工作,并启动外设。当设备被启动后,它便主动交出 CPU ,由系统将 CPU 分配给计算型进程,从而使 CPU I/O 设备并行操作,获得较好的运行效率。

因此,应赋予以 I/O 为主的进程更高的优先级。

24. 临界资源:一次仅允许一个进程使用的系统中共享资源。

临界区: 并发进程访问临界资源的那段必须互斥执行的程序段。

25. 软中断直接查询中断向量表转入中断处理程序,即软中断不会直接打断CPU,硬中断设备收到CPU的信号后,取消发送的中断请求,转入中断处理程序。

26. 中断和异常的区别:中断是由与当前运行程序无关的中断信号触发的,系统不可以确定中断事件的发生时间,故中断与CPU是异步的,CPU对中断的响应完全是被动的,中断的发生与CPU的当前状态无关,既可以发生在用户态,也可以发生在内核态。

异常是由CPU控制单元产生的,源于先行程序执行指令过程中检测到例外,异常和CPU是同步的,允许指令在执行期间响应异常,大部分异常发生在用户态,内核态唯一发生的异常是“缺页异常”。

27. 中断/异常的响应一般需要四个步骤:发现中断源->保护现场(PSW->转向中断/异常处理程序执行(此时处理器从用户态转换至内核态)->恢复现场(用iret可以从核心态切换至用户态)

28 挂起就绪态表明进程具备运行条件,但是目前在外存中,只有当它被对换到内存才能调度执行;挂起等待态表明进程正在等待某一个事件且在外存中。

29. 进程切换的实现步骤为:保存被中断进程的处理器现场信息;修改被中断进程的PCB信息;把被中断进程的PCB加入相关队列;选择占用处理器的另一个进程;修改被选中进程PCB的有关信息;设置被选中进程的地址空间,恢复存储管理信息;根据被选中进程的上下文信息来恢复处理器现场。

30. 处理器状态转换步骤为:保存被中断进程的处理器现场信息,处理器从用户态转换到内核态,以便执行系统服务例程或中断处理程序。

31. 进程是OS进行资源分配的基本单位,线程是实际上执行的基本单位。对于用户级线程,由于内核并不知道有线程存在,所以操作系统调度程序还是以进程为单位进行调度的。

32. 线程无挂起状态,因为线程不是资源拥有单位,由挂起操作引起的状态是进程级状态。进程的终止将导致进程中所有线程的终止。

33. 高级调度:决定哪些作业进入内存,为其分配资源并创建进程。

中级调度:完成外存和内存中的进程对换工作。

低级调度(最核心):决定就绪队列中的哪个进程/线程获得处理器,并将处理器出让给它使用。

34. 静态优先数算法实现简单,但是会导致饥饿现象。动态优先级类似优缺点反过来就好了。

35. 从宏观上来看,并发性反应一个时间段内有几个程序都处于运行但运行未结束的状态

微观上来看,任意时刻仅有一个程序的一个操作在处理器上执行。

并发的实质是处理器在几个程序之间的多路复用。

36. Bernstein定理,P125,描述并发进程的无关性是进程的执行与时间无关的一个充分条件。

37. 实现互斥最简单的方法是在进程进入临界区时关中断,进程退出临界区时开中断。中断被关掉后,时钟中断也被屏蔽,进程上下文切换都是由中断事件引起的,这样进程的执行再也不会被打断,因此采用关中断、开中断的方法就可以确保并发进程互斥地进入临界区。但是关中断不适合作为通用的互斥机制,关中断的时间过长会影响性能和系统效率,不适用于多处理器系统,一个处理器关中断,并不能防止进程在其他处理器上执行相同的临界区代码。

38. 交互式并发进程通过信号量及PV操作可实现进程的互斥和同步。P操作意味着请求一个资源,V操作意味着释放一个资源,在一定条件下,P操作代表挂起进程的操作,而V操作代表唤醒被挂起进程的操作。

39. 管道是一种功能很强的通信机制,但仅用于连接具有共同祖先的进程,使用时需要临时建立,难以提供全局服务。为了克服这些缺点,UNIX推出管道的一个变种,有名管道或FIFO通信机制,具有永久性。

40. 死锁的产生:进程推进顺序不当、PV操作使用不妥、同类资源分配不均或对有些资源的使用未加限制。死锁产生的条件有:互斥条件、占有和等待条件、不剥夺条件、循环等待条件。书P162 。死锁的危害是资源不释放,死锁可能会越来越多。

41. 文件目录结构:多个文件形成树状

       文件物理结构:单个文件切成若干块后如何散列到物理块中

42. 文件系统的功能有:文件的按名存取(基本功能)、文件目录的建立和维护(用于实现上述基本功能)、实现逻辑文件到物理文件的转换(核心内容)、文件存储空间的分配和管理、数据保密、保护和共享、提供一组用户使用的操作。

43. 文件共享:同名共享和异名共享(网盘、链接)

44. 文件的存取方法有:顺序存取(readwrite)、直接存取(seek)、索引存取

45. 进程是动态的,断电则PCB消失;文件是持久保存的,FCB信息要分是否需要断电保存。

46. 一级目录结构只有一张文件目录表,对于多用户系统不友好,并且文件重名难以解决。

二级目录结构中的第二级为用户的文件目录,用于管理每个用户下的文件,解决了多用户问题。

47. 根目录专门存放在磁盘的一个地方,而不是单独的文件了。

48. 每个文件维护一个引用计数,用于记录文件的父目录个数,仅当引用计数值为1时,删除操作才移去文件,不然只是把相关记录从父目录中删除。

49. 每个目录文件在创建时都自动含有两个特殊目录项,“.”指出目录自身的inode入口,“..”指出其父目录的inode入口。如果是根目录,则“.”和“..”指向同一个inode即可。

50. 活动inode表,含有100个表项,每个表项称为一个活动inode。当访问文件时,若在活动inode表中找不到其inode,就申请一个空闲活动inode,再把磁盘inode内容复制给它,随之就可用来控制文件读写。当用户关闭文件后,活动inode内容回写到对应的磁盘inode中,再释放活动inode以供它用。

51. 文件的物理结构:顺序文件、连接文件、直接文件、索引文件。

顺序文件的缺点是:建立文件之前需要预先确定文件长度,以便分配存储空间;修改、插入和添加文件记录有一定的难度;对于变长记录的处理很困难,对磁盘作连续分配会造成空闲块的浪费。

连接文件使用连接字或指针来表示文件中各记录之间的串联关系,问题是造成逻辑块和物理块的不一致,要知道第二块,必须要先知道第一块(即必须顺序访问)。

直接文件:直接散列法,把记录键作为记录的存取地址

52. 超级块(1#块):存放文件系统结构和管理信息,如记录inode表所占盘块数、文件数据所占盘块数等。每当一个块设备作文文件卷被安装时,此设备的超级块就要复制到内存系统去中备用,而在拆卸文件卷时,修改过的超级块需要复制回磁盘的超级块中。

53. 连接计数i_link在创建时初始化为1i_link是在目录项中的,表示有多少个相同的文件再次目录项下。在删除文件时,若i_link=0,需要将此文件占用的存储空间释放。i_countinode中,表示有多少进程打开了该文件。

54. f_count表示不同进程通过同一系统已打开文件表项共享一个文件(进程fork),再close时,若非零,则还有进程共享此表项,直接返回;否则释放此表项,并找到与之关联的活动索引节点。

i_count表示不同进程通过不同系统已打开文件表项共享一个文件。

f_count在是系统已打开表项中的参数,i_countinode里面的参数。

55. 硬链接->inode号一样,链接时将i_link加一。(i_linkinode中)

软链接->inode号不一样,文件内存放被连接文件的名字,字节数=字符串的字节数

56. 页框的分配尽量保证连续,否则效率会变低。

57. 固定分区存储管理满足多道程序设计的要求。二道代表分2个区,两个作业可以并发执行。比较适合已知程序(作业)大小和出现频率的情形。

58. 外碎片和内碎片:外碎片指未分配的空间不够一个新的进程分配了。内碎片指已经分配的空间有空闲的内存但是不能再利用了。

59. 连续存储空间管理中的最优适应容易产生外碎片(A进程40KBB进程20KBC进程35KBA到达,B到达,A完成,C到达,在C装入内存时使用了A释放了的40KB,剩余5KB,很难再足够一个进程分配,于是有了外碎片(未分配的))

60. 伙伴内存分配:将用户内存区域对半分割

优点:很小的外碎片、方便内存分区的合并

缺点:存在内碎片

但是理论上不会产生外碎片(一个空间可以装进程,则它的伙伴必然足够装进程)

61. 应对内存不足的连续存储管理技术:

覆盖技术:将程序执行时不需要同时装入内存的覆盖构成一组,覆盖区的大小由对应的覆盖段内最大的覆盖决定。(A覆盖50KBB覆盖40KBC覆盖30KB),则该覆盖区的大小为50KB

对换技术:将暂时不用的某个程序及数据的一部分或全部从内存移到外存中去。

62. 分页式存储管理的缺陷是:

       页表需要内存存放(每个进程都需要一张)

地址转换过程中多义词内存访问(查询页表)

63. 快表:里面有最近访问的部分页表。想要找到一个页框号,先去查快表,若没有,再去查内存页表,若快表满了,则需要将最老的那一个页表项替换成新的。

64. 为了解决页表规模过大占用内存的问题

       多级页表:页表可以部分存储在内存中,可以放在外部存储器中,另外还可以解决程序空洞的问题。

       反置页表:块号->页号,仅保存调入内存的页面信息。但是查找时间和页面在页框的位置有关,最坏情况是每次遍历页框表,需要找的页号在页框表的最后一项。

65. 分段式存储管理:为了满足程序设计和开发的要求。

       分段:是信息的逻辑单位,用户可见。

       分页:是信息的物理单位,用户不可见。页长由系统确定,页面只能以页大小的整数倍地址开始。

66. 虚拟存储管理:一次只把当前运行所需的部分程序或数据装入主存

       部分装入:当需要访问不在主存中的程序或数据时,为能继续执行,需要由系统将这部分信息装入主存。

       部分对换:当主存中没有足够空闲空间时,需要把主存中暂时不用的信息从主存移动到辅存上。

67. 作业为什么能够部分装入和部分对换。

       空间局限性:一段时间内,仅访问程序代码和数据的一小部分

       时间局限性:最近访问过的程序代码和数据,很快又被访问的可能性很大。

68. 一般修改的文件数据并不会马上同步到磁盘,会缓存在内存的page cache中,我们把这种和磁盘数据不一致的页称为脏页,脏页会在合适的时机同步到磁盘。

69. 页框分配原则:缺页中断、I/O中断频繁会降低运行效率,因此应尽可能减少缺页中断的次数。

70. 缺页率:f=F/AF等于不成功的访问次数,A表示总访问次数。

71. 页面替代算法:

       最佳页面替换算法(看未来,无法实现):调入一页而必须淘汰一页时,所淘汰的页应该是以后不再访问的页或距现在最长时间后再访问的页。

       先进先出页面替换算法:实现简单、适合具有线性特征的程序。

       第二次机会页面替换算法:FIFO算法与页表中的“引用位”结合使用。若当前页面引用位为0,替换该页面。当页面引用位非0,引用位清0,指针累进。

       时钟页面替换算法:原理同第二次机会页面替换算法,但是使用环形队列。

       最近最少用页面替换算法:维护一个页面淘汰队列,队尾总是指向最近访问的页面,队头是最近最少使用的页面。PPT 69

72. 脏页能不碰就不碰,如果要替换脏页,则到最后再考虑。

73. 工作集:为了确保每个进程每一时刻都能够执行下去,在物理寄存器中必须有的最少页面集合。

74. 全局页面替换算法:

       全局最优页面替换算法(看未来,无法实现)

       工作集替换算法(看过去时间)

       老化算法:每次将计数寄存器/2,除成0,则表明不在工作集中,应该淘汰。

       时间戳算法:若t_off>t_max,把页面从工作集中移除

75. 缺页频率替换算法,若缺页周期超过临界值T(意味着页框分配过多),那么在此时间间隔内没有引用的页面都被赶出工作集。

76. 分页存储管理的缺点:要有一定硬件支持,要进行缺页异常处理,机器成本增加,系统开销加大,此外,页内会出现碎片,如果页面较大,则内存仍有一定损失。

77. 如果要避免死锁发生,操作系统需要在资源申请和分配时,需要掌握各进程目前已经分配的资源以及对各资源需求的最大量。

78. dup会返回一个新的描述符,这个描述一定是当前可用文件描述符中的最小值。我们知道,一般的012描述符分别被标准输入、输出、错误占用,所以在程序中如果close掉标准输出1后,调用dup函数,此时返回的描述符就是1

79. 打开文件操作就是把该文件的FCB存入内存的活跃/打开文件目录表,而不是将文件内容复制到主存,找到指定文件目录是打开文件之前的操作。

80. 快捷方式属于文件共享中的软链接,本质上创建的是一个链接文件,其中存放的是访问该文件的路径,删除文件并不会导致文件的快捷方式被删除,但是已经无法打开。

81. 一种既有利于短小作业又兼顾到长作业的作业调度算法是最高响应比优先

82. 高优先级的中断响应过程中,屏蔽低优先级的中断(但是有些中断是不能屏蔽的,如自愿访管中断)

83. 管道可用于具有亲缘关系进程间的通信,允许一个进程和另一个与它有共同祖先的进程之间进行通信,由shell进程创建。

84. 批处理系统:用户脱机工作、成批处理作业、多道程序运行(早期为单道程序运行)、作业周转时间长

85. 分时系统:同时性,多个用户同时;独立性,每个用户相对独立;及时性,快速响应用户请求;交互性,用户联机工作。

86. 线程死锁操作系统不能检测,因为线程不是操作系统管辖的资源。

87. LRU算法现实中不能实现,因为需要维护特殊队列,代价较大。LRU的近似算法有NRUaging算法。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值