进程相关知识|青训营笔记

119 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 10 天

进程的概念

我们编译的代码可执行文件只是存储在硬盘的静态文件,运行时被加载到内存,CPU执行内存中指令,这个运行的程序被称为进程。进程是对运行时程序的封装,操作系统进行资源调度和分配的基本单位。

进程的实现

中断发生后,操作系统底层的工作步骤

  1. 硬件压入堆栈程序计数器等

  2. 硬件从中断向量装入新的程序计数器

  3. 汇编语言过程保存寄存器值

  4. 汇编语言过程设置新的堆栈

  5. C中断服务例程运行

  6. 调度程序决定下一个将运行的进程

  7. C过程返回至汇编代码

  8. 汇编语言过程开始运行新的当前进程

    进程表:

  • 为了实现进程模型,操作系统维护着一张表格(一个结构数组),即进程表。
  • 每个进程占用一个进程表项
  • 该表项包含进程的重要信息
  • 包括程序计数器、堆栈指针、内存分配状况、所打开文件的状态、账号的调度信息,以及其他在进程从运行态转换成就绪态或阻塞态时必须保存的信息,从而保障该进程随后能再次启动,就像从未中断一样

并发与并行

  1. 单个核心在很短时间内分别执行多个进程,称为并发
  2. 多个核心同时执行多个进程,称为并行
  3. 对于并发来说,CPU需要从一个进程切换到另一个进程,这个过程需要保存进程的状态信息

进程的状态与切换

某个进程在某种时刻所处的状态分为以下几种:运行态 就绪态 阻塞态

对于阻塞状态:比如read系统调用阻塞,进程会占用内存空间,这是一种浪费行为,于是操作系统把阻塞的进程置换到磁盘中,此时进程未占用物理内存,称为挂起。

除了创建和结束有三个状态:

  • 运行态:该时刻进程占用CPU

  • 就绪态:可运行,由于其他进程处于运行状态而暂时停止运行

  • 阻塞态:该进程正在等待某一事件的发生(如等待输入输出的操作完成)而暂时停止运行

  • 挂起态:描述进程没有占用实际物理内存空间的情况

  • 阻塞挂起状态:进程在外存(硬盘)并等待某个事件的出现

  • 就绪挂起状态:进程在外存(硬盘),但只要进入内存,马上运行