linux进程的基本概念

学习操作系统已经有两年了,惭愧的是至今没有好好复习一下课本上关于进程这一章节的内容,以至于到现在很多概念性的东西,很多深层次的东西理解起来总是不通顺,所以我决定花自己一个下午的时间,好好把这一章节整理出来,给自己总结一下,也供自己以后回顾,也希望各位童鞋能给我些指导,让我有更深层次的理解。

1、进程的特征与状态

首先明确第一个问题,进程与程序的区别:

1 进程是一个动态的概念,进程的实质是程序的一次执行过程,动态性是进程的基本特征,同时进程是有一定的生命期的;而程序只是一组有序指令的集合,本身并无运动的含义,是静态的。

2 并发性,并发性是进程的重要特征,引入进程的目的正是为了使其程序和其它程序并发执行;而程序(没有建立进程)是不能并发执行的。

3 独立性,是指进程一个能独立运行、独立分配资源和独立调度的基本单位;凡未建立进程的程序,都不能作为一个独立的单位参加运行。

4不同的进程可以包含同一个程序,同一个程序在执行中也可以产生多个进程。

进程的几个特性:

动态性(由创建而产生,由调度而执行,由撤销而消亡)

并发性(往上看5行)

独立性(往上看5行)

异步性(进程按照各自独立的、不可预知的速度向前推进,或说进程实体按异步方式运行)

进程的静态描述:进程实体由三部分组成:

   PCB、有关程序段  和  该程序段对其进行操作的数据结构集。

各部分的作用:

1 进程控制块:用于描述进程情况及控制进程运行所需的全部信息,一会我们重点要研究他。                                                   

2 程序段:是进程中能被进程调度程序在CPU上执行的程序代码段。

3 数据段:一个进程的数据段,可以是进程对应的程序加工处理的原始数据,也可以是程序执行后产生的中间或最终数据。

进程的三种基本状态:

1.就绪状态(Ready)

      当进程已经分配到除CPU以外的所有必要的资源后,只要能再获得处理机,就可以立即执行。这时的进程的状态称为就绪状态。

2.执行状态(Running)(运行状态)

         指进程已获得处理机,其程序正在执行。在单处理机系统中,只能有一个进程处于执行状态。(在多处理机中,可能有多个进程处于执行状态)

3.阻塞状态(Block)(等待状态)

进程因为发生某个事件而暂停执行时的状态(如:请求I/O、申请缓冲空间等),进程受到阻塞,称这种暂停状态为阻塞状态,有时也称“等待”状态或“睡眠”状态。

进程三种状态间的转化:

①就绪→执行:调度

②执行→等待:等待某个事件发生而睡眠

③等待→就绪:因等待的时间发生而唤醒

④执行→就绪:时间片用完

2、进程控制块

为了描述和控制进程的运行,系统为每个进程定义了一个数据结构——进程控制块(PCB),他是进程实体的一个部分,是操作系统中最重要的记录型数据结构。PCB中记录了操作系统所需要的,用于描述进程的当前情况以及控制进程运行的全部信息。进程控制块的作用是使一个在多道程序环境下不能独立运行的程序(含数据),称为一个能独立运行的基本单位,一个能与其它进程并发执行的进程。或者说,os是根据PCB来对并发执行的进程进行控制和管理的。例如,当操作系统要调度某进程执行时,要从该进程的pcb中查询出其现行状态和优先级,在调度到某些进程后,要根据其pcb中的程序和数据的内存初始地址,找到其程序和数据;进程在执行过程中,当需要和与之合作的进程实现同步,通信或访问文件时,也都需要访问PCB;当进程由于某种原因而暂停执行时,又须将其断点的处理机环境保存在PCB中。可见,在进程整个生命中,系统总是通过PCB对进程进行控制的,也就是说,系统是根据进程的PCB而不是任何别的什么而感知到进程的存在的。所以说,PCB是进程存在的唯一标识。

由于PCB经常被系统访问,尤其是被 运行频率很高的进程及分派程序访问,故PCB应该常驻内存。。。系统将所有的PCB组织成若干链表(或队列),存放在操作系统中专门开辟的PCB区内,例如linux系统中用task_struct 数据结构来描述每个进程的程序控制块,在windows操作系统中则使用一个执行体进程块(eprocess)来表示进程对象的基本属性。

进程控制块内的信息介绍:

1.进程标识符: 进程标识符用于唯一的标识一个进程。

     内部标识符:在所有的OS中,都为每一个进程赋予一个唯一的整数,作为内部标识符,主要方便系统使用。

     外部标识符。由创建者提供,通常是由字母、数字组成,往往是用户(进程)访问该进程使用。如:计算进程、打印进程、发送进程、接收进程等。

