软考中级软件设计师基础整理(2.操作系统)

操作系统

学习步骤及分类总结:

  1. 操作系统概述及作用
  2. 特殊的操作系统
  3. 线程的概念
  4. 进程的状态
  5. 信号量的取值范围
  6. PV操作相关概念
  7. 信号量与PV操作
  8. 前趋图与PV操作
  9. 死锁资源数计算
  10. 进程资源图
  11. 银行家算法
  12. 页式存储与页面置换(待更新)
  13. 段式存储(待更新)
  14. 段页式存储(待更新)
  15. 磁盘管理(待更新)
  16. I/O管理软件(待更新)
  17. 文件相关概念(待更新)
  18. 树形目录结构(绝对路径与相对路径)(待更新)
  19. 索引文件(待更新)
  20. 位示图(待更新)

一、操作系统概述及作用

计算机系统(OS)由硬件和软件两部分组成,是用户与计算机硬件之间的接口,是计算机系统的资源管理者,可以管理计算机的软硬件资源。通常把未配置软件的计算机称为裸机,直接使用裸机不仅不方便,而且将严重降低工作效率和机器的利用率。

操作系统(Operating System)的目的是为了填补人与机器之间的鸿沟,即建立用户与计算机之间的接口而为裸机配置的一种系统软件。操作系统是裸机上的第一层软件,是对硬件系统功能的首次扩充。它在计算机系统中占据重要而特殊的地位,所有其它软件,如编辑程序、汇编程序、编译程序和数据库管理系统等系统软件,以及大量的应用软件都是建立在操作系统基础上的,并得到它的支持和取得它的服务。从用户角度看,当计算机配置了操作系统后,用户不再直接使用计算机系统硬件,而是利用操作系统所提供的命令和服务去操纵计算机,操作系统已成为现代计算机系统中必不可少的最重要的系统软件,因此把操作系统看作是用户与计算机之间的接口。因此,操作系统紧贴系统硬件之上,所有其他软件之下(是其他软件的共同环境)。系统软件开发人员开发操作系统和系统软件。应用软件开发人员开发应用软件。

在这里插入图片描述


二、特殊的操作系统


(一)嵌入式系统

初始化过程可以分为 3 个主要环节,按照自底向上、从硬件到软件的次序依次为: 片级初始化、板级初始化和系统级初始化

1.片级初始化
完成嵌入式微处理器的初始化,包括设置嵌入式微处理器的核心寄存器和控制寄存器、嵌入式微处理器核心工作模式和嵌入式微处理器的局部总线模式等。
片级初始化把嵌入式微处理器从上电时的默认状态逐步设置成系统所要求的工作状态。这是一个 纯硬件的初始化过程

2.板级初始化
完成嵌入式微处理器以外的其他硬件设备的初始化。另外,还需设置某些软件的数据结构和参数,为随后的系统级初始化和应用程序的运行建立硬件和软件环境。 这是一个同时 包含软硬件两部分在内的初始化过程

3.系统初始化
该初始化过程以软件初始化为主, 主要进行操作系统的初始化。
BSP(板级支持包) 将把嵌入式微处理器的控制权转交给嵌入式操作系统,由操作系统完成余下的初始化操作,包含加载和初始化与硬件无关的设备驱动程序,建立系统内存区,加载并初始化其他系统软件模块,如网络系统、文件系统等。最后,操作系统创建应用程序环境,并将控制权交给应用程序的入口。


嵌入式操作系统的特点

(1)微型化:从性能和成本角度考虑,希望占用的资源和系统代码量少;
(2)可定制:从减少成本和缩短研发周期考虑,要求嵌入式操作系统能运行在不同的微处理器平台上,能针对硬件变化进行结构与功能上的配置,以满足不同应用的需求;
(3)实时性:嵌入式操作系统主要应用于过程控制、数据采集、传输通信、多媒体信息及关键要害领域需要迅速响应的场合,所以对实时性要求较高;
(4)可靠性:系统构件、模块和体系结构必须达到应有的可靠性,对关键要害应用还要提供容错和防故障措施;
(5)易移植性:为了提高系统的易移植性,通常采用硬件抽象层和板级支撑包的底层设计技术。


