> 文档中心 > 操作系统---(二)进程的描述与控制

操作系统---(二)进程的描述与控制


进程的描述与控制

为了提高系统的吞吐量和资源利用率,引入了进程的概念,独立运行的单位指进程。进程是一个十分重要的概念

前驱图和程序执行

早期的操作系统是顺序执行的,仅当前一个程序执行完,才执行下一个操作。

前驱图
在这里插入图片描述

I代表输入,C代表计算,P代表输出,输入计算再输出,一直重复。

并发执行的前驱图
在这里插入图片描述

这样,I2与C1就可以同时执行。

由于引进了并发执行,程序的并发执行具有以下特征:
在这里插入图片描述

即间断性,失去封闭性,不可再现性。

进程描述

进程定义:

进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位

进程控制块(PCB):
专门的数据结构,与进程一一对应。
即一个进程,就有一个PCB。管理进程实际上就是管理PCB来实现。
例如,下图就是windowsXP的进程
在这里插入图片描述

进程的特征:

其是,操作系统的特征就是来自进程的特征

  • 动态性(生命周期)
  • 并发性(一段时间同时运行)
  • 独立性(基本单位)
  • 异步性(按照各自的速度向前推进)

进程是活动的,程序是静态的,实际上进程就是程序的一次执行,进程是在内存中,程序是在外存中。

进程的状态

  • 就绪状态
  • 执行状态
  • 阻塞状态

在这里插入图片描述

状态之间的转换

在这里插入图片描述

PCB是进程存在的唯一标记,
PCB的作用

  • 作为独立运行的标志
  • 实现间断运行方式
  • 提供进程管理所需要的信息
  • 提供调度所需要的信息
  • 实现与其他进程的通信与同步

PCB的信息:

  • 进程标识符
  • 处理机状态
  • 进程调度信息
  • 进程控制信息

PCB的组织方式

  • 线性方式
  • 链接方式
  • 索引方式

线性方式
在这里插入图片描述

管理方便,查找不便

链接方式
在这里插入图片描述

比较常见,实际上就是指针管理

索引表组织方式
在这里插入图片描述

进程控制

也称为成为进程操作,是进程管理的最基本功能,一般有os内核的原语实现
原语执行期间不允许被中断,要么执行,也么不执行。

进程控制包括

  • 进程创建
  • 进程终止
  • 进程阻塞与唤醒
  • 进程激活与挂起
    进程具有层次结构,是一颗有向树
    在这里插入图片描述

进程创建过程

  • 申请空白PCB
  • 分配所需资源
  • 初始化PCB
  • 插入就绪队列

引起进程终止的事件

  • 正常结束
  • 异常结束
  • 外界干预

进程终止的步骤

  • 检索PCB,读取状态
  • 根据状态,进行调度标志修改
  • 子进程终止
  • 归还资源给系统或者父进程
  • 将PCB从所在队列移除

进程的阻塞与唤醒

进程阻塞

  • 向系统请求资源失败
  • 等待IO操作
  • 等待新任务的到达

进程阻塞是自身的行为,具体过程是先停止执行,状态改为阻塞,将PCB插入阻塞队列
阻塞原语:Block

唤醒的原语Wakeup,是阻塞的逆过程,可能不是自身的行为。
具体过程是先从阻塞队列中移除,将状态改为就绪,将PCB插入就绪队列

必须成对出现Block跟Wakeup

进程的挂起跟激活

挂起原语:Suspend()
激活原语:Active()

进程通信

进程通信,就是进程之间的信息交换。

低级进程通信

  • 效率低,交换量少

高级进程通信

  • 效率高,普遍应用

共享存储器系统

  • 通过共享内存(高级)
  • 共享数据结构(效率低)

管道通讯

  • 特性:一头进,一头出
  • 管道实际上是一个pipe文件,是一个共享文件

消息传递机制

  • 直接通信方式
    • 发送原语:send(receive,missage)
    • 接收者原语:receive(sender,missage)
  • 间接方式(通过邮箱)
    • 信箱结构,首先要定义信箱结构
    • 发送原语:send(mailbox,message)
    • 接受原语:receive(mailbox,message)

客户服务器系统

  • 套接字(Socket)
  • 远程过程调用,以及Java的远程方法调用

Linux通信方式

Linux的通讯方式比较多样,简写为Linux IPC,一般有六种,包括管道,共享内存,信号,信号量,消息队列,套接字

线程的基本概念

比进程更小的概念:线程,提高系统效率

当初引入进程的目的是让多个程序并发执行,提高资源利用率

进程的属性:

  • 是一个CPU调度单位
  • 是一个处理的资源独立单位
  1. 将进程一分为二,使线程作为调度和分派的基本单位,进程是拥有资源的基本单位,减少程序执行时的时空开销,线程是依附于进程而存在的。
  2. 线程是调度的基本单位,不仅进程之间可以并发执行,并且一个进程的多个线程也可以并发执行。
  3. 线程本身不拥有系统资源,仅有一点保证独立运行的资源,并且允许多个线程共享父进程所拥有的资源。
  4. 同一个进程之间的不同线程独立性要比不同进程之间的独立性低
  5. 线程比进程更支持多处理机系统
  6. 线程的切换及撤销不涉及到资源分配,开销代价小于进程

线程三个基本状态

  • 执行态
  • 就绪态
  • 阻塞态

线程控制块(TCB)

线程的实现

实现方式:

  • 内核支持级KST
  • 用户级线程(例如数据库管理系统)ULT

内核支持的优点

  • 同时调度一个进程的多个进程
  • 调度算法进程专用
  • 实现与OS平台无关

ULT与KST的组合方式

  • 多对一模式
  • 一点一模型
  • 多对多模型

多对一

多个用户级线程映射到一个内核线程

一对一

具有更好的并发性,但效率差,每个用户级线程映射到一个内核线程

多对多

多个用户级线程映射为等于或小于数目的内核线程,允许操作系统常见足够的KST。

妊娠纹产品大全