第一节 操作系统概述

操作系统与计算机体系结构之间的关系

内容提要

第二节 进程管理—进程的状态

程序的三种基本状态(三态模型)

 图注:等待状态下的程序缺少除cpu资源以外的其他资源,如用户指令或外设支持等资源;就绪状态的程序除了CPU资源以外的所有资源都已经准备就绪;处于就绪状态的程序需要排队获取CPU资源,且即使获取到了CPU资源,他们的运行时间也是有限的,因此,时间片到了以后就会从运行状态退出到就绪状态,而程序在运行时出现了某些资源的缺失则会退出至等待状态.

程序进程的五态模型(三态模型的发展)

 图注:该模型是三态模型的发展,将就绪状态分为了静止就绪和活跃就绪,静止就绪是该进程已经获得了CPU资源,但由于人为需要,由运行状态将其退出至就绪状态,如我们在听歌时突然来了电话,我们暂时将音乐关闭,这种人为的将程序由运行态转至的就绪态,即为静止就绪,再次调动该程序时,该程序就将由静止就绪转至活跃就绪进而被调用;此外,阻塞态即为三态模型中的等待态

进程控制块的组织方式(分为索引方式和链接方式)

1.链接方式:把具有同一状态的进程(PCB),用其中的链接字链接成一个队列。这样,可以形成就绪队列、若干个阻塞队列和空白队列等。对其中的就绪队列常按进程优先级的高低排列,把优先级高的进程排在队列前面。此外,也可以根据阻塞原因的不同而把处于阻塞状态的进程的PCB排成等待I/O操作完成的队列和等待分配内存的队列等

2.索引方式:系统根据所有进程的状态建立若干索引表。例如,就绪索引表、阻塞索引表等,并把各索引表在内存的首地址记录在内存的一些专用单元中。在每个索引表的表目中,记录具有相应状态的某个PCB在PCB表中的位置

第三节.进程管理——前趋图

ps.常与pv操作结合起来考察

概念:前趋图是将一个完整的进程所需的工序按照是否具有先后关系将进程进行再次区分的图象

模型示例:

 图注:该前趋图以包饺子这一工序为例,首先将包饺子分为了五大步骤,并根据步骤间是否具有先后约束关系将其分为三个大的步骤,这样做的好处是明确了A,B,C三个步骤是平行的,他们之间可以并行,这样可以增大CPU的处理效率。

第四节 进程管理——进程的同步与互斥

ps.进程的同步与互斥是进行pv操作分析的前提

进程的互斥

 互斥的概念:在同一时刻只允许某一个进程使用资源,即同一资源不能服务于多个进程

互斥的实际应用示例: 

 图注:单缓冲区下生产者和消费者的关系即为互斥,即生产者将产品投入到市场的时间片内消费者不能进行消费,只有当生产者完成产品的市场投放之后,消费者才能开始消费;这其中生产者的产品投放以及消费者的消费。都可以看作是程序的两个进程

进程的同步

同步的概念:运行速度有差异的两个进程同时开始运行,在一定情况下,速度较快的进程会停下来等待速度较慢的进程

进程同步的实际应用示例:

 图注:多缓冲区下生产者和消费者的关系即为同步,即生产者在将产品投入市场的同时,消费者也能够对产品进行消费。但若一方速度较快,则另一方需要停下来等待

第五节 进程管理——pv操作

 临界资源:诸进程间需要互斥方式对其进行共享的资源,如打印机,磁带机等。

临界区:每个进程中访问临界资源的那段代码称为临界区。

信号量:是一种特殊的变量,符号为s,只用于pv操作

PV操作:

图注:S代表信号量,其中P操作表示:S自减一,然后判断是否小于零,若小于零则将该进程阻塞起来,并将其放入进程队列中,让进程处于等待状态,若不小于零,则表示可以往下面执行;该操作即为将进程“挂起”或“申请资源”,该操作一般用于”运行需要条件的操作“。V操作表示:S自增一,然后判断S是否小于等于零,若是,则从进程队列中拿出一个进程,并唤醒该进程,使其继续执行;若不是,则可以继续往下面的步骤执行;该操作即将进程“唤醒”或“释放资源”,一般将该操作用于”没有任何约束的上来就可以运行的操作“。

pv操作示例:

pv操作例题:

题注:

