软件设计师备考笔记
上午题 | 下午题 |
---|---|
计算机网络概述 | 数据流图设计(下午试题一) |
程序设计语言基础知识 | 数据库设计(下午试题二) |
标准化和知识产权 | UML分析与设计(下午试题三) |
数据库 | 面向对象程序设计与实现(下午试题六) |
操作系统 | 算法设计与C语言实现(下午试题四) |
结构化开发与方法 | |
软件工程 | |
网络与信息安全 | |
数据结构 | |
算法分析设计 |
1 操作系统概述
- 操作系统的
作用
:通过资源管理提高
计算机系统的效率
- 改善人机界面
向用户提供友好的工作环境
- 操作系统的
特征
:并发性、共享性、虚拟性、不确定性
- 操作系统的
功能
:进程管理、存储管理、文件管理、设备管理、作业管理
- 操作系统的分类:
- 批处理操作系统
- 分时操作系统(轮流使用CPU工作片)
- 实时操作系统(快速响应)
- 网络操作系统
- 分布式操作系统(物理分散的计算机互联系统)
- 微机操作系统(Windows)
- 嵌入式操作系统
计算机启动
的基本流程
为:BIOS——>主引导记录——>操作系统
2 进程管理
2.1 进程的组成和状态
- 进程的
组成
:- 进程控制块
PCB
(唯一标志) 程序
(描述进程要做什么)数据
(存放进程执行时所需数据)
- 进程控制块
- 进程
基础的状态
是下左图中的三态
图,这是系统自动控制
时只有三种状态,而下右图中的五态,是多了两种状态:静止就绪和静止阻塞,需要人为的操作
才会进入对应状态,活跃就绪即就绪,活跃阻塞即等待
- 当人为干预后,进程将被挂起,进入静止状态,此时,需要人为激活,才能恢复到活跃状态,之后的本质还是三态图
2.2 前趋图
- 前趋图:用来表示哪些任务可以并行执行,哪些任务之间有顺序关系
- 由图可知 A B C 可以并行执行,但是必须 A B C 都执行完后,才能执行 D,这就确定了两点:
任务间的并行
、任务间的先后顺序
2.3 进程资源图
- 进程资源图:用来表示进程和资源之间的分配和请求关系
P
代表进程
,R
代表资源
,R方框中有几个圆球就表示有几个这种资源
,在图中,R1指向P1,表示R1有一个资源已经分配给了P1,P1指向R2,表示P1还需要请求一个R2资源才能执行阻塞节点
:某进程所请求的资源已经全部分配完毕,无法获取所需资源,该进程被阻塞了无法继续。如上图中P2非阻塞节点
:某进程所请求的资源还有剩余,可以分配给该进程继续运行。如上图中P1、P3- 当一个进程资源图中
所有进程都是阻塞节点
时,即陷入死锁
状态
2.4 进程间的通信
2.4.1 同步与互斥
互斥
:某资源(即临界资源)在同一时间内
只能由一个任务单独使用
,使用时需要加锁,使用完后解锁才能被其他任务使用;如打印机同步
:多
个任务
可以并发执行
,只不过有速度上的差异,在一定情况下停下等待,不存在
资源是否单独或共享的问题
;如自行车和汽车临界资源
:各进程间需要以互斥方式
对其进行访问
的资源临界区
:指进程中对临界资源实施操作的那段程序。本质是一段程序代码
互斥信号量
:对临界资源
采用互斥访问,使用互斥信号量后其他进程无法访问,初值为1
同步信号量
:对共享资源
的访问控制,初值
一般是共享资源的数量
2.4.2 信号量操作
P操作
:申请资源
,S=S-1- 若 S >= 0 ,则执行P操作的进程继续执行
- 若 S < 0 ,则置该进程为阻塞状态(因为无可用资源),并将其插入阻塞队列
V操作
:释放资源
,S=S+1- 若S > 0 ,则执行V操作的进程继续执行
- 若S <= 0 ,则从阻塞状态唤醒一个进程,并将其插入就绪队列(此时因为缺少资源被P操作阻塞的进程可以继续执行),然后执行v操作的进程继续
2.4.3 生产者和消费者问题
- 三个信号量:
- 互斥信号量S0(仓库独立使用权)
- 同步信号量S1(仓库空闲个数)
- 同步信号量S2(仓库商品个数)
2.5 死锁
当一个进程在等待永远不可能发生的事件时,就会产生死锁,若系统中有多个进程处于死锁状态,就会造成系统死锁
死锁产生
的四个必要条件
:- 资源互斥
- 每个进程占有资源并等待其他资源
- 系统不能剥夺进程资源
- 进程资源图是一个环路
- 死锁产生后,
解决措施
是打破四大条件,有下列方法:- 死锁
预防
:采用某种策略限制并发进程对于资源的请求,破坏死锁产生的四个条件之一,使系统任何时刻都不满足死锁的条件。 - 死锁
避免
:一般采用银行家算法
来避免,银行家算法,就是提前计算出一条不会死锁的资源分配方法,才分配资源,否则不分配资源,相当于借贷,考虑对方还得起才借钱,提前考虑好以后,就可以避免死锁 - 死锁
检测
:允许死锁产生,但系统定时运行一个检测死锁的程序,若检测到系统中发生死锁,则设法加以解除。 - 死锁
解除
:即死锁发生后的解除方法,如强制剥夺资源,撤销进程等
- 死锁
- 死锁计算问题:
系统内有n个进程,每个进程都需要R个资源
,那么其发生死锁
的最大资源数
为n*(R-1)
。其不发生死锁
的最小资源数
为n*(R-1)+1
2.6 线程
- 传统的进程有两个属性
- 可拥有资源的独立单位
- 可独立调度和分配的基本单位
- 引入线程后,
线程是独立调度的最小单位
,进程是拥有资源的最小单位
,线程可以共享进程的公共数据、全局变量、代码、文件等资源,但不能共享线程独有的资源,如线程的栈指针等标识数据
3 存储管理
3.1 页式存储管理
将进程空间分为一个个页
,假设每个页大小为4K,同样的将系统的物理空间也分为一个个4K大小的物理块(页帧号),这样,每次将需要运行的逻辑页装入物理块中,运行完再装入其他需要运行的页,就可以分批次运行完进程,而无需将整块逻辑空间全部装入物理内存中
- 优点:利用率高、碎片小(只在最后一个页中有)、分配及管理简单
- 缺点:增加了系统开销,可能产生抖动现象
3.1.1 页面置换算法
有时候,进程空间分为100个页面,而系统内存只有10个物理块,无法全部满足分配,就需要将马上要执行的页面先分配进去,而后根据算法进行淘汰,使100个页面能够按执行顺序调入物理块中执行完
- 缺页表示需要执行的页不在内存物理块中,需要从外部调入内存,会增加执行时间,因此,缺页数越多,系统效率越低
最优算法
:OPT
,理论
上的算法
,无法实现
,是在进程执行完后进行的最佳效率计算,用来让其他算法比较差距
。原理是选择未来最长时间内不被访问的页面置换,这样可以保证未来执行的都是马上要访问的先进先出算法
:FIFO
,先调入内存的页先被置换淘汰,会产生抖动现象
,即分配的页数越多,缺页率可能越多(即效率越低)最近最少使用
:LRU
,在最近的过去
,进程执行过程中,过去最少使用的页面被置换淘汰
,根据局部性原理,这种方式效率高,且不会产生抖动现象
3.1.2 快表
-
块表是一块小容量的相联存储器,由快速存储器组成,按内容访问,速度快,并且可以从硬件上保证按内容并行查找,一般用来存放当前访问最频繁的少数活动页面的页号
-
快表是将页表存于cache中;慢表示将页表存于内存上。因此慢表需要访问两次内存才能取出页,而快表是访问一次Cache和一次内存,因此更快
3.2 段式存储管理
将进程空间分为一个个段,每段也有段号和段内地址,与页式存储不同的是,每段物理大小不同,分段是根据逻辑整体分段的
地址表示
:(段号,段内偏移)
:其中段内偏移不能超过该段号对应的段长
,否则越界错误,而此地址对应的真正内存地址
应该是:段号对应的基地址 + 段内偏移
- 优点:程序逻辑完整,修改互不影响
- 缺点:内存利用率低,内存碎片浪费大
3.3 段页式存储管理
对进程空间先分段,后分页
- 优点:空间浪费小、存储共享容易、能动态连接
- 缺点:由于管理软件的增加,复杂性和开销也增加,执行速度下降
4 文件管理
4.1 文件结构
计算机系统中采用的索引文件结构如图所示:
- 系统中有13个索引节点,
0-9为直接索引
,即每个索引节点存放的是内容
,假设每个物理盘大小为4KB,共可存 4KB*10=40KB 数据 10号索引节点为一级间接索引节点
,大小为4KB,存放
的并非直接数据,而是链接到直接物理盘块的地址
,假设每个地址占4B,则共有1024个地址,对应1024个物理盘,可存 1024*4KB=4098KB 数据- 二级索引节点类似,直接盘存放一级地址,一级地址再存放物理盘快地址,而后链接到存放数据的物理盘块,容量又扩大了一个数量级,为 102410244KB 数据
4.2 树形文件目录
相对路径
:是从当前路径开始
的路径绝对路径
:是从根目录开始
的路径全文件名 = 绝对路径 + 文件名
。要注意,绝对路径和相对路径是不加最后的文件名的,只是单纯的路径序列- 树形结构主要是区分相对路径和绝对路径,如图所示:
4.3 空闲存储空间管理
-
空闲区表法:将所有空闲空间整合成一张表,即空闲文件目录
-
空闲链表法:将所有空闲空间链接成一个链表,根据需要分配
-
成组链接法:既分组,每组内又链接成链表,是上述两种方法的综合
-
位示图法
:对每个物理空间用一位标识,为1则使用,为o则空闲,形成一张位示图
5 设备管理
- 设备的分类方式:
- 按数据组织分类::块设备、字符设备
- 资源分配角度分类:独占设备、共享设备和虚拟设备
- 数据传输速率分类:低速设备、中速设备、高速设备
I / 0 软件层次结构
:
5.1 输入输出技术
程序控制(查询)方式
:CPU主动查询外设
是否完成数据传输,效率极低
程序中断方式
:外设完成数据传输
后,向CPU发送中断,等待CPU处理数据,效率相对较高
。适用于键盘等实时性较高的场景中断响应时间
指的是从发出中断请求到开始进入中断
处理程序中断处理时间
指的是从中断处理开始到中断处理结束
中断向量提供
中断服务程序的入口地址
多级中断嵌套
,使用堆栈
来保护断点和现场
DMA方式(直接主存存取)
:CPU只需完成必要的初始化等操作,数据传输的整个过程都由DMA控制器来完成,在主存和外设之间建立直接的数据通路
,效率很高
。适用于硬盘等高速设备- 在一个总线周期结束后,CPU会响应DMA请求开始读取数据;CPU响应程序中断方式请求是在一条指令执行结束时;区分指令执行结束和总线周期结束
5.2 虚设备和SPOOLING技术
一台实际的物理设备,例如打印机,在同一时间只能由一个进程使用,其他进程只能等待,且不知道什么时候打印机空闲,此时,极大的浪费了外设的工作效率
引入SPOOLING技术,就是在外设上建立两个数据缓冲区,分别称为输入井和输出井,这样,无论多少进程,都可以共用这一台打印机,只需要将打印命令发出,数据就会排队存储在缓冲区中,打印机会自动按顺序打印,实现了物理外设的共享,使得每个进程都感觉在使用一
个打印机,这就是物理设备的虚拟化。如下图所示:
5.3 磁盘结构
- 磁盘有正反两个盘面,每个盘面有多个同心圆,每个同心圆是一个磁道,每个同心圆又被划分为多个扇区,数据就被存放在一个个扇区中
- 读取数据时,磁头首先要寻找到对应的磁道,然后等待磁盘进行周期旋转,旋转到指定的扇区,才能读取到对应的数据,因此,会产生
寻道时间
和等待时间
,就是磁头移动到磁道所需的时间和等待读写的扇区转到磁头的下方所用的时间。其中寻道时间耗时最长
,寻道时间的调度算法如下:先来先服务FCFS
:根据进程
请求访问磁盘的先后顺序
进行调度最短寻道时间优先SSTF
:请求访问的磁道与当前磁道最近的进程优先
调度,使得每次的寻道时间最短。会产生“饥饿”现象,即远处进程可能永远无法访问
扫描算法SCAN
:又称“电梯算法
”,磁头在磁盘上双向移动
,其会选择离磁头当前所在磁道最近的请求访问的磁道,并且与磁头移动方向一致,磁头永远都是从里向外或者从外向里一直移动完才掉头
,与电梯类似单向扫描调度算法CSCAN
:与SCAN不同的是,其只做单向移动,即只能从里向外或者从外向里
6 特殊的操作系统
6.1 微内核操作系统
微内核,顾名思义,就是尽可能的将内核做的很小,只将最为核心必要的东西放入内核中,其他能独立的东西都放入用户进程中,这样,系统就被分为了用户态和内核态
6.2 嵌入式操作系统
- 嵌入式操作系统特点:微型化、代码质量高、专业化、实时性强、可裁剪可配置
- 实时嵌入式操作系统的内核服务:异常和中断、计时器、I / O管理
- 常见的嵌入式RTOS(实时操作系统):VxWorks、RT-Linux、QNX、pSOS
嵌入式系统初始化过程
按照自底向上、从硬件到软件
的次序依次为:片级初始化——>板级初始化——>系统初始化
- 芯片级是微处理器的初始化,板卡级是其他硬件设备初始化,系统级初始化就是软件及操作系统初始化