操作系统
1.操作系统
2.操作系统的功能
3.微内核
4.系统调用
5.原子操作
6.进程和作业
7.进程和程序
8.进程和线程
9.进程状态
10.进程调度算法
11.进程通信
12.进程同步和互斥
13.进程同步的四个准则
14.管程
15.死锁
16.饥饿
17.饥饿和死锁的区别
18.产生死锁的原因
19.死锁的四个必要条件
20.预防死锁
21.避免死锁
22.死锁的检测和解除
23.程序链接与装入
24.存储器管理的功能
25.碎片
26.内存连续分区分配
27.动态分区分配算法
28.内存非连续分区分配
29.分段和分页的区别
30.页面置换算法
31.页面分配策略
32.虚拟存储器
33.覆盖与交换技术
34.存储保护
35.文件目录
36.文件逻辑结构
37.文件物理结构
38.文件存储管理
39.Spooling
40.RAID磁盘阵列
41.磁盘调度算法
操作系统是运行裸机上的系统软件,用于管理计算机硬件和软件资源
操作系统的特征是共享、并发、虚拟、异步
处理机管理
存储器管理
文件管理
设备管理
只把进程管理、进程通信、中断处理等核心功能放入内核,使得内核足够的小
采用机制与策略分离,提高了系统的可靠性和可拓展性
用户程序传入参数
操作系统陷入内核态
执行系统调用
执行完成后,返回用户态
指不会被线程调度机制打断的操作,整个过程要一次性执行完成
作业是用户向计算机提交任务的任务实体,一个作业可以由至少一个进程组成
进程是动态的,程序是静态的。进程是程序的执行,程序是有序代码的集合
进程包括程序段、数据段和进程控制块PCB
PCB包括进程标识符、进程状态、优先级、程序、数据段的指针、处理机相关信息
线程是CPU独立调度的单位,进程是资源分配的单位
进程有自己的独立地址空间,线程共享进程的地址空间
同一进程,线程切换不会引起进程切换,不同进程进行线程切换,会引起进程切换
引入线程的操作系统,不仅进程间可以并发执行,同一进程的线程也可以并发执行,提高了系统的并发性和吞吐量
切换线程的开销比切换进程的开销更小
创建态
就绪态
运行态
阻塞态
终止态
就绪态可以到运行态,被CPU调度
运行态可以到就绪态,被抢占、时间片到
运行态到阻塞态,申请的资源不足
先来先服务
短作业优先
时间片轮转
高相应比优先 (等待时间+运行时间)/运行时间
多级反馈队列
低级通信方式 PV操作
高级通信方式 共享存储、消息传递、管道通信
信号量可以分为整形信号量、记录型信号量(包括资源个数、等待队列)
信号量的值可以通过PV操作改变
信号量可以实现进程的同步和互斥
临界资源 一次仅允许一个进程使用的资源
临界区 进程访问共享资源的那段程序
同步 多个进程因为合作而使得进程的执行有一定的先后顺序
互斥 多个进程在同一时刻只有一个进程能进入临界区
空闲让进 临界区空闲,进程可以进入
忙则等待 临界区已有进程访问,其他进程等待
有限等待 应保证进程等待进入临界区的时间是有限的
让权等待 当进程不能进入临界区时,应释放处理机
由一组数据和用来访问数据的过程组成
为了管理大量分散同步操作的进程同步互斥工具
每次仅允许一个进程在管程内执行某个过程
死锁是指两个或两个以上的进程执行过程中,因争夺资源而造成的一种互相等待的现象,从而无法继续推进下去。
进程长时间得不到处理机调度的现象叫做饥饿
饥饿进程可以只有一个,死锁必须有两个
饥饿进程可以是一个就绪进程,而死锁进程必定是阻塞进程
系统资源不足
进程推进顺序不当
互斥条件
不剥夺条件
请求和保持条件
循环等待条件
破坏死锁产生的四个必要条件
避免系统进入不安全状态,使用安全性算法判断是否存在安全序列,银行家算法=试探分配资源+安全性算法
检测死锁:
资源分配图
解除死锁:
资源剥夺法
撤销进程法
进程回退法
程序的链接方式:
静态链接 在程序运行之前,先把各个目标模块及所需库链接为一个完整的可执行程序
装入时动态链接 将应用程序编译后所得到的一组目标模块在装入内存时采用边装入边链接
运行时动态链接 程序运行过程中需要一些模块时,才对这些模块进行链接。
程序的装入方式:
绝对装入 在编译时就产生物理地址的目标代码
可重定位装入 在程序装入内存时将逻辑地址转为物理地址
动态运行装入 在程序运行时将逻辑地址转为物理地址,需要重定位寄存器
程序到进程的过程:
编译 由编译程序将用户源代码编译成若干目标模块
链接 由链接程序将编译后形成的一组目标模块及所需的库函数链接程装入模块
装入 由装入程序将装入模块装入内存中运行。
内存分配和回收
地址变换
扩充内存
存储保护
内部碎片 已经被分配出去却不能被利用的内存空间
外部碎片 未被分配出去且因太小而无法利用的内存空间
拼接技术(紧凑技术) 将分散的外部碎片连成一个大的空闲区,解决碎片问题
单一连续分配 只支持单道程序,无外部碎片,有内部碎片
固定分区分配 支持多道程序,设置分区表,每个分区装入一道程序,无外部碎片,有内部碎片
动态分区分配 支持多道程序,根据进程大小动态建立分区,无内部碎片,有外部碎片
首次适应
邻近首次适应
最佳适应
最差适应
非连续分区分配可以在内存中离散地分配程序,更好的内存利用和管理
分页
分段
段页式
页是为了实现离散分配,减少外部碎片,提高内存利用率,段是为了能够更好地满足用户需要
页的大小是固定的,由系统决定,段的长度不固定,取决于用户编写的程序
分页的地址空间是一维的,分段的地址空间是二维的
分页有内部碎片,无外部碎片,分段有外部碎片,没有内部碎片
页表项由页号和块号组成,将块号和页内偏移拼接在一起就可以得到物理地址
段表项由由段号、段首址、段长、装入位组成,将段首址和段内偏移拼接在一起得到物理地址
最佳置换算法OPT
先进先出算法
最近未使用算法NRU
最近最少使用算法LRU
CLOCK算法
改进的CLOCK算法
固定分配局部置换
可变分配局部置换
可变分配全局置换
基于局部性原理,仅将要运行的少数页面或段装入内存,其余暂时不调入内存
当程序运行时访问缺页,在利用请求调页功能将页面从外存中调入内存
若此时内存已满,则采用页面置换算法,将内存中暂不使用的页面调入到外存的对换区中
故从用户角度出发,该系统的内存容量似乎比实际内存容量大得多
覆盖 将程序运行时不要求同时装入内存的组成一组,成为覆盖段
交换技术 将外存分为对换区和文件区,内存紧张时,将某些进程换出到外存的对换区
覆盖技术需要开发人员给定覆盖结构,交换技术是在在不同进程情况下,覆盖技术在同一进程情况下
设置上下限寄存器
设置重定位寄存器、界地址寄存器,分别代表最小物理地址,逻辑地址的最大值
一个文件目录项就是一个FCB
FCB包括文件名、文件大小、文件打开数、文件读写指针、文件磁盘位置、文件访问权限
流式文件
顺序文件
索引文件
索引顺序文件
顺序分配 为文件分配一组连续的磁盘块
隐式链式分配,每个磁盘块都有指向下一个磁盘块的指针
显式链式分配,建立一张文件分配表FAT,根据FAT还有文件的起始块号,我们可以快速的查找到文件的数据
索引分配 为数据块建立索引表
空闲表法 记录每个连续空闲区起始块号和盘块数
空闲盘块链 以块为单位组成一条链
空闲盘区链 以盘区为单位组成一条链
位示图法 用二进制一位表示磁盘使用情况,0表示空闲,1表示已使用
将独占设备虚拟化为共享设备,采用软件的方式模拟脱机技术,通过预输入、缓输出的方法,(在内存开辟输入、输出缓冲区在磁盘开辟输入输出井,)缓解了磁盘与CPU速度的矛盾
将多个独立的磁盘看成一个整体的逻辑盘,数据能够交叉存储,并行访问,提高了存储性能和可靠性
先来先服务
最短寻道时间优先算法
扫描算法
循环扫描算法