别只做CRUD程序员,收下这篇操作系统干货(二)——进程管理!

简介: 别只做CRUD程序员,收下这篇操作系统干货(二)——进程管理!

别只做CRUD程序员,收下这篇操作系统干货(二)——进程管理!

一、进程的概念

1.进程的定义

现代操作系统的重要特点是程序的并发执行,及系统所拥有的资源被共享和系统的用户随机地使用。通常,操作系统的重要任务之一是使用户充分、有效地利用系统资源。

进程是描述程序的执行过程和作为资源分配的基本单位。

2.程序的并发执行

(1)程序是一个在时间上按严格次序前后相继的操作序列,是一个静态的概念。

(2)程序的顺序执行

Repeat  IR ← M [pc]
  pc ← pc+1
  〈 Execute (instruction in IR)〉
Until CPU halt

把一个具有独立功能的程序独占处理机直至最终结束的过程称为程序的顺序执行。顺序执行的特点:


顺序性。程序顺序执行时,其执行过程可看作一系列严格按程序规定的状态转移过程。

封闭性。程序执行得到的最终结果由给定的初始条件决定,不受外界因素的影响。

可再现性。只要输入的初始条件相同,则无论何时重复执行该程序都会得到相同的结果。

(3)多道程序系统中程序执行环境的变化

计算机能够同时处理多个具有独立功能的程序。批处理系统、分时系统、实时系统以及网络与分布式系统等都是这样的系统。

这样的执行环境的特点如下:


独立性。每道程序都是逻辑上独立的,它们之间不存在逻辑上的制约关系。

随机性。在多道程序环境下,特别是在多用户环境下,程序和数据的输入与执行开始

时间都是随机的。

资源共享。资源共享将导致对进程执行速度的制约。

(4)程序的并发执行


分为两种:


多道程序系统的程序执行环境变化所引起的多道程序的并发执行。由于资源的有限性,多道程序的并发执行总是伴随着资源的共享与竞争。从而制约各道程序的执行速度。在宏观上并发执行,在微观上(指令级)仍是顺序执行;

并发执行是在某道程序的几个程序段中(例如几个程序),包含着一部分可以同时执行或顺序颠倒执行的代码。

程序的并发执行可总结为:一组在逻辑上互相独立的程序或程序段在执行过程中,其执行时间在客观上互相重叠,即一个程序段的执行尚未结束,另一个程序段的执行已经开始的这种执行方式。


程序的并发执行不同于程序的并行执行。 程序的并行执行是指一组程序按独立的、异步的速度执行。


一般情况下,并发执行的各程序段如果共享软、硬件资源,都会造成其执行结果受执行速度影响的局面。


3.进程和程序是两个既有联系又有区别的概念:


(1) 进程是一个动态概念,而程序则是一个静态概念。程序是指令的有序集合,没有任何执行的含义。而进程则强调执行过程,它动态地被创建,并被调度执行后消亡。

(2)进程具有并行特征,而程序没有。由进程的定义可知,进程具有并行特征的两个方面,即独立性和异步性。也就是说,在不考虑资源共享的情况下,各进程的执行是独立的,执行速度是异步的。显然,由于程序不反映执行过程,所以不具有并行特征。

(3)进程是竞争计算机系统资源的基本单位,从而其并行性受到系统自己的制约。这里,制约就是对进程独立性和异步性的限制。

(4)不同的进程可以包含同一程序,只要该程序所对应的数据集不同。


二、进程的描述


进程的静态描述由三部分组成:进程控制块PCB,有关程序段和该程序段对其进行操作的数据结构集。


1.进程控制块PCB

PCB包含一个进程的描述信息、控制信息及资源信息,有些系统中还有进程调度等待所使用的现场保护区。


PCB 集中反映一个进程的动态特征。在进程并发执行时,由于资源共享,带来各进程之间的相互制约。为了反映这些制约关系和资源共享关系,在创建一个进程时,应首先创建其 PCB,然后才能根据PCB 中信息对进程实施有效的管理和控制。当一个进程完成其功能之后,系统则释放PCB,进程也随之消亡。


进程PCB中以下内容是必须的:

(1)描述信息


进程名或进程标识号

用户名或用户标识号

家族关系

(2)控制信息


进程当前状态。进程在活动期间可分为初始态、就绪态、执行态和等待状态、终止状态。

