进程基础知识

进程是可并发执行的程序在一个数据集合上的运行过程。

进程是指进程实体的运行过程。

进程和程序比较

进程更能真实地描述并发,而程序不能;

进程是由程序和数据、进程控制块PCB三部分组成的;

进程具有创建其他进程的功能,而程序没有;

同一程序同时运行于若干个数据集合上,它将属于若干个不同的进程。也就是说同一程序可以对应多个进程;

进程特征

  • 结构性:由程序段、数据段、进程控制块三部分组成;
  • 动态性:进程是程序的执行过程;
  • 并发性:多个进程可同存于内存中,能在一段时间内同时运行;
  • 独立性:独立运行的基本单位,独立获得资源和调度的基本单位;
  • 异步性:各进程按各自独立的不可预知的速度向前推进。

进程的状态转换

进程在生命消亡前处于且仅处于三种基本状态之一。(就绪,运行,阻塞)

就绪状态(Ready):存在于处理机调度队列中的所有进程,它们已经准备就绪,一旦得到CPU,就立即可以运行。这些进程所处的状态为就绪状态。

就绪队列:处于就绪状态的进程按一定的策略排队,同一时刻可有多个就绪队列。

运行状态(Running):正在运行的进程所处的状态为运行状态。

等待/阻塞/睡眠状态(Wait/Blocked):若一进程正在等待某一事件发生(如等待输入输出工作完成),这时,即使给它CPU,它也无法运行,称该进程处于等待状态(阻塞、 睡眠、封锁状态)。 阻塞队列:根据阻塞原因可以设置多个队列。

进程控制块

PCB来源  (Process Control Block)

为了描述一个进程和其它进程以及系统资源的关系,为了刻画一个进程在各个不同时期所处的状态,采用了一个与进程相联系的数据结构,称为进程控制块(PCB)。

PCB是OS中最重要的记录型数据结构。

PCB作用

作用是将一个不能独立运行的程序变成一个可以独立运行的基本单位,一个能与其他进程并发执行的进程。

OS利用PCB来对并发执行的进程进行控制和管理,PCB是OS感知进程存在的唯一标志。

进程与PCB是一一对应的。

PCB随进程创建而建立,随进程结束而回收。

PCB应常驻内存。

PCB的内容

进程描述信息:

  1. 进程标识符(process ID):唯一,通常是一个整数
  2. 进程名:通常基于可执行文件名(不唯一)
  3. 用户标识符(user ID):进程组关系

进程控制信息:

  1. 当前状态
  2. 优先级(priority)
  3. 代码执行入口地址
  4. 程序的外存地址

所拥有的资源和使用情况:

  1. 虚拟地址空间的现状
  2. 打开文件列表

CPU现场保护信息:

  1. 寄存器值(通用、程序计数器PC、状态字PSW,地址包括栈指针)
  2. 指向赋予该进程的段/页表的指针

进程控制块组织

  • 链接方式
  • 通常将具有相同状态进程的PCB根据PCB结构内链接指针,将进程PCB链接在一起,形成就绪队列、阻塞队列以及空闲队列。由于不同操作系统的规模和功能不同,可进一步建立若干个就绪队列和阻塞队列。
  • 索引方式
  • 索引方式就是根据进程的不同状态建立几个索引表,如就绪索引表、阻塞索引表、空闲表等。索引表中的每一项指示一个PCB在内存的首地址,而各索引表的起始地址存放在内存的专用指示单元中。图5.12 给出了索引方式的PCB组织。

进程控制

进程控制指对系统中的所有进程实施管理。

进程控制一般由OS的内核来实现。

OS的内核

通常将OS中一些与硬件紧密相关的模块(如:中断处理程序;各种常用设备的驱动程序)以及运行频率较高的模块(时钟管理、进程调度以及许多模块公用的一些基本操作)都安排在紧靠硬件的软件层次中,并使它们常驻内存,以提高OS 的运行效率,并对它们加以特殊的保护。这部分就是OS的内核。

内核包括功能

