操作系统这个考试不超过7分
注意逻辑地址从0开始
还有做那个物理块问题,字的编号看题目是不是从0开始
大纲
0.操作系统的概念
应用软件和硬件的接口,直接提供api给软件调用
1.进程管理
1.1进程的状态
就绪就是,什么资源都有了,就是缺cpu资源
等待就是缺资源,资源有了,不能直接到运行,还要去就绪等待分配的cpu
等你时间片完了,你就结束了,即使你还没有完成全部工作,接着等下一个轮到你的时间片
三状态模型,转为5状态模型,多了人为的将 就绪和等待状态 挂起
1.2前驱图
前区图所想表达的是,哪些内容有并行关系,哪些内容有先后关系
1.3进程的同步与互斥
是进行pv操作的前提
同步与互斥不是反义词,同步反义词是异步,互斥反义词是共享
互斥
- 就是 同一时刻只允许一个进程去使用这个资源,就是提个资源只能同时服务一个进程
同步
- 就是要求例如不同速度的两个人,同时到达同一个地方,但是要求要同时到达,所以就会要求速度快的
走远了,就停下来等一下慢的,然后一起到达终点
同步和互斥的经典问题,是生产者和消费者问题
单缓冲区的例子
- 互斥,就是市场只能里面的东西拿出来,接着在把新的东西放进去
- 同步,就是市场有东西,但是生产者再把东西放进去,就会产生溢出问题,
正常来说就要等消费者,把市场的东西拿出来后才能放新的东西,就类似快(生产者放东西进市场)的等 一下慢(消费者拿东西出来)的
多缓冲区的例子
- 互斥,就是市场只能有空位了,才能把新的东西放进去
- 同步,就是市场位置已经满了,但是生产者再把东西放进去,就会产生溢出问题,
正常来说就要等消费者,把市场有空位置才能放新的东西,就类似快(生产者放东西进市场)的等一下慢(消费者拿东西出来)的,多缓冲区的就是缓冲区满了,就等下一换缓冲区有空位再放东西进去
pv操作分清楚哪里同步哪里互斥
1.4 PV操作 (重点)
pv操作就是解决并发编程的一些前后约束问题,就是类似加锁,解锁问题
p(-1)就是加锁,v(+1)就是开锁
p操作是将原来的减去1,判断条件是<0
v操作而是将原来的加1, 判断条件<=0, 就从进程队列中拿取一个挂起的进程,唤醒它,让左边的p操作继续
条件不成立,v操作继续
简单来说P(-1)就是阻塞,v(+1)就是唤醒
下面假设先生产者
先生产一次,但是第二次就发现缓冲区有东西,所以就进不去
所以这里发现
- 临界资源是缓冲区(共享资源)
- 临界区是生产一个产品,到准备放东西进缓冲区 之间的代码区
还有消费者准备从缓冲区拿产品 之间的代码区
下面假设先消费者
先p操作,则,-1,满足要求,就不能往下走了,
做题我们,先可以一边一边的分析,一直走一条路看出现什么问题,接着走另外一条路又会出现什么问题,接着我们就加上pv.就得出答案了
做这个题,在从缓冲区拿东西前,加个p(阻塞)操作,因为缓冲区没有东西搞,需要等别人搞东西进缓冲区,也就是v(唤醒)操作,另外一个进程
就是在操作阻塞资源前,加个p(阻塞)操作 操作完阻塞资源后加个v(唤醒)操作
买书习题
买书我们付款唤醒V(s1)收营员收款,接着我们会等待(Ps2)收营员收款,同时,收银员一开始(Ps1)等待来人付款,
被唤醒后,然后收费完,就唤醒(Vs2)买书的人,说他可以走了
1.5 PV操作加前驱图(重点)
将依赖关系找出来,接着再写pv操作出来,这个要执行,就记得要把其他的继续等待
就是说你前面的有个p操作,后面就会有个v操作
标明信号量的方式:从左到右,从上到下 以此,s1,s2,s3,s4.....
技巧
- 是在处理这个操作后加p操作,在开始别的操作之前进行v操作
如图即在,A的出线处加Pa,再箭头尾端加Va操作
即再信号量的开头加v操作,信号量的结尾箭头加p操作
技巧
- 是在处理这个操作后加p操作,在开始别的操作之前进行v操作
如图即在,A的出线处加Pa,再箭头尾端加Va操作
即再信号量的开头加v操作,信号量的结尾箭头加p操作 ,下面这个就是绝妙的体现
首先看求解的a,b,c图,箭头端,是执行这个操作要唤醒下一个程序,所以是v
出线是 p操作,检验前置操作是否已经执行完成,用p
1.6 死锁问题
1.6.1 死锁的概念
经常考的就是,满足什么样的条件就不死锁
死锁就是自己的工作没做完,需要拿别人的资源来操作,但是别人不给,自己也不释放资源给别人,所以系统就无法无完成一定的任务
解决不死锁的最小的资源数
k*(n-1)+1 ,k是每个进程需要的资源数,n是一共多少个进程
就是每一个进程都差一个就能完成任务,此时算变来一个给任意的资源都能完成任务,接着完成任务后其他资源都会释放,所以就将差一个就完成的资源数全部相加,最后再加1,就得出
1.6.2 死锁的预防与避免
死锁的四个条件
- 互斥,不是互斥,一起用同时用,就不存在死锁
- 保持和等待,不释放手中的资源,等待别人释放资源
- 不剥夺,系统不拿一个进程的资源给另外一个
- 环路等待,就是A等B释放资源,B等C释放资源,C等A释放资源
解决死锁问题就是
有序资源分配方法,先把资源分给a,再分给b,这样资源利用率低 银行家算法, 就是考虑钱放出去能不能收回,能收回,就放出去,收不回来就不放
1.6.2 银行家算法 (重点)
考试一般就是选择题,让你验证哪个流程是正确的,如果验证两个流程能走通,就是你的算数出问题
系统是安全的,就是不发生死锁
做这种题,就是
- 先看系统各项资源剩下多少
- 接着对比每个进程缺的资源,进行列表
- 然后看将剩下的资源加上去能完成哪个进程,将进程完成,
- 完成进程就会释放资源,接着释放后看各项资源是多少
- 然后又对比剩下的资源,来进行上面的操作
2.存储管理
从软件层面来看存储
2.1分区存储组织
- 首次适应法,从上往下找到第一个空白块,能来容乃分配空间给其进行作业
- 最佳适应法,就是将空白块从小到大排列,找到刚好能分配空间其进行作业,这个用的多,会出现很多碎块,内存不是连续的一大块,不好利用
- 最差适应算法,将就是将空白块从小到大排列,从最大的开始切
- 循环首次适应算法,就将空白块,由上往下,连起来,最后一个又连上第一个,就这次是这个,下一就轮到下一个了,这样,不会一次盯着同一款分配,这样分配均匀点
2.2页式存储,页式存储,段页式存储 (页式重点)
2.2.1页式存储
页表存在内存中的
最重要的就是页式存储的物理地址和逻辑地址的转化,一般叫求在内存的物理地址
两个的地址是地址是一样的,占用一样的空间,都是以页为单位,所以不会发生偏移
但是页号和块号(有时也叫页帧号)是不一样的,所以查表
例如你内存一共是4g,但是剩余2g可用,此时想运行1g的东西,估计都很难,因为,内存是碎片化的,你想一次性放1g的东西进去,但是没有这么大的空白块,所以出现新的段页式存储
将用户所需要的内存进行分页,按照4k一页这样
页式存储机制就是,我不一次性将所有的快调入进来,而是,我要用那些块,就调那些页进行
所以就用将用户程序分成的页表,对应内存中的相应的块,形成相对应页块表
所以就是你剩下2g,也可以运行4g,因为你要哪些程序,我就调用哪些,已经用完的就调用出去
这样增加系统的负担,每次要查表,因为不是连续的内存
做题就是求出逻辑地址,将页号写在地址前面就是结果
- 4k = 2的12次方,说明业内地址是12位,高于12位的就是 页号,在页号前面的
- 12位的2进制,转16进制,4个一位,一共就3位,H不算16进制
- 得出的16进制地址,页的地址和快地址是一样的
- 接着在地址前面的就是逻辑地址的页号,接着区表找块号即可。
淘汰的
- 状态位0代表不在内存里面,淘汰只能淘汰在内存里面的,访问位是1的不能淘汰,访问位为0的可以淘汰,
页数从从上往下找进行淘汰
2.2.2 段式存储
段的大小是不规定的,页式大小规定的4K
段有长有短
段表便于共享
段表还会记住开始的空白块的地址基址
2.2.3.段页式存储
先分块,再分段
这个增加系统开销,先差段表,在查页表
2.2.4 快表
段,页放在内存当中的,所以是慢表
相联存储器,按照内容读取,放在cache,速度快
2.3页面淘汰算法 (重点)
用于分层的存储体系当中
例如当cache块内存块满时,调用新的块进来的时候,就要置换页面
就是当页面一些不用的时候,就置换出去
算法考试最常用的就是先进先出(FIFO),和最近最少使用(LRU)
最优算法(OPT):理论层面的算法,就已经直到要访问的序列时怎样的,已经分析出什么时候淘汰什么样的页面
取得最好得效率,最优时写出来跟其他算法比较,看其他算法跟最优有多大区别,就是这个作用
随机(RAND)算法随机淘汰一个
先进先出(FIFO):发生抖动,就是内存最大时3个,我给你分配4个,但是每次进内存就缺页,就抖动
最近最少使用(LRU):分配的资源越多,效率越好,因为局部性原理,刚刚访问的,有可能等下又访问
抖动现象
缺页是,内存中还没有将这个页读来,内存没有这个页的内容,也叫缺页中断
下面时FIFO和LRU的区别
2.3.1 练习题
这些题都是考页式存储,记得页式存储的特点是,要先去内存中查表,再来访问内存相应的页
没有使用块表(即没有使用缓存,直接读进内存),页式存储,也就是说,我们先要在内存中查表,接着查到表再将用户所在的页,读进内存来运行
也就是说读用户程序进内存,页式存储,是需要访问两次内存
接着查看程序占用了多少个页,就是要执行读表,读进内存,这个操作进行多少次
swap AB,先找A和B,A和B各占用两个页,还有swapAB又占用两个页
所以一共读了6个页,所以6*2 = 12,访问内存12次
实际当中指令就算占了两块,并不会分开两次,而是一次性,但是操作数是占了两页,就是2
所以将上面的读进内存进行访问,就一共 (1+2+2) = 5次缺页,因为内存不存在这块内容,需要将
这块内容,读进内存
3.文件管理
3.1 索引文件结构
一般来说,索引文件结构由13个节点,编号从0到12号,如果多余12号的编号,题目会有说明,如果没有
就是0到12、
分多少级间接索引,是考虑到文件的本身容量扩展问题
比如一个盘4k,所以这13个块使用的全部是直接索引,最大是4*13K = 52K的大小
间接索引就是例如,前10块全部是直接索引,就4K*10 = 40K
- 10号节点(一级间接索引),接着一个盘块,存了其他物理盘块的地址,假设一个地址4个字节,则4k存1024个物理盘块的地址这就是一级间接索引,就一共 1024*4k 这么大
- 11号节点(二级间接索引)
- 12号节点(三级间接索引)
逻辑块号就是按照从上往下自己表明,1,2,3.,再到索引相应的物理盘块继续,4,5...
物理块号就是已经表明在框里面的,
一个物理盘块1k大,一个地址,占用了4个字节(即地址项大小),即 1k/4 = 1024/4 = 256个地址,
所以逻辑块5开始往上面加个256,就是261,即一块新的盘可以存256个地址,即
90号块存的地址里面,对应的最后一个逻辑块是 260,
所以261,就是91号对应地址的第一个,物理块,也就是187
3.2 树形目录结构
3.3空闲存储空间的管理
- 空闲区表法,用一个表把空闲目录记录起来
- 空闲链表法,把空闲区连起来,连成链表
- 成组链接法,分组又分表
- 位示意图法
3.3.1 位示意图法 (重点)
画一个位示图法,1代表已经占用,0代表空闲
将存储空间分成很多个物理块,就能很直观看出哪些是被占用,哪些是空闲,
位置图类似电影票买票的座位图
因为物理块号编号是从0开始的,所以加1,一共是(4195+1)个物理块,除以32得出131.125,则在132个字中
因为是分配,就是将该位置设置为1,所以排除设置为空闲(0)的,
则我们算131*31 = 4192
因为是从0开始标号的,所以即0到4191,
则132块的分析如下图
4.设备管理
4.1数据传输控制方式
数据传输控制方式解决的是内存和外设的传输控制问题
通道和输入输出机是专用的计算机来解决,这两个不用理,考试不考
下面3个考的比较多
cpu介入最多的方式,也是最低级的方式,数据的传输控制很多需要cpu介入,这种方式,外设处于非常被动的 方式,不会主动反应传输完成了没有,而是有cpu时不时发出指令查询传输完了没有,没有就继续传
跟上面差不多,但是外设完成传输,就会发出一个中断给cpu,外设准备好发消息给cpu,未发送时
是直接存储控制方式,就是cpu初始化一些数据而已,接着就交由DMA控制器去监管外设,如果完成了,就由 cpu接手后序的工作,这样效率高跟多
4.2 虚设备与SPOOLING
spooling就是池,将要打印的东西有个缓冲区存起来,依次打印
5.微内核操作系统
就是将主要的核心功能做小,其他的作为外设,其他的炸了,可以直接重启,这样不会,影响整个系统的运行
用户态炸了,重启就行,核心态炸了,问题大
02.操作系统基本原理
原文:https://www.cnblogs.com/superComputer/p/14166486.html