1:这里Sn 的使用是很清楚的,进店->出店,所以选项里带sn 操作的肯定可以排除了

2:信号量操作很关键的点就是,线程唤起做操作前一定是需要做P操作的,不然这个资源就可能被无限线程操作,所以对b1来说一定是个P操作,(选项排除sn 也只剩P 操作选项了…),同样对a1,a2 中一定有个P操作,表示付款进程占据了资源,很显然就是不能上来就P操作,因为s1,s2初始信号量都为0,上来P操作线程就直接挂起了,后面所有流程也就没有了(因为b那边肯定是P操作了),即a1是V,a2是P,这里可以得到1的答案为A,从选项可以看出S1代表付款资源,S2代表收银资源,所有b1操作肯定是P(s2),得到2的答案为C

pv操作与前趋图

 图注:这种例题通过观察箭头的指向来解题,被指箭头用p操作,指向箭头就用v操作,有几个箭头就用几次。

第六节 进程管理——死锁问题

 问题描述:进程管理是操作系统的核心,但如果设计不当,就会出现死锁问题,如果一个进程在等待一件不可能发生的事,则进程就死锁了,此时该进程将一直占用部分系统资源,而如果多个进程产生死锁,就会造成系统资源被占用完毕,进而造成系统死锁。

解决方案:提高系统资源容量;常见习题:计算机系统至少需要多少资源将不可能发生死锁问题;

例题:

 图解:一个进程在得到所有所需资源之后将释放自身占用的资源,因此该例题至少需要13个资源则不可能发生死锁。计算方法:将每个进程所需资源减去一然后把他们相加,总数再加一,即为避免死锁所需的最少资源。

 死锁的条件及处理方式:

发生死锁的四大必要条件

1.进程互斥

2.保持和等待:在资源总量并未满足完成进程所需资源的总量前提下,每个进程都保持自身占用的资源不变并且一直等待其他进程完成以获取其释放的系统资源

3.不剥夺:系统不会把已分配给一个进程的资源剥夺掉分配给其他进程

4.环路等待:如总共有三个进程,A等待B,B等待C,C等待A;诸如此类的,等待的进程形成了一个闭合环状
注:死锁的预防就是通过打破四大条件来进行

死锁的避免

1.有序资源分配法:将系统资源按照顺序分配给进程,一个进程完成后才将资源分配给下一个进程

2.银行家算法

银行家算法

该方法是避免死锁问题的常用方法

银行家算法的内容: 它的内容即为分配资源的原则,包括:

(1).当一个进程对资源的最大需求量不超过系统中的资源数时可以接纳该进程

(2)进程可以分期请求资源,但请求的总数不能超过最大需求量

(3).当系统现有的资源不能满足进程尚需资源数时,对进程的请求可以推迟分配,但总能使该进程在有限的时间里得到资源

银行家算法涉及到的题型:

 解题思路:

 图解:解决该类问题,首先将系统所剩资源数计算出来,然后将每个进程还差的资源数计算出来,进行比较之后,将系统资源分配给差的最少的进程,进而让其释放资源,然后进行下一个所需资源较少的进程的分配,,由此将进程执行的顺序计算出来

第七节 存储管理——分区存储组织

以一个例题为例,描述四个算法:首次适应法,最佳适应法,最差适应法,循环首次适应法;它们的概念及关系;例题:某计算机系统的内存大小为128k,采用可变分区分配方式进行内存分配,现有作业4申请内存9k,几种不同的存储分配算法在分配中,会产生什么样的结果呢?

首次适应法

 图注:首次适应法会把即将执行的作业安排在第一个能够容纳它的空间

 最佳适应法

 图注:该算法会把即将执行的作业安排在内存空间与它最接近的空间进行存放,如该例子中,作业4占据空间9k,通过该算法,计算机就将其存放在了空间为10的地址中;由于在每次存放作业以后内存空间剩余量极低,长期以后该算法会造成内存空间碎片化,降低内存地址的利用率。

最差适应法

图注:该算法能够解决内存空间碎片化的问题,如图所示:该算法优先将作业存放至内存空间最大的地址.

循环首次适应法

 图注:该算法是将空闲的区域连成环状,将作业在环状区域内顺次进行分配(从第二个空闲区域开始分配)

第八节 存储管理——页式存储,段式存储,段页式存储

页式存储组织

