目录

3.3 进程控制与调度

3.3.1 进程执行

3.3.2 进程调度

3.3.3 进程调度算法

3.4 作业与进程的关系

3.5 线程引入


3.3 进程控制与调度

3.3.1 进程执行

系统模型:内核程序嵌入进程运行。

执行模式(态):进程可在用户态和核心态下运行。

进程模式切换:一个进程既运行用户态程序,在系统调用和中断转换到核心态时,运行操作系统核心程序。(进程不变,只是从用户态—>核心态)

进程切换:指进程进入操作系统核心后,因为自身等事件,或有更迫切需要运行的进程就绪,而让出处理机,处理机转去运行其他进程。

进程切换过程

  • 保存处理机上下文,包括程序计数器PC、处理机状态字PS、其他寄存器
  • 修改当前运行进程的进程控制块内容,包括将进程状态从运行态改为其它状态。
  • 选择另一个进程(按照调度算法)
  • 修改被调度进程的进程控制块,包括把其状态改变到运行态。
  • 恢复被选进程(上次切换出处理机时)的处理机现场,按原保护的程序计数器值重置程序计数器PC,运行新选进程。

注:

  • 前面阻塞不能运行,所以阻塞
  • 实现多道程序设计,多进程并发使用cpu,不让用,所以变为阻塞/就绪
  • 原来是就绪态,才能被调度。

3.3.2 进程调度

特指选择进程占用处理机。

一、调度的含义

1、什么是调度:操作系统管理了系统有限的资源,当有多个进程(或多个进程发出的请求)要使用这些资源时,因为资源的有限性,必须按照一定的原则选择进程(请求)来占用资源,这就是调度。

2、调度目的:控制资源使用者的数量,选取资源使用者占用资源。

二、几种不同调度例子

1、高级调度:选取输入井中的作业(仅限于批作业调度),生成根进程,开始执行作业步。目的是控制使用2系统资源的进程数。(控制作业进入,就是控制进程的生成)

2、中级调度:选取进程占用内存或有资格占用内存,又称进程滚入滚出。(控制就绪队列、就绪挂起队列、阻塞挂起队列、阻塞队列)

3、低级进程:选取进程占用处理机,又称进程调度。(控制就绪队列中,哪个进程在处理机执行)

4、IO请求调度:设备驱动程序选取IO请求执行。

三、进程调度方式

注意:进程调度在核心态运行

1、非剥夺:只有当处理机上的进程主动放弃处理机时才重新调度。

2、剥夺调度:当进程运行时可以被操作系统以某种原则剥夺其处理机。

 四、调度与切换时机

  • 当发生引起调度条件,且当前进程无法继续运行下去时(如发生各种进程放弃处理机的条件)可以马上进行调度与切换。
  • 当中断处理结束,或系统调用处理结束返回被中断进程的用户态程序执行前,若申请调度标志置上,即可马上进行进程调度与切换。如果操作系统支持这种情况下运行调度程序,即实现了剥夺方式的调度。
  • 实时系统还有其它调度与切换时机。

两个时机:一个是在中断处理前,从就绪变为阻塞状态的用户程序,另一个是中断处理结束后。


3.3.3 进程调度算法

调度算法要求:高资源利用率、高吞吐量、用户满意等原则

  • FCFS:谁先到就绪队列,将处理机分给谁
  • 短进程优先:取一个下次所需运行时间最短的进程(该算法能使平均等待时间最短)
  • 最高响应比优先法:响应比R定义如下:R=(W+T)/T=1+W/T(W为等待时间,T为下次所需运行时间)
  • 优先级调度:选优先级最高的进程占用处理机(优先级也可动态改变)
  • 轮转调度法:以先来后到的次序+时间片轮转
  • 多级反馈队列调度法:设置多条就绪队列,进程被调度执行后,在被剥夺或放弃处理机后而在就绪时可以改变其就绪队列。(第一级队列的优先级最高,队列的运行时间片不同,若某个进程的时间片内没有完成工作,则把它放在下一个队列的末尾,长进程自动下沉到下面的队列)

 举例:设计一个多级反馈队列调度算法

  • 以优先级设置多队列
  • 各队列的调度算法采用FCFS+时间片
  • 进程优先级升降原则是:等待CPU过久升,输入输出完成插入就绪队列时升,运行完一个完整时间片降...
  • 进程最初进入就绪队列以用户初值优先级为参数

