操作系统(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

撤销原语流程图

目录
相关文章
|
16天前
|
算法 调度 UED
深入理解操作系统:进程调度与优先级队列
【10月更文挑战第31天】在计算机科学的广阔天地中,操作系统扮演着枢纽的角色,它不仅管理着硬件资源,还为应用程序提供了运行的环境。本文将深入浅出地探讨操作系统的核心概念之一——进程调度,以及如何通过优先级队列来优化资源分配。我们将从基础理论出发,逐步过渡到实际应用,最终以代码示例巩固知识点,旨在为读者揭开操作系统高效管理的神秘面纱。
|
9天前
|
消息中间件 安全 算法
深入理解操作系统:进程管理的艺术
【10月更文挑战第38天】在数字世界的心脏,操作系统扮演着至关重要的角色。它不仅是硬件与软件的桥梁,更是维持计算机运行秩序的守夜人。本文将带你走进操作系统的核心——进程管理,探索它是如何协调和优化资源的使用,确保系统的稳定与高效。我们将从进程的基本概念出发,逐步深入到进程调度、同步与通信,最后探讨进程安全的重要性。通过这篇文章,你将获得对操作系统进程管理的全新认识,为你的计算机科学之旅增添一份深刻的理解。
|
13天前
|
算法 调度 UED
深入理解操作系统:进程管理与调度策略
【10月更文挑战第34天】本文旨在探讨操作系统中至关重要的一环——进程管理及其调度策略。我们将从基础概念入手,逐步揭示进程的生命周期、状态转换以及调度算法的核心原理。文章将通过浅显易懂的语言和具体实例,引导读者理解操作系统如何高效地管理和调度进程,保证系统资源的合理分配和利用。无论你是初学者还是有一定经验的开发者,这篇文章都能为你提供新的视角和深入的理解。
34 3
|
15天前
|
Linux 调度 C语言
深入理解操作系统:进程和线程的管理
【10月更文挑战第32天】本文旨在通过浅显易懂的语言和实际代码示例,带领读者探索操作系统中进程与线程的奥秘。我们将从基础知识出发,逐步深入到它们在操作系统中的实现和管理机制,最终通过实践加深对这一核心概念的理解。无论你是编程新手还是希望复习相关知识的资深开发者,这篇文章都将为你提供有价值的见解。
|
16天前
|
算法 调度 UED
深入理解操作系统的进程调度机制
本文旨在探讨操作系统中至关重要的组成部分之一——进程调度机制。通过详细解析进程调度的概念、目的、类型以及实现方式,本文为读者提供了一个全面了解操作系统如何高效管理进程资源的视角。此外,文章还简要介绍了几种常见的进程调度算法,并分析了它们的优缺点,旨在帮助读者更好地理解操作系统内部的复杂性及其对系统性能的影响。
|
17天前
深入理解操作系统:进程与线程的管理
【10月更文挑战第30天】操作系统是计算机系统的核心,它负责管理计算机硬件资源,为应用程序提供基础服务。本文将深入探讨操作系统中进程和线程的概念、区别以及它们在资源管理中的作用。通过本文的学习,读者将能够更好地理解操作系统的工作原理,并掌握进程和线程的管理技巧。
34 2
|
17天前
|
消息中间件 算法 Linux
深入理解操作系统之进程管理
【10月更文挑战第30天】在数字时代的浪潮中,操作系统作为计算机系统的核心,扮演着至关重要的角色。本文将深入浅出地探讨操作系统中的进程管理机制,从进程的概念入手,逐步解析进程的创建、调度、同步与通信等关键过程,并通过实际代码示例,揭示这些理论在Linux系统中的应用。文章旨在为读者提供一扇窥探操作系统深层工作机制的窗口,同时激发对计算科学深层次理解的兴趣和思考。
|
18天前
|
消息中间件 算法 调度
深入理解操作系统:进程管理与调度策略
【10月更文挑战第29天】本文将带领读者深入探讨操作系统中的核心组件之一——进程,并分析进程管理的重要性。我们将从进程的生命周期入手,逐步揭示进程状态转换、进程调度算法以及优先级调度等关键概念。通过理论讲解与代码演示相结合的方式,本文旨在为读者提供对进程调度机制的全面理解,从而帮助读者更好地掌握操作系统的精髓。
31 1
|
14天前
|
消息中间件 算法 调度
深入理解操作系统:进程管理的艺术
【10月更文挑战第33天】本文旨在揭示操作系统中进程管理的神秘面纱,带领读者从理论到实践,探索进程调度、同步以及通信的精妙之处。通过深入浅出的解释和直观的代码示例,我们将一起踏上这场技术之旅,解锁进程管理的秘密。
21 0
|
16天前
|
算法 Linux 调度
深入理解操作系统之进程调度
【10月更文挑战第31天】在操作系统的心脏跳动中,进程调度扮演着关键角色。本文将深入浅出地探讨进程调度的机制和策略,通过比喻和实例让读者轻松理解这一复杂主题。我们将一起探索不同类型的调度算法,并了解它们如何影响系统性能和用户体验。无论你是初学者还是资深开发者,这篇文章都将为你打开一扇理解操作系统深层工作机制的大门。
25 0
下一篇
无影云桌面