这个文章会详细说下 进程的基本定义。进程之间的通信。操作系统中进程的宏观理念。CPU Scheduling算法。
(1) 进程以及相关概念
进程的定义
1. 运行中的程序可被称为进程(The executing program)。
2. 计算机中系统资源分配的基本单元。
PCB
PCB (ProcessControl Block, 又名Task Control Block, 中文叫进程控制块) 是一个数据结构,通常被放在kernel里面。 他用来储存关于进程的所有信息,包括:
1.Process State(进程状态):5个,贯穿一个计算机里面每个进程的生死。分别是 new, ready, running, waiting, terminated。
2.Program Counter(程序计数器, 在X86 MicroProcessor中也被称为IP):记录着接下来要执行的instruction的位置 and so on。
3.Memory Information(内存信息): 包含着process的 basic register, limit register 和 page table的信息 and so on。
4.CPU scheduling Information(CPU调度的相关信息): 里面包含关于这个进程的优先级,还有其他的调度参数。
5.CPU Register(CPU寄存器): 寄存器有各种各样的数目和种类,主要取决于computer architecture。 主要包含:累加器, index register, stack pointer等等。
6.Accounting Information: 占用了CPU多长时间, timer设定有多长等等。
7.I/O Status Information(I/O状态信息): 包含了这个process要使用的 I/O devices and list of open files。
8.Interprocess communication information: 各种各样的 flags, signals,每个进程进行交流的信息。
(2) 进程间的通信( Interprocess Communication)
1.内存共享(Shared memory):
从物理层面解决通信问题:
1.一部分内存在物理意义上被多个想互相交流的进程共享。
2.这个交流被使用者控制而不是被OS控制(Under user control)。
3.最大的问题就是多个进程同时使用的共享内存同步问题。
4.Size is fixed.
Solved by:
互斥锁(Mutual Exclusion, mutex);
2. 信息传递(Message passing):
2.1 定义:
1.这个mechanism用来实现进程交流和动作同步。
2.提供两个操作(Receive, Send)。
3.Size is either fixed or variable.
2.2执行(Implementation): *详情见附注1
物理层面(Physical):
Network, Hardware bus, Shared memory.
逻辑层面(Logical):
1. Direct and Indirect
2. Synchronization and Asynchronization
3. Automatic and Explict buffering
3. 管道(Pipe):
3.1 定义:
通过关闭file descriptor的形式来进行进程间的处理。
3.2 Unnamed pipe(ordinary pipe):
1. 单向性(unidirectional)。
2. happen between related processes.
3.3 Named pipe:
1. 多向性(bidirectional)。
2. Not related to process requirements.