进程与线程

  • 进程与线程
  • 进程
  • 进程内容
  • 进程切换
  • 进程状态
  • 进程创建过程
  • 进程终止过程
  • 进程的调度算法:
  • 线程


进程与线程

进程

计算机的一次运行活动,是资源分配和调度的基本单位,也是基本的执行单元。进程是线程的容器,进程是程序的实体。每一个进程都有自己的独立空间,包括文本区域,数据区域和堆栈。

  1. 文本区域:存储处理器执行的代码
  2. 数据区域:存储变量和进程执行期间使用的动态分配的内存
  3. 堆栈区域:存储活动过程调用的指令和本地变量

进程特征:
动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的。
并发性:任何进程都可以同其他进程一起并发执行
独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位;
异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进
结构特征:进程由程序、数据和进程控制块三部分组成。

进程内容

  1. 可运行机器码在 存储器 的映射,通常包括在 虚拟内存 的一个区域
  2. 存储器内容
    可运行代码
    特定于进程的数据
    调用堆栈
    分配给该进程的资源的操作系统描述符,诸如文件描述符。
    处理器状态,诸如寄存器内容,物理存储器寻址
    当进程正在运行时,状态通常存储在寄存器(在CPU内部,速度快),其他情况在存储器(内存储器)
    主机:CPU 内存储器
    CPU:控制器,运算器,寄存器

寄存器:在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。在中央处理器的算术及逻辑部件中,包含的寄存器有累加器(ACC)。

内存储器: 只读存储器(ROM)和随机存储器(RAM),以及最强悍的高速缓冲存储器(CACHE),只读存储器应用广泛,它通常是一块在硬件上集成的可读芯片,作用是识别与控制硬件,它的特点是只可读取,不能写入。随机存储器的特点是可读可写,断电后一切数据都消失,我们所说的内存条就是指它了。

缓存CACHE:数据交换的缓冲区,当某一硬件要读取数据时,会首先从缓存中查找需要的数据,如果找到了则直接执行,找不到的话则从内存中找。由于缓存的运行速度比内存快得多,故缓存的作用就是帮助硬件更快地运行。因为缓存往往使用的是RAM(断电即掉的非永久储存),所以在用完后还是会把文件送到硬盘等存储器里永久存储。电脑里最大的缓存就是内存条了,最快的是CPU上的L1和L2缓存,显卡的显存是给显卡运算芯片用的缓存,硬盘上也有16M或者32M的缓存。CACHE是在CPU中速度非常块,而容量却很小的一种存储器,它是计算机存储器中最强悍的存储器。由于技术限制,容量很难提升。

进程切换

进程切换就是从正在运行的进程收回处理器,然后使待运行进程来占用处理器

实质上是把进程存在处理机上的寄存器中的中间数据(进程的上下文)存在该进程的私有堆栈中,把寄存器腾出来

进程的切换就是进程上下文的切换,在进程没有占用处理器时,进程的中间数据被存放在进程的私有堆栈中

一个进程的上下文可以分为三个部分:用户级上下文、寄存器上下文以及系统级上下文。
用户级上下文: 正文、数据、用户堆栈以及共享存储区;
寄存器上下文: 通用寄存器、程序寄存器(IP)、处理器状态寄存器(EFLAGS)、栈指针(ESP);
系统级上下文: 进程控制块task_struct、内存管理信息(mm_struct、vm_area_struct、pgd、pte)、内核栈。

当发生进程调度时,进行进程切换就是上下文切换(context switch).操作系统必须对上面提到的全部信息进行切换,新调度的进程才能运行。而系统调用进行的模式切换(mode switch)。模式切换与进程切换比较起来,容易很多,而且节省时间,因为模式切换最主要的任务只是切换进程寄存器上下文的切换。
  1. 进程运行:把进程参数从用户空间调入内核,内核保存寄存器信息和变量,生成进程上下文
  2. 进程切换:当要中断时,则硬件将中断处理程序,参数,变量传入内核,生成中断上下文,内核将进程上下文信息(三个部分)从寄存器移到进程的私有堆栈,腾出寄存器
  3. 进程占用处理器:就把私有堆栈中的数据再存在寄存器中,把待运行进程的断点送入处理器的程序指针PC,于是待运行程序就可以运行

进程状态

就绪 :当一个进程由于时间片用完而进入就绪状态时,排入低优先级队列;当进程由I/O操作完成而进入就绪状态时,排入高优先级队列。
运行:占用处理器资源
阻塞:等待状态,由于I/O或者进程同步,进程通过调用阻塞原语block(),进程的阻塞是进程自身的一种主动行为。把进程控制块中的现行状态由执行改为阻塞,并将PCB插入阻塞队列。

进程创建过程

调用进程创建原语create():

  1. 申请空白PCB,并生成唯一的数字标识符
  2. 分配存储空间
  3. 初始化PCB:
    初始化标识信息
    初始化处理机状态信息,使程序计数器指向程序的入口地址,使栈指针指向栈顶
    初始化处理机控制信息,将进程的状态设置为就绪状态,通常是最低优先级
  4. 将新进程插入就绪队列

进程终止过程

调用终止原语

  1. 根据被终止进程的标识符,从PCB集合中检索出该进程的PCB,读出进程状态
  2. 若进程在执行,则立即终止,置调度标志为真。若还有子进程,则终止子进程
  3. 终止全部资源
  4. 将PCB从队列移除

进程的调度算法:

实时系统中:FIFO(First Input First Output,先进先出算法),SJF(Shortest Job First,最短作业优先算法),SRTF(Shortest Remaining Time First,最短剩余时间优先算法)。
交互式系统中:RR(Round Robin,时间片轮转算法),HPF(Highest Priority First,最高优先级算法),多级队列,最短进程优先,保证调度,彩票调度,公平分享调度。

线程

独立运行和独立调度的基本单位