OS2 进程的描述与控制教程
OS-1 进程的描述与控制
【进程的定义】: 进程(process)是一个具有一定独立功能的程序在一个数据集合上的一次动态执行过程。它是系统进行资源分配和调度的基本单位。
【进程的特性】:
动态性:进程具有动态的地址空间,地址中间的大小和内容都是动态变化的。
并发性:指多个进程实体同存于内存中,且能够在一段时间内同时运行。
独立性:各进程的地址空间相互独立,除非采用进程间通信手段,否则不能相互影响。
异步性:指进程以各自独立的、不可预知的速度向前推进。
【进程的三种基本状态】:
v 进程在从创建到终止的全过程中一直处于一个不断变化的过程。为了刻画进程的这个变化过程,所有操作系统都把进程分成若干种状态,约定各种状态间的转换条件。
就绪状态(Ready) :进程已获得除处理器外的所需资源,等待分配处理器资源,只要分配了处理器进程就可执行的状态。
执行状态(Running):
z 用户态(目态)
z 系统态(内核态、管态)
v 阻塞状态(Blocked):当进程由于等待I/O操作或进程同步等条件而暂停运行时,它处于阻塞状态。在条件满足之前,即使把处理器分配给该进程,它也是无法继续执行的。也称为“等待状态”、“封锁状态”、“睡眠状态”。
挂起操作的引入是因为操作系统中引入了虚拟内存技术,即将外存的一部分空间用作存放进程和数据程序等等,挂起后的进程即是送往虚拟内存当中。
【进程上下文】:进程执行活动全过程的静态描述。
意思就是,如果发生了进程切换(比如由执行状态变为阻塞状态),需要保存用户态时cpu寄存器中的值,进程状态以及堆栈上的内容,即保存当前进程的进程上下文,以便再次执行该进程时,能够恢复切换时的状态,继续执行。
【进程控制块PCB的作用】:
进程控制块记录了用于描述进程当前情况以及管理进程运行的全部信息。
PCB的作用有:
1) 作为独立运行基本单位的标志。
2) 能实现间断性运行方式(三种状态)。如在进程上下文中说的,进程阻塞后再次被调度运行时,还需要恢复其cpu现场信息,cpu现场信息便被保存在PCB当中。
3) 提供进程管理需要的信息。
4) 提供进程调度需要的信息。PCB中提供进程处于何种状态的信息。便于系统调度程序检查和调度。
5) 实现进程同步。PCB中有相应的用于同步的信号量信息。
PCB的组织方式:
1) 线性方式
2) 链接方式(队列)
3) 索引方式
【进程同步的基本概念】:对多个相关进程在执行次序上进行协调,使并发执行的诸进程之间能按照一定的规则(或时序)共享系统资源,从而使程序具有可再现性。
【进程互斥】:
关于进程互斥有下面几个概念需要了解:
1)间接制约
由共享公有资源而造成的对并发进程执行速度的制约称为间接制约。
2)直接制约
一组在异步环境下的并发进程,各自的执行结果互为对方的执行条件,从而限制各进程的执行速度的过程称为并发进程的直接制约。
3)临界资源
在一段时间内只允许一个进程使用的资源。
4) 临界区
每个进程中访问临界资源的那段程序代码。
进程互斥的概念:
v 互斥是并发执行的多个进程由于竞争同一资源而产生的相互排斥的关系。
v 不允许两个及以上的共享某资源的并发进程同时进入临界区。
同步(互斥)机制应当遵循的原则:
• 1)空闲让进:当临界区无进程时,说明临界资源空闲,应允许某个请求进程进入自己的临界区
• 2)忙则等待:当已有进程进入临界区时,说明临界资源正被访问,其他试图进入临界区的进程必须等待,以保证互斥访问临界资源。
• 3)有限等待:对要求访问临界资源的进程,应保证在有限时间内能进入自己的临界区,避免陷入“死等”状态。
• 4)让权等待:当进程不能进入自己的临界区时,应立即释放处理机,以免进程陷入“忙等”状态。让权是 让出cpu控制权;
• 进程同步手段:1)消息通信实现同步 2)信号量实现同步
• 信号量进程同步范例:家人吃水果
关于互斥信号量mutex的研究:下面先来看一个例子:
• 这里为什么要设置一个mutex信号量控制生产者之间和消费者之间互斥进入缓冲区,原因在下面这段代码:
• 因为s1的初值为N,如果没有信号量mutex,意味着多个生产者可以同时访问缓冲区并且向里面放置产品,如果两个生产者同时放置,第一个运行到 而第二个已经进入缓冲区读出i并且与第一个的i相同,这时候就会出错,两个产品放进同一个缓冲区内,导致出错。
• 但是生产者与消费者之间可以通过s1,s2的同步信号量来控制,事实上一个消费者和一个生产者的时候是可以不用互斥信号量来控制的。
• 注意:信号量控制中,互斥信号量需写在同步信号量的后面,不然可能出现死锁。
• 管程:
• 管程类似于信号量是控制进程互斥访问资源的一种进程同步工具,每次只能有一个进程(或者线程)进入管程,管程中的数据结构(资源)只有管程中的进程能够访问,管程中的进程也只能访问管程中的数据结构。
• 下面看一下管程的特点:
• 这两个wait和signal原语具有信号量的作用,当某进程通过管程请求临界资源而未能满足时,管程便调用wait原语使该进程等待,并将其排在等待队列上,当其获得该资源后,管程才调用signal原语,唤醒等待队列中的队首进程。
• 进程通信:分为直接通信和间接通信。
• 消息通信的方式:
1)共享存储器系统
2)管道通信:管道在物理上是一个高速文件缓冲区
3)消息传递系统:分为 直接通信传递和间接通信传递
间接消息传递系统可以使用信箱也叫邮件槽通信;
直接消息传递系统:发送者使用send发送原语,根据发送区的消息长度申请一缓冲区i,将a中信息复制到缓冲区i,然后将i挂到接收进程的消息队列mq上,接收进程调用receive接收原语,将消息队列第一个缓冲区i摘下并将其中的信息复制到接收区b中。
线程:
线程又叫轻型进程,它比进程更小,是进程中的一个控制点或者一部分程序的执行
线程比进程的开销更小,能更大程度利用处理器资源,提高系统吞吐量。