进程调度的基本过程

什么是进程/任务(Process/Task)

每个应用程序运行于现代操作系统之上时,操作系统会提供一种抽象,好像系统上只有这个程序在运 行,所有的硬件资源都被这个程序在使用。这种假象是通过抽象了一个进程的概念来完成的,进程可以 说是计算机科学中最重要和最成功的概念之一。 进程是操作系统对一个正在运行的程序的一种抽象,换言之,可以把进程看做程序的一次运行过程; 同时,在操作系统内部,进程又是操作系统进行资源分配的基本单位。

CPU 分配 —— 进程调度(Process Scheduling)

为了便于讨论和理解,我们大部分的场景下假设是单CPU单核的计算机。

操作系统对CPU资源的分配,采用的是时间模式 —— 不同的进程在不同的时间段去使用 CPU 资源。

内存分配 —— 内存管理(Memory Manage)

操作系统对内存资源的分配,采用的是空间模式 —— 不同进程使用内存中的不同区域,互相之间不会干 扰。

进程间通信(Inter Process Communication)

如上所述,进程是操作系统进行资源分配的最小单位,这意味着各个进程互相之间是无法感受到对方存 在的,这就是操作系统抽象出进程这一概念的初衷,这样便带来了进程之间互相具备”隔离性 (Isolation)“。

但现代的应用,要完成一个复杂的业务需求,往往无法通过一个进程独立完成,总是需要进程和进程进 行配合地达到应用的目的,如此,进程之间就需要有进行“信息交换“的需求。进程间通信的需求就应运 而生。

目前,主流操作系统提供的进程通信机制有如下:
  1.  管道
  2.  共享内存 
  3. 文件
  4. 网络
  5. 信号量 
  6. 信号

其中,网络是一种相对特殊的 IPC 机制,它除了支持同主机两个进程间通信,还支持同一网络内部非同 一主机上的进程间进行通信。

调度的概念

首先,我们应该了解到:

  • 进程是资源分配的基本单位
  • 线程是CPU调度的基本单位

一个单核CPU在某一时刻只能允许一个线程执行,但是现在的计算机总是有一大堆进/线程等待执行。这就需要某种规则来决定处理这些进/线程的顺序,这就是调度要研究的问题。

进程的状态

运行态:当前正在占有CPU的进/线程;

就绪态:具备运行条件,等待系统分配CPU的进/线程;

阻塞态:不具备运行条件,正在等待某外部事件发生的进/线程。

所谓进程调度,就是指在处于就绪态的一堆进/线程里,按照一定的调度算法,选出一个进/线程并给它分配CPU时间让它运行,从而实现多进程/多线程的并发执行。

进程切换的基本流程:

  1. 首先用户态必须切换到内核态;
  2. 保存当前进程的状态,包括在其PCB中保存CPU各寄存器值,以便日后重新执行;
  3. 调度算法选定一个新进程;
  4. 新进程的内存地址空间重新装入MMU(内存管理单元);
  5. 新进程开始执行。

调度算法

时间片轮转法

轮转调度(RR):每个进程被分配一个时间段,称为时间片,即允许该进程在该时间段内运行。如果在时间片结束时该进程还在运行,则剥夺其CPU并分配给另一个进程;如果该进程在时间片结束前阻塞或结束,则立即进行进程切换。

轮转调度算法对每个进程都一视同仁,就好比大家都排好队,一个一个来,每个人都运行一会儿再接着重新排队等待运行。

例如谈女朋友,张三同时谈了七个女朋友,每天陪不同的女朋友

周一周二周三周四周五周六周天
女朋友1吃饭watingwatingwatingwatingwatingwating
女朋友2wating看电影watingwatingwatingwatingwating
女朋友3watingwating逛街watingwatingwatingwating
女朋友4watingwatingwating吃饭watingwatingwating
女朋友5watingwatingwatingwating看电影watingwating
女朋友6watingwatingwatingwatingwating散步wating
女朋友7watingwatingwatingwatingwatingwating逛街

张三给女朋友排了张表,每天作为一个时间片,每天见一个女朋友,其他时间他的女朋友就在等待着与张三见面处于等待状态,见面得那天就是就绪态。

时间片轮转调度就如同这般按部就班进行调度,排好队一个一个来,这个进程结束,在轮到下个进程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿拉蕾wjh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值