进程优先级。进程优先级是选取进程占有处理机的重要依据。与进程优先级有关的PCB表项有:a. 占有CPU时间;b. 进程优先级偏移;c. 占据内存时间,等。

程序开始地址。

各种计时信息。给出进程占有和利用资源的有关情况。

通信信息。通信信息用来说明该进程在执行过程中与别的进程所发生的信息交换情况。

(3)资源管理信息

PCB 中包含最多的是资源管理信息,包括有关存储器的信息、使用输入输出设备的信息、有关文件系统的信息等。


占用内存大小及其管理用数据结构指针,例如后述内存管理中所用到的进程页表指针等。

在某些复杂系统中,还有对换或覆盖用的有关信息,如对换程序段长度,对换外存地址等。这些信息在进程申请、释放内存中使用。

共享程序段大小及起始地址。

输入输出设备的设备号,所要传送的数据长度、缓冲区地址、缓冲区长度及所用设备的有关数据结构指针等。这些信息在进程申请释放设备进行数据传输中使用。

指向文件系统的指针及有关标识等。进程可使用这些信息对文件系统进行操作。

(4)CPU 现场保护结构

当前进程因等待某个事件而进入等待状态或因某种事件发生被中止在处理机上的执行时,为了以后该进程能在被打断处恢复执行,需要保护当前进程的 CPU现场(或称进程上下文)。PCB 中设有专门的 CPU现场保护结构,以存储退出执行时的进程现场数据。


总之,进程控制块PCB 是系统感知进程存在的唯一实体。通过对PCB 的操作,系统为有关进程分配资源从而使得有关进程得以被调度执行;而完成进程所要求功能的程序段的有关地址,以及程序段在进程过程中因某种原因被停止执行后的现场信息也都在PCB 中。最后,当进程执行结束后,则通过释放PCB 来释放进程所占有的各种资源。


由于PCB 中包含有较多的信息,因此,一个PCB表往往要占据较大的存储空间(一般占几百到几千个字节)。在有的系统中,为了减少 PCB对内存的占用量,只允许PCB中最常用的部分,如CPU现场保护、进程描述信息、控制信息等常驻内存。PCB 结构中的其他部分则存放于外存之中,待该进程将要执行时与其他数据一起装入内存。


2、进程上下文

进程上下文是一个抽象的概念,它包含了每个进程执行过的、执行时的以及待执行的指令和数据,在指令寄存器、堆栈、状态字寄存器等中的内容。


把已执行过的进程指令和数据在相关寄存器与堆栈中的内容称为上文。

正在执行的指令和数据在相关寄存器与堆栈中的内容称为正文。

待执行指令和数据在相关寄存器与堆栈中的内容称为下文。

如图,进程上下文结构:


20200911154911860.png

3、进程上下文切换

切换过程:


20200911162419253.png

三、进程状态及其转换

1.进程状态

系统根据PCB结构中的状态值控制进程。


一个进程至少具有三种基本状态,它们是:执行状态Running、等待状态Waiting和就绪状态Ready。


在有些系统中,为了有效地利用内存,就绪状态又可进一步分为内存就绪状态和外存就绪状态(挂起状态Suspend)。


在单CPU系统中,任一时刻处于执行状态的进程只能有一个。只有处于就绪状态的进程经调度选中之后才可进入执行状态。


在某些操作系统中,一个进程在其生命期内的执行过程中,总要涉及到用户程序和操作系统内核程序两部分。因此,进程的执行状态又可进一步划分为用户执行状态和系统执行状态。划分用户态和系统态最主要的原因是要把用户程序和系统程序区分开来,以利于程序的共享和保护。


进程因等待某个事件发生而放弃处理机进入等待状态。显然,等待状态可根据等待事件的种类而进一步划分为不同的子状态,例如内存等待、设备等待、文件等待和数据等待等。


2.进程状态转换

20200914102755784.png


四、进程控制

进程和处理机管理的一个重要任务是进程控制。所谓进程控制,就是系统使用一些具有特定功能的程序段来创建、撤消进程以及完成进程各状态间的转换,从而达到多进程高效率并发执行和协调、实现资源共享的目的。


把系统态下执行的某些具有特定功能的程序段称为原语。原语分为两类:


一类是机器指令级的,其特点是执行期间不允许中断,在操作系统中,它是一个不可分割的基本单位。

一类是功能级的,其特点是作为原语的程序段不允许并发执行。

在操作系统中,通常把进程控制用程序段做成原语。用于进程控制的原语有:创建原语、撤消原语、阻塞原语、唤醒原语等。


