目录

进程

主要研究进程对CPU是如何管理的

进程状态

A process includes:

  • program counter and other registers
  • stack
  • heap
  • data section
  • text section

Process States:

  • new
  • ready (就绪态)
  • runing (运行态)
  • waiting (阻塞态)
  • terminated

进程切换

进程控制块PCB

PCB是一个数据结构,是一个结构体,保存了进程的状态等等

Process Control Block:

  • Process state
  • Program counter
  • CPU registers
  • CPU scheduling information
  • Memory-management information
  • Accounting information
  • I/O status information
  • ……

进程切换时,先将当前进程的状态保存在当前进程的PCB中,然后再由CPU调度算法选择一个就绪态进程,将此进程的PCB读入,开始运行此进程。

进程从运行态切换到就绪态是通过时钟中断进行控制的 进程由运行态进入等待态是由进程主动通过一些操作进入的,这些操作是系统调用,于是会陷入内核,然后内核就会保存状态,切换进程

系统会将所有进程的PCB集中管理,可以抽象成队列的概念。 大多数系统通常使用数组进行进程的管理,原因如下:

  1. 随机访问比较快速
  2. 数组结构简单,管理起来方便
  3. 局部性原理强

进程创建

进程间资源的共享

  • 子进程共享父进程全部资源 –多见于嵌入式系统
  • 子进程共享部分父进程资源 –Unix
  • 子进程与父进程独立 –Windows

进程的创建

每个进程都拥有自己独立的虚拟地址空间

  • 子进程可以通过拷贝父进程的所有资源来创建
  • 可以通过父进程直接加载一个新程序来创建

进程的结束

在Unix下,进程结束后资源由父进程来回收,如果父进程不回收,则由系统的根进程(init)来回收。

进程间通信

  • 消息传递 消息传递有信号量等多种方式,分阻塞和非阻塞两种方式
    • 阻塞型
      • 当进程请求系统调用后,如果系统调用不能马上执行,则会进入等待状态,也就是说进程不知道系统调用是不是立即执行
    • 非阻塞型
      • 进程请求系统调用后,如果系统调用不能马上执行,则会返回通知进程系统调用没有执行
  • 共享内存

进程在实际物理内存中并不是理想状态的完全独立,而是两个进程中不相同的部分独立,而相同的部分(例如代码段)则共享。

多进程在一定意义上实现了模块化,便于管理