Linux进程(一)基础知识详解

1.进程基础知识

1.1 程序的顺序执行与并发执行

程序的顺序执行: 程序的各操作步骤之间依序执行,程序与程序之间串行执行,称为顺序执行。顺序执行时单道程序系统中的程序的运行方式。

特点:

  • 顺序性:一个操作结束,下一个操作才能开始执行。多个程序要运行时,仅当一个程序全部执行结束,另一个程序才能开始。
  • 封闭性:程序在封闭环境中运行,即程序运行时独占所有资源,程序的执行过程不受外界影响,结果只取决于程序自身。
  • 可再现性:程序执行的结果与运行的时间和速度无关,结果都是可再现的,重复执行该程序结果相同。

总的来说,顺序执行的方式简单,便于调试,但系统资源利用率很低。

程序的并发执行: 若干个程序或程序段同时运行。它们在执行时间上是重叠的,即同一程序或不同程序的程序段可以交叉执行。

特点:

  • 间断性:并发程序之间因竞争资源而相互制约,导致程序运行过程的间断。例如,在只有一个CPU的系统中,多个程序需要轮流占用CPU运行,未获得CPU使用权限的程序必须等待。
  • 失去封闭性:当多个程序共享系统资源时,一个程序的运行收到其他程序的影响,其运行过程和结果不完全由自身决定。例如,一个程序计划在某一时间段执行一个操作,但很可能在那个时刻到来时它没有获得CPU的使用权限,因而也无法完成该操作。
  • 不可再现性:由于没有了封闭性,并发程序执行结果与执行的时机及执行的速度有关,结果往往不可再现。

并发执行程序虽然可以提高系统资源的利用率和吞吐量,但程序的行为变得复杂和不确定,使程序难以调试,若处理不当还会带来许多潜在问题。

1.2 进程的概念:

进程(process)是一个可并发执行的程序在某数据集上的一次运行。

程序是进程的一个组成部分,是进程的执行文本,而进程是程序的执行过程。

1.3 进程的特性:

  • 动态性:进程由“创建”而产生,由“撤销”而消亡,因“调度”而运行,因“等待”而停顿。进程由创建到消失的过程称为进程的生命周期。
  • 并发性:在同一时间段内有多个进程在系统内活动。在宏观上是并发运行,而在微观上是在交替运行。
  • 独立性:进程是可独立运行的基本单位,是操作系统分配资源和调度资源管理的基本对象。因此,每个进程都是独立地拥有各种必要的资源,独立地占有CPU并独立的运行。
  • 异步性:每个进程都独立地执行,各自按照不可预知的速度向前推进。进程之间的协调运行由操作系统负责。

1.4 进程的基本状态

在多道系统中,进程的个数总是多于CPU的个数,因此它们需要轮流占用CPU。宏观上看,所有进程同时都在向前推进,而在微观上,这些进程是在走走停停之间完成整个运行的过程。

进程有3个基本的状态:

  • 就绪态:进程已经分配到了除CPU之外的所有资源,这时的进程状态称为就绪态。处于就绪态的进程一旦获得了CPU便可立即执行,系统中常会有多个进程处于就绪态,他们拍成一个就绪队列。
  • 运行态:进程已经获得CPU,正在运行,这时的进程状态称为运行态。在CPU系统中,任何时刻只能有一个进程处于运行态。
  • 等待态:进程因某种资源不能满足,或希望的某事件尚未发生而暂停执行时,称为等待态。系统中常常会有多个进程处于等待态,它们按等待事件分类,排成多个等待队列。

1.5 进程状态的转换

进程诞生之初是处于就绪状态,在其后的生存期间内不断地从一个状态转换到另一个状态,最后在运行状态结束。

运行态→等待态:正在执行的进程因为等待某事件而无法执行下去,比如,进程申请某种资源,而该资源恰好被其他进程占用,则该进程将交出CPU,进入等待状态。

等待态→就绪态:处于等待状态的进程,当所申请的资源得到满足,则系统将资源分配给它,并将其状态变为就绪态。

运行态→就绪态:正在执行的进程的时间片用完了,或者有更高优先级的进程到来,系统会暂停该进程的运行,使其进入就绪态,然后调度其他进程运行。

就绪态→运行态:处于就绪状态的进程,当被进程调度程序选中后,即进入CPU运行。此时该进程的状态变为运行态。

 2.进程控制块

进程由程序、数据和进程控制块三部分组成,其中程序是进程执行的可执行代码,数据是进程所处理的对象,进程控制块记录进程的所有信息。它们存在于内存,其内容会随着执行过程的进展不断变化,在某个时刻的进程内容被称为进程映像。

2.1 进程控制块

Process Control Block,PCB 是系统管理进程设置的一个数据结构,用于记录进程的相关信息。PCB是系统感知和控制进程的一个数据实体。当创建一个进程时,系统为他生成PCB;进程完成后,撤销它的PCB。PCB是进程的代表,PCB存在进程存在,PCB消失进程结束。进程的生存周期中,系统通过PCB来了解进程的活动情况,对进程实施控制和调度,因此PCB是操作系统中的最重要数据结构之一。

2.2进程控制块的内容

PCB记录了有关进程的系统所关心的所有信息,主要包括以下4方面:

(1)进程描述信息

进程描述信息用于记录一个进程的特征和基本情况,通过这些信息可以识别该进程,了解该进程的归属信息,确定这个进程和其他进程之间的关系。

系统为每个进程分配了一个唯一的整数作为进程标识号PID,通过这个PID来标识这个进程。操作系统、用户及其他进程都是通过PID来识别进程的。此外,还要描述进的家族关系,即父进程和子进程的信息。

(2)进程控制和调度信息

进程是系统运行调度的基本单位,进程控制块记录进程的当前状态、调度信息、计时信息等。系统根据这些信息确定进程的状态,实施进程调度和控制。

(3)资源信息

系统以进程为单位分配资源,并将资源信息记录在进程的PCB文件中。资源包括该进程使用的存储空间,打开的文件及设备等。通过这些信息,进程可以的到运行需要的相关程序段、数据段、使用文件、设备等资源。

(4)现场信息

现场信息一般包括CPU的内部寄存器和系统堆栈等,它们的值描述了该进程的运行状态。退出CPU的进程必须保存好这些现场状态,以便在下一次被调度时继续运行。当一个进程被重新调度运行时,要用PCB中的现场信息来恢复CPU的运行现场。现场一旦切换,下一个指令周期CPU将精准地接着上一次运行的断点处继续执行下去。

3.进程的组织 

 管理进程就是管理进程的PCB。一个系统中通常有数百上千个进程,为了有效管理,系统需要采用适当的方式将他们组织在一起。所有的PCB都存放在内存中,通常采用的组织机构有数组、索引和链表3种方式。

数组方式:是将所有PCB顺序存放在一个一维数组中,这种方式比较简单,但操作起来效率低。

索引方式:是通过在PCB数组上设置索引表或散列表,以加快访问速度。

链表方式:是将PCB链接起来,构成链式队列或链表。例如,所有就绪的PCB链成一个就绪队列;所有等待的PCB按等待事件链成多个等待队列。这样,在进程调度时只要扫描就绪队列即可,等待的事件发生时只要扫描相应的等待队列即可。当进程状态发生转换时,链式结构允许方便的向队列插入和删除一个PCB。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dola_Pan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值