📜  流程管理介绍

📅  最后修改于: 2022-05-13 01:56:11.297000             🧑  作者: Mango

流程管理介绍

程序与过程
进程是一个正在执行的程序。例如,当我们用 C 或 C++ 编写程序并编译它时,编译器会创建二进制代码。原始代码和二进制代码都是程序。当我们实际运行二进制代码时,它就变成了一个进程。

进程是一个“主动”实体,而不是被视为“被动”实体的程序。一个程序多次运行可以创建多个进程;例如,当我们多次打开 .exe 或二进制文件时,会开始多个实例(创建多个进程)。

进程在内存中是什么样子的?

过程

文本部分一个进程,有时也称为文本部分,还包括由程序计数器的值表示的当前活动。
堆栈堆栈包含临时数据,例如函数参数、返回地址和局部变量。
数据部分包含全局变量。
堆部分动态分配的内存在其运行时进行处理。
有关部分的更多详细信息,请参阅此处。



过程的属性或特征
进程具有以下属性。
div块

1. Process Id:    A unique identifier assigned by the operating system
2. Process State: Can be ready, running, etc.
3. CPU registers: Like the Program Counter (CPU registers must be saved and 
                  restored when a process is swapped in and out of CPU)
5. Accounts information:
6. I/O status information: For example, devices allocated to the process, 
                           open files, etc
8. CPU scheduling information: For example, Priority (Different processes 
                               may have different priorities, for example
                               a shorter process assigned high priority
                               in the shortest job first scheduling)

流程的所有上述属性也称为流程的上下文
每个进程都有自己的进程控制块(PCB),即每个进程都有一个唯一的PCB。以上所有属性都是PCB的一部分。

进程状态:
进程处于以下状态之一:

1. New: Newly Created Process (or) being-created process.

2. Ready: After creation process moves to Ready state, i.e. the 
          process is ready for execution.

3. Run: Currently running process in CPU (only one process at
        a time can be under execution in a single processor).

4. Wait (or Block): When a process requests I/O access.

5. Complete (or Terminated): The process completed its execution.

6. Suspended Ready: When the ready queue becomes full, some processes 
                    are moved to suspended ready state

7. Suspended Block: When waiting queue becomes full.

进程状态

上下文切换
保存一个进程的上下文并加载另一个进程的上下文的过程称为上下文切换。简单来说,就是将进程从运行状态加载和卸载到就绪状态。



上下文切换何时发生?
1. 当高优先级进程进入就绪状态时(即优先级高于正在运行的进程)
2. 发生中断
3. 用户模式和内核模式切换(虽然不是必需的)
4. 使用抢占式 CPU 调度。

上下文切换与模式切换
当 CPU 权限级别发生更改时,例如进行系统调用或发生故障时,会发生模式切换。内核以特权模式工作,而不是标准用户任务。如果用户进程想要访问只能由内核访问的东西,则必须进行模式切换。在模式切换期间不需要改变当前正在执行的进程。
模式切换通常发生在进程上下文切换发生时。只有内核可以导致上下文切换。

CPU 绑定与 I/O 绑定进程:
CPU 密集型进程需要更多的 CPU 时间或在运行状态中花费更多时间。
受 I/O 限制的进程需要更多的 I/O 时间和更少的 CPU 时间。受 I/O 限制的进程在等待状态中花费更多时间。

锻炼:
1.在进程间的上下文切换中,下列哪项不一定需要保存? (GATE-CS-2000)
(A) 通用寄存器
(B) 翻译后备缓冲区
(C) 程序计数器
(D) 以上所有

答案 (B)

解释:
在进程上下文切换中,第一个进程的状态必须以某种方式保存,以便调度程序返回到第一个进程的执行时,它可以恢复该状态并继续。进程的状态包括进程可能使用的所有寄存器,尤其是程序计数器,以及可能需要的任何其他特定于操作系统的数据。转换后备缓冲区 (TLB) 是内存管理硬件用来提高虚拟地址转换速度的 CPU 缓存。 TLB 具有固定数量的包含页表条目的插槽,这些页表条目将虚拟地址映射到物理地址。在上下文切换时,一些 TLB 条目可能会变得无效,因为虚拟到物理映射是不同的。处理此问题的最简单策略是完全刷新 TLB。

2.在用户和内核执行模式之间切换所需的时间为 t1,而在两个进程之间切换所需的时间为 t2。以下内容哪些是对的? (GATE-CS-2011)
(A) t1 > t2
(B) t1 = t2
(C) t1 < t2
(D) 关于 t1 和 t2 之间的关系没有什么可说的。

答案:(C)
说明:进程切换涉及模式切换。上下文切换只能在内核模式下发生。

流程管理测验

参考:
http://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems/3_Processes.html
http://cs.nyu.edu/courses/spring11/G22.2250-001/lectures/lecture-04.html