想要电子版本的同学可以留言或者私信我获取,辛苦整理资料,欢迎点赞、收藏和评论!
操作系统
1. 操作系统概述
操作系统是管理系统的硬件、软件、数据资源,控制程序运行,人机之间的接口,应用软件与硬件之间的接口。
包括:进程管理、存储管理、文件管理、作业管理和设备管理
2. 进程的状态(具有挂起状态的进程状态转换)
补充
1)创建状态(Create): 为一个新进程创建PCB(进程控制块,它是系统为了管理进程设置的一个专门的数据结构,主要表示进程的状态),把该进程转入到就绪状态并插入到就绪队列之中
2)就绪(Ready)状态:指进程已处于准备好运行的状态,及进程已经分配到需要的系统资源,只要在获得CPU就可以执行
3)执行(Running)状态:指进程获得了CPU正在执行,在单处理机系统中,最多只有一个进程处于该状态
4)阻塞(Block)状态:指正在执行的进程,在执行过程中发生了某时间(如:I/O请求、申请缓冲区失败等)
5)终止状态(Terminate): 等待操作系统进行善后处理,然后将其PCB清零,并将PCB空间返还系统
3. 前驱图和PV操作
3.1 前驱图
前驱图是一个有向无循环图,记为DAG。这种图可以描述多个程序或进程之间的执行顺序关系。其中:
〇表示一个程序、进程或是语句的结点
→ 表示结点间的执行顺序
3.2 同步与互斥
同步:其实说同步还不如说”协作“,就是我们的目标只有一个,我们奔着同一个目标去的,都是在大家的努力下共同完成这么一件事情。
互斥:借用别人的一句话“千军万马过独木桥”,很通俗的一句话,就把咱们这个概念表达的淋漓尽致,就好比有一个大部队来到独木桥这,但是必须排好队,一个一个来;
注意:
1)互斥是通过竞争对资源的独占使用,彼此之间不需要知道对方的存在,执行顺序是一个乱序。同步是协调多个相互关联线程合作完成任务,彼此之间知道对方存在,执行顺序往往是有序的。
2)同步其实已经实现了互斥,所以同步是一种更为复杂的互斥。互斥是一种特殊的同步。
3.3 PV操作
信号量:信号量是一个整形变量,根据控制对象的不同被赋予不同的值。
① 公用信号量。实现进程间的互斥,初始值为1或资源的数目。
② 私用信号量。实现进程间的同步,初始值为0或某个正整数。
信号量S的物理意义:S>=0表示某资源的可用数,若S<0,则其绝对值表示阻塞队列中等待该资源的进程数。
P操作:使S=S-1,若S>=0,则该进程继续执行,否则该进程排入等待队列。P操作表示申请一个资源
V操作:使S=S+1,若S>0,唤醒等待队列中的一个进程。V操作表示释放一个资源
举例(单缓冲区):
例题1:
答案:1)A 2)C
例题2:
例题3:
答案:1)C 2)A 3)A
4. 死锁
4.1 死锁概念
死锁是指多个进程(线程)在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象(互相挂起等待),若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程
例题:
最少需要k*(n-1)+1个资源其中k是进程数量、n是所需的系统资源数目
4.2 死锁的条件
产生死锁的四个条件:
1)互斥条件:进程(线程)申请的资源在一段时间中只能被一个进程(线程)使用。
2)请求与等待条件:进程(线程)已经拥有了一个资源,但是又申请新的资源,拥有的资源保持不变。
3)不可剥夺条件:在一个进程(线程)没有用完,主动释放资源的时候,不能被抢占。
4)循环等待条件:多个进程(线程)之间存在资源循环链。
4.3 死锁的预防
打破死锁的四个必要条件之一即可预防死锁发生
1)打破互斥条件:改造独占性资源为虚拟大资源,但是大部分资源无法改造,因此不建议使用这个方法。
2)打破请求与保持条件:在进程(线程)运行之前,就把需要申请的资源一次性申请到位,满足则运行,不满足就等待,这样就不会造成在占有资源的情况下,还要申请新资源。
3)打破不可剥夺条件:在占有资源并且还想要申请新资源的时候,归还已经占有的资源。
4)打破循环等待条件:实现资源的有序分配,即对所有的设备进行分类编号,只能以升序的方式来申请资源。
4.4 死锁的避免
银行家算法
首先需要定义状态和安全状态的概念。系统的状态是当前给进程分配的资源情况。因此,状态包含两个向量Resource(系统中每种资源的总量)和Available(未分配给进程的每种资源的总量)及两个矩阵Claim(表示进程对资源的需求)和Allocation(表示当前分配给进程的资源)。
安全状态是指至少有一个资源分配序列不会导致死锁。当进程请求一组资源时,假设同意该请求,从而改变了系统的状态,然后确定其结果是否还处于安全状态。如果是,同意这个请求;如果不是,阻塞该进程直到同意该请求后系统状态仍然是安全的。
例题:
答案:B
5. 分区存储
1)首次适应算法:它要求空闲分区表中的记录按地址递增的顺序排列。在每次分配主存时,总是从第一条记录开始顺序查找空闲分区表,找到第一个能满足作业长度要求的空闲区,分隔这个空闲区。一部分分配给作业,另一部分仍作为空闲区。分配算法简单,容易产生过多的主存碎片。主存碎片是指小的不能使用的主存空间;这种算法把大的空闲区分成了小的空闲区,当有大的作业要求分配时,不能满足要求,降低了系统的效率。
2)最佳适应法:它是从所有的空闲分区中挑选一个能满足作业要求的最小空闲区进行分配。这样可以保证不去分割一个更大的空闲区,使装入大作业时比较容易得到满足。为实现这种算法,把空闲区按长度递增次序登记在空闲分区表中,分配时,顺序查找。解决了大作业的分配问题,不足是容易产生主存碎片,降低了主存空间的利用率。另外,回收主存时,要按长度递增顺序插入到空闲分区表中,增加了系统开销。
3)最差适应法:它每次分配主存时总是挑选一个最大的空闲区,分割一部分给作业使用,使剩下的部分不至于太小而成为主存碎片。为实现这种算法,把空闲区按长度递减的次序登记在空闲分区表中,分配时,顺序查找。不会产生过多的碎片。不足是影响大作业的分配。回收主存时,要按长度递减的顺序插入到空闲分区表中,增加了系统开销。
例题:
6. 存储管理
6.1 页式存储
优点:利用率高、碎片小,分配及管理简单
缺点:增加了系统开销;可能产生抖动现象
例题:
答案:1)D 2)B
根据页面大小为4K 即:2^12 则,业内地址对于十六进制里后三位A29,页号为5,根据表格可知,页帧号为6,则物理地址十六进制为6A29H。应该淘汰的页面是访问位置为0的页面,故淘汰页号1
6.2 段式存储
优点:多道程序共享内存,各段程序修改互不影响
缺点:内存利用率低,内存碎片浪费大
注意:对于页式存储,页面大小是固定的;而段式存储中,段的长度不固定,根据实际需求,基址为内存中起始位置。
6.3 段页式存储
优点:空间浪费小、存储共享容易、存储保护容易、能动态连接
缺点:由于管理软件的增加,复杂性和开销也随之增加,需要的硬件以及占用的内容也有所增加,使得执行速度大大下降
7. 页面置换算法
7.1最佳置换算法(OPT) (理想置换算法)
从主存中移出永远不再需要的页面;如无这样的页面存在,则选择最长时间不需要访问的页面。于所选择的被淘汰页面将是以后永不使用的,或者是在最长时间内不再被访问的页面,这样可以保证获得最低的缺页率。
7.2先进先出置换算法(FIFO)
是最简单的页面置换算法。这种算法的基本思想是:当需要淘汰一个页面时,总是选择驻留主存时间最长的页面进行淘汰,即先进入主存的页面先淘汰。其理由是:最早调入主存的页面不再被使用的可能性最大。
7.3最近最久未使用(LRU)算法
利用局部性原理,根据一个作业在执行过程中过去的页面访问历史来推测未来的行为。它认为过去一段时间里不曾被访问过的页面,在最近的将来可能也不会再被访问。所以,这种算法的实质是:当需要淘汰一个页面时,总是选择在最近一段时间内最久不用的页面予以淘汰。
注意:常考察FIFO和LRU算法,对比如下
例题:
答案:1)B 2)C
8. 索引文件结构
例题:
答案:1)C 2)D
逻辑块号从0号开始,则物理快号50对应逻辑块号0。物理块号58对应逻辑块号5。每个地址4字节,磁盘索引块大小1KB,则可以存储256个地址。136对应逻辑块号260,则物理块号187,对应逻辑块号261。由题和图所示,物理块号101是二级地址索引表。
9. 文件和树形目录结构
10. 空闲存储空间管理位示图
例题:
答案:1)D 2)B
需要注意第几个字是从1开始计算,而字的位置是从0开始计算。对于第一问(1+4195) / 32 = 131.125 则是在第132个字中。32*131=4192 (0-4191)个物理块号,则132个字0位置是4192,4195在第3个位置置为1。
11. 数据传输控制方式
12. 虚设备与Spooling技术
13. 微内核操作系统
想要电子版本的同学可以留言或者私信我获取,辛苦整理资料,欢迎点赞、收藏和评论!