首页 > 其他 > 详细

02.操作系统基本原理

时间:2020-12-21 10:26:08      阅读:27      评论:0      收藏:0      [点我收藏+]
作系统这个考试不超过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,未发送时
  • DMA方式
    是直接存储控制方式,就是cpu初始化一些数据而已,接着就交由DMA控制器去监管外设,如果完成了,就由       cpu接手后序的工作,这样效率高跟多
技术分享图片

4.2 虚设备与SPOOLING

spooling就是池,将要打印的东西有个缓冲区存起来,依次打印
技术分享图片



5.微内核操作系统

就是将主要的核心功能做小,其他的作为外设,其他的炸了,可以直接重启,这样不会,影响整个系统的运行
用户态炸了,重启就行核心态炸了,问题大
技术分享图片






02.操作系统基本原理

原文:https://www.cnblogs.com/superComputer/p/14166486.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!