操作系统总结

201 阅读6分钟

操作系统的发展与分类

image.png

中断和异常

image.png

系统调用

image.png

进程状态

image.png

  • 还有阻塞挂起,就绪挂起,被挂起的进程被移动到外存,但是pcb还存在内存

进程通信

image.png

进程和线程区别

image.png

  • 进程是系统资源分配的最小单位,线程是cpu调度的最小单位
  • 进程由程序段,数据段和pcb组成,占有内存,而线程几乎没有系统资源
  • 同一个进程可以包含多个线程
  • 通信方式:进程,共享内存,管道通信,消息传递。线程共享所处进程的内存地址,直接进行通信
  • 线程切换代价小,进程代价大

处理机调度

image.png

进程调度的算法(批处理)

image.png 先来先服务:谁先来服务谁 短进程优先 :运行时间短的先执行 高响应比:(等待时间 + 运行时间) / 运行时间。值越大,越先运行

进程调度算法(响应式,现代)

image.png

  • 时间片(非剥夺式):设置一个时间片,每隔一定时间为每个进程服务
  • 优先级(剥夺式/非剥夺式):优先级高的先执行
  • 多级反馈队列(剥夺式):
    • 设置多个队列,优先级依次降低,时间片逐渐增加,
    • 当k级队列的某个进程时间片用完后,插入k+1级队列队尾;若k级某个队列运行时,k-1级队列新进入一个进程,k级进程插入k级队列队尾
    • 同一队列的进程按照先来先服务的原则

进程互斥和同步

image.png

进程互斥的软件解决

image.png

  • 单标志位:有先后顺序,进程a用完后,设置某个标量为false,进程b才可用,所以a不运行,b永远用不了
  • 双标志先检查发:a检查后,时间片用完,b在检查,由于a还未上锁,b可运行,b时间片用完,a也可以访问临界资源
  • 双标志后检查法:a上锁后,时间片用完,b在上锁,由于b检查时a已经上锁,a,b同时上锁,导致死锁
  • peterson:两个进程都争抢临界资源时,采取孔融让梨的方式让对方先执行

进程互斥的硬件解决

image.png

信号量

image.png

记录型信号量有一个纪律资源数量的整形信号量,还有一个队列,又来存储,阻塞的进程,被阻塞的进程放弃处理器的使用权,知道资源充足时,再被唤醒

进程死锁

image.png

内存

image.png

一个内存地址,对应一个存储单元,存储单元大小由内存编址决定,例如按字节编址,一个字节八位

image.png

内存分配(连续内存分配:单一分配,单道批处理系统,固定分区,动态内存分配)

image.png

  • 内部碎片:例如分配了为某个进程分配了固定大小的区域,但是没有占满,就是内部碎片
  • 外部碎片:例如区域一和区域二之间有一个区域三,很小,无法被其他进程使用,就是外部碎片

动态分区算法

image.png

离散内存分配:分页,分段,短页式,虚拟内存技术(地址转换,逻辑地址转化为物理地址)

image.png

  • 页框,页帧,内存块,物理块:操作系统把内存分成一个个小的分区,每个分区就是页框
  • 页:操作系统把进程根据页框大小把进程拆分成一个个小块,分别存储到每个页框中,这就是页
  • 如何推算页表项占几个字节:例如在32为内存结构中,内存为4gb,页框大小为4kb,所以每个页框大小为2的12次方位,共有2的20次方个页框,也就是内存框号最大值为2的20次方减一(页框号,内存号从0开始), 而每个字节是八位,所以需要三个字节,但是为了考虑避免产生内存碎片,会提升为4字节。例如页框大小为4kb = 4096b,三个字节存储页表项 4096 % 3 = 1,所以会有1365个列表项存进了这个页表,但会多出1b的内存碎片。
  • 页表:每个进程有一个页表,页表项为页号和内存号的对应关系。
  • 页表项地址 = 页表起始地址 + 页号 * 页表项大小
  • 根据逻辑地址推送物理地址。假设逻辑地址为100,页框大小为30,所以页号为100 / 30 = 3,页内偏移量为100 % 30 = 10,页号三对应的内存号为100,所以物理地址 = 100 * 30 + 10 = 3010
  • 快表:cpu和内存之间加入的高速缓存,存储的是之前访问过的页表,用的局部原理(一个变量被访问后,有可能再次被访问(时间局部性),一个存储单元被访问后,其相邻的存储单元有可能也被访问到(空间局部性))。所以cpu首先从页表寄存器中取出页号,和页内偏移量。接着去快表查询,快表中没有,再去内存,最后把这个页号和内存块号拷贝到快表,在根据内存块号和页内偏移量去访问物体内存中的指令,有快表后需要访问两次内存,也快了好多

多级页表

image.png

  • 每级页表的大小不可以超过页框大小,所以每个页框大小为4kb,共2的12次方,内存地址结构为40位,页表项大小为4b,所以每个叶匡也就存储2的十次方大小,所以需要三级页表。顶级八位,二级10位,一级为10位。

虚拟内存

image.png

  • 由于内存空间有限,所以可以把当前进程用到的页面放入内存,其他页面等需要的时候再从外村调入内存,若内存空间不够,需要进行页面置换,将内存中页面调出,调入新的页面
  • 缺页中断:cpu访问某个页面,但此时这个页面未在内存中,这是会触发一个内中断(缺页终端),操作系统进入核心态,进程进入阻塞队列,开启io将页面调入内存,调入完毕,进程重新进入就绪队列,等待下次调用

页面置换算法

image.png nru:第一轮扫描找访问位为0的,表示为访问。同时将为1的改为0,下一轮扫描直接找访问位为0的

页面分配策略

image.png

  • 驻留集:操作系统为进程分配的内存块集合 < 进程需要的页面数量