【操作系统】第七章:进程管理(Part1:进程的概念)

简介: 【操作系统】第七章:进程管理(Part1:进程的概念)

目录


  • 进程描述
  • 1.定义
  • 2.组成
  • 3.进程与程序的联系
  • 4.特点
  • 进程控制块


正文


进程描述


进程的静态表述部分。


1.定义


902955837b5bee99df7bc1710a35c374_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NoYWhvdA==,size_16,color_FFFFFF,t_70.png

进程的概念比较抽象。某些角度上,我们可以把运行的程序看作进程,它代表程序在整个执行过程的描述。随着计算机的不断发展,程序开始出现多元化,一个程序分成几部分运行的例子也很多,此时如果我们再用程序的概念来描述多个程序的实例就比较困难,所以我们引出进程的概念。

进程:一个具有独立功能的程序在一个数据集合上的一次动态执行过程。

如图,我们写程序,然后程序通过编译可以变成一个执行程序,执行程序包含了代码段,数据段和数据结构等。这样的程序是放在文件系统里,以一种执行文件的形态存在,是静态存在的,无法看到它可以完成什么样的功能;只有当OS将其调入内存中,让这个程序跑起来,通过CPU执行程序中的一条条指令、对相应数据进行处理,可以完成一定的功能。这一步是一个动态的执行过程,这个执行过程就是进程。进程是一个动态的过程,程序是静态的,他们之间有很深的联系,因为进程取决于程序的代码。


2.组成


进程具体需要执行的东西:

①相应的代码

②代码需要处理的数据

③现在要执行的指令

④一组通用寄存器的当前值、堆栈

寄存器中一般存着下一条要执行的指令位置,同时整个处理过程中他会用到大量CPU的寄存器,会动态变化。

⑤系统资源(内存、文件系统、网络等一系列的资源)


进程包含了一个正在运行的程序的状态信息。这个状态信息是比较抽象的概念。


3.进程与程序的联系


3bcc78ecc0fe61e1378bf6810eef62fb_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NoYWhvdA==,size_16,color_FFFFFF,t_70.png

程序是产生进程的基础,进程的功能受制于程序的代码。程序的每一次执行构成了不同的进程,程序放在系统中可以被多次执行,且每次执行如果数据不同,则得到的结果也可能不同。当有多个进程执行这个程序时,可能会因为获得的资源不一样而获得不同的结果。进程就是程序功能的体现,数据不同,但是其逻辑原理是一样的,排序程序,输入不同输出不一定相同但是一定是一个排序的程序。通过多次执行,一个程序可以对应多个进程;通过调用关系,一个进程可以包括多个程序。


区别:进程是动态的;程序是静态的。程序是有序代码的集合,进程是程序的执行,进程有核心态用户态

核心态就是在操作系统中运行,我们写的程序都是运行在用户态。进程在执行过程中需要一些特定功能,比如读写文件,这个功能需要由OS完成,所以代表进程在内核中执行,也就说进程处于核心态。


进程是暂时的,程序是永久的。进程是一个状态变化的过程,程序可以长久保存。程序保存在硬盘中,可以长久保存;进程随着结束自然也就消失了。


进程与程序的组成不同。进程的组成包括程序、数据和进程控制块(即进程状态信息)。虽然进程用到了程序的代码段和数据段等数据结构,但是进程执行过程中也有一些变化,处理数据时,数据在变;这个过程在程序中不存在的。处理输入数据对应产生输出数据,为了管理进程OS而建立的进程控制块等。

【例子】

ad6269f155f4bd4dbaf2253425ec6701_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NoYWhvdA==,size_16,color_FFFFFF,t_70.png

很明显医疗救护的优先级要高于做蛋糕,在处理完伤口后回来做蛋糕发现未完成的蛋糕上落满了苍蝇,科学家决定倒掉重做,这就是杀死进程。也就说CPU在执行进程时,会动态切换不同进程来完成不同的功能,这也是静态程序所没有的特征。


4.特点


动态性:可动态创建、结束进程。在执行过程中还有可能切换或者杀死进程。

并发性:进程可以被独立调度并占用CPU运行。

并发:一段时间内通过不但切换有多个进程在CPU中不断切换执行,如果这个时间很小,给人一种错觉是多个进程在同时执行。假·同时执行,是一种人感觉不到的错觉

