进程

来源:互联网 发布:各国域名后缀 编辑:程序博客网 时间:2024/05/21 22:56

主要研究进程对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)来回收。

进程间通信

  • 消息传递
    消息传递有信号量等多种方式,分阻塞和非阻塞两种方式
    • 阻塞型

      当进程请求系统调用后,如果系统调用不能马上执行,则会进入等待状态,也就是说进程不知道系统调用是不是立即执行
    • 非阻塞型

      当进程请求系统调用后,如果系统调用不能马上执行,则会返回通知进程系统调用没有执行
  • 共享内存

进程在实际物理内存中并不是理想状态的完全独立,而是两个进程中不相同的部分独立,而相同的部分(例如代码段)则共享。
多进程在一定意义上实现了模块化,便于管理