3.4 作业与进程的关系

  • 作业:是用户对计算机的一次独立的使用过程
  • 进程:是分配计算机资源的单位,是用户任务运行的实体,作业可包含多个进程(至少一个)
  • 批处理系统作业与进程关系:作业调度程序每选择一道作业运行时,首先为该做业创建一个根进程,该进程执行作业控制语言解释器程序,在解释执行作业步时,可根据需要创建多个子进程

  • 分时系统作业与进程之关系: 把用户的一次上机过程看成是一个交互作业(内部表示及外部特征都有别于批作业),系统为每个终端设备生成一个进程,该进程运行终端命令解释器。进程在解释执行命令时还可以创建多个子进程。
  • 支持分时与批处理的系统作业提交方法:用户可以通过交互式命令提交子作业( 如:at-f
    /root/bin/ss now 表示提交一个作业控制说明书文件名为ss的作业到作业输入队列。或
    直接拍入"shell ss ” 表示马上生成一个进程执行命令解释器,解释执行ss中的命令)


3.5 线程引入

  • 轻权进程(Light-Weight Process) 的引入: 同一作业的不同进程之间会有许多的协作, 需要进行数据交换,但进程有自己独立的存储空间,互相不干扰。如果要进行进程间数据交换,则需要通过操作系统相关系统调用进行交换, 为了方便进程间交换数据,一种共享存储空间的进程概念应运而生,我们叫它为轻权进程( Light-Weight Process )
  • 线程的引入: 随着共享内存多CPU 计算机的发展,迫切需要加速进程的运行速度,事实上进程中运行的程序也是有可并行执行的语句。因为进程内程序执行的顺序性,不可能实现进程内可并行成分的并行执行。为此,线程的概念呼之欲出。在一个进程中可以包含多个可以并发(并行) 执行的线程。系统按进程分配所有除CPU 以外的系统资源( 如内存,外设,文件等),而程序则依赖于线程运行,系统按线程分配CPU资源。引入线程后,进程概念内涵改变了, 进程只作为除CPU 以外系统资源的分配单位,不再以进程为单位占用CPU 。

操作系统:进程控制与调度相关推荐

  1. 操作系统——进程之处理机调度

    操作系统--进程之处理机调度 一.处理机调度的本概念和层次 1.高级调度(作业调度) 2.中级调度(内存调度) 3.低级调度(进程调度) 二.进程调度的时机.切换与过程.方式 1.进程调度的时机 2. ...

  2. 操作系统—进程控制实验

    文章目录 1.关于实验前环境准备 2.关于可能用到的命令 3.关于makefile 4.关于实验说明 5.关于实验指导的程序 6.关于独立实验 Q(跪求大佬解答)? 1.关于实验前环境准备 要准备好C ...

  3. C语言 操作系统 进程控制

    一.进程控制 ●基本要求:模拟操作系统内核对进程的控制和管理:包括进程的创建和撤 销.进程状态的切换和简单的内存空间管理. 内容 模拟触发进程状态转换的事件:采用键盘控制方法来模拟触发进程状态切换的事 ...

  4. 操作系统—进程控制和进程通信

    建议将思维导图保存下来观看,或者点击这里在线观看

  5. 模拟进程创建、终止、阻塞、唤醒原语_操作系统基础8-进程及进程控制

    进程(Process) 的定义 从不同的角度,进程可以有不同的定义,传统典型的定义: 进程是程序的一次执行过程. 或者:一个正在执行的程序的实例 进程是一个程序及其数据在处理机上顺序执行所发生的活动 ...

  6. (王道408考研操作系统)第二章进程管理-第一节3:进程控制(配合Linux讲解)

    文章目录 一:如何实现进程控制 二:进程控制原语 (1)进程创建 A:概述 B:补充-Linux中的创建进程操作 ①:fork() ②:fork()相关问题 (2)进程终止 A:概述 B:补充-僵尸进 ...

  7. 实验四 linux进程控制实验报告,Linux系统进程控制操作系统实验报告4

    实验课程名称:操作系统 实验项目名称Linux系统进程控制实验成绩 实验者专业班级组别 同组者实验日期年月日第一部分:实验分析与设计(可加页) 实验内容描述(问题域描述) 要求:掌握Linux系统中进 ...

  8. 【操作系统】第3章 进程管理与调度

    进程管理与调度 3.1 中央处理器 CPU的构成与基本工作方式 特权指令与非特权指令 处理器的状态 程序状态字 3.2 中断 中断的分类 3.3 进程及其实现 进程的定义 进程分类 进程的特征 进程和 ...

  9. 【操作系统/OS笔记09】线程、线程的实现、上下文切换、进程控制

    本次笔记内容: 7.8 为什么使用线程 7.9 什么是线程 7.10 线程的实现 7.11 上下文切换 7.12 进程控制--创建进程 7.13 进程控制--加载和执行进程 7.14 进程控制--等待 ...

最新文章

  1. 网页加载报错——URL网页连接错误
  2. css笔记 - transform学习笔记(二)
  3. Linux下mysql整库备份
  4. 如何使用CSS实现居中
  5. 内网(局域网)中共享文件
  6. 在按钮上绑定一个图案
  7. react-native 自定义 下拉刷新 / 上拉加载更多 组件
  8. mysql se_常见的MySQL命令
  9. 田径运动会管理系统之Java
  10. 数学基础(0)-- 高等数学、概率论与数理统计
  11. 软件需求说明书模板和实际案例
  12. 小米路由的IPv6支持教程(纯转保存)
  13. Python文件操作错误:OSError: [Errno 22] Invalid argument(关于Windows下文件名中的敏感字符)
  14. app开发都有哪些基本的开发语言选择?
  15. 006网易-表达式求值
  16. 显示器刷新率30hz_如何使您的120Hz或144Hz显示器使用其广告刷新率
  17. 机器学习笔记之配分函数(三)对比散度
  18. 第一章 关于交易的思考 | 期权, 皇冠上的明珠?
  19. 利用CSV 引擎加载数据
  20. ArcGIS JS 天地图之深色地图 地图夜间模式

热门文章

  1. 为何你的情绪总被他人左右,ABC 情绪治疗法自救指南
  2. Modelsim中.do脚本语言基本介绍
  3. html怎么设置页面最小像素,做一个网页标准的像素用多少?
  4. 导出 jq导出(下载)Excel
  5. 基于Sekiro的jsRPC的使用和安装
  6. 采用平均系数法计算机泵,离心泵流体论文(33页)-原创力文档
  7. word添加导航标题
  8. 关于 SKAdNetwork 的常见问题,针对广告主端的开发者
  9. 今天小暑是什么时间_小暑节气 - 二十四节气之小暑,小暑是什么时候
  10. objection使用