(二)实时操作系统

实时操作系统是保证在一定时间限制内完成特定功能的操作系统。实时操作系统有硬实时和软实时之分,硬实时要求在规定的时间内必须完成操作,这是在操作系统设计时保证的;软实时则只要按照任务的优先级,尽可能快地完成操作即可。



三、线程的概念

具体理论概念看书或者百度,此处不再罗列。

线程共享的环境包括

  1. 进程代码段
  2. 进程的共有数据
  3. 进程打开的文件描述符
  4. 信号的处理器
  5. 进程的当前目录
  6. 进程用户ID与进程用户组ID

线程自己独有的资源

  1. 程序计数器
  2. 寄存器

线程其他的资源均是共享进程的。



四、进程的状态

进程控制块PCB的组织方式

(1)线性表方式:不论进程的状态如何,将所有的PCB连续地存放在内存的系统区。这种方式适用于系统中进程数目不多的情况。
(2)索引表方式:该方式是线性表方式的改进,系统按照进程的状态分别建立就绪索引表、阻塞索引表。
(3)链接表方式:系统按照进程的状态将进程的PCB组成队列,从而形成就绪队列、阻塞队列、运行队列等。



五、信号量与PV操作


1. 信号量的取值范围

在PV操作中,信号量用于表示系统中现有资源的数量,当信号量值为负数时,代表这类资源系统已经分配完毕。对此,对负数取绝对值能得到当前等待进程数量。例如当信号量S的值为-3时,表示系统中有3个进程在等待状态。


2. PV操作相关概念

P操作:申请一个资源,S的值减一
V操作:释放一个资源,S的值加一

PV操作利用信号量机制,是一种有效的进程同步与互斥工具,可以实现资源的互斥使用。
PV操作使用不当容易引起死锁。
PV操作对应进程每次只能发送一个消息,执行效率低。
PV操作针对的是互斥资源而不是共享资源。

PV操作图:
在这里插入图片描述
根据上图:先假设信号量S为0,左边先执行P操作,S的值减一变为-1,判断S值小于0,左边进程阻塞,将改进程放入阻塞队列。右边进程进行V操作,S值加一使S变为0,判断S=0,将右边的进程放入阻塞队列。(左边进程由于执行P操作进入阻塞状态,直到右边进程进行了V操作之后才能继续运行。例如,顾客在超市进行消费,只有一个售货员,顾客进程在把商品拿给售货员时进行P操作,进入阻塞状态,直到售货员进程找零之后进行V操作让顾客进程继续执行)。


3. 信号量与PV操作

如题在这里插入图片描述
-
解答
(1)信号量S1和S5都是互斥信号量,其初始值分别为1和1
(2)S2、S4的初始值分别为:n、m在这里插入图片描述> 补充
本题的S2、S3、S4、S6是同步信号量,S1、S5是互斥信号量。判断同步模型和互斥模型:控制多个进程协调工作的就是同步模型,控制某个进程对临界资源访问的就是互斥模型。一般可以理解为:成对的PV分布在多个进程中就是同步,成对的PV在同一个进程中就是互斥。


4. 前趋图与PV操作

在这里插入图片描述
P1~P5表示五个进程,前趋图有几个箭头即设置几个信号量,一般按从上到下,从左到右的顺序设置信号量。在进程执行前进行P操作,在进程执行后进行V操作。

流转步骤如下图:
在这里插入图片描述

如上分析:

进程P3等待P1和P2的结果,因此当P1P2进程执行完毕时需要使用V操作 V(S1)、V(S2)通知P3。进程P3要执行需要测试P1和P2有没有消息,故应该先P(S1)、P(S2)。当P3执行完毕时需要使用V操作 V(S3)、V(S4)通知P4和P5。



六、死锁资源数计算


1、死锁:

指两个以上的进程都要求对方已经占有的资源,导致无法进行下去的现象。


2、产生死锁的必要条件