支撑功能

  1. 中断处理:内核最基本的功能。如:系统调用 进程调度等
  2. 时钟管理:
  3. 原语操作:实现进程通信和控制。

资源管理功能

  1. 进程管理
  2. 存储器管理
  3. 设备管理

原语(Primitive) 

原语:由多条指令组成,是一种特殊的系统功能调用,它可以完成一个特定的功能。

原语的特点:

  1. 执行时不可中断
  2. 不可并发
  3. 在管态下执行,常驻内存

常用的进程控制原语

  1. 创建原语 Create
  2. 终止原语 Destroy
  3. 阻塞原语Block、唤醒原语Wakeup
  4. 挂起原语Suspend、激活原语Active

进程创建

  1. 申请空白PCB
  2. 为新进程分配资源 如内存
  3. 初始化进程控制块
  4. 将新进程插入就绪队列

什么事件可以引起创建进程?

  • 用户登录:系统为合法用户创建进程
  • 作业调度:系统为被调度作业创建进程
  • 提供服务:如用户程序需打印,系统创建打印进程
  • 应用请求:由应用创建进程。如某应用可创建子进程完成输入、表格输出等

进程终止

  1. 根据被终止进程的标识符,从PCB集合中检索出该进程的PCB;
  2. 若被终止进程处于执行状态,应立即终止执行,并置调度标志为真,调度其他进程;
  3. 结束该进程所有子孙进程的执行,以防止成为不可控进程;
  4. 将进程所拥有的资源交给父进程或系统进程;
  5. 释放PCB 。

进程终止的事件:

  1. 正常结束
  2. 异常结束

    越界错误 保护错 特权指令错 非法指令错 I/0故障 等

    运行超时 等待超时 算术运算错

  3. 外界干预

进程的阻塞与唤醒

阻塞:当一个进程所期待的某一事件尚未出现时,该进程调用阻塞原语将自己阻塞。 进程阻塞是进程自身的一种主动行为。

唤醒:处于阻塞状态的进程是绝不可能叫醒它自己的,必须由它的合作进程用唤醒原语唤醒它。

进程的挂起与激活

挂起:当出现了引起进程挂起的事件时,系统利用挂起原语将指定进程或处于阻塞状态的进程挂起。

激活:当发生激活进程的事件时,系统利用激活原语将指定进程激活。

进程的挂起事件

  1. 用户进程请求将自己挂起;
  2. 父进程请求挂起某个子进程;
  3. 系统利用挂起原语将指定进程或阻塞态进程挂起。

进程的激活事件

  1. 父进程请求激活某进程
  2. 用户进程请求激活某进程
时间: 2024-11-02 18:24:56

进程基础知识的相关文章

Linux进程基础知识总结

                                    进程 进程表示一个正在运行的程序实例,它是分配资源的最小单位,这种说法特别官方. 进程是一个非常重要的东西,我们运行的系统中同时跑着N个进程,这些进程都在默默的工作着,我们编写的代码,经过编译.运行,也会生成一个进程.这个进程由程序代码.数据.变量(占用着系统内存).打开的文件(文件描述符)和环境组成.一般来说,对于Linux系统,系统会在进程之间共享程序代码和系统函数库,所以在任何时刻,内存中都只存在代码的一份副本. 由于

linux学习之八---Linux进程基础知识

一.linux进程 linux是一个多用户多任务的操作系统. 多用户是指多个用户可以在同一时间使用计算机: 多任务是指linux可以同时执行几个任务. 进程简单来说就是运行中的程序,Linux系统的一个重要特点是可以同时启动多个进程.根据操作系统的定义:进程是操作系统资源管理的最小单位. 1.Linux进程的概念 进程是一个动态的实体,是程序一次执行过程,并且进程是操作系统资源分配的基本单位. 进程与程序的区别:进程是动态的,程序是静态的:进程是运行中的程序,而程序还是保存在硬盘上的可执行代码.

linux下多进程的文件拷贝与进程相关的一些基础知识

