当前位置: 首页 > article >正文

了解进程控制

目录

1、基本概念

2、操作系统内核

2.1支撑功能

2.2资源管理功能

3、进程的创建

3.1进程的层次结构

3.2进程图

3.3引起创建进程的事件

3.4进程的创建

 4、进程的终止

4.1引起进程终止的事件

 4.2进程的终止过程

5、进程阻塞与唤醒

5.1引起进程阻塞和唤醒的事件

5.2进程阻塞过程(block)

5.3进程唤醒过程(wakeup)

 6、进程挂起与激活

6.1进程的挂起(suspend)

6.2进程的激活(active)


1、基本概念

进程控制是进程管理中 最基本的功能,主要包括创建新进程、终止已完成的进程、将因发生异常情况而无法继续运行的进程置于阻塞状态、负责进程运行中的状态转换等功能。

2、操作系统内核

现代操作系统一般将OS划分为若干层次,再将OS的不同功能分别设置在不同的层次中。

2.1支撑功能

(1)中断功能:中断功能那个是内核 最基本的功能,是整个操作系统赖以活动的基础。

(2)时钟管理:时钟管理产生一个中断信号,促进调度程序重新进行调度。

(3)原语操作:所谓原语,就是由若干条指令组成,用于完成一定功能的一个过程。

        原语操作是指一个操作中的动作要么全不做要么全做。换言之,它是一个不可分割的基本操作。

2.2资源管理功能

(1)进程管理:主要包括进程的调用与分派、进程的创建与撤销等;

(2)存储器管理:用于实现将用户空间的逻辑地址变换为内存空间的物理地址的地址转换机构、内存分配与回收的功能模拟以及实现内存保护和兑换功能的模块;

(3)设备管理:各类设备的驱动程序、用于缓和CPU与I/O速度不匹配矛盾的缓冲管理、用于实现设备分配和设备独立性功能的模块;

3、进程的创建

3.1进程的层次结构

父进程:创建进程的进程。

子进程:被创建的进程。

3.2进程图

  • 描述进程的家族关系的有向树.
  • 进程Pi创建了进程Pj,则Pi是Pj的父进程, Pj是Pi的子进程,用一条由进程Pi指向进程Pj的有向边来描述。
  • 创建父进程的进程为祖先进程,由此形成进程树,树根为进程家族的祖先。

3.3引起创建进程的事件

  • 用户登录
  • 作业调度
  • 提供服务
  • 应用请求

3.4进程的创建

(1)申请空白PCB(进程控制块)
(2)为新进程分配运行所需的资源
(3)初始化PCB(初始化标识信息、处理机状态信息、处理机控制信息)
(4)将新进程插入就绪队列

 4、进程的终止

4.1引起进程终止的事件

  1. 正常结束
  2. 异常结束
    越界错误、保护错、非法指令、特权指令错、运行超时、等待超时、算术运算错、I/O故障
  3. 外界干预

 4.2进程的终止过程

(1) 根据被终止进程的标识符,从PCB集合中检索出该进程的PCB,从中读出该进程的状态。
(2) 若被终止进程正处于执行状态,应立即终止该进程的执行,置调度标志为真,用于指示该进程被终止后应重新进行进程调度。
(3) 若该进程有子孙进程,应将其所有子孙进程予以终止,以防他们成为不可控的进程。
(4) 将被终止进程所拥有的全部资源,或归还其父进程,或归还系统。
(5) 将被终止进程的PCB从所在队列或链表中移出,挂入空白PCB队列,等待其它程序来搜集信息。

5、进程阻塞与唤醒

5.1引起进程阻塞和唤醒的事件

  1. 向系统请求共享资源失败
  2. 等待某种操作的完成
  3. 新数据尚未到达
  4. 等待新任务的到达

5.2进程阻塞过程(block)

  • 调用阻塞原语阻塞自己,终止该进程的执行,将PCB中的状态改为阻塞,并加入到阻塞队列中;
  • 然后转进程调度,将处理机分配给另一进程,并进行进程切换以及处理机状态的保护与重新设置。

5.3进程唤醒过程(wakeup)

  • 把阻塞进程从等待该事件的阻塞队列中移出,将其PCB中的现行状态改为就绪,将PCB插入到就绪队列中。

 6、进程挂起与激活

6.1进程的挂起(suspend)

当出现引起进程挂起的事件时,系统利用挂起原语将指定进程挂起。

  • 检查被挂起进程的状态;
  • 若处于活动就绪,则改为静止就绪;
  • 若处于活动阻塞,则改为静止阻塞;
  • 将该进程PCB复制到内存指定区域;
  • 若挂起的进程正在执行,则重新进行进程调度。

6.2进程的激活(active)

  • 当发生激活进程的事件时,系统利用激活原语将指定进程激活。
  • 激活原语先将进程从外存调入内存,检查该进程的状态;
    若处于静止就绪,则改为活动就绪;
    若处于静止阻塞,则改为活动阻塞;
    若采用抢占调度策略,则每当有静止就绪进程被激活进入就绪队列时,检查是否要重新进行进程调度。

http://www.kler.cn/a/17767.html

相关文章:

  • 【Mode Management】AUTOSAR架构下唤醒源检测函数EcuM_CheckWakeup详解
  • Rust 整数
  • 【Threejs】相机控制器动画
  • 人工智能的前沿研究方向与未来发展趋势
  • 推荐一个超漂亮ui的网页应用设计
  • 15 个改变世界的开源项目:塑造现代技术的先锋力量
  • 错题汇总03
  • 顺序表和链表优缺点以及区别
  • MySQL索引
  • 涨薪60%,从小厂逆袭,坐上美团技术专家(面经+心得)
  • Java——和为S的连续正数序列
  • 【C++】机房预约系统
  • 使用【SD-WEBUI】插件生成单张图包含多个人物:分区域的提示词
  • bevfusion
  • Java线程池
  • 等保定级怎么做
  • spring boot整合Hibernate Validator分组校验
  • 如何在Firefox中使用最小字体
  • 基于Vue的个性化网络学习笔记系统
  • PBDB Data Service:Basis and precision of coordinates(坐标的基础和精度)
  • 学习Transformer前言(Self Attention Multi head self attention)
  • (5)Qt—ui常用类
  • webconsole使用方法(fastapi框架)
  • 【第四篇:解决校招面试中的测试设计题目】
  • 蓝牙耳机什么牌子好?500内好用的蓝牙耳机推荐
  • Oracle 修改 sga_target 参数设置,虚拟内存值设置