3-5 进程操作
1.进程控制
①进程有生命周期:产生、运行、暂停、终止。对进程的这些操作叫进程控制。
②进程控制的职责是对系统中进程实施有效的管理,它是CPU的管理的一部分(还有进程同步、通信和调度)。
③当系统允许多进程并发执行时,为了实现共享,协调并发进程的关系,处理机管理必须对进场实施有效的管理。
2.进程创建的情况
①作业调度:在批处理系统中,作业调度程序调度到某个作业以后,就把这个作业装入内存,并分配必要的资源,创建进程,插入就绪队列。
②用户登录:在分时系统中,用户在终端键入登录命令后,若是合法用户,系统建立一个进程,并插入就绪队列。
③提供服务:用户向系统提出请求后,系统专门建立一个进程为用户服务(如打印请求)。
④应用请求:应用进程的需要,由它自己创建一个新进程,使新进程以并发运行的方式完成特定的任务。(如输入数据并将处理结果输出到表格上)。
3.典型的UNIX系统中的进程树
父进程创建了子进程,如此轮流创建进程下去,构成一棵进程树。
4.进程创建的问题
①资源共享 Resource Sharing,三种可能:
- 父进程和子进程共享所有的资源
- 子进程共享父进程资源的子集
- 父进程和子进程无资源共享
②执行 Execution
- 父进程和子进程并发执行
- 父进程等待,直到子进程终止
③地址空间 Address Space
- 子女复制双亲(两者地址空间一样)
- 子女有一个程序被调入(不一样) Child has a program loaded into it.
3-6 进程创建
1.进程创建 UNIX例子 Process Creation
①在UNIX中用户键入一个命令(如date,ps,ls),shell就创建一个进程。
②fork系统调用创建新进程。
③在fork之后采用ececlp系统调用用一个新程序代替进程的内存空间。
2.进程终止 Process Termination
①进程执行最后一项并询问操作系统做出决定,从子进程向父进程输出数据,操作系统收回进程的资源。
②父进程可中止子进程的执行(终止)的情况:
- 子进程超量分配资源
- 赋予子进程的任务不再需要
- 父进程终止,若父进程终止,不允许子进程继续(级联终止)
3.进程阻塞 Process Blocking
一个处在运行状态的进程,因等待某个事件发生(如等待打印机)而不能继续运行时,将调用阻塞原语,把进程置为阻塞状态,并转程度调度程序(等于让出处理机)。
调用进程阻塞操作是进程处于运行状态下执行的,它的执行将引起等待某事件的队列的改变。
4.进程唤醒
①当进程所等待的事件发生时,该进程将被唤醒(由进程唤醒操作完成)。
②唤醒一个进程有两种方法:
- 由系统进程唤醒
- 由事件发生进程唤醒
3-7 进程通信:共享存储
生产者——消费者问题
思考问题:缓冲区buffer容量为n,为什么至多n-1可用?
3-8 消息传递
1.若P与Q要通信:
①建立通信连接
- 物理的,如共享存储,硬件总线
- 逻辑的,逻辑特性
②通过send/receive交换信息
2.连接的问题
①连接如何建立
②连接可同多于两个进程相关吗? Can a link be associated with more than two processes?
③每对通信进程有多少连接?
④一个连接的容量是多少?
⑤连接可使用的固定消息大小?或可变消息的大小?
⑥连接是双向的还是无向的。
3.直接通信
①进程必须是显示的命名
send(P,message) 向P发信息
receive(P,message) 从进程Q接收消息
②通信连接的特性:
- 连接自动建立
- 连接精确地与每一对在通信的进程相关
- 每一对之间存在一个连接
- 连接可以无向,但通常是双向的
③非对称通信 asymmetric communication
发送信息 send(P,message)
接收 receive(id,message) 不指定接收方
4.间接通信
①消息导向至信箱,并从信箱接收(被视作端口)
每一个信信箱有一个唯一的id
仅当共享一个信箱时,进程才能通信
②send(A,message) 从信箱A发出
receive(A,message) 从A接收
③特性
- 仅当共享一个信箱时,进程才能通信
- 连接可与多个进程相关
- 每一对进程可共享多个通信连接(共享多个信箱)
- 连接可以是无向的或双向的
5.操作 operation
- 创建新信箱
- 通过信箱发送和接收信息
- 销毁信箱
6信箱共享
P1发送消息到信箱A,P2和P3都可以接收信息,谁收到信息不确定
解决方案:
- 允许一个连接最多2个进程相关
- 允许一个时刻有一个进程执行接收操作
- 允许系统任意的选择接受者,发送者被通知谁是接收者
7.同步与异步 Synchronization and Asynchronization
①同步
- 阻塞的发送,发送者阻塞,发消息后直到被接收才被唤醒
- 阻塞的接收,接收者阻塞,未接收时阻塞,接收后被唤醒
②异步
- 非阻塞的发送
- 非阻塞的接收
8.缓冲
消息队列附加在连接上,有以下三种实现方案:
①零容量——0消息 发送者必须等待接收者
②有界容量——n个消息有限长度 若连接满了,发送者必须等待
③无界容量——无限长度 发送者从不等待
本文知识以及图片来源:慕课_操作系统原理_田丽华
网址:https://www.icourse163.org/learn/XJTU-1003409001?tid=1206408203#/learn/content