之前实现了用文件IO的方式可以实现文件的拷贝,那么对于进程而言,我们是否也可以实现呢? 答案是肯定的. 进程资源: 首先我们先回顾一下,进程的运行需要哪些资源呢?其资源包括CPU资源,内存资源,当然还有时间片资源,我们都知道进程是有 栈, 堆,  只读数据段,  数据段(已初始化的全局变量静态变量),bss段(未初始化的),   代码段还有一组寄存器值. 进程命令: 另外我们也可以通过 ps  -ef |grep 进程名命令来查看进程号(PID)和父进程号(PPID),之后还可以通过 ps au

linux入门基础知识及简单命令介绍

linux入门基础知识介绍 1.计算机硬件组成介绍 计算机主要由cpu(运算器.控制器),内存,I/O,外部存储等构成. cpu主要是用来对二进制数据进行运算操作,它从内存中取出数据,然后进行相应的运算操作.不能从硬盘中直接取数据. 内存从外部存储中取出数据供cpu运存.内存的最小单位是字节(byte) 备注:由于32的cpu逻辑寻址能力最大为32内存单元.因此32位cpu可以访问的最大内存空间为:4GB,算法如下: 2^32=2^10*2^10*2^10*2^2 =1024*1024*1024

20_Shell语言———VIM编辑器基础知识三之窗口属性定制、配置文件及查找替换功能

Vim编辑器可以让用户按照需求来定制一些使用属性. 一.窗口属性定义 1)显示行号 行号不是内容,只是用来帮助用户确认文本所在的行.在vim编辑器中,如果要显示行号,可以在末行模式下输入: set number 如果想关闭,则可以在功能名称前面加上no,即: set nonumber 命令可以被简写,如set number 可以简写为 set nu:set nonumber 可以简写为 set nonu. 注意,上述设定仅对当前vim的进程有效,一旦当前进程关闭,这些设定就会失效,如果要使设定永

线程基础知识

什么是线程: 在一个程序里的一个执行路线就叫做线程(thread).更准确的定义是:线程是"一个进程内部的控制序列" 一切进程至少都有一个执行线程 进程与线程 进程是资源竞争的基本单位 线程是程序执行的最小单位 线程共享进程数据,但也拥有自己的一部分数据 线程ID 一组寄存器 栈 errno 信号状态 优先级 fork和创建新线程的区别 当一个进程执行一个fork调用的时候,会创建出进程的一个新拷贝,新进程将拥有它自己的变量和它自己的PID.这个新进程的运行时间是独立的,它在执行时几乎

Keepalived基础知识

大纲: 一.什么是Keepalived? 二.VRRP协议简介. 三.Keepalived原理. 四.Keepalived配置文件详解. 五.Keepalived配置示例. 一.什么是Keepalived? 什么是Keepalived呢,keepalived观其名可知,保持存活,在网络里面就是保持在线了,也就是所谓的高可用或热备,用来防止单点故障(单点故障是指一旦某一点出现故障就会导致整个系统架构的不可用)的发生,那说到keepalived时不得不说的一个协议就是VRRP协议,可以说这个协议就是

【Linux系列】【基础版】第三章 Shell基础知识

3. Shell基础知识     3.1 Shell的由来         3.1.1 Bourne Agin Shell         3.1.2 其他的shell, 有 zsh, ksh等     3.2 查看有没有shell         3.2.1 yum list | grep zsh         3.2.2 ls /root/.bash_history         3.2.3 echo $HISTSIZE -> vi /etc/profile 修改HISTSIZE的值 -

多线程编程基础知识

多线程编程基础知识 http://www.cnblogs.com/cy163/archive/2006/11/02/547428.html 当前流行的Windows操作系统能同时运行几个程序(独立运行的程序又称之为进程),对于同一个程序,它又可以分成若干个独立的执行流,我们称之为线程,线程提供了多任务处理的能力.用进程和线程的观点来研究软件是当今普遍采用的方法,进程和线程的概念的出现,对提高软件的并行性有着重要的意义.现在的大型应用软件无一不是多线程多任务处理,单线程的软件是不可想象的.因此掌握