二、操作系统基本原理

2.1、概述

  • 基本概述

    • 管理系统的硬件、软件、数据资源
    • 控制程序的运行
    • 人机之间的接口
    • 应用软件与硬件之间的接口

2.2、进程管理

2.2.1、进程的状态

2.2.1.1、三态模型

  • 三态的种类

    • 运行

      • 所需要的所有资源已经备足
      • 并且拥有CPU资源
    • 就绪

      • 所需要的所有资源已经备足
      • 但是缺少CPU资源
    • 等待

      • 除了缺少CPU资源

      • 还缺少其他资源

        • 例如用户的指令等等
  • 状态的关系

    • 当处于运行状态的时候可以发生某个事件,使得该进程跳转为等待状态,但是不可能从等待状态直接跳转为运行状态,必须先变为就绪状态,在就绪状态等待CPU的调度 才能成为运行状态,成为运行状态不一定能把自己所有的任务做完,因为CPU很宝贵,如果一个大任务的进程一直进行其他的任务就无法进行了,所以会采取时间片轮转的算法来分配CPU资源,也即是一个进程从就绪到运行只能运行一个时间片,当时间片用完之后,即使任务未完成也得退出这个运行态,进入就绪态,等下一次调度,等下一个时间片轮到该进程的时候才能进入到运行态

2.2.1.2、五态模型

状态的演变
  • 当最初的几种状态应用的十分纯熟之后,人们发现基本的三种状态已经不够用了,有时候想人为的将某个进程暂停下来 ,这个时候使用三态模型已经无法满足我们的需求了,所以提出来了五态模型
五态模型的分类
  • 运行态
  • 活跃就绪态
  • 活跃阻塞态
  • 静止就绪态
  • 静止阻塞态

前三个先当与之前的三态模型

五态的关系
  • 跟之前额相比,多了人为的想要改变挂起和激活的状态的方式,这就是五态模型

2.2.2、前驱图

  • 解决的问题

    • 用于表达要完成的一些列任务的先后的 约束关系
  • 案例

进程的同步和互斥

同步和互斥不是反义词

同步:异步

互斥反义词共享

例题

互斥: 拿单缓冲区举例子是指的市场当中不允许生产者在搬进市场的同时消费者进行搬离市场

同步: 多缓冲区当中,同时允许多个生产者同时搬进去多个东西

2.2.3、PV操作

概念

临界资源:诸进程间需要互斥方式对其进行共享的资源,如打印机、磁带机等
临界区:每个进程中访问临界资源的那段代码称为临界区

  • 临界区是一个代码段

信号量:是一种特殊的变量

  • P(S) V(S)其中的S就是信号量

例题

PV操作和前驱图的结合(常考)

例题

因为有四个信号量,对应图中四条划线。那么,就从左到右,从上到下,依次写上S1、S2、S3、S4,然后箭头的开始部位写上V操作,箭头的结束部分写上P操作, 这就很明显的解决了我们的问题

2.2.4、死锁问题

概念:进程管理是操作系统的核心,但如果设计不当,就会出现死锁的问题如果一个进程在等待一件不可能发生的事,则进程就死锁了。而如果个或多个进程产生死锁,就会造成系统死锁。

例题

设进程为n个 ,每个进程需要K个资源 ,, 则至少需要有 n(k-1)+1个资源才不会出现死锁

死锁的必要条件

  • 互斥
  • 保持和等待
  • 不剥夺: 系统不会把跟配给进程的资源剥夺掉,去分给其他进程
  • 环路等待: A等待B释放资源,B等待C释放资源,C等待A释放资源

死锁的预防

打破四大条件

  • 互斥: 资源共享使用
  • 保持和等待: 既然得不到资源,那么就将自己得到的资源释放出去
  • 不剥夺: 系统剥夺资源

死锁的避免

  • 有序的分配资源

  • 银行家算法

    • 分配资源的原则

      • 当一个进程对资源的最大需求量不超过系统中的资源数时可以接纳该进程
      • 进程可以分期请求资源,但请求的总数不能超过最大需求量
      • 当系统现有的资源不能满足进程尚需资源数时,对进程的请求可以推迟分配,但是总能使进程在有限的时间里得到资源