1. 进程创建

(1)由系统程序模块统一创建,例如在批处理系统中,由操作系统的作业调度程序为用户作业创建相应的进程以完成用户作业所要求的功能。

(2)由父进程创建,例如在层次结构的系统中,父进程创建子进程以完成并行工作。

20200914110837280.png

无论是系统创建方式还是父进程创建方式,都必须调用创建原语来实现。创建原语扫描系统的PCB链表,在找到一定PCB表之后,填入调用者提供的有关参数,最后形成代表进程的PCB结构。这些参数包括:进程名、进程优先级P0 、进程正文段起始地址d0 、资源清单R0等。



2.进程撤销

以下几种情况导致进程被撤消:


该进程已完成所要求的功能而正常终止。

由于某种错误导致非正常终止。

祖先进程要求撤消某个子进程。

进程被撤消都必须释放它所占用的各种资源和PCB 结构本身,以利于资源的有效利用;当一个祖先进程撤消某个子进程时,还需审查该子进程是否还有自己的子孙进程,若有的话,还需撤消其子孙进程的PCB结构和释放它们所占有的资源。


撤消原语首先检查 PCB进程链或进程家族,寻找所要撤消的进程是否存在。如果找到了所要撤消的进程的 PCB结构,则撤消原语释放该进程所占有的资源之后,把对应的 PCB结构从进程链或进程家族中摘下并返回给 PCB空队列。如果被撤消的进程有自己的子进程,则撤消原语先撤消其子进程的 PCB结构并释放子进程所占用的资源之后,再撤消当前进程的 PCB结构和释放其资源。


20200914111345944.png


3.进程的阻塞block与唤醒wake up

实现进程的执行状态到等待状态,又由等待状态到就绪状态转换的两种原语,即阻塞原语与唤醒原语。


阻塞原语在一个进程期待某一事件发生,但发生条件尚不具备时,被该进程自己调用来阻塞自己。阻塞原语在阻塞一个进程时,由于该进程正处于执行状态,故应先中断处理机和保存该进程的CPU现场。然后将被阻塞进程置“阻塞”状态后插入等待队列中,再转进程调度程序选择新的就绪进程投入运行。

20200914113806903.png

当等待队列中的进程所等待的事件发生时,等待该事件的所有进程都将被唤醒。

唤醒一个进程有两种方法:


由系统进程唤醒

由事件发生进程唤醒

唤醒原语首先将被唤醒进程从相应的等待队列中摘下,将被唤醒进程置为就绪状态之后,送入就绪队列。在把被唤醒进程送入就绪队列之后,唤醒原语既可以返回原调用程序,也可以转向进程调度,以便让调度程序有机会选择一个合适的进程执行。

20200915110350588.png


五、进程互斥

1.资源共享所引起的制约

进程的并发执行不仅仅是用户程序的执行开始时间的随机性和提高资源利用率的结果,也是资源有限性导致资源的竞争与共享对进程的执行过程进行制约所造成的。


(1)临界区

设有两个计算进程PA,PB共享内存MS。其中 MS分为三个领域,即系统区、进程工作区和数据区。这里数据区被划分大小相等的块,每个块中既可能放有数据,也有可能未放有数据。系统区主要是堆栈S,其中存放那些空数据块的地址。

20200915112608810.png

