计算机操作系统知识点

前言

记录一些基础和重要的知识点。

进程与线程

  • 进程:系统进行资源分配与调度的一个独立单位,是系统中的并发执行的单位
  • 线程:是进程的一个实体,也是CPU调度和分派的基本单位,比进程更小、更独立运行。有时被称作轻权进程或轻量级进程

区别

  • 进程是资源分配最小单位,线程是CPU调度最小单位
  • 不同进程地址空间相互独立,同一进程内的线程共享同一地址空间;一个进程的线程在另一个进程内是不可见的
  • 进程间不会互相影响,而一个线程挂了可能导致整个进程挂
  • 创建进程或撤销进程,系统都要为之分配或回收资源,操作系统开销远大于创建或撤销现成的开销

并发 VS 并行

并发:强调一个CPU一定时间可以处理多个事情

并行:强调多个CPU同一时刻处理不同事情,真正意义上的同时处理

同步 VS 异步 VS 阻塞 VS 非阻塞

同步:调用者一直等待返回结果,方法执行完成,才能执行后续方法

异步:方法开始后就会返回,调用者无需等待其中方法执行完毕,就可以执行后续方法

主要是针对IO操作


阻塞:线程持续等待资源中数据准备完成,直到返回响应结果

非阻塞:线程直接返回结果,不会持续等待资源准备数据结束后才响应结果

主要是针对线程,可以发生在IO期间也可能发生在IO之前

调度

先来先服务 FIFS

先请求的进程先得到服务,即根据ready队列的顺序,排在前面的进程先得到服务

  • **优点:**实现简单、易理解;公平
  • **缺点:**平均等待时间往往很长

最短作业优先 SJF

优先服务时间最短的作业。

实际上难以实现,因为无法知道下次CPU执行的长度。但可以用公式\uptau_{n+1}=\alpha t_n+(1-\alpha)\uptau_n来对下一次CPU执行时长进行预测,其中tnt_n表示最近一次的信息,\uptau_n存储了过去的信息。

  • **优点:**平均等待时间短
  • **缺点:**公平性不足,容易导致饿死现象的产生

优先级调度

给每个进程分配优先级,高优先级的进程首先获得CPU时间。

  • 优点:
  • **缺点:**容易导致饿死的现象,即优先度较低的进程永远也无法得到执行。

轮转调度 RR调度(使用最广

抢占式调度。轮流按就绪队列顺序为每一个进程分配时间片,当一个正在执行的进程的时间片用完了,将其放回就绪队列中,换上另一个进程分配时间片。

  • **优点:**保证了公平,没一个进程在一个时间段上都能得到执行
  • **缺点:**平均等待时间较长

时间片大小的选取决定了RR性能高低。如果时间片大,则类似于FIFS,如果小,则花费大量时间用于上下文切换,效率很低。

一般而言,80%的进程的CPU执行时间小于时间片。

多级队列调度

将进程分成不同的队列,每一个队列内有各自的算法,每一个队列间有不同的优先级。

一般将进程氛围前台进程(优先级高)和后台进程两个队列。

队列间的调度算法两种:

- 固定优先级抢占式调度:当前台进程队列为空时,才调度后台进程
- 队列间划分时间片:每个队列有一定比例的CPU时间

多级队列反馈调度

在多级队列调度的基础上,允许进程在队列间进行迁移。

如果进程使用较多CPU时间,则迁移到更低的优先级队列,即不会让某一个进程一直长时间地执行

如果进程在较低优先级队列中等待时间较长,那么会把它放到更高优先级队列中,防止饿死现象

死锁

概念

死锁是指多个进程在运行过程中因 资源争夺 而造成的一种僵局。

死锁的产生原因

存在一些不可剥夺资源,而当两个或两个以上进程占有自身资源,并请求对方资源时,都无法继续推进。

竞争资源

  • 可剥夺资源:CPU和主存
  • 不可剥夺资源:不能强行收回的分配资源,如磁带机、打印机

进程推进顺序不当

死锁产生的必要条件

  • 互斥条件:进程要求对所分配的资源进行排他性控制,某一段时间资源仅为自己所占有
  • 请求和保持条件:当进程因请求资源而阻塞时,对已经获得资源保持不放
  • 不剥夺条件:进程已获得的资源在未使用完前,不能剥夺,只能自己使用完由自己释放
  • 环路等待条件:必然存在一个进程-资源的环形链

解决死锁

  • 预防

    1. 破坏请求条件:请求一次性分配资源
    2. 破坏请保持条件:一个分配不到,就干脆不分配其他的
    3. 破坏不剥夺条件:如果得不到其他资源,则剥夺其资源
    4. 破坏环路等待条件:赋予编号排队请求资源
  • 避免

    1. 银行家算法
  • 检测

  • 解除

    1. 资源剥夺

      挂起某些进入死锁状态的进程,将它的其他资源剥夺,分配给其他进程

    2. 撤销进程

      强制撤销部分、甚至全部死锁进程并剥夺其资源

    3. 进程回退

      让一个或多个进程回退到足以避免死锁的地步,此时是自愿释放资源,并非被剥夺资源

页面置换算法

  • FIFO先进先出置换算法:淘汰最先进入的页
  • OPT最佳置换算法:选择未来最远将使用的页淘汰
  • LRU最近最久未使用算法
  • Clock时钟置换算法(NRU最近未用算法):为每个页设置一位访问位,将所有页面都通过链接指针链成一个循环队列
  • 最不常用算法:淘汰访问次数最少的页

中断 VS 异常

中断:CPU执行指令以外的事件引起,如I/O完成中断,表示设备I/O处理已经完成,处理其能够发送下一个I/O请求,还有时钟中断、控制台中断、次盘中断、打印机中断

异常:CPU执行指令内部出现的,如非法操作码、地址越界、算数溢出

内核态 VS 用户态

内核态:类似于Linux中sudo更高权限。处于内核态的CPU可以访问任意数据,包括外围设备,比如网卡,硬盘等,也可以从一个程序切换到另一个程序,并且占用CPU不会出现抢占情况,一般是处于特权级0的状态。

用户态:只能受限制访问内存,且不能访问外围设备,也不允许独占,也就是说,CPU会被其他程序获取。

----------到结尾啦!! Hoohoo----------