程序与过程 进程是一个正在执行的程序。例如,当我们用C或C++编写程序并编译它时,编译器就创建二进制代码。原始代码和二进制代码都是程序。当我们实际运行二进制代码时,它变成了一个进程。
一个过程是一个“主动”实体,而不是一个被视为“被动”实体的程序。一个程序在多次运行时可以创建多个进程;例如,当我们打开一个。exe或二进制文件多次启动,多个实例开始(创建多个进程)。
进程在内存中是什么样子的?
文本部分 : 一个过程,有时被称为文本部分,也包括由 程序计数器 . 堆栈 : 堆栈包含临时数据,例如函数参数、返回地址和局部变量。 数据部分 : 包含全局变量。 堆区 : 在运行时动态分配给进程的内存。 提到 这 有关章节的更多详细信息。
过程的属性或特征 流程具有以下属性。 一个div块
1. Process Id: A unique identifier assigned by the operating system2. 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, etc8. 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 state7. 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
答复:(C) 说明: 过程切换涉及模式切换。上下文切换只能在内核模式下发生。
参考资料: http://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems/3_进程。html http://cs.nyu.edu/courses/spring11/G22.2250-001/lectures/lecture-04.html
如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写评论