1.提出背景:为了解决碎片化的存储

2.概念:把用户程序分成等分大小的n个“页”(并将其编号),再在地址空间中以nk为基数划分等大小的块(同样将其编号,块号又称页帧号),运行用户程序时不再将整个程序进行运行,而是根据需要分批次将页调入到块中运行,而页和块之间的对应关系用页表来记录

3.页式存储组织的优缺点:优点:利用率高,碎片小,分配及管理简单

缺点:增加了系统开销(系统每次读取程序都需要先读取页表将其定位,再进行程序的读取);可能产生抖动现象

图注:页号与页帧号的关系必须通过表来进行查询

 图注:要求物理地址,要先把逻辑地址(由图可知,逻辑地址由页号和页内地址组成)当中逻辑的页号和页内地址分开,要把它们分开,首先将页面大小写成二进制的形式,等于2^n;则说明一个页的页内地址有n位,而在逻辑地址中高于(从右往左)n位的部分就是页号,得到页号之后进行查表,得到相应的页帧号,而物理地址=页帧号+页内地址(该式子中的“+“是拼接,并非做加法)

例题:

段式存储组织

1.概念:按逻辑结构进行内存的划分,划分为n个段,每一个段的大小无要求,可以相等也可以不等,包括段号和段内地址,例如:可以将main主函数作为一个段,然后将第一个子函数作为一个段,然后将第二个子函数作为一个段......

2 、结构

 图注:该种存储方法按函数之间的逻辑对内存进行划分,大小差异较大,存在段表,段表的内容包括段号,段长以及基址,基址:就是该段在地址的起始位置。优点:多道程序共享内存,各段程序修改互不影响。缺点:内存利用率低,内存碎片浪费大

段页式存储组织 

图注:段页式存储是结合了段式和页式的一种存储组织,将内存先分段,再分页;优点:空间浪费小,存储共享容易,存储保护容易,能够动态连接;缺点:由于管理软件的增加,复杂性和开销也随之增加,需要的硬件以及占用的内容也有所增加,使得执行速度大大下降(程序在执行时要先查段表,再查页表,使得系统资源消耗增加)

快表 

1.概念:快表是一块小容量的相联存储器,由高速缓存器(放在cache之中)组成,速度快,并且可以从硬件上保证按内容并行查找,一般用来存放当前访问最频繁的少数活动页面的页号

第九节 存储管理——页面置换算法

1.产生背景:当程序的需要与系统资源的供给发生矛盾时的一种解决方案,即将不用的页面淘汰掉,置换为需要执行的页面

2.页面置换算法的内容:包括四种算法:

(1)最优算法:尚处于理论层面

(2)随机算法:随机淘汰一个页面

(3)先进先出算法(FIFO):即淘汰时按照之前执行的先后顺序进行淘汰,有可能产生“抖动”(抖动即:把经常用到的页置换出去,要用的时候发现没有内存了,造成进程中断)。例如,432143543215用3个页面,比4个缺页要少

(4)最近最少使用算法(LRU):即在保证最近使用的页面不被中断的情况下,将最少使用的页面淘汰,不会产生“抖动”

相关例题 

例1:

例2:

 图注:”没有使用快表“即表示每读一次程序的块,需要先在内存上面查表,才能读取相应的内存块,所以每一个块需要两次内存的访问,所以6个块(在页式存储结构中,每一个页面对应一个块)总共会产生12次对内存的访问;一个内存单元占据1b的内存,所有的指令(无论占据了几个页面)都只产生一次缺页中断,而操作数A和操作数B则各自产生两次缺页中断,因此总共产生了5次缺页中断

第十节 文件管理——索引文件结构

图注:索引一般会有13个节点(默认情况下),从0开始编号,其中索引0到9这十个索引称为直接索引,直接对应物理盘块,每一个物理盘块都对应了索引文件的内容,而索引10则称为间接索引,里面只存储地址,如一个物理盘块的地址大小为4个字节,而一个物理盘块的大小为4k,则4k\4字节等于1024,代表着1024个物理盘块的地址,因此该索引内可以存储的文件大小为4k*1024;该10号索引称之为一级间接索引;索引11则是二级间接索引,即索引的内容还是索引,再索引的内容才是物理盘块,二级简介索引存储的文件大小即为:4k*1024*1024;虽然分级越多存储的内容越多,但相应的,效率也会更低

