操作系统(2.3)--进程的描述与控制

简介: 进程控制一般是由OS的内核中的原语来实现的。原语是由若干条指令组成的,用于完成一定功能的一一个过程。.它与一般过程的区别在于:它们是“原子操作”,原子操作,是指一个操作中的所有动作要么全做,要么全不做。换言之,它是一个不可分割的基本单位,因此,在执行过程中不允许被中断。

目录


三、进程控制


1.操作系统内核


2.进程的创建


2.1进程的层次结构


2.2进程图


2.3引起创建进程的事件


2.4 进程的创建


3.进程的控制


3.1引起进程终止的事件


3.2进程的终止过程


4.进程的阻塞与唤醒


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


4.2 进程阻塞过程(阻塞原语block)


4.3 进程唤醒过程(唤醒原语wakeup)


5.进程的挂起与激活


5.1进程的挂起


5.2进程的激活过程


6.附


三、进程控制

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


进程控制一般是由OS的内核中的原语来实现的。

原语是由若干条指令组成的,用于完成一定功能的一一个过程。.它与一般过程的区别在于:它们是“原子操作”,原子操作,是指一个操作中的所有动作要么全做,要么全不做。换言之,它是一个不可分割的基本单位,因此,在执行过程中不允许被中断。


1.操作系统内核

处理机执行状态:


①系统态(管态) ;


②用户态(目态)

0S内核包含的功能:

1.支撑功能

(1)中断处理;


(2)时钟管理;


(3)原语操作

原语是由若干条指令组成的,用于完成一定功能的一个过程。它与一般过程的区别在于:它们是“原子操作”。原子操作,是指一个操作中的所有动作要么全做,要么全不做。

2.资源管理功能

(1)进程管理;


(2)存储器管理;


(3)设备管理


2.进程的创建

2.1进程的层次结构

父进程、子进程、孙进程的概念


在0S中,允许一个进程创建另一个进程,通常把创建进程的进程称为父进程,被创建的进程称为子进程。子进程可继续创建更多的孙进程。

子进程可以继承父进程所拥有的资源。


2.2进程图

进程图是用于描述一个进程的家族关系的有向树,如图所示。图中的结点(圆圈)代表进程。在进程D创建了进程I之后,称D是I的父进程,I是D的子进程。创建父进程的进程称为祖先进程,树的根节点是祖先。


f75c4be330f8cb0dabb491ad582241ff_d97785c7f1624ff69f884c5a438ee627.png

2.3引起创建进程的事件

导致一个进程去创建另一个进程的典型事件,有以下四类:

(1)用户登录。在分时系统中,用户在终端键入登录命令后,如果是合法用户,系统将为该终端建立一个进程,并把它插入就绪队列中。

(2)作业调度。在批处理系统中,当作业调度程序按一定.的算法调度到某作业时,便将该作业装入内存,为它分配必要的资源,并立即为它创建进程,再插入就绪队列中。

(3)提供服务。当运行中的用户程序提出某种请求后,系.统将专门创建-一个进程来提供用户所需要的服务。

(4) 应用请求。基于应用进程的需求,由它自己创建一个新进程,以便使新进程以并发运行方式完成特定任务。


2.4 进程的创建

一旦操作系统发现了要求创建新进程的事件后,便调用进程创建原语Creat()按下述步骤创建-一个新进程。

(1)申请空白PCB。为新进程申请获得惟--的数字标识符,并从PCB集合中索取一个空白PCB。

(2)为新进程分配资源。如内存、文件、I/0设备和CPU时间等。

(3)初始化进程控制块。PCB的初始化包括:①初始化标识信息;②初始化处理机状态信息;③初始化处理机控制信息。

(4)将新进程插入就绪队列,如果进程就绪队列能够接纳新进程,便将新进程插入就绪队列。


3.进程的控制

3.1引起进程终止的事件

1)正常结束

在任何计算机系统中,都应有一个用于表示进程已经运行完成的指示。

2)异常结束

在进程运行期间,由于出现某些错误和故障而迫使进程终止。这类异常事件很多,常见的有下述几种:

