【操作系统】操作系统学习总结

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之后所处的状态、断点等信息。
PCB

⑤进程状态

3种状态与转换
3种状态
5种状态与转换
5种状态
7种状态与转换
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的补码。

猜你喜欢

转载自blog.csdn.net/sunshinetan/article/details/72886794