目录
- 操作系统简介:
- 进程简介:
- 进程的状态:
- 进程状态的流程图:编辑
- 进程控制块 Process Control Block (PCB):
- 内容:
- 进程调度:
- 调度级别:编辑
- 排队图:
- 上下文(PCB)切换:
- 进程操作:
- 进程创建:
- 进程终止:
- 进程间通信:
- 进程分类(按与其他进程的关系):
- 通信模型:
- (a) Message passing
操作系统简介:
- 目的:用户与硬件之间的接口——一个“环境架构”
- 功能:
- 允许方便使用:隐藏繁琐内容;
- 允许高效使用:并行活动,避免浪费周期;
- 提供信息保护;
- 为每位用户提供资源的一部分;
- 充当控制程序。
- 特点:
- 时间共享 - 允许多个用户同时与单个计算机系统交互:
- 时间共享操作系统通过将 CPU 时间划分为短时间片,轮流分配给多个用户程序,使每个用户感觉自己独占计算机资源,尽管实际上是快速切换实现的并发使用。
- 多进程 - 通过共享内存进行通信的紧密耦合系统。通过组合多个现成处理器来提高速度。
- 分布式系统 - 通过消息传递进行通信的松散耦合系统。
- 一般是由多台独立的计算机通过网络连接组成的系统。这些计算机协同工作,共同完成一个或多个任务。优点包括资源共享、加速、可靠性、通信。
- 实时系统 - 快速响应时间是主要特性。用于需要快速响应刺激的控制应用中。
- 时间共享 - 允许多个用户同时与单个计算机系统交互:
- 最常执行的操作:
- 进程管理
- 启动和停止程序;
- 为它们分配系统资源(内存等) / 使它们共享系统资源(文件、DLL等)。
- 内存管理
- 文件系统管理
- I/O 系统管理
- 保护和安全。
- 进程管理
进程简介:
- 定义:进程 = 正在执行中的程序;
- 与我们的联系:一个进程对应一个用户作业或应用程序(实际上,一个 APP 可由多个进程协作组成)
- 进程与程序的区别:
- 一个进程被视为一个“活跃”实体,
- 一个程序被视为一个“被动”实体(存储在磁盘上,比如可执行文件);
- 程序被加载到内存中时成为进程。
- 内存中的进程:
-
进程的状态:
- 随着进程的执行,它会改变状态。进程的状态部分由该进程当前的活动定义。
- 状态一览:
- 新:正在创建此过程
- 运行:指令正在执行
- 等待:进程正在等待某个事件发生
- 准备:进程正在等待分配给 CPU
- 终止 terminated:进程已执行完毕
-
进程状态的流程图:
进程控制块 Process Control Block (PCB):
- 定义:进程控制块是用于存储有关进程的信息的数据结构。
- 别名:上下文。
- 特点:每个进程都有其自己的 PCB。
- 位置:
- 每个进程的 PCB 驻留在主内存中。
- 所有进程的 PCB 都在一个链表中。
- 重要性:在多程序环境中很重要,因为它捕获了与同时运行的进程数量相关的信息。
-
内容:
- process number 即 PID (Process identifier Unique number)
进程调度:
- (进程)执行流程:进程执行由 CPU 执行和 I/O 等待交替组成。
- (进程)调度流程:从内存中选择准备执行的进程,并将 CPU 分配给其中一个。
- 进程调度队列:
- 作业队列 Job queue - 系统中所有进程的集合
- 就绪队列 - 所有准备好并等待执行的进程的集合
- 设备队列 - 等待 I/O 设备的进程的集合
- 调度程序:
- 长期调度程序 / 作业调度程序 Long-Term Scheduler / Job Scheduler:
- 负责控制处于就绪状态的进程的数量;
- 短期调度程序 / CPU 调度程序 Short-Term Scheduler:
- 负责从就绪进程中选择一个进程并将其调度到运行状态;
- 中期调度程序 Medium-term scheduler:
- 负责进程在主存和辅存之间的交换。
- 长期调度程序 / 作业调度程序 Long-Term Scheduler / Job Scheduler:
-
调度级别:
-
排队图:
- 功能:排队图表示队列、资源、流。
- 调度的排队图:
-
上下文(PCB)切换:
- 流程:当 CPU 切换到另一个进程时,系统必须:
- 保存旧进程的状态;
- 通过上下文(PCB)切换加载新进程的保存状态。
- 图例:
- 流程:当 CPU 切换到另一个进程时,系统必须:
进程操作:
-
进程创建:
- 流程:父进程创建子进程,子进程又创建其他进程,形成一个进程树。
- 资源共享选项:
- 父进程和子进程共享所有资源
- 子进程们共享父进程资源的子集
- 父进程和子进程不共享任何资源
- 执行选项:
- 父进程和子进程并发执行
- 父进程等待,直到子进程们结束
-
进程终止:
- 释放:
- 会从所有队列中移除(包括 Job Queue)
- 流程:
- 进程执行最后一条语句,然后使用 exit() 系统调用,请求操作系统删除它。
- 状态数据将会从子进程返回到父进程;
- 进程的资源由操作系统释放;
- 父进程可能等待“终止子进程”的执行。
- 线程:
- 所有子线程都会终止。
- 释放:
进程间通信:
-
进程分类(按与其他进程的关系):
- 独立进程 INDEPENDENT PROCESSES -
- 特点:既不影响其他进程,也不受其他进程的影响。
- 协作进程 COOPERATING PROCESSES:
- 特点:可以影响其他过程或受到其他过程的影响。
- 意义:
- 信息共享 - 需要访问同一文件的进程;
- 计算加速 - 如果问题可以分解为可以同时解决的子任务,则可以更快地解决该问题;
- 模块化 - 将系统分解为协作模块。(例如,具有客户端-服务器架构的数据库。)
- 便利性 - 甚至单个用户可能在多任务处理,例如在不同窗口中编辑、编译、打印和运行相同的代码。
- 独立进程 INDEPENDENT PROCESSES -
-
通信模型:
-
(a) Message passing
- 特点:
- 通信通过协作进程之间交换的消息进行;
- 消息传递设施提供至少两种操作:送信和收信;
- 消息大小是固定的或可变的。
- 消息的缓冲队列:
- 选项:
- 零容量。链接中不能有任何消息在等待;
- 有限容量。队列的长度是有限的 n;
- 无限容量。队列的长度可能是无限的。
- 选项:
- 实现“链接、送信和收信”的方法:
- 直接通信:
- 特点:
- 进程明确命名彼此:
- 进程使用特定的进程标识符来命名;
- 很难提前识别发送者。
- 进程明确命名彼此:
- 特点:
- 间接通信:
- 流程:
- 创建一个新的邮箱(端口)
- 通过邮箱发送和接收消息:
- 销毁邮箱
- 流程:
- 同步通信(阻塞式):
- 阻塞发送 -- 发送者进程在消息被接收之前被阻塞;
- 阻塞接收 -- 接收方进程在消息可用之前被阻塞。
- 异步通信(非阻塞式):
- 非阻塞发送 -- 发送者发送消息并继续干自己的事。
- 直接通信:
- 特点:
-
(b) Shared memory
- 特点:
- 一块内存区域被协作进程共享;
- 进程通过读取和写入数据到共享区域来交换信息。
- 共享内存中缓冲区的类型:
- 无界缓冲区:对缓冲区的大小没有实际限制;
- 有界缓冲区:假设存在一个固定的缓冲区大小。
- 特点:
-