银行家算法的例题

解法如下:

先算出系统剩余的资源数目,然后在算出当前各个进程还需要的资源数目,找到当前资源数目能够满足的进程优先完成,然后完成之后释放资源,然后依次完成所有的任务

2.3、存储管理

  • 首次适应算法

    • 优点

      • 该算法倾向于优先利用内存中低址部分的空闲分区,从而保留了高址部分的大空闲区,这为以后到达的大作业分配大的内存空间创造了条件。
    • 缺点

      • 低址部分不断被划分,会留下许多难以利用的,很小的空闲分区,称为碎片。而每次查找又都是从低址部分开始的,这无疑又会增加查找可用空闲分区时的开销。
  • 最佳适应法

    • 它从全部空闲区中找出能满足作业要求的、且大小最小的空闲分区,这种方法能使碎片尽量小。为适应此算法,空闲分区表(空闲区链)中的空闲分区要按从小到大进行排序,自表头开始查找到第一个满足要求的自由分区分配。该算法保留大的空闲区,但造成许多小的空闲区。
  • 最差适应法

    • 找到最大的空间,切割出来一块进行使用
  • 循环首次适应法

    • 在分配内存空间时,不再每次从表头(链首)开始查找,而是从上次找到空闲分区的下一个空闲分区开始查找,直到找到第一个能满足要求的空闲区为止,并从中划出一块与请求大小相等的内存空间分配给作业。该算法能使内存中的空闲区分布得更均匀,从而减少了查找空闲分区时的开销,但这样会缺乏大的空闲分区。

段页式存储

需要掌握的内容

  • 页式存储当中的逻辑地址与物理地址之间的转化
  • 页式存储,段式存储,段页式存储之间基本的特点,以及运作的基本方式

页式存储

  • 概念:

    • 把用户程序分成等分大小的页,假设是4K大小,每一个4k大小的块称之为一个页,把内存中的存储区也分成4K一个,在调用用户程序的时候不在把整个应用程序一次性的调用,而是需要使用哪些块,需要使用哪些页,就把哪些页调用进来。这样的话就需要有一个页表,用来记录程序中的哪一页,对应内存地址中的哪些块。
  • 优点:

    • 利用率高,碎片小,分配及管理简单
  • 缺点:

    • 增加了系统开销;可能产生抖动现象
  • 逻辑地址和物理地址的关系:

    • 页内地址相同
    • 但是页号和块号不一定相同,
  • 逻辑地址和物理地址的转换

    • 将页号和块号相互转换一下,然后拼接上页内地址,就是该内容的物理地址或者逻辑地址

例题:

首先算出来页内地址的位数,4k 转化为二进制 为 - > 12位(22*210=212),因为二进制和16进制之间的相互转换是四位二进制数转化为一个十六进制数,所以12位就是三位二进制数,所以说 上面的逻辑地址当中的5A29后三位是页内地址,而5是页号,跟据上表,页号为5的页对应6号块(块号也成为页帧号),所以第一题选择D ( 6A29

第二题:

因为系统总共给这个应用程序分配了4个内存块,并且现在内存中已经存在了4个块,所以需要淘汰其他块进行腾出空间,又因为其余三个都在被访问,所以1号被淘汰

段式存储管理

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kvEnjd6Z-1635072914867)(https://gitee.com/Ziop/typora-img/raw/master/img/image-20211002165226789.png)]

  • 概念:

    • 段式管理(segmentation),是指把一个程序分成若干个段(segment)进行存储,每个段都是一个逻辑实体(logical entity),程序员需要知道并使用它。它的产生是与程序的模块化直接有关的。段式管理是通过段表进行的,它包括段号或段名、段起点、装入位、段的长度等。此外还需要主存占用区域表、主存可用区域表。
  • 特点

    • 存储的大小不定长
    • 分别存储了 段号、段长、基址

段页式存储管理方式

  • 概念

    • 段页式存储管理方式即先将用户程序分成若干个段,再把每个段分成若干个页,并为每一个段赋予一个段名。右图示出了一个作业的地址空间和地址结构。
  • 优点:
    • 空间浪费小、存储共享容易、存储保护容易、能动态连接
  • 缺点:
    • 由于管理软件的増加,复杂性和开销也随之增加,需要的硬件以及占用的内容也有所增加,使得执行速度大大下降

快表

  • 段表、页表、段页表等信息是放在内存当中的称之为慢表
  • 放在cache中的称之为快表

页面置换算法

当cache都被占用的时候,就需要使用页面置换算法了

  • 最优( Optimal,OPT)算法

  • 随机(RAD)算法

  • 先进先出(FIFO)算法

    • 有可能产生“抖动”。例如432143543215序列,用3个页面,比4个缺页要少
  • 最近最少使用(LRU)算法

    • 不会“抖动”

考试当中一般出现后两种

FIFO

LRU与FIFO对比

例题(没听懂)

2.4、文件管理

索引文件结构

文件和树形目录结构

主要考察绝对路径和相对路径

位示图

  • 空闲区表法:

    • 用一个表来存储空闲的空间,以便进行管理
  • 空闲链表法:

    • 把空闲区域都连接起来,连成一条链表,使用的时候从这条链表当中画出相应的空间来使用
  • 成组链接法:

    • 成组 分链的形式

以上三种方式了解就行,主要学习**位示图法**

位示图学习简单,主要学习在计算的时候如何计算

例题

2.5、作业管理

2.6、设备管理

数据传输控制方式

所谓的数据传输方式实际是指的内存和外设之间的传输控制,解决这一问题的方案有

  • 程序控制方式

    • 又被称为程序查询方式
    • 这是最低级的方式,也是CPU介于最多的方式
    • 外设处于一种被动的方式,不会主动去反馈信息,每隔一段时间CPU都会主动的去查询外设的状态
  • 程序中断方式

    • 相对于程序控制方式好一些,外设在完成任务之后会主动的发出一个信息来终端程序的运行
  • DMA方式

    • 中文名: 直接存储器访问

    • DMA技术的出现,使得外围设备可以通过DMA控制器直接访问内存,与此同时,CPU可以继续执行程序。

      百度百科

      DMA(Direct Memory Access,直接存储器访问) 是所有现代电脑的重要特色,它允许不同速度的硬件装置来沟通,而不需要依赖于[ CPU ](https://baike.baidu.com/item/ CPU /120556)的大量中断负载。否则,CPU 需要从来源把每一片段的资料复制到暂存器,然后把它们再次写回到新的地方。在这个时间中,CPU 对于其他的工作来说就无法使用。

  • 通道

  • 输入输出处理机

2.7、微内核操作系统

虚拟设备与SPOOLING

实际上就是一个缓冲区,A在打印的时候,B如果想要打印就会把B打印的内容加入到缓冲区,等A打印完之后接着打印B的东西。

微内核操作系统

软件设计师笔记-操作系统基本原理相关推荐

  1. 软考-软件设计师 笔记一(计算机组成与体系结构)

    本栏博客目录 软考-软件设计师 笔记一(计算机组成与体系结构) 软考-软件设计师 笔记二(操作系统基本原理) 软考-软件设计师 笔记三(数据库系统) 软考-软件设计师 笔记四(计算机网络) 软考-软件 ...

  2. 软考-软件设计师 笔记九(多媒体基础)

    本栏博客目录 软考-软件设计师 笔记一(计算机组成与体系结构) 软考-软件设计师 笔记二(操作系统基本原理) 软考-软件设计师 笔记三(数据库系统) 软考-软件设计师 笔记四(计算机网络) 软考-软件 ...

  3. 软考-软件设计师 笔记十(软件工程)

    本栏博客目录 软考-软件设计师 笔记一(计算机组成与体系结构) 软考-软件设计师 笔记二(操作系统基本原理) 软考-软件设计师 笔记三(数据库系统) 软考-软件设计师 笔记四(计算机网络) 软考-软件 ...

  4. 软考-软件设计师 笔记十二(数据流图)

    本栏博客目录 软考-软件设计师 笔记一(计算机组成与体系结构) 软考-软件设计师 笔记二(操作系统基本原理) 软考-软件设计师 笔记三(数据库系统) 软考-软件设计师 笔记四(计算机网络) 软考-软件 ...

  5. 关于中级软件设计师笔记的分享

    gitee项目地址:软件设计师笔记(CS) 本项目分享的笔记由几位考取中级软件设计师的小伙伴共同完成,已于2021年下半年成功考取证书. 仅供学习参考,若有错误欢迎指正! 希望大家多多关注,共同完善该 ...

  6. 软考-软件设计师笔记【原创无样式版】需要笔记请联系

    越努力,越幸运!!! 计算机系统基础 (一)CPU的功能 (1)程序控制功能.CPU通过执行指令来控制程序的执行顺序. (2)操作控制. (3)时间控制. (4)数据处理.CPU最根本的任务. (二) ...

  7. 软件设计师笔记(精简)

    一.计算机系统基础知识 1.CPU 的功能:程序控制.操作控制.时间控制.数据处理. 2.计算机系统组成示意图 3.数据表示:原码.反码.补码.移码.(0 为正,1 为负) 4.移码:如果机器字长为 ...

  8. 软件设计师笔记之信息安全知识

    本章要求考生掌握以下几个方面的知识点. (1)信息系统安全基础知识 (2)信息系统安全管理 (3)保障完整性与可用性的措施 (4)加密与解密机制基础知识 (5)风险管理(风险分析.风险类型.抗风险措施 ...

  9. 软件设计师笔记之计算机硬件基础(一)

    计算机硬件基础 考点梳理 硬件基础知识是软件设计师考试中的一个必考模块.但其涉及到的知识点非常多,真正常考的却不多,因此需要对考点脉络进行梳理,掌握重要知识点. 计算机硬件基础知识点 数据的表示 数制 ...

最新文章

  1. python No tests were found问题解决方法
  2. 21天学通python第4章课后题答案_人工智能教程习题及答案第4章习题参考解答
  3. React.Fragment 包裹标签
  4. mysql myisam 去掉表锁a_MyISAM表锁的解决方案
  5. 8屏 旌宇多屏管理软件_如何选择拼接屏,不能说的秘密,都在这!
  6. 【渝粤题库】陕西师范大学200641高等数学作业(高起专、专升本)
  7. Taro+react开发(95):问答模块02
  8. hive转16进制unhex_Java 进制的转换
  9. Linux基础(使用ssh服务管理远程主机1)
  10. 2018 年程序员求生欲测试题(全国卷)
  11. NopCommerce(Core)学习目录
  12. springboot 接入京东sdk_【第3期】Springboot:微信公众号分享quot;朋友圈quot;
  13. 神经网络预测python_bp神经网络预测python
  14. 将数组中的数逆序存放
  15. 在Ubuntu中为ROG笔记本安装驱动asusctl
  16. 软件测试自学怎么学?
  17. H.264压缩算法详解
  18. 【Vue 基础知识】keep-alive是什么?怎么用?
  19. Windows必备软件,大而全|2022版
  20. Oracle中joint,什么是关节中心化(Joint centration)?

热门文章

  1. 变分贝叶斯(Variational Bayes)
  2. Advanced Installer打包
  3. “中国智能投影第一股”极米,和小米啥关系?
  4. 【代码随想录】二刷-哈希表
  5. setContentView剖析
  6. C#后台画图保存为ipg/png的文件
  7. 成为高级工程师看什么书_在成为工程师之前必须要看的3则谈话
  8. 【MATLAB】图像批处理:批量读取图像—>批量处理—>批量写入文件夹
  9. CUDA C Dynamic Parallelism
  10. 我的一百个2019(一):再见,我亲手创办的公司!