《操作系统概念》中文版chapter4
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
32
使用套接字通信
33
远程过程调用(RPC)
RPC设计成抽象过程调用机制,用于通过网络 进行连接的系统. 存根(Stubs)- RPC语言允许客户机调用位 于远程主机上的过程,就如同调用本地过程一 样.RPC系统通过在客户机端提供存根来做到 这一点. 客户机存根定位服务器,并编组(marshalls) 调用参数. 服务器存根接收到调用消息,解析参数,并执 行过程.
14
上下文切换
将CPU切换到另一进程需要保存原来进程的状 态并装入新进程的保存状态. 上下文切换时间是额外开销,因为切换时系统 并不能做什么有用的工作. 上下文切换时间与硬件支持密切相关.
15
4.3 进程操作 - 进程创建
父进程创建子进程,子进程又创建其他进程, 从而形成了进程树 三种资源共享方式
程序计数器 堆栈 数据段
3
进程状态
进程在执行时会改变状态,每个进程可能处于 下列状态之一
新建 运行 等待 就绪 终止
4
进程状态转换图
5
进程控制块(PCB)
每个进程在OS内用进程控制块来表示,它包 含与特定进程相关的许多信息
进程状态 程序计数器 CPU寄存器 CPU调度信息 内存管理信息 计帐信息 I/O状态信息
非阻塞的消息传递也称为异步消息
非阻塞send:发送进程发送消息并再继续操作 非阻塞receive:接收者收到一个有效消息或无 效消息
29
缓冲
通信线路用消息队列来保存消息,有以下三种 实现方式
零容量:队列中的最大长度为0.这种情况发送 零容量 者必须阻塞,直到接收者接收消息 有限容量:队列的长度为有限的n;因此,最多 有限容量 只能有n个消息难留其中. 无限容量:队列长度可以无限;因此,不管多 无限容量 少消息都可在其中等待.发送者不阻塞
通信线路的实现
物理方式(如,共享内存,硬件总线) 逻辑方式(如,逻辑工具)
23
进程间通信必须解决以下实际问题
通信线路如何建立? 一个通信线路能否与两个以上进程关联 每一对通信的进程之间允许存在多少通信线路? 通信线路的能力是什么? 通信线路容纳的消息的长度是固定还是可变的? 线路是单向的,还是双向的?
30
4.6 客户机-服务器系统通信
套接字(sockets) 远程过程调用(Remote Procedure Calls, RPC) 远程方法调用(Remote Method Invocation, RMI)
31
套接字(Sockets)
套接字可定义为通信的端点. 套接字由IP地址和端口号连接组成 套接字161.25.19.8:1625指的是主机 161.25.19.8上的1625端口 通信由一对套接字组成
12
增加了中期调度的队列图
13
调度程序(续)
短期调度程序执行频率非常高(毫秒级), 执行效 率要非常快 长期调度程序执行得并不频繁(秒,或分为计量单位) 执行过程也许比较慢 长期调度程序控制多道程序设计的程序,即内存中的 进程数量 绝大多数进程可以分为
I/O为主的进程 - 在执行I/O方面比执行计算要花费更多 I/O为主的进程 的时间 CPU为主的进程 CPU为主的进程 - 很少产生I/O请求,与I/O为主的进程 相比将更多的时间用在执行计算上.
} else if (源自文库id == 0) {
execlp("/bin/ls", "ls", NULL);
} else {
wait(NULL); printf("Child Complete"); exit(0);
}
}
18
一个典型的UNIX系统中的进程树
19
进程终止
当进程完成执行最后的语句并使用系统调用exit请求操 作系统删除它时,进程终止.此时
进程可以返回数据到其父进程(通过系统调用wait) 进程资源会被OS所释放
在以下情况下,父进程可以通过abort系统调用终止另 一个进程
子进程使用了超过它所分配到的一些资源 分配给子进程的任务已不再需要 父进程退出 级联终止
20
4.4 进程协作
如果一个进程不能影响或被在系统内执行的其 他进程所影响,那么该进程是独立的. 如果一个进程能影响或被在系统内执行的其他 进程所影响,那么该进程是协作的. 进程协作的优点
操作系统概念
第四章:进程
本章主要内容
进程概念 进程调度 进程操作 进程协作 进程间通信 客户机-服务器系统通信
2
4.1 进程概念
一个操作系统执行一系列的程序
批处理系统 - 作业 分时系统 - 用户程序或任务
在本书中,作业与进程几乎是可以互换的 进程 - 执行中的程序;进程执行必须以一种 有序的方式来进行 进程包括:
34
远程过程调用的执行过程
35
远程方法调用(RMI)
RMI是java的一个类似RPC的功能. RMI允许一台计算机上的Java程序调用远程对 象的方法.
36
编排参数
37
作业
P96 4.2 P97 4.4, 4.5, 4.6, 4.7, 4.8
38
�
信息共享(Information sharing) 加快计算(Computation speed-up) 模块化(Modularity) 方便(Convenience)
21
生产-消费者问题
生产者进程产生信息,以供消费者进程消费.
无限缓冲(unbounded buffer) - 对缓冲区大 小没有实际限制 有限缓冲(bounded buffer) - 假设缓冲区大 小固定
24
直接通信
需要通信的进程必须明确地命名通信的接收者 或发送者
send(P, message) - 发送消息至进程P receive(Q, message) - 从进程Q接收消息
通信线路具有以下属性
通信线路自动建立 一个线路只与两个进程相关 每对进程之间只有一个线路 通信线路可能是单向的,但通常情况下是双向 的
解决办法
允许一条线路与两个以上的进程关联 任一时刻只允许一个进程执行接收操作 允许系统选择接收者,并且可以告诉发送者谁 是接收者
28
同步
消息传递可以是阻塞或非阻塞的 阻塞的消息传递也称为同步消息
阻塞send:发送进程阻塞,直到消息为接收进 程或邮箱所接收 阻塞receive:接收者阻塞,直到有消息可用
22
4.5 进程间通信
进程间通信(Interprocess Communication, IPC)是 用于进程间通信和行为同步的机制 消息系统 - 允许进程间相互通信而不需要利用共享变 量 IPC工具至少提供两个操作
发送(消息) 接收(消息)
如果进程P和Q需要通信,那么他们需要
相互建立通信线路 通过发送/接收来交换消息
26
间接通信(续)
操作
创建一个新邮箱 通过该邮箱发送和接收消息 删除邮箱
原语
send(A, message) - 发送消息给邮箱A receive(A, message) - 从邮箱A接收消息
27
间接通信(续)
邮箱共享
P1, P2, P3共享邮箱A P1发送消息;P2和P3接收 谁将获得这个消息?
17
fork另外一个进程的C程序
#include <stdio.h> void main(int argc, char *argv[]) {
int pid; /*fork another process */ pid = fork(); if (pid < 0) {
fprintf(stderr, "Fork Failed"); exit(-1);
父进程与子进程共享所有资源 子进程共享父进程中的部分资源 父进程与子进程不共享任何资源
当进程创建新进程时,有两种执行可能
父进程与子进程并发执行 父进程等待,直到某个或全部子进程执行完毕
16
进程创建(续)
地址空间
子进程是父进程的复制品 子进程装入另一个程序进来
UNIX例子
fork系统调用创建新的进程 exec系统调用在fork调用后用新程序来取代进 程的内存空间
25
间接通信
对于间接通信,消息通过邮箱或端口来发送和接收.
每个邮箱都有一个惟一的标识符 进程只有共享一个邮箱才能相互通信
通信线路具有如下属性
只要一对进程中的两个成员共享一个邮箱,那么就建立 了它们之间的通信线路 一个线路可以与两个或多个进程相关联 两个通信进程之间可有多个不同的线路,每个线路对应 于一个邮箱 线路可以是单向的或双向的
6
进程控制块示意图
7
CPU在进程间的切换图
8
进程调度队列
作业队列 - 包括系统中的所有进程 就绪队列 - 所有驻留在内存中就绪的等待运 行的进程列表. 设备队列 - 所有等待I/O设备的进程列表 进程在不同的队列之间移动
9
就绪队列和各种I/O设备队列
10
表示进程调度的队列图
11
调度程序
长期调度程序(或作业调度) - 从作业池中 长期调度程序 选择进程,并将它们装入内存以执行. 短期调度程序(或CPU调度)- 从就绪可执 短期调度程序 行的进程中选择进程,并为其中之一分配CPU. CPU