例题:

题解:逻辑块号从0开始所以逻辑块号5对应物理块58,一个我物理地址大小为4个字节所以一个磁盘数据块可以放1024/4=256个物理地址所以逻辑块号为261的物理块号为187,显然101号物理块存放的是二级地址索引表。

第十一节 文件管理——文件和树型目录结构

树型目录结构的路径

1.绝对路径:是从盘符开始的路径

2.相对路径:是从当前路径开始的路径

图注:在该文件树型图中,若文件目录的位置是D1,若要求f2的路径,则绝对路径:/D1/W2/F2;相对路径:W2/F2

文件属性及文件名的组成

1.文件属性:R:只读文件属性 A:存档属性 S:系统文件 H:隐藏文件

2.文件名的组成:驱动器号;路径;主文件名;扩展名

第十二节 文件管理——空闲存储空间的管理

总共有四种管理方法,分别是:空闲区表法;空闲链表法;位示图法;成组链接法

空闲区表法

1.概念:我们可以用一个表来记录哪些地方是空闲的,以便将其管理起来

空闲链表法

1.概念:把空闲区域都链起来,链成一条链表,然后需要空间分配的时候,从这条链表中划出一部分出来即可

位示图法(重点)

常以计算题方式考察

1.概念:将所有存储区域分成无数个物理块,然后以1表示被占用,0表示空闲,将所有空间进行标记

例题:

图注:4195号是第4196个位,因此4196/32=131.125;因此物理块的使用情况应该在第132个字中描述

第十三节 设备管理——数据传输控制方式

主要是指内存和外设之间的数据传输控制问题,解决方式包括:程序控制方式;程序中断方式;DMA方式;通道;输入输出处理机;前三种要求重点掌握

程序控制方式

1.概念:也称程序查询方式,由这种方式是最为低级的,也是CPU介入最多的一种机制,即整个数据的传输控制很多时候都要CPU的介入,此时外设会处于非常被动的位置,即不会主动的去返回信息,如是否完成等信息,而是由CPU主动发出查询指令,进而对信息进行查询

程序中断方式

1.概念:大部分与程序控制方式相同,但相较于程序控制方式,由于增加了中断方式,主动性更强,即:如果外设完成了数据的传输等操作,外设会发出中断指令,效率比程序控制方式更高

DMA方式

1.概念:也称直接存储器存取方式,在该方式中,会有专门的DMA控制器,只要是外设和内存之间的数据交换过程,就由这个控制器进行管控了,CPU只需要在开头的时候做一些介入,如初始化等操作

设备管理的五个层次

由上到下依次是:用户进程、与设备无关的系统软件、设备驱动程序、中断处理程序、硬件

第十四节 虚设备与SPOOLING技术

 概念:例如:四个人通过远程手段准备使用一台打印机,而这台打印机在同一段时间内只能让一个用户使用,若一个用户正在使用该打印机,另一名用户试图使用该打印机时就会提示该打印机被占用,,事实上这样做使得打印机的技术非常的低,而面对这个问提,采用了SPOOLING技术的打印机会进行如下操作:给打印机创建一个缓存区,每一个用户在打印时都会进入缓存区,而从缓存区到真正打印则需要挨个排队,即打印机在打印时不再排斥其他用户的打印操作,而是将其缓存起来,在将当前操作完成后立即进行第二个操作,这样做不仅使得用户的操作界面变得更为友好,也极大的提高了打印机的打印效率

第十五节 微内核操作系统

概念:把内核做的更小具有许多好处与优势,如提高了可靠性,稳定性,安全性;因为操作系统作为核心的系统软件,如果操作系统出现故障,就会影响整个系统的运行,将内核做的更小就会降低故障的发生率

单体内核和微内核的区别及各自优缺点如下图所示