2.处理机状态:处理机状态信息主要是由处理机各种寄存器中的内容所组成。处理机在运行时很多信息都放在寄存器中,当处理机被中断时,所有这些信息都必须保存在pcb中。

     通用寄存器。又称为用户可视寄存器,可被用户程序访问,用于暂存信息。

     指令寄存器。存放要访问的下一条指令。程序状态字PSW。其中含有状态信息。(条件码、执行方式、中断屏蔽标志等)

     用户栈指针。每个用户进程有一个或若干个与之相关 的系统栈,用于存放过程和系统调用参数及调用地址。栈指针指向该栈的栈顶。 

3.进程调度: 在PCB中还存放了一些与进程调度和进程对换有关的信息。

   (1)进程状态。指明进程当前的状态,作为进程调度和对换时的依据。

   (2)进程优先级。用于描述进程使用处理机的优先级别的一个整数,优先级高的进程优先获得处理机。

   (3)进程调度所需要的其他信息。(进程已等待CPU的时间总和、进程已执行的时间总和)

   (4)事件。进程由执行状态转变为阻塞状态所等待发生的事件。(阻塞原因)

4. 进程控制信息

(1)程序和数据的地址。指进程的程序和数据所在的内存或外存(首)地址,以便再调度到该进程执行时,能从PCB中找到其程序和数据;

(2)进程同步和通信机制。指实现进程同步和进程通信时必须的的机制,如,消息队列指针,信号量等。它们可能全部或部分地存放在PCB中;

(3)资源清单。即一张列出了除CPU以外的、进程所需的全部资源及已经分配到该进程的资源的清单;

(4)链接指针。它给出了本进程(PCB)所在队列中的下一个进程的PCB的首地址。

进程控制块的组织方式:

PCB表:

  系统把所有PCB组织在一起,并把它们放在内存的固定区域,就构成了PCB表。 PCB表的大小决定了系统中最多可同时存在的进程个数,称为系统的并发度。

常用的组织方式有两种:链接方式、索引方式。

1.链接方式:

 具有相同状态的PCB,用其中的链接字,链接成一个队列。可以形成就绪队列、若干个阻塞队列和空白队列等。其中,就绪队列常按照进程优先权的大小排列,优先权高的进程的PCB排在队列前面

2.索引方式

系统根据所有进程的状态,建立几张索引表。如:就绪索引表、阻塞索引表。把各索引表在内存的首地址记录在内存中的一些专用单元中。每个索引表的表目中,记录具有相同状态的某个PCB在PCB表中的地址。

3、进程控制

父进程与子进程的关系:

子进程可以继承父进程所有的资源,例如,继承父进程打开的文件,继承父进程所分配的缓冲区等。当子进程被撤销时,应将其从父进程哪里获得的资源还给父进程。此外,在撤销父进程时,也必须同时撤销其所有的子进程。为了标识进程之间的家族关系,在pcb中都设置了家族关系表项,以标明自己的父进程及所有的子进程。

进程创建:

在多道程序环境中,只有(作为)进程(时)才能在系统中 运行。因此为使进程能运行,就必须为它创建进程,导致一个进程去创建另一个进程的典型事件,可以有以下四类:

 用户登录:在分时系统中,用户在终端键入登录命令后,若是合法用户,系统建立一个进程,并插入就绪队列。

 作业调度:批处理系统中,作业调度程序调度到某个作业以后,就把这个作业装入内存,并分配必要的资源,创建进程,插入就绪队列。

 提供服务:运行中的用户向系统提出请求后,系统专门建立一个进程为用户服务。(打印请求)由操作系统核心(系统程序模块)创建

 应用请求:根据应用进程的需要,由它自己创建一个新进程,使新进程以并发运行方式完成特定任务。 由父进程创建

一旦操作系统发现了要求创建新进程的事件后,便调用进程创建原语(create()) ,按照如下步骤创建进程:

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

2、为新进程分配资源,为新进程的程序和数据以及用户栈分配必要的内存空间。显然,此时操作系统必须知道新进程所需的内存大小。

3、初始化进程控制块。PCB的初始化包括:a初始化标识信息,将系统分配的标识符和和父进程标识符填入新PCB中;b初始化处理机状态信息,使程序计数器指向程序入口的地址,使栈指针指向栈顶;c初始化处理机控制信息,将进程的状态设置为就绪状态或静止状态,对于优先级,通常是将它设置为最低优先级,除非用户以显示方式提出高优先级要求。

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

2 进程的终止(撤消进程):

引起进程终止的事件

正常结束:计算机系统中,都有一个表示进程已经运行完成的指示。(批处理,Halt。分时系统中,Logs Off)

异常结束: 越界错误、保护错、特权指令错、非法指令错、运行超时、等待超时、算术运算错、 I/O故障

外界干预:

   操作员或操作系统干预

   父进程请求

   父进程终止

进程终止的过程:

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

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

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

4、将被终止的进程的全部资源或者归还给其父进程,或者归还给操作系统。

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

时间: 2024-12-23 10:48:14

linux进程的基本概念的相关文章

linux 进程(一)---基本概念