并行:一个时刻,有多个进程在同时执行。如果只有一个CPU是不可能完成的,一个CPU在某一时刻只能执行一个进程,执行其他执行必须切换。多核/多处理器CPU时,可以满足并发执行。真·同时执行

独立性:不同进程之间的工作互不影响。执行进程时,OS会调度不同进程执行,所以进程的执行时间可能会受到其他进程的影响;但是进程的正确性不会受到影响,进程不会破坏其他进程的正确执行(代码/数据)。

通过页表可以使得不同的程序访问不同的地址空间,页表就是保证进程独立性的重要机制。有了页表,OS可以给不同进程分配不同页表,让每个进程在独立的空间内运行,使得他们的代码数据相互间不受影响。

制约性:因访问共享数据/资源或进程间同步而产生制约。进程之间可能有交互,或者某一进程需要在另一个进程在执行到某一阶段之后才能执行(前置条件),所以这也需要OS根据进程间的特点来协调进程去执行。

9fdd22e848491164c7d0c3990f144195_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NoYWhvdA==,size_16,color_FFFFFF,t_70.png


左图:体现动态性,在ABCD间切换执行。

中图:四个进程相对独立执行,他们执行的地址空间相对独立

右图:相互之间时间调度有一定的关系,执行的先后顺序需要OS调度策略或算法,或者存在约束关系(必须执行A才能执行B)。


进程控制块


操作系统也是一个软件,一个程序,描述进程的数据结构:进程控制块(Process Control Block,PCB)。描述进程执行过程中状态的变化和资源的需求情况。OS为每一个进程都维护了一个PCB,用于保存该进程执行过程中相关的所有信息,有了这些信息之后OS才可以对其管理,提供相应的独立性、动态性等特征。

1531517c657cd8003f21807f3e5bcb31_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NoYWhvdA==,size_16,color_FFFFFF,t_70.png

设计一个程序,数据结构是非常重要的。有了数据结构就可以很好地对进程管理。PCB描述了进程的基本情况和运行变化情况,所以一般来说我们可以把PCB作为进程存在的唯一标识,也就意味着如果进程存在则必然有一个PCB。一旦创建进程,就会相应创建一个进程控制块。

PCB 体现了什么时候开始,什么时候结束,中间是否被切换。

d07438112d7857aaa42f7539308a5331_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NoYWhvdA==,size_16,color_FFFFFF,t_70.png

PCB包含的三大类信息:

1.标识信息:一个PCB唯一标识了一个进程,PCB会有一个ID,这个ID就是个标识,他可以识别出进程代表的哪一个程序,或者这一个程序执行了几次,都可以通过PCB的进程标识来体现。还可以体现用户标识,比如这个进程属于哪一个用户,进程的父进程是什么(创建这个进程的进程)

2.处理器的状态信息:其实就是寄存器。处理器是CPU。CPU运行过程中会使用寄存器来做很多事情,比如当前需要对数据进行加减乘除等数学结算,这个过程会把很多数据存到寄存器里进行处理;还会保存状态,比如标志位,做了一个寄存器加法,检验是否溢出;执行过程,堆栈在什么地方;和执行相关的一些过程的保存也放在寄存器里,比如程序计数器和程序状态字,他们 保存了程序执行过程中相关的一些重要信息,还有堆栈执行到什么地方了,这些信息PC里都有记录。

2e524adc8791863f23445c0427df4a7d_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NoYWhvdA==,size_16,color_FFFFFF,t_70.png

3.进程的控制信息:OS需要对进程进行管理和控制,我们需要让它占用CPU执行,让他处于一个等待/就绪/运行的状态,这些不同的状态体现了进程在执行过程中临时的情况(执行特征),这些特征会描述出当前进程的执行现状。

进程之间需要通信,通信的信息也会保存在PCB。

进程本身需要内存,代码和数据都在内存中,管理其内存信息。比如占不到内存,是否回收;是否分配新的内存;

包括文件(后续详解)。一个进程可以打开不同的文件,整个过程怎么管理。

进程之间有关系,父进程和子进程。我们可以通过List链表来管理器来一个子进程与父进程的连续序列,从而形成PCB之间的链接信息和管理信息,从而形成了进程控制信息。

ex)进程A创建进程B,进程B可以创建进程C,则A是B的父进程,B是A的子进程;B是C的父进程,C是B的子进程。


PCB的组织方式:

我们可以用链表/索引(数组方式)来组织,但是一般我们会采取链表来组织,因为进程的执行过程是一个动态的执行过程,也就意味着OS在管理进程时,他会一会创建一会结束,在整个组织里他应该可以动态插入和动态删除,用链表的方式可以更好地完成动态插入和删除。如果是数组的话,动态的插入和删除开销可能会比较大。所以目前来说更多采取基于链表的方式,当然如果一个进程个数比较固定且一开始就执行,到结束也不会频繁的创建删除的话,采取索引的方式比较快捷。



目录
相关文章
|
存储 Linux API
【Linux进程概念】—— 操作系统中的“生命体”,计算机里的“多线程”
在计算机系统的底层架构中,操作系统肩负着资源管理与任务调度的重任。当我们启动各类应用程序时,其背后复杂的运作机制便悄然展开。程序,作为静态的指令集合,如何在系统中实现动态执行?本文带你一探究竟!
【Linux进程概念】—— 操作系统中的“生命体”,计算机里的“多线程”
|
算法 Linux 调度
深入理解Linux操作系统的进程管理
本文旨在探讨Linux操作系统中的进程管理机制,包括进程的创建、执行、调度和终止等环节。通过对Linux内核中相关模块的分析,揭示其高效的进程管理策略,为开发者提供优化程序性能和资源利用率的参考。
573 32
|
Unix Linux
对于Linux的进程概念以及进程状态的理解和解析
现在,我们已经了解了Linux进程的基础知识和进程状态的理解了。这就像我们理解了城市中行人的行走和行为模式!希望这个形象的例子能帮助我们更好地理解这个重要的概念,并在实际应用中发挥作用。
299 20
|
缓存 运维 前端开发
阿里云操作系统控制台:高效解决性能瓶颈与抖动之进程热点追踪
遇到“进程性能瓶颈导致业务异常”等多项业务痛点时,提供高效解决方案,并展示案例。
|
存储 Linux Shell
Linux进程概念-详细版(二)
在Linux进程概念-详细版(一)中我们解释了什么是进程,以及进程的各种状态,已经对进程有了一定的认识,那么这篇文章将会继续补全上篇文章剩余没有说到的,进程优先级,环境变量,程序地址空间,进程地址空间,以及调度队列。
272 0
|
Linux 调度 C语言
Linux进程概念-详细版(一)
子进程与父进程代码共享,其子进程直接用父进程的代码,其自己本身无代码,所以子进程无法改动代码,平时所说的修改是修改的数据。为什么要创建子进程:为了让其父子进程执行不同的代码块。子进程的数据相对于父进程是会进行写时拷贝(COW)。
344 0
|
存储 Linux 调度
【Linux】进程概念和进程状态
本文详细介绍了Linux系统中进程的核心概念与管理机制。从进程的定义出发,阐述了其作为操作系统资源管理的基本单位的重要性,并深入解析了task_struct结构体的内容及其在进程管理中的作用。同时,文章讲解了进程的基本操作(如获取PID、查看进程信息等)、父进程与子进程的关系(重点分析fork函数)、以及进程的三种主要状态(运行、阻塞、挂起)。此外,还探讨了Linux特有的进程状态表示和孤儿进程的处理方式。通过学习这些内容,读者可以更好地理解Linux进程的运行原理并优化系统性能。
575 4
|
监控 搜索推荐 开发工具
2025年1月9日更新Windows操作系统个人使用-禁用掉一下一些不必要的服务-关闭占用资源的进程-禁用服务提升系统运行速度-让电脑不再卡顿-优雅草央千澈-长期更新
2025年1月9日更新Windows操作系统个人使用-禁用掉一下一些不必要的服务-关闭占用资源的进程-禁用服务提升系统运行速度-让电脑不再卡顿-优雅草央千澈-长期更新
3943 2
2025年1月9日更新Windows操作系统个人使用-禁用掉一下一些不必要的服务-关闭占用资源的进程-禁用服务提升系统运行速度-让电脑不再卡顿-优雅草央千澈-长期更新
|
存储 算法 数据处理
进程基础:概念、状态与生命周期
进程是操作系统进行资源分配和调度的基本单位,由程序段、数据段和进程控制块(PCB)组成。线程是进程中更小的执行单元,能独立运行且共享进程资源,具有轻量级和并发性特点。进程状态包括就绪、运行和阻塞,其生命周期分为创建、就绪、运行、阻塞和终止阶段。
1090 2

热门文章

最新文章

推荐镜像

更多