操作系统基本原理(软件设计师考试)相关推荐

  1. 软件设计师考试内容纲要

    软件设计师考试内容纲要 一.考试说明 1.考试目标 通过本考试的合格人员能根据软件开发项目管理和软件工程的要求,按照系统总体设计规格说明书进行软件设计,编写程序设计规格说明书等相应的文档,组织和指导程 ...

  2. [软考2013计算机软件水平考试软件设计师考试大纲

    来源:3773.com.cn 2012-12-21 2013计算机软件水平考试软件设计师考试大纲 软件设计师考试大纲 一.考试说明 1.考试目标  通过本考试的合格人员能根据软件开发项目管理和软件工程 ...

  3. 软件设计师考试笔记-(10)

    软件设计师考试笔记-(10) 1.操作系统基本原理 1.1.进程管理 1.1.1.进程状态 1.1.2.前趋图 为了描述一个程序的各部分间的依赖关系,或者是一个大的计算的各个子任务间的因果关系的图示. ...

  4. 软件设计师考试(2018下半年)

    本人的情况:非计算机相关专业,相关的基础课只学过C语言和数据结构,自学的java. 因为想往互联网方向发展,就在18年9月份报名了软考中级"软件设计师"科目,11月10考结束,感觉 ...

  5. (2012.12.25)我的中级软件设计师考试

    我的中级软件设计师考试 ―― 2012.12.25(By: Neicole) 一.开篇 中级软件设计师,合格分是45/75(上午题)+ 45/75(下午题),然后,这次低分险过52+51.本文仅想简单 ...

  6. 计算机系统讲解(软件设计师考试内容)

    计算机系统讲解(软件设计师考试内容) 计算机系统: 计算机系统可分为软件系统,硬件系统. 软件系统:系统软件和应用软件. 硬件系统:主机和外部设备.期中主机分为CPU和内存储器.外部设备S包括输入设备 ...

  7. 软件设计师考试整理-0-前言

    1. 整理初衷 2022年下半年的软考成绩出来了,查了一下,上午58分,下午61分,虽然不高,但是也过了,还是值得开心的,毕竟在最初报考的时候,会的知识点寥寥无几. 先解释下为什么我会报考软件设计师这 ...

  8. 如何一周通过软件设计师考试?

    什么是软考? 软考全称"计算机技术与软件专业技术资格(水平)考试",由国家人力资源和社会保障部.工业和信息化部领 导下的国家级考试,设置了27个资格包括初级.中级.高级三个级别.官 ...

  9. 2017下半年软件设计师考试难度分析

    2017下半年软件设计师考试难考吗?这是很多准备参加考试的人的心中的一个疑问,小编只能说做好充足准备的战役,终会胜利.小编建议你们做好以下几点,软件设计师考试其实一点都不难. (1)软件工程.软件工程 ...

最新文章

  1. -lt -gt -ge -le -eq的意义
  2. 好玩,新版微信除了“炸屎”,还可以和她亲亲
  3. python 读图片性能测试
  4. Markdown语法记录
  5. 阿里巴巴 Kubernetes 应用管理实践中的经验与教训
  6. 腾讯医疗AI实验室:3篇论文被国际顶尖会议收录
  7. html fmt转换日期格式,js通用时间格式转换函数
  8. ofbiz中的数据模型
  9. 在传统.NET Framework 上运行ASP.NET Core项目
  10. 解决.net定时器在iis7上不执行问题
  11. 记一个java和php都能调用的http接口
  12. java 内部类_Java内部类总结
  13. window如何安装head插件
  14. Unity3D开发之GL画线
  15. 串行通信:常见的串行通信接口协议UART、SPI、I2C简介
  16. 一元二次方程求根计算机的代码,一元二次方程求根Java源程序代码
  17. 蓝桥杯单片机头文件导入_CT107D蓝桥杯单片机编程笔记
  18. ELK抓取AWS-ELB日志的logstash配置文件
  19. 天平游码读数例题_“天平”试题归类例析
  20. 【台达 PLC - 0】 - 电气基础

热门文章

  1. OTB官方评估代码python版本
  2. 建荣dm8261量产工具V1.8(12.06.19)
  3. 打卡Linux哲学思想 and 命令
  4. salesforce零基础学习(九十七)Big Object
  5. 计算机专业方面需要显卡,屏幕、显卡最重要 设计类电脑选购指南
  6. Linux下vm.overcommit_memory的内存分配参数解释(主要是redis服务——redis服务的日志:/var/log/redis_6379.log)
  7. 屏幕测试亮点,新买了一个显示器,使用web简单的测试下了亮点
  8. Android 三大图片加载框架的对比——ImageLoader,Picasso,Glide
  9. 微信jsapi支付获取code_微信JSAPI支付那点事
  10. android动画应用,Android 动画