计算机操作系统学习笔记(6)——进程和线程

这篇内容较少,只是先简单介绍下概念,之后会连续出好几篇进程和线程


一、用户空间和内核空间

如果有⼤量处于阻塞状态的进程,会占⽤着物理内存空间,显然不是我们所希望的,所以,在虚拟内存管理的操作系统中,通常会把阻塞状态的进程的物理内存空间换出到硬盘,等需要再次运⾏的时候,再从硬盘换⼊到物理内存。

那么,就需要⼀个新的状态,描述进程没有占⽤实际的物理内存空间的情况,这个状态就是挂起状态
在这里插入图片描述
以下方式可以使进程挂起:

  • 通过 sleep 让进程间歇性挂起,其⼯作原理是设置⼀个定时器,到期后唤醒进程。
  • ⽤户希望挂起⼀个程序的执⾏,⽐如在 Linux 中⽤ Ctrl+Z 挂起进程;

进程控制块(process control block , PCB),PCB 是进程存在的唯⼀标识,这意味着⼀个进程的存在,必然会有⼀个 PCB,如果进程消失了,那么 PCB 也会随之消失。

二、上下文切换

⼀个进程切换到另⼀个进程运⾏,称为进程的上下⽂切换
CPU 寄存器和程序计数器是上下文切换所依赖的环境,叫做CPU上下文
说白了就是运行新任务之前保存之前的状态,要回过去运行,再把之前保存的取出来

线程上下⽂切换

  1. 当两个线程不是属于同⼀个进程,则切换的过程就跟进程上下⽂切换⼀样;
  2. 当两个线程是属于同⼀个进程,因为虚拟内存是共享的,所以在切换时,虚拟内存这些资源就保持不动,只需要切换线程的私有数据、寄存器等不共享的数据

猜你喜欢

转载自blog.csdn.net/bookssea/article/details/121785290