Chapter4 进程管理
22.进程的概念
在过程出现之前:
·批处理系统——工作;
·多程序或分时-程序或任务。
进程 :正在运行的作业/程序/任务的抽象
进程不仅仅是一个程序,进程的组成有:
a程序文件的文本部分(可执行机器代码);text section
b.程序文件中的数据部分(全局变量);data section
c.处理器寄存器的内容; registers
d.包含函数参数、返回地址和局部变量等临时数据的栈; stack
e.堆,即在必要时被动态分配的内存;heap
f.许多其他资源,如开放文件等。
进程在内存中的图像:
23 .进程和程序的区别
a.程序是驻留在某些存储中的被动实体;而进程是一个活动的实体,它包含除程序之外的许多资源。
b. 许多进程可能运行相同的程序。但是:
· 它们被认为是独立的执行序列,尽管它们共享相同的文本部分;
· 其他资源通常是不同的。
24. 进程状态
当一个进程执行时,它会改变状态。进程的状态由其当前活动定义。
每一进程可处于下列状态之一:
new-正在创建进程;
running-正在执行指令;
waiting——进程正在等待某些事件发生;
ready-进程正在等待分配给处理器;
terminated终止——进程已经完成了它的执行。
25 状态转换
Admitted承认 :已创建流程并准备运行;
调度器分派schedulerdispatch:调度器选择要运行的进程;
中断interrupt:已发生的中断;
I/O事件等待I/Oevent wait : I/O完成或接收信号的进程块;
I/O事件完成completion:I/O已完成/已发生事件;进程已经完成了它的执行。
这五种状态之间有六种转变
26 进程控制块process control block
每个进程在操作系统中由一个进程控制块(PCB)表示。也称为
任务控制块。
笔记:
· 进程号process number是进程的唯一标识符,也称为PID。
· 程序计数器(PC)program counter是一个寄存器。
· 调度信息scheduling information包括进程的优先级等。
27 进程调度
当运行进程由于某种原因无法继续运行时,操作系统必须决定接下来运行哪个进程。
三个主要问题:
·当前运行的进程发生了什么?
·如何跟踪每个进程应该做什么?
·如何决定接下来运行哪个进程?
问题1 :当前运行的进程发生了什么? --------------上下文切换Context switch
上下文切换:
上下文切换是纯粹的开销。根据底层处理器的不同,它可能会消耗大量的CPU周期。
上下文切换已经成为性能瓶颈,程序员可以使用新的结构来尽可能地避免它。
问题2: 如何跟踪每个进程应该做什么?---------调度队列,I/O设备队列
调度队列:
作业队列job queue-由系统中的所有进程组成;
就绪队列ready queue—由等待CPU执行的进程组成;
队列图queuing diagram是操作系统中流程调度的常见表示
操作系统还有其他队列。
I/O设备队列device queue——由等待特定I/O设备的进程组成。
各式I/O设备队列:
问题3:如何决定接下来运行哪个进程?-------------调度器scheduler
这个决定是由调度器做出的。调度器从就绪队列中选择一个进程并将CPU分配给它。
我们称这个调度器为CPU调度器。
28进程协同 cooperatingprocess 生产者消费者问题
一个进程可以
独立:不受其他过程影响或影响其他进程
否则合作。
进程协同有几个优点:
· 信息共享information sharing:多个进程可能对同一条信息感兴趣;
· 计算加速computation speedup:将问题分解成几个可并行运行的子任务;
· 模块化modularity:通过设计将不同功能的过程分开;
但是,协作进程的并发执行需要允许进程相互通信并同步它们的操作的机制。
例子:生产者消费者的问题:
A生产者进程产生被消费进程消耗的信息
为了允许生产者和消费者进程同时运行,我们需要:
· 可以由生产者填充并由消费者清空的缓冲区;
· 使生产者和消费者同步。
根据缓冲区的大小,我们有
· 无边界缓冲区的生产者和消费者问题;
· 有边界缓冲区的生产者和消费者问题。
有边界缓冲区的生产者和消费者问题:
1.通过使用进程间通信(IPC)设施,操作系统可以提供缓冲区。程序员只需使用系统调用来填充或清空缓冲区。
2. 缓冲区也可以位于一块共享内存中,对于生产者和消费者都是可访问的。在这种情况下,程序员必须自己管理共享缓冲区。
3.实现:共享内存有界缓冲区的生产者和消费者问题的解决方案:
/∗ Shared v a r i a b l e s ∗/
#define BSIZE 10
s truct{
....} item b u f f e r [ BSIZE ] ;
int in = 0 , out = 0 ;
29 进程间通信IPC
在生产者和消费者问题中,我们说缓冲区可以由操作系统提供。操作系统必须同步生产者和消费者对缓冲区的访问。
IPC是什么?
IPC提供了一种机制,允许进程在不共享相同地址空间的情况下进行通信和同步它们的操作。
例子: 消息传递、管、套接字等。Message-passing,pipe, socket, etc