操作系统笔记、面试八股(一)—— 进程、线程、协程

1. 进程、线程、协程

1.1 进程

进程是操作系统进程资源分配的基本单位。

进程控制块(PCB,Process Control Block)描述进程的基本信息和运行状态。创建进程和撤销进程都是对PCB的操作。

1.1.1 进程间的通信方式

进程通信是指进程之间传输信息。

  1. 管道
    • 匿名管道。只能用于具有亲缘关系的父子进程之间或者兄弟进程之间的通信。
    • 有名管道。以磁盘文件的方式存在,可以实现本机任意两个进程之间的通信。
  2. 消息队列。存在拷贝开销的问题
  3. 共享内存。存在多进程竞争内存的问题,需要依靠某种同步操作,如互斥锁和信号量等。
  4. 信号量。PV操作维护一个计数器,主要用于解决与同步相关的问题并避免竞争条件。
  5. 信号
  6. Socket套接字。主要用于在客户端和服务器之间通过网络进行通信。

1.1.2 进程同步方式

进程同步是控制多个进程按照一定的顺序执行。

  1. 临界区
  2. 同步与互斥
  3. 信号量
  4. 管程

1.1.3 进程的调度算法

进程调度,是为了实现最大CPU利用率。不同环境下的调度算法目标不同。

  1. 批处理系统

    批处理系统没有太多的用户操作,调度算法应保证吞吐量和周转时间(从提交到终止的时间)。

    1. 先到先服务(FCFS,First-come-first-served)调度算法

      FCFS是非抢占式的调度算法,按照请求的顺序进行调度。

      FCFS有利于长作业,不利于短作业。因为短作业必须一直等待前面的长作业执行完毕后才能执行,而长作业的执行又需要很长时间,造成了短作业等待时间过长。

    2. 短作业优先(SJF,shorted job first)调度算法

      SJF也是非抢占式的调度算法,按照估计运行时间最短的顺序进行调度。

      长作业有可能会饿死,处于一直等待短作业执行完毕的状态。因为如果一直有短作业的到来,长作业则一直无法得到调度。

    3. 最短剩余时间优先(SRTN,shortest remaining time next)

      SRTN是SJF是抢占式版本,按照剩余时间运行时间的顺序进行调度。当一个新的作业到达时,其整个运行时间与当前进程的剩余时间作比较。如果新的进程需要的时间更少,则挂起当前进程,运行新的进程。否则,新的进程等待。

  2. 交互式系统

    交互式系统有大量的用户交互操作,调度算法的目标是快速地进行响应

    1. 时间片轮转(RR,Round robin)调度算法

      将所有就绪态进程按照FCFS先到先服务原则排成一个队列,每次调度时,把CPU时间片分配给队首进程,该进程可以执行一个时间片。当时间片用完时,由计时器发出时钟中断,调度程序便停止该进程的执行,并将它送往就绪队列的末尾,同时继续把CPU时间片分配给队首的进程。

      时间片轮转的效率和时间片的大小有关。因为进程切换要保存当前进程的信息,并且载入新进程的信息。如果时间片太小,会导致进程切换的很频繁,在进程切换上会花过多时间。而时间片过长,可能实时性无法保证。

    2. 优先级调度算法

      为每个进程分配优先级,按优先级顺序从高到低进行调度。具有相同优先级的进程以FCFS先到先服务的方式进行调度。

      优先级的确定可以依据时间要求、内存要求或任何其他资源要求。

      同时,为了防止低优先级的进程永远得不到调度,可以随着时间的推移增加等待进程的优先级。

    3. 多级反馈队列调度算法

      一个进

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值