一.进程的定义         进程是操作系统的概念,每当我们执行一个程序时,对于操作系统来讲就创建了一个进程,在这个过程中,伴随着资源的分配和释放.可以认为进程是一个程序的一次执行过程.   二.进程与程序的区别          程序时静态的,它是一些保存 在磁盘上得指令的有序集合,没有任何执行的概念.     进程是一个动态的概念,它是程序执行的过程,包括创建.调度和消亡.   三.linux系统中进程的表示       在linux系统中,进程由一个叫task_struct的结构体描述,

Linux进程和线程的基础与管理

  一.进程的基本概念 程序是为了完成某种任务而设计的软件,比如vi是程序.什么是进程呢? 进程就是运行中的程序.一个运行着程序,可能有多个进程.比如Web服务器是Apache服务器,当管理员启动服务后,可能会有好多人来访问,也就是说许多用户同时请求httpd,Apache服务器将会创建多个httpd进程来对其进行服务. 首先我们看看进程的定义.进程是一个具有独立功能的程序关于某个数据集合的一次可以并发执行的运行活动,是处于活动状态的计算机程序.进程作为构成系统的基本细胞,不仅是系统内部独立运行

Linux进程ID号--Linux进程的管理与调度(三)

进程ID概述 进程ID类型 要想了解内核如何来组织和管理进程ID,先要知道进程ID的类型: 内核中进程ID的类型用pid_type来描述,它被定义在include/linux/pid.h中 enum pid_type { PIDTYPE_PID, PIDTYPE_PGID, PIDTYPE_SID, PIDTYPE_MAX }; 1 2 3 4 5 6 7 1 2 3 4 5 6 7 PID 内核唯一区分每个进程的标识 pid是 Linux 中在其命名空间中唯一标识进程而分配给它的一个号码,称做

Linux进程及进程通讯

一.进程特点及关键字. 1. 基础 [概念]一个具有一定独立功能的程序的一次运行. [特点]动态性,并发性,独立性,异步性. [状态]就绪,执行,阻塞. 2. 几个关键字 [PID/PPID]标示进程的唯一数字,PPID特指父进程ID. [UID]启动进程用户. 3. 临界资源与临界区 [临界资源]资源只允许指定数量的进程同时访问. [临界区]进程中访问临界资源的代码. [进程同步]并发进程按照一定顺序执行的过程. 4. 进程调度--按照一定的算法从一组待运行的进程中选出一个来占有CPU运行.

如何灵活运用Linux进程资源监控和进程限制

每个 Linux 系统管理员都应该知道如何验证硬件.资源和主要进程的完整性和可用性.另外,基于每个用户设置资源限制也是其中一项必备技能. 在这篇文章中,我们会介绍一些能够确保系统硬件和软件正常工作的方法,这些方法能够避免潜在的会导致生产环境下线或钱财损失的问题发生. 报告 Linux 进程统计信息 你可以使用 mpstat 单独查看每个处理器或者系统整体的活动,可以是每次一个快照或者动态更新. 为了使用这个工具,你首先需要安装 sysstat: # yum update && yum in

Linux进程资源用量监控和按用户设置进程限制

由于 2016 年 2 月 2 号开始启用了新的 LFCS 考试要求,我们在已经发表的 LFCS 系列 基础上增加了一些必要的主题.为了准备考试,同时也建议你看看 LFCE 系列 文章. 每个 Linux 系统管理员都应该知道如何验证硬件.资源和主要进程的完整性和可用性.另外,基于每个用户设置资源限制也是其中一项必备技能. 在这篇文章中,我们会介绍一些能够确保系统硬件和软件正常工作的方法,这些方法能够避免潜在的会导致生产环境下线或钱财损失的问题发生. 报告 Linux 进程统计信息 你可以使用

Linux进程关系

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Linux的进程相互之间有一定的关系.比如说,在Linux进程基础中,我们看到,每个进程都有父进程,而所有的进程以init进程为根,形成一个树状结构.我们在这里讲解进程组和会话,以便以更加丰富的方式了管理进程.   进程组 (process group) 每个进程都会属于一个进程组(process group),每个进程组中可以包含多个进程.进程组会有一个进程组领导进程 (pro

Linux进程上下文切换过程context_switch详解--Linux进程的管理与调度(二十一)【转】

转自:http://blog.csdn.net/gatieme/article/details/51872659 版权声明:本文为博主原创文章 && 转载请著名出处 @ http://blog.csdn.net/gatieme   目录(?)[-] 前景回顾 1 Linux的调度器组成 2 调度工作 进程上下文 1 进程上下文的概念 2 上下文切换 context_switch进程上下文切换 1 context_switch完全注释 2 prepare_arch_switch切换前的准备工

Linux进程管理与调度-之-目录导航【转】

转自:http://blog.csdn.net/gatieme/article/details/51456569 版权声明:本文为博主原创文章 && 转载请著名出处 @ http://blog.csdn.net/gatieme   目录(?)[-] 项目链接 进程的描述 进程的创建 进程的加载与运行 进程的退出 进程的调度 调度普通进程-完全公平调度器CFS   日期 内核版本 架构 作者 GitHub CSDN 2016-07-21 Linux-4.6 X86 & arm gat