相关文章
|
1月前
|
消息中间件 存储 算法
【软件设计师备考 专题 】操作系统的内核(中断控制)、进程、线程概念
【软件设计师备考 专题 】操作系统的内核(中断控制)、进程、线程概念
83 0
|
28天前
|
资源调度 监控 算法
深入理解操作系统:进程管理与调度策略
本文旨在探讨操作系统中进程管理的核心概念及其实现机制,特别是进程调度策略对系统性能的影响。通过分析不同类型操作系统的进程调度算法,我们能够了解这些策略如何平衡响应时间、吞吐量和公平性等关键指标。文章首先介绍进程的基本概念和状态转换,随后深入讨论各种调度策略,如先来先服务(FCFS)、短作业优先(SJF)、轮转(RR)以及多级反馈队列(MLQ)。最后,文章将评估现代操作系统在面对多核处理器和虚拟化技术时,进程调度策略的创新趋势。
|
1天前
|
算法 Linux 调度
深入理解操作系统中的进程调度策略
【4月更文挑战第25天】 在多任务操作系统中,进程调度策略是核心组件之一,它负责决定哪个可运行的进程将获得CPU时间。本文将探讨不同的进程调度算法,包括它们的原理、优缺点以及适用场景。我们将重点分析先到先服务(FCFS)、短作业优先(SJF)、轮转调度(RR)和多级反馈队列(MLFQ)等经典算法,并讨论现代操作系统如Linux和Windows中的实际调度策略。文章的目的是为读者提供对操作系统进程调度机制深度了解,并展示其在系统性能和用户体验中的关键作用。
|
2天前
|
负载均衡 算法 调度
深入理解操作系统中的进程调度策略
【4月更文挑战第25天】 在现代操作系统的核心功能中,进程调度策略扮演着至关重要的角色。本文将详细解析进程调度的基本概念、调度算法的种类及其背后的原理,并探讨它们对系统性能的影响。通过比较不同的调度策略,我们可以更深入地理解操作系统如何管理资源,确保多任务环境下的效率和公平性。
|
19天前
|
算法 Linux 调度
深入理解操作系统的进程调度策略
【4月更文挑战第8天】本文深入剖析了操作系统中的关键组成部分——进程调度策略。首先,我们定义了进程调度并解释了其在资源分配和系统性能中的作用。接着,探讨了几种经典的调度算法,包括先来先服务(FCFS)、短作业优先(SJF)以及多级反馈队列(MLQ)。通过比较这些算法的优缺点,本文揭示了它们在现实世界操作系统中的应用与局限性。最后,文章指出了未来进程调度策略可能的发展方向,特别是针对多核处理器和云计算环境的适应性。
|
20天前
|
算法 调度 UED
深入理解操作系统中的进程调度策略
【4月更文挑战第7天】 在多任务操作系统中,进程调度策略是决定系统性能和响应速度的关键因素之一。本文将探讨现代操作系统中常用的进程调度算法,包括先来先服务、短作业优先、轮转调度以及多级反馈队列等。通过比较各自的优势与局限性,我们旨在为读者提供一个全面的视角,以理解如何根据不同场景选择合适的调度策略,从而优化系统资源分配和提升用户体验。
|
29天前
|
算法 Unix Linux
深入理解操作系统:进程管理与调度策略
在现代操作系统的核心功能中,进程管理及其调度机制是维护系统稳定与高效运行的基石。本文将深入探讨操作系统中的进程概念、进程状态、以及进程调度策略。我们将从理论和实践两个维度出发,解析不同操作系统如何通过进程管理来优化资源分配,提升系统响应速度,并保证多任务环境下的公平性与效率。特别地,文章还将讨论实时系统中的调度策略,以及它们对于确保关键任务按时完成的重要性。
14 1
|
1月前
|
算法 调度 UED
深入理解操作系统:进程管理与调度策略
【2月更文挑战第31天】 在计算机科学领域,操作系统是至关重要的组成部分,它负责管理和控制硬件资源,同时为应用程序提供服务。本文将深入探讨操作系统的核心功能之一——进程管理,以及其中的关键概念:进程调度策略。我们将剖析进程的概念、生命周期和调度算法,并讨论它们如何影响系统性能和用户体验。通过比较不同的调度策略,本文旨在提供对操作系统设计决策背后权衡的深刻理解。
|
1月前
|
算法 调度 开发者
深入理解操作系统的进程调度策略
【2月更文挑战第30天】 在现代操作系统中,进程调度策略是其核心组成部分之一,关系到系统资源的合理分配和任务执行的高效性。本文将详细分析几种常见的进程调度算法,包括先来先服务(FCFS)、短作业优先(SJF)、轮转调度(RR)和多级反馈队列(MLFQ),并探讨它们在不同场景下的适用性和优缺点。通过对比分析,旨在帮助读者深入理解进程调度机制,以及在实际系统设计时如何根据需求选择合适的调度策略。
|
1月前
|
算法 大数据 Linux
深入理解操作系统之进程管理的艺术
【2月更文挑战第30天】 在现代计算机系统中,操作系统扮演着指挥官的角色,而进程管理则是其核心职能之一。本文旨在探讨操作系统中进程管理的关键技术和原理,以及它们如何影响系统性能和用户体验。文章将详细解析进程的概念、生命周期、调度算法及进程间的通信机制,并讨论当前操作系统如Linux和Windows在进程管理方面的创新策略。通过深入分析,本文揭示了高效进程管理对于提升操作系统响应速度和资源利用率的重要性。