从以上分析可见,如果在计算机系统中同时具备下面四个必要条件时,那么会发生死锁。换句话说,只要下面四个条件有一个不具备,系统就不会出现死锁。

  1. 互斥条件 —> 独占锁的特点之一。
  2. 请求与保持条件 —> 独占锁的特点之一,尝试获取锁时并不会释放已经持有的锁
  3. 不剥夺条件 —> 独占锁的特点之一。
  4. 循环等待条件 —> 唯一需要记忆的造成死锁的条件。

上面我们提到的这四个条件在死锁时会同时发生。也就是说,只要有一个必要条件不满足,则死锁就可以排除。

例题

在这里插入图片描述
解:
(1)c和e
(2)m加1 或w减1
-
根据死锁资源数公式
m > n * (w - 1),即:总资源数 > 互斥进程数 * (最大资源需求数 - 1) ,则必然不会发生死锁。


3、银行家算法的实现思想

允许进程动态地申请资源,系统在每次实施资源分配之前,先计算资源分配的安全性,若此次资源分配安全(即资源分配后,系统能按某种顺序来为每个进程分配其所需的资源,直至最大需求,使每个进程都可以顺利地完成),便将资源分配给进程,否则不分配资源,让进程等待。

银行家算法主要分为两部分,安全检测资源请求部分。该算法主要有四大数据结构:

  1. Resource:系统中的资源总量
  2. Available:系统中尚未分配的,可以使用的资源量
  3. Need:每个进程对每种资源的最大需求量。(一行代表某个进程,一列代表某种资源)
  4. Allocation:目前已经分配的情况
    在这里插入图片描述


(1) 安全检测

  • 在资源请求时,本次的请求超过了它最初的资源要求总量,那么该进程就会因为总资源数不足而挂起。如果满足那么继续判断;
  • 如果申请的资源数,大于可以使用的资源数,那么该进程就会因为可用资源数不足而挂起。否则继续分配。

(2) 资源分配算法(此部分就是实现步骤

下面用一个实例来说明银行家算法的实现:

如图,系统中有三种资源R1,R2,R3,总量分别是9,3,6。当前已经将他们分配给了4个进程,问是否存在一个安全序列P,使得这组进程在执行期间处于安全状态?
在这里插入图片描述

由前面的两个矩阵和总资源数,算出可供分配的资源数为(0,1,1

在Allocation(已经分配)分别竖着计算对应:
-------------------------------------------
R1 R2 R3

9 2 5
-------------------------------------------
总量为:9 3 6,所以得出剩余 0 1 1
-------------------------------------------

分析一下该算法的过程

  1. 首先我们先按顺序,将所有的可分配资源(0,1,1)分配给P1(1,0,0)[已分配资源数allocation],得出此时P1的资源数(1,1,1),和P1(3,2,2)[最大资源需求数need]比较发现此时p1的资源不足以让运行,于是不分配给p1,让它暂时挂起。
    在这里插入图片描述
  1. 接着我们按顺序,把所有的资源分配给P2,这个时候分配的资源数已经足够满足need矩阵了,程序顺利运行,然后退出的时候将所占有的资源全部释放,此时Available(可用资源数)增加,增加的量就是原P2所占有的量,从解题步骤来看,Available的数值就是我们之前假设的把所有资源都加在P2那时候的状态。
    - P2进程,已经获得的资源,如下图 为 6 1 2 + 0 1 1 =6 2 3 > 6 1 2,所以P2运行
    - 运行后,释放 6 2 3
    在这里插入图片描述
  1. 此时因为资源增加了,可以将之前的P1再分配资源看看够不够,或者直接向下给P3分配。都可以,不过推荐第一种方式,因为怕遗漏。
    -
    P1进程已经得到的资源为:1,0,0+P1释放的资源6,2,3 =7,2,3
  1. 然后重复上面的操作,如果始终有某个进程不能满足,那么就不存在安全状态,否则全部程序能按此顺序完成,这就是安全状态。
    -
    按照刚刚执行的顺序, <P2 ->P1->P3 ->P4>,那么这组进程一定不会发生死锁,也就是我们说的安全序列。

当然上面的P3和P1的顺序调换,也是安全序列。所以,安全序列有可能不止一个。 到了最后的进程退出的时候,注意到Available的值一定等于总资源数。




七、进程资源图

进程资源图相关概念(摘抄图)
在这里插入图片描述

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值