您的位置:首页 > 理论基础

知识储备_计算机操作系统:进程管理

2015-07-29 19:29 316 查看

进程管理

进程的基本概念

进程的特征与定义

定义:作为资源分配和独立运行的基本单位,引入进程的目的是使多个程序能并发执行,且对并发执行的程序加以描述和控制

特征:

1)结构特征:进程实体对应于一个进程,进程实体的创建指的是进程实体中PCB(process control block:进程控制块)

2)并发性:进程实体(要创建了相应的PCB)存于内存中,在一段时间内同时运行

3)独立性:进程实体能独立运行 + 独立分配资源 + 独立调度

4)异步性:进程的执行顺序和执行时间的不确定性,但是可以引入进程同步机制,使得进程按我们想要的结果方式运行

进程的状态(三种基本状态和其它状态)

1)就绪状态:可以获得但还未获得CPU资源;有多个,形成就绪队列

2)执行状态:获得CPU,正在执行

3)阻塞状态:CPU无法继续执行该进程,进入阻塞状态,譬如IO请求,形成阻塞队列



4)挂起状态(人为)

中断用户的请求,将正在运行的程序停止下来,进程就处于挂起状态

5)创建状态

进程创建状态过程:为进程创建PCB,把进程转入就绪状态并插入就绪队列

6)终止状态:释放PCB所占用的资源



进程控制块PCB

1) PCB概述:系统会为每一个进程创建一个相应的数据结构PCB,操作系统就是根据PCB来对并发执行的进程进行控制和管理。PCB描述了一个进程当前状态及控制进程运行的全部信息

2) PCB中的信息(了解即可)

1、为了描述和控制进程的运行,系统为进程定义的数据结构

2、PCB常驻内存

进程控制

进程控制主要涉及到进程的创建、终止以及进程运行过程中状态的转换,它们一般是通过原语来实现的(原语:原子性操作,不可分割)

进程的创建

步骤为:申请空白的PCB—为进程分配相应的内存资源—初始化PCB—插入到就绪队列

进程的终止

步骤为:根据进程标识符,找出该进程对应的PCB—停止该进程及其子进程的运行—释放PCB所占用的资源

进程的阻塞与唤醒

阻塞步骤为:停止进程的运行——将进程从执行状态变为阻塞状态——插入到阻塞队列

唤醒步骤为:从阻塞队列中移出—将进程从阻塞状态变为就绪状态—插入到就绪队列

进程的挂起与激活

进程同步

在多道程序系统中,各进程以异步的方式执行,这就很容易导致程序执行结果的不可再现性,譬如说它们在争用临界资源的时候。因此用引入进程同步机制来协调各进程的执行,使程序的执行结果具有可再现性。

进程同步的基本概念

1) 进程间两种形式的制约关系

a、进程互斥关系:例如对临界资源的访问(打印机)

b、进程同步关系:进程间直接的相互制约关系(AB进程直接相关)

2) 临界资源:进程采用互斥的方式访问临界资源(生产者-消费者中的缓冲池)

3) 临界区:进程访问该临界区时,检查是否该临界资源现在是否被访问,如果没被访问则进入该临界区,并设置该临界区为访问状态,否则等待。

信号量机制

操作系统中采用信号量机制作为实现进程同步的有效工具

信号量集的发展过程:

1)整型信号量

S:资源数目

Wait(S):while S < 0 等待(忙等); S = S-1 获得资源

Signal(S):S= S+ 1 释放资源

缺点:忙等

2) 记录性信号量

S:是一种数据结构

S.value:绝对值为等待资源进程的个数

S.L:等待资源进程链表

缺点:只共享一种临界资源

3) AND型信号量

共享多个临界资源,一次性把所有临界资源分配给进程,进程使用完之后再一起释放

缺点:一次只能分配一个临界资源 + 当资源小于某个临界值时,不予分配

4)信号量集

之前的只能获取和释放一个临界资源

当资源数目小于某一下限值得时候不予分配

Swait(信号量i,下限值i,需求值i)

管程机制

(一种新的进程同步进制)

1)管程:代表共享资源的数据结构 + 对共享资源的并发操作

2)管程每次只允许一个进程访问,从而实现进程互斥访问资源

3)假如一个进程调用了管程,在管程中挂起,如果在此期间不释放管程资源,则其他进程无法访问管程资源,这里采用了条件变量的方法解决这个问题

4)根据挂起或阻塞的条件不同,在管程中设置多个条件变量,对条件变量的操作仅仅是wait和signal,每个条件变量对应于一个链表

x.wait:正在调用管程的进程由于条件x而被阻塞或挂起,将进程插入到x条件的等待队列上

x.signal:x条件发生变化,重启一个因为x条件而阻塞或挂起的进程

经典的进程同步问题

1. 生产者-消费者

2. 哲学家进餐

3. 读者-写者问题

4. 生产者-消费者

进程通信

1. 进程之间的通信要兼顾进程同步问题(互斥和同步),信号量机制作为进程同步机制很有效,但不能作为进程通信进制(效率低 + 不透明)。

2. 低级进程通信:进程的同步和互斥(因为要交互的数据少);高级进程通信:共享存储器系统 + 消息传递系统 + 管道通信系统

3. 共享存储器系统:共享数据结构 + 共享存储区

2. 如今最常用的进程通信方式是消息传递系统,进程之间可直接发送消息(报文)通信,该方法称为直接通信方式(例如原语:send(Receiver, message) + Reveive(sender, message))。间接通信方式需要通过一个共享的数据结构实体(信箱)。(设有消息缓冲队列)

3. 管道通信系统:用于连接一个读进程和一个写进程的共享文件

3. 但在消息传递实现进程通信也会存在一些问题:通信链路,消息的格式,进程同步的方式

线程

在没有引入线程概念之前,进程的定义为:作为资源分配、独立运行和调度的基本单位。而引入线程概念后,把进程作为资源分配的基本单位,而把线程作为独立运行和调度的基本单位。

引入线程的目的是:提高程序的并行执行程度,进一步提高系统吞吐量

线程的实现方式

1、内核支持线程:线程的创建、切换、撤销都是在内核中进行的,内核通过TCP对线程进行管理

2、用户级线程(更有效):线程的创建、切换、撤销都与内核无关;仅存在于用户空间中;但调度仍是一进程为单位的

3、组合方式
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: