[关闭]
@vourdalak 2018-05-08T07:02:57.000000Z 字数 2587 阅读 378

操作系统概念 Chapter3

CS143A 读书笔记 OperatingSystemConcepts

进程概念

进程

进程是执行中的程序。不只是程序代码,除了代码段外进程还包含:

注意:程序本身不是进程,程序只是被动实体,进程是活动实体。两个进程可以是同一程序相关,但是被当成两个独立的执行序列。

进程状态

进程执行时会改变状态,列表如下:

进程控制块(Process Control Block)

每个进程在操作系统中用PCB表示,内容如下:

线程

进程可以支持多线程。

进程调度Scheduling

进程调度选择一个可用的进程到CPU处理。

调度队列

进程进入系统时候会被加入队列中。

调度程序 Scheduler

进程选择是有相应的调度程序实现的。
进程在大容量存储缓冲池里,长期调度程序long-term scheduler从该池中选择进程,装入内存准备执行。短期调度程序short-term scheduler从准备执行的进程中选择进程,分配给CPU
短期调度频率比长期调度
长期调度程序需要仔细选择。因为大部分进程可分为:
I/O为主
基本时间都用来执行I/O,计算量小
CPU为主
基本时间都用来计算

因此,长期调度程序应该选择一个合理的兼并二者的组合进程。
如果缺少长期调度程序,所有的新进程都放在内存中,稳定性随着进程的增加会大幅下降。
另外引入的中期调度程序能将长久不用的进程从内存(CPU竞争)中移出(Swap Out)并再后来可以被换入
作用:当内存内进程太多,效能变差后。移走一些进程以减少系统资源占用率。

上下文切换 Context Switch

进程上下文用进程的PCB表示。
实现方式:通过执行一个状态保存(state save)来保存CPU当前状态,之后执行一个状态恢复(State restore)重新开始运行。
发生上下文切换时,内核会自动将旧进程的状态保存在PCB中,然后装入新进程的上下文。
切换时间是额外开销,速度:

进程操作 Operations on Processes

进程创建

进程执行过程中,可以通过创建进程系统调用(create-process system call)创建多个新进程。
创建进程为父进程,新进程为子进程
进程需要一定的资源来完成任务:

好处:限制子进程只能使用父进程资源能防止创建过多进程导致系统超载。

除了物理和逻辑资源初始化数据也由父进程传递给子进程。当进程创建新进程时,有两种执行时序可能:
1. 并发执行
2. 父等待子执行完毕继续
两种地址空间可能:
1. 子进程是父进程的复制品(具有相同程序和数据)
2. 子进程为新程序

fork()系统调用
可创建新进程。新进程通过复制原进程地址空间,允许父子通信。对子进程fork()返回值为0,父进程为非0标识符。

进程终止

当进程完成执行最后的语句并使用exit()请求操作系统删除自身时,进程终止。此时,进程可以返回状态值到父进程,其使用过的资源会被操作系统释放

一个程序可以使用适当的系统调用终止自己的子进程,所以父需要知道子的id,所以创建子进程时,子进程的id要传给父进程。

父进程终止子进程的原因

级联终止(cascading termination)
一个进程终止,它所有的子进程也随之终止。

进程通信

独立进程
一个进程不能影响其他进程或被其他进程所影响。
协作进程
一个进程能影响其他进程或被其他进程所影响。

我们需要允许进程内协作的理由有:

  1. 信息共享(information sharing)
  2. 提高速度(computation speedup)
  3. 模块化(modularity)
  4. 方便

进程间通信机制 IPC

主要两种方法:

共享内存

优点:。因为消息传递需要系统调用实现,需要内核介入从而耗费时间。
原理:两个进程共用部分内存,在共享区域内读写交换信息。数据的形式位置取决于这些进程,需要保证不向同一区域同时写数据
生产者-消费者问题
生产者进程产生信息给消费者进程消费。为了允许生产者进程和消费者进程能并发执行,需要一个缓冲在二者共享区域内,消费者的消费和生产者的生产同步进行
无限缓冲:消费者可能不得不等待新的项,生产者生产无限制
有限缓冲:必须同步,都受限制。共享缓冲的逻辑指针in和out相等即缓存为空(in+1)%buffer_size==out时缓存满。缓冲最大项数为Buffer_Size-1.

消息传递

优点:不需要避免冲突。安全。适合少量数据。
原理:消息传递工具提供两种操作:发和收

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注