1. 进程和线程
1.1 区别
(1) 进程是计算机资源分配的基本单位,线程是CPU调度的基本单位
(2) 进程有独立的地址空间,线程共享进程的地址空间
(3) 进程的开销比线程大
1.2多线程的优点
(1) 创建速度快,系统开销小
(2) 通信简洁,系统传送速度快:线程间的通信在统一地址空间进程,不需要额外的通信机制
(3) 并行性高:线程可以独立运行,能够充分利用和发挥处理器和外围设备并行工作的能力
1.3 进程的基本状态
进程的基本状态分为阻塞态,就绪态和执行态
阻塞态:等待某个事件的完成
就绪态:等待系统分配处理器正在运行
执行态:占有处理器正在运行
1.4非抢占式调度和抢占式调度
非抢占式:分派程序一旦把处理器分配给某个进程就让他一直运行,直到进程完成或者进程调度
抢占式:操作系统将正在运行的进程强行暂停,由调度程序将CPU分配给其他就绪进程的调度方式
1.5进程的调度算法
FCFS(先来先服务):调度的顺序就是任务到达就绪队列的顺序,对短作业不公平
SJF(短作业优先)
HRN(最高响应比优先) 响应比R=1+W/T W:作业在等待队列中等待的时间 T:估算作业执行的时间
Priority(优先权调度) 每个任务关联一个优先级,调度优先级最高的服务
Round Robin 设置一个时间片,按照时间片来轮转调度
1.6 进程间通信的方式
(1)管道:管道可用于具有亲缘关系的进程间的通信,是一种半双工的方式
(2)消息队列:克服了管道只能承载无格式字节流以及缓冲区大小受限等缺点
(3)共享内存:多个进程可以访问同一块内存空间,是最快的可用IPC方式
(4)信号量:主要作为进程间以及同一进程不同线程之间的同步手段
(5)Socket
1.7线程间同步的方式
(1)临界区域
(2)信号量
(3)事件
2. 死锁
(1) 死锁的概念:多个进程无限期阻塞,相互等待
(2) 死锁的必要条件:
<1>互斥:一个资源每次只能被一个进程使用
<2>不可抢占:进程获得的资源,在未使用完之前不能强行剥夺
<3>等待和保持:一个进程因请求资源而阻塞时,对已获得的资源保持不放
<4>环形等待:若干进程形成收尾相接的循环等待资源关系
3. 内存管理
3.1 内存分配的方式
(1) 连续分配方式
以固定分区分配方式为例,因为分区固定,所以缺乏灵活性。当程序太小时,一个分区不足以容纳,造成内部碎片。当程序太大时,一个分区又不足以容纳,造成外部碎片。
(2) 基本分页存储管理方式
分页存储管理是将一个进程的逻辑地址空间分成若干个大小相等的片,称为页。并将各页加以编号,从0开始,如第0页,第1页等。相应的也把内存空间分成与页面相同大小的存储块,被称为页帧。在为进程分配内存的时候,以块为单位将进程中的若干个页分别装入到多个可以不相邻接的块中,由于进程的最后一页经常装不满一块形成不可利用的碎片,被称为页内碎片。
在分页系统中,允许将进程的各个页离散的储存在内存不同的物理块中,但系统要能保证进程的正确运行,即能在内存中找到每个页面所对应的物理块。因此系统为所有进程建立了一张页表,在进城地址空间内的所有页,依次在页表中有一页表项,其中记录了相应页在内存中对应的物理块号,在配置了页表之后,进程执行时,通过查找该表,即可找到每页在内存中的物理块号,页表的作用是实现从页号到物理块号的地址映射。
由于页表是放在内存中的,使得CPU在存取每个数据的时候,都要两次访问内存。为了提高地址变换速度,在地址变化机构中增加了一个具有并行查询能力的缓冲寄存器,被称为联想寄存器
(3) 基本分段存储管理方式
分段存储管理的目的主要是为了满足程序员在变成和使用上多方面的要求,其中有的要求是其他几种存储管理方式难以满足的。因此这种存储管理方式成为了当今所有存储管理方式的基础。分页系统中的“页”只是存放信息的物理单位,并无完整的意义,而段却是信息的逻辑单位。
分页和分段的区别:
1. 两者相似之处:两者都采用离散分配方式,且都要通过地址映射机构来实现地址变换
2. 两者不同之处:
(1) 页是信息的物理单位,分页式由于系统管理的需要,消减内存的零头。段是信息的逻辑单位,分段的目的是为了能更好的满足用户的需求
(2) 页的大小固定,由系统决定,段的长度不固定
(4) 段页式存储管理方式
段页式系统的基本原理是先将用户程序分成若干个段,然后再分为若干个页。在段页
式系统中,地址结构由段号,段内页号和页内地址三部分所组成。段页式存储管理方
式综合了分页系统能有效提高内存利用率的优点和分段系统能有效满足用户需求的优
点。
3.2 页面置换算法
FIFO 淘汰最早调入的页面
OPT(MIN) 选未来最远将使用的页淘汰,是一种最优的方案,理论中存在实际不可
应用
LRU 选最近最长时间没有使用的页淘汰,性能最接近OPT
LFU 选最不经常使用页置换算法,要求在页面置换的时候引用计数最小的页
3.1 虚拟内存
(1) 虚拟内存的作用:先将部分程序导入内存,执行完成之后导入下一部分程序,给我们的感觉是内存变大了,实际上物理内存的大小并没有变化
(2) 虚拟内存的优点:
<1> 将逻辑内存和物理内存分开
<2> 虚拟内存允许文件和内存通过共享页而为两个或多个进程所共享
(3) 虚拟地址的转换
虚拟地址的转换即把逻辑地址转换为页码和偏移量(页内偏移量)
eg.对于一个内存地址为32位,内存页为8KB大小的系统 0x0005F123这个地址的页号和页内偏移分别是多少
0x0005F123 0000 0000 0000 0101 1111 0001 0010 0011
2*32 / 2*13 = 2*19 说明后13位代表偏移量 偏移量为0x00001123 页号为0101111,即47。
4. 磁盘与文件
(1) 磁盘调度:
磁盘访问延迟=队列时间+控制器时间+寻道时间+旋转时间+传输时间
磁盘调度的目的是为了减少延迟,前面两项可以忽略,寻道时间是主要矛盾
(2) 磁盘调度算法
FCFS:按照请求接收到的顺序进行处理
SSTF:选择使磁头从当前位置移动最少的磁盘I/O请求,所以SSTF总是选择导致最小
寻道时间的请求。性能比FCFS好,但是会存在饥饿现象
SCAN:当设备无访问请求时,磁头不动;当有访问请求时,磁头按一个方向移动,在
移动过程中对遇到的访问请求进行服务,然后判断该方向上是否还有访问请求,如果
有则继续扫描;否则改变移动方向,并为经过的访问请求服务,如此反复。
5. I/O
5.1中断
中断指的是处理器接收到来自硬件或者软件的信号,提示发生了某个事件,应该被注
意,分为硬件中断和软件中断
(1) 硬件中断
外中断:指来自处理器以外的中断信号,包括时钟中断,键盘中断,外部设备中断等。当处理高一级中断时,会部分或者全部屏蔽低级中断
内中断:又称为异常或者同步中断,是指来自处理器内部的中断信号,是由于程序执行中不正常或错误的事件
(3) 软件中断
软件中断是一条CPU指令,用于产生一个中断。软件中断常被用作实现系统调用
5.2 I/O控制的方式
(1) 轮询
使用查询指令测试设备控制器的忙闲状态位,确定内存和设备是否可以交换数据。轮询方式使用三条指令
<1> 查询指令,查询设备是否就绪
<2> 读写指令,当设备就绪时执行数据交换
<3> 转移指令,当设备未就绪的时候执行转移指令查询指令继续查询
用轮询控制I/O的情况下,CPU只能串行工作
(2) DMA
内存和设备之间有一条数据通路成块的传输数据
(3) 中断
I/O设备在I/O设备将数据写入I/O缓冲区之后发起一个中断,由中断处理程序将I/O缓冲区的内容写入内存
(4) 通道