(1)越界错误; (2)保护错; (3)非法指令; (4)特权指令错;


(5) 运行超时; (6) 等待超时; (7) 算术运算错; (8) I/0故障


3)外界干预

这些干预有:

①操作员或操作系统干预;

②父进程请求;

③父进程终止。


3.2进程的终止过程

(1)根据被终止进程的标识符,从PCB集合中检索出该进程的PCB,从中读出该进程的状态。

(2)若被终止进程正处于执行状态,应立即终止该进程的执行,并置调度标志为真,用于指示该进程被终止后应重新进行调度。

(3)若该进程还有子孙进程,还应将其所有子孙进程予以终止,以防它们成为不可控的进程。

(4)将被终止进程所拥有的全部资源,或者归还给其父进程,或者归还给系统。

(5)将被终止进程(PCB)从所在队列(或链表)中移出,等待其他程序来搜集信息

4.进程的阻塞与唤醒

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

有下述几类事件会引起进程阻塞或被唤醒:


向系统请求共享资源失败

等待某种操作完成

新数据尚未到达.

等待新任务的到达

4.2 进程阻塞过程(阻塞原语block)

调用阻塞原语block将自己阻塞:


(1)若运行,停止;

(2)修改进程控制块中的状态:从执行到阻塞;

(3)插入阻塞队列;

(4)调度程序进行进程切换,保留被阻塞进程的处理机.状态;

4.3 进程唤醒过程(唤醒原语wakeup)

调用唤醒原语wakeup,将等待该事件的进程唤醒:

(1)从阻塞队列中移出;

(2)修改进程控制块中的状态:从阻塞到就绪;

(3)插入到就绪队列;


5.进程的挂起与激活

5.1进程的挂起

当系统中出现了引起进程挂起的事件时,OS将利用挂起原语suspend将指定进程或处于阻塞状态的进程挂起。


suspend 的执行过程是:


首先检查被挂起进程的状态,若处于活动就绪状态,便将其改为静止就绪:对于活动阻塞状态的进程,则将之改为静止阻塞:为了方便用户或父进程考查该进程的运行情况,而把该进程的PCB复制到某指定的内存区域;


最后,若被挂起的进程正在执行,则转向调度程序重新调度。


5.2进程的激活过程

当系统中发生激活进程的事件时,OS 将利用激活原语active,将指定进程激活。


激活原语先将进程从外存调入内存,检查该进程的现行状态,若是静止就绪,便将之改为活动就绪;若为静止阻塞,便将之改为活动阻塞。


假如采用的是抢占调度策略,则每当有静止就绪进程被激活而插入就绪队列时,便应检查是否要进行重新调度,即由调度程序将被激活的进程与当前进程两者的优先级进行比较,如果被激活进程的优先级低,就不必重新调度;否则,立即剥夺当前进程的运行,把处理机分配给刚刚被激活的进程。


6.附

54ba6c37ed5cdb03ef8f3e01d2d26ff8_ad2090f5ac5f409db9587521eecc85fc.png

创建原语的流程图

279cc746db57a5a216a9c96620d39730_3301210192874aa3b7ba6539aaad6e54.png

撤销原语流程图

