1,概念
1)操作系统特征
并发性
共享性
虚拟性(把一个物理实体变成若干个逻辑上的对应物)
异步性
2)OS体系结构
单体结构
层次结构
虚拟机结构
C/S结构
微内核架构
3)进制转换
4)全局变量和局部变量
全局变量分配在全局数据段并且在程序开始运行的时候被加载, 局部变量则分配在堆栈里面。
2,进程与线程
1)程序的并发执行特征
①间断性
并发执行中的程序因资源限制,状态为“执行-暂停-执行”。
②失去封闭性
由于资源共享及相同写作,打破了程序单道执行时所具有的封闭性。
③不可再现性
并发执行速度不确定,具有随机性,失去了可再现性。
可能发生与时间有关的错误。
2)进程
①定义
进程是可并发执行的程序在某个数据集合上的一次计算活动,也是OS进行资源分配和运行调度的基本单位。
运行状态的程序以进程的形态存储在内存中。
②进程和程序区别
i>进程是一个动态概念,程序是静态概念。
进程 存在于程序的执行过程中。
ii>进程具有并发特性,程序没有。
iii>进程间相互制约,而程序没有。
(资源的共享和竞争造成进程相互制约)
iv>进程与程序之间存在多对多的联系。
一个程序运行多次形成不同进程,一个进程可以 通过执行某个特定程序来与不同的程序关联。
③进程特征
动态性
并发性
独立性(进程是系统中资源分配、保护和调度的基本单位)
异步性
结构性(进程有一定的结构,由程序、数据集合和进程控制块组成)
④进程控制块(Process Control Block,PCB)
PCB随着进程的创建而建立,随着进程的撤销而取消,PCB是进程存在的唯一标志。PCB是OS用来记录和刻画进程状态及有关信息的数据结构。PCB常驻内存,其包括进程执行时的情况以及进程 让出CPU之后所处的状态、断点等信息。
⑤进程状态
3种状态与转换
5种状态与转换
7种状态与转换
3)线程
①特征
i>线程是进程种的一个相对可独立运行的单元
ii>线程是操作系统中的基本调度单位,再线程种包含调度所需要的基本信息。
iii>再具备线程机制的操作系统中,进程不再是调度单位,一个进程中至少包含一个线程,以线程作为调度单位。
iv>线程自己并不拥有资源,它与同进程中的其他线程共享该进程所拥有的资源。由于线程之间涉及资源共享,所以需要同步机制来实现进程内多线程之间的通信。
v>与进程类似,线程还可以创建其他线程,线程也有声明周期,也有状态的变化。
4)处理器调度
①批处理作业调度算法
先来先服务
短作业优先
高响应比调度算法(照顾了短作业,又考虑了作业到达的先后次序,不会使长作业长期得不到服务)
②交互系统进程调度
时间片轮转调度算法
分时系统调度算法,是一种抢占式调度算法。
每个进程只能依次循环轮流运行,如果时间片结束时进程还在运行,CPU将剥夺该进程的使用权转而将CPU分配给另一个进程。如果进程再时间片结束之前阻塞或结束,CPU当即进行切换。
缺点:系统耗费再进程/线程切换上的开销较大,而开销大小与时间片的长短又很大关系。但若时间片太长,每个进程可以再其时间片内完成,该算法退化为先来先服务算法。
优先级调度算法
分为非抢占式优先权调度和抢占式优先调度。
多级反馈队列调度算法(反馈循环队列)
采用动态分配优先数,调度策略是一种抢占式调度方法
5)中断源
①强迫性中断
由随机事件引起而非程序员事先安排。
如:
输入/输出中断(设备出差、执行print语句)、
硬件故障中断(断电)、时钟中断、控制台中断、程序性中断。
②自愿性中断
如:时间片到时。
3,内存管理
1)页式内存管理
运行进程的物理地址空间连续。页面的大小由硬件的地址结构决定。
①基本原理
把用户程序的地址空间划分为若干个大小相等的页,页号从0开始把内存空间划分为若干和页面大小相等的物理块,即内存块。每个物理块有编号,从0开始。
②地址映射
页表
通常 存储再内存中。
页号,物理块号。
实现了逻辑地址到物理地址的映射。
地址结构
逻辑地址由页号和页内偏移地址组成。
物理地址为:块号*块大小 + 偏移地址。
计算
逻辑地址2052,页大小1KB,页表如下,求物理地址。
如图:2052/1024(1KB) = 2;2015%1024=4;分页机构为页号p=2、偏移w=4。
根据页表可知第二页对应物理块号为7.
则物理地址为7*1024+w = 7172
③页面置换策略
④优缺点
分页内存管理不会产生外部碎片,但是会产生内部碎片。
如果进程要求的内存不是页大小的整数倍,那么最后一个物理块就用不完,从而导致页内碎片。
另一个有点是可以共享共同的代码。
⑤快表(联想寄存器)
为了加快逻辑地址和物理地址转换过程中地址变换速度,在地址变换机构中增设一个有并行查询能力的特殊告诉缓冲 存储器,即快表。
快表用来存放当前访问的那些页表项。
变换步骤:
i>在CPU给出的有效地址后,地址变换机构自动将页号p送入高速缓冲寄存器中,并将此页号与高速缓存中的所有页号进行比较。
ii>如果其中有与此页号匹配的,便表示所要访问的页表项在快表中。
iii>直接从快表中读出该页号所对应的物理块号,并送到物理地址寄存器中。
iv>如果在快表中未找到相同的页表号,则必须再访问内存中的页表,从页表中找到该页号所对应的页表项后,把页表项中独处的物理块号送入地址寄存器。
v>同时,将此页号所对应的页表项存入快表中,即重新修改快表。
⑥页面更新算法
2)段式内存管理
3)虚拟内存
能加快虚实地址转换的是:I .增大块表 (TLB) 容量 II .让页表常驻内存
4)交叉存储器
交叉存储器实质上是一种模块式存储器,它能并行执行多个独立的读写操作。
交叉存储器的每个模块都有自己的MAR和MDR。
交叉存储器的每个模块的地址是不连续的,相邻地址的单元位于相邻的模块。
4,I/O管理
5,文件管理
6,死锁
1)死锁原因
进程间竞争资源和进程推进顺序非法。
2)死锁必要条件
满足以下4个条件,就会引起死锁。
①互斥条件
指进程对所分配到的资源进行排他性使用,即一个资源每次只能被一个进程使用。
②占有且等待
一个进程在请求新资源而阻塞时,对已获得资源又保持不放。
即:进程不是一次性获得所需所有资源,而是在占有一部分时申请新资源。
③不可抢占条件
以及分配的资源不能从相应的进程中被强制抢占。
即:资源只能在进程完成任务后自动释放。
④环路等待条件
存在一个进程-资源的环状链,循环等待。
不发生死锁的条件:至少保证一个进程获得全部资源。
举例:N个进程共享11台打印机,每个进程要3台,N的取值不超过多少时,系统不会发生死锁?
最坏的情况是1个进程获取3台打印机资源,另外N-1个进程获取到2台打印机,等待获取第3台。所以3+(N-1)*2 = 11,N=5
3)无死锁策略
①死锁的预防
破坏产生死锁的4个条件之一。
②死锁的避免
在资源动态分配过程中使用某种算法防止系统进入不安全状态,从而避免死锁发生。
③死锁的检查
采取适当措施,从系统中将已发生的死锁清除掉。
④死锁的解除
撤销或挂起一些进程,以便回收一些资源,再将这些资源分配给已处于阻塞态的进程,使之转为就绪态,以继续运行。
4)死锁算法
A.避免死锁
银行家算法
B.解除死锁
消进程法
C.预防死锁
资源静态分配法
D.检测死锁
资源分配图简化法。
所谓化简是指一个进程的所有资源请求均能被满足的话 , 可以设想该进程得到其所需的全部资源 , 最终完成任务 , 运行完毕 , 并释放所占有的全部资源 . 这种情况下 , 则称资源分配图可以被该进程化简 . 加入一个资源分配图可被其所有进程化简 , 那么称改图是可化简的 , 否则称改图是不可化简的
化简的方法如下 :
(1) 在资源分配图中 , 找出一个既非等待又非孤立的进程结点 Pi, 由于 Pi 可获得它所需要的全部资源 , 且运行完后释放它所占有的全部资源 , 故可在资源分配图中消去 Pi 所有的申请边和分配边 , 使之成为既无申请边又无分配边的孤立结点 .
(2) 将 Pi 所释放的资源分配给申请它们的进程 , 即在资源分配图中将这些进程对资源的申请边改为分配边 .
(3) 重复 (1),(2) 两步骤 , 直到找不到符合条件的进程结点
经过化简后 , 若能消去资源分配图中的所有边 , 使所有进程都成为孤立结点 , 则改图是可完全化简的 , 否则不可化简的 .
7,计算
1)原码、反码、补码
①原码
第一位为符号位,其它为值。0为正,1为负。
②反码
正数反码为其本身;
负数反码:符号位不变,其它各位取反。
~10表示10各位取反。
③补码
正数补码:本身。
负数补码:原码的符号位不变,其它各位取反,最后加1.
即:从后数第一个1之后,各位取反。
注意:计算机用补码存储。
④例子
例一:
int i = 5;
int j = 10;
System.out.println(i + ~j); //5+(-11)=-6
j = 10,原码为(10)b = 0000 0000 0000 0000, 0000 0000 0000 1010;
(~10) = 1111 1111 1111 1111,1111 1111 1111 0101;(即各位取反)
因为计算机以补码存储,在读取时,补码为(~10)的数原码为:
1000 0000 0000 0000,0000 0000 0000 1011;即-11
例二:
变量a、b是64位有符号正数,a:0X 7FFF FFFF FFFF FFFF;b:0X 8000 0000 0000 0000;则a+b = ?
解答:
a+b = 0X FFFF FFFF FFFF FFFF FFFF;是-1的补码。