操作系统之基本概念一
Posted 博1990
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了操作系统之基本概念一相关的知识,希望对你有一定的参考价值。
一、进程、线程管理
1 基本概念
- 进程是资源分配的基本单位,是正在执行程序的实例,是动态的,而程序是静态的,同一个程序跑两次则是两个进程;
- 线程是CPU独立调度的基本单位,共享整个地址空间、全局变量、打开的文件描述符;私有数据:堆栈、寄存器、程序计数器;
- 并行:同一时刻有多个进程在运行,比如多核处理器;
- 并发:同一时间段有多个进程在运行,但是同一时刻只有1个进程在运行;
2 经典IPC问题:
- 生产者-消费者
- 哲学家就餐
- 读者-写者问题;
3 进程间通信IPC
- pipe/fifo
- 消息队列/共享内存/信号量
- socket;
4 线程同步
- 互斥量
- 信号量
- 条件变量/事件
- 临界区(Windows);
5 进程状态: 阻塞、就绪、运行
- 就绪->运行:CPU调度了该进程;
- 运行->就绪:时间片用完
- 运行->阻塞:等待某种事件,比如I/O;
- 阻塞->就绪:等待的事件发生了,比如I/O;
6 进程调度策略:
(1)批处理系统:
- FCFS先来先服务
- SJF短作业优先(长作业饥饿)
- SRTN最短剩余时间优先;
(2)交互式系统:
- 时间片轮转
- 优先级(低优先级饥饿)
- 多级反馈队列(优先级高+时间片少)
7 死锁:在2个或以上的进程中,如果每个进程都持有资源且在等待其他进程持有的资源,导致所有进程都无限制的阻塞、相互等待;
(1)条件:
- 互斥
- 占有且等待
- 不可抢占
- 环路等待
(2)死锁处理策略:鸵鸟策略,即什么都不管,忽略掉;
(3)死锁检测与死锁恢复:
- 每种类型一个资源:检测有向图是否存在环,从一个节点开始DFS深度优先搜索,对访问过的点进行标记,如果访问了已经标记的点则存在环,即死锁发生了。
- 每种类型多个资源:
- 死锁恢复: 抢占、回滚、杀死进程;
(4)死锁预防:
- 破坏互斥条件
- 破坏占有和等待条件:一次性申请所有资源;
- 破坏不可抢占条件:
- 破坏环路等待: 给所有资源统一编号,进程必须按编号顺序来申请资源;
(5)死锁避免
- 安全状态:存在某种调度顺序让每一个进程都运行完毕;
- 单个资源的银行家算法
- 多个资源的银行家算法
(6)通信死锁:进程A发送请求给B并且阻塞等待B回复,如果信息丢失则发生通信死锁,A阻塞以等待B回复,B阻塞等待A发送请求; 通过超时机制解决;
(7)活锁: 类似于死锁,即由于忙等待所以没有进程阻塞,但是只消耗CPU没有进展;
(8)饥饿: 进程调度由于优先级低被无限制推后,但是没有阻塞;
二、内存管理
1 空闲内存管理:
- 位图:位图查找连续0串,由于跨越字节边界所以耗时;
- 双向链表
2 内存分配
- 首次适配
- 下次适配
- 最佳适配
- 最差适配
- 快速适配
3 虚拟内存:在逻辑上来扩展相对有限的物理内存, 虚拟内存<=物理内存+外存容量,并且取决于计算机地址位数;
4 页面置换算法(和缓存机制类似): 淘汰页面的时候根据modify(M位)来判断是否需要写入磁盘
- 最近未使用NRU:根据reference(R位)来判断,由时钟中断清零,一般设置为20ms;
- 最久未使用LRU:链表,最短在表头,最久在表尾,每次访问内存都必须更新整个链表,开销大;
- 先进先出FIFO:链表,淘汰表头+加到表尾;
5 分段和分页:
(1)分页: 一维数组,页大小固定不易存在碎片,但是和程序的逻辑大小不相关
- 地址结构---页号P+页内偏移量W, 页表---页号+页框号+有效位/保护位/访问位/修改位
- 页表查询: 物理地址就是根据页号P找到的页框号+页内偏移量; 如果16位逻辑地址是A,页面大小为L,那么页号P=A/L,页内偏移量=A%L;
(2)分段: 按逻辑单位分成独立的段,如程序段、数据段,容易保护和共享;但是内存使用率低;
- 地址结构---段号S+段内偏移量D, 段表---段号+段起始地址+段长度+有效位?
- 段表查询: 根据段号找到的段起始地址+段内偏移量; (段内偏移量 < 段长度) 需要加法而不是直接拼接;
(3)段页式: 三次访问内存,开销大
- 地址结构---段号+页号+页内偏移量, 段表---段号+页表起始地址+页表大小+有效位, 页表---页号+页框号+有效位
- 段页表查询: 根据段号找到的页表起始地址,再根据页号找到的该页表的页框号+页内偏移量;
三、文件管理
1 文件存储空间管理
2 目录管理
3 文件读写管理和保护
四、设备管理
1.缓冲管理
填充缓冲区的时候超出了缓冲区的范围,溢出的数据覆盖了合法数据上;可能导致程序崩溃;
2.设备分配、处理
3.虚拟设备
4 中断分类:
(1)外中断:CPU指令以外的事件引起,比如IO
(2)异常:CPU指令的内部事件引起,比如空指针引用、数据越界、除0操作
(3)陷入: 系统调用
以上是关于操作系统之基本概念一的主要内容,如果未能解决你的问题,请参考以下文章