目录
相关文章
|
21天前
|
算法 Linux 调度
深入理解Linux操作系统的进程管理
本文旨在探讨Linux操作系统中的进程管理机制,包括进程的创建、执行、调度和终止等环节。通过对Linux内核中相关模块的分析,揭示其高效的进程管理策略,为开发者提供优化程序性能和资源利用率的参考。
46 1
|
25天前
|
调度 开发者 Python
深入浅出操作系统:进程与线程的奥秘
在数字世界的底层,操作系统扮演着不可或缺的角色。它如同一位高效的管家,协调和控制着计算机硬件与软件资源。本文将拨开迷雾,深入探索操作系统中两个核心概念——进程与线程。我们将从它们的诞生谈起,逐步剖析它们的本质、区别以及如何影响我们日常使用的应用程序性能。通过简单的比喻,我们将理解这些看似抽象的概念,并学会如何在编程实践中高效利用进程与线程。准备好跟随我一起,揭开操作系统的神秘面纱,让我们的代码运行得更加流畅吧!
|
23天前
|
C语言 开发者 内存技术
探索操作系统核心:从进程管理到内存分配
本文将深入探讨操作系统的两大核心功能——进程管理和内存分配。通过直观的代码示例,我们将了解如何在操作系统中实现这些基本功能,以及它们如何影响系统性能和稳定性。文章旨在为读者提供一个清晰的操作系统内部工作机制视角,同时强调理解和掌握这些概念对于任何软件开发人员的重要性。
|
22天前
|
Linux 调度 C语言
深入理解操作系统:从进程管理到内存优化
本文旨在为读者提供一次深入浅出的操作系统之旅,从进程管理的基本概念出发,逐步探索到内存管理的高级技巧。我们将通过实际代码示例,揭示操作系统如何高效地调度和优化资源,确保系统稳定运行。无论你是初学者还是有一定基础的开发者,这篇文章都将为你打开一扇了解操作系统深层工作原理的大门。
|
23天前
|
存储 算法 调度
深入理解操作系统:进程调度的奥秘
在数字世界的心脏跳动着的是操作系统,它如同一个无形的指挥官,协调着每一个程序和进程。本文将揭开操作系统中进程调度的神秘面纱,带你领略时间片轮转、优先级调度等策略背后的智慧。从理论到实践,我们将一起探索如何通过代码示例来模拟简单的进程调度,从而更深刻地理解这一核心机制。准备好跟随我的步伐,一起走进操作系统的世界吧!
|
23天前
|
算法 调度 开发者
深入理解操作系统:进程与线程的管理
在数字世界的复杂编织中,操作系统如同一位精明的指挥家,协调着每一个音符的奏响。本篇文章将带领读者穿越操作系统的幕后,探索进程与线程管理的奥秘。从进程的诞生到线程的舞蹈,我们将一起见证这场微观世界的华丽变奏。通过深入浅出的解释和生动的比喻,本文旨在揭示操作系统如何高效地处理多任务,确保系统的稳定性和效率。让我们一起跟随代码的步伐,走进操作系统的内心世界。
|
24天前
|
运维 监控 Linux
Linux操作系统的守护进程与服务管理深度剖析####
本文作为一篇技术性文章,旨在深入探讨Linux操作系统中守护进程与服务管理的机制、工具及实践策略。不同于传统的摘要概述,本文将以“守护进程的生命周期”为核心线索,串联起Linux服务管理的各个方面,从守护进程的定义与特性出发,逐步深入到Systemd的工作原理、服务单元文件编写、服务状态管理以及故障排查技巧,为读者呈现一幅Linux服务管理的全景图。 ####
|
27天前
|
算法 Linux 调度
深入浅出操作系统的进程管理
本文通过浅显易懂的语言,向读者介绍了操作系统中一个核心概念——进程管理。我们将从进程的定义出发,逐步深入到进程的创建、调度、同步以及终止等关键环节,并穿插代码示例来直观展示进程管理的实现。文章旨在帮助初学者构建起对操作系统进程管理机制的初步认识,同时为有一定基础的读者提供温故知新的契机。
|
26天前
|
消息中间件 算法 调度
深入理解操作系统之进程管理
本文旨在通过深入浅出的方式,带领读者探索操作系统中的核心概念——进程管理。我们将从进程的定义和重要性出发,逐步解析进程状态、进程调度、以及进程同步与通信等关键知识点。文章将结合具体代码示例,帮助读者构建起对进程管理机制的全面认识,并在实践中加深理解。
|
28天前
|
负载均衡 算法 调度
深入理解操作系统:进程管理与调度
在数字世界的心脏,操作系统扮演着至关重要的角色。它如同一位精明的指挥家,协调着硬件资源和软件需求之间的和谐乐章。本文将带你走进操作系统的核心,探索进程管理的艺术和调度策略的智慧。你将了解到进程是如何创建、执行和消亡的,以及操作系统如何巧妙地决定哪个进程应该在何时获得CPU的青睐。让我们一起揭开操作系统神秘的面纱,发现那些隐藏在日常计算背后的精妙机制。