码迷,mamicode.com
首页 > 其他好文 > 详细

操作系统之基本概念一

时间:2019-08-20 01:30:33      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:范围   反馈   空闲   消息   问题:   连续   先来   超时   ipc   

一、进程、线程管理

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)陷入: 系统调用

操作系统之基本概念一

标签:范围   反馈   空闲   消息   问题:   连续   先来   超时   ipc   

原文地址:https://www.cnblogs.com/bo1990/p/11380416.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!