第三讲 进程 & 线程

进程的非正式定义非常简单:进程就是运行中的程序。

程序本身是没有生命周期的,它只是存在磁盘上面的一些指令(也可能是一些静态数据)。是操作系统让这些字节运行起来,让程序发挥作用。

即使可以利用的CPU只有一个,操作系统也支持(伪)并发操作的能力。操作系统将一个单独的CPU变换成多个虚拟的CPU。

进程

操作系统为正在运行的程序提供的抽象,就是所谓的进程(process)。正如我们上面所说的,一个进程只是一个正在运行的程序。在任何时刻,我们都可以清点它在执行过程中访问或影响的系统的不同部分,从而概括一个进程。

所有现代的计算机经常会在同一时间做许多事情。举个例子。先考虑一个网络服务器(阿里巴巴)。从四面八方进入大量网页请求。当一个请求进入时,服务器检查其需要的网页是否在缓存中。如果是,则把网页发送出去。如果不是,则启动一个磁盘请求以获取网页。然而,从CPU角度来看,磁盘请求需要漫长的时间。当等待磁盘请求完成时,其他更多的请求将会进入。如果有多个磁盘存在,会在满足第一个请求之前就接二连三地对其他的磁盘发出一些或所有的请求。很明显,需要一些方法去模拟并控制这种并发。进程(特别是线程)在这里就可以产生作用。

事实表明,人们常常希望同时运行多个程序。比如:在使用计算机或者笔记本的时候,我们会同时运行浏览器、邮件、游戏、音乐播放器,等等。实际上,一个正常的系统可能会有上百个进程同时在运行。如果能实现这样的系统,人们就不需要考虑这个时候哪一个CPU 是可用的,使用起来非常简单。所有的这些活动需要管理,于是一个支持多进程的多道程序系统就很有用了。

在任何多道程序设计系统中,CPU由一个进程快速至另一个进程,使每个进程各运行几十或几百个毫秒。严格地说,在某一个瞬间,CPU只能运行一个进程但在1秒钟期间,它可能运行多个进程,这样就产生并行的错觉

makefile 复制代码
并发: 一段时间内,有多个进程在执行。如果时间短, 给人感觉是同时执行。

并行: 一个时刻,有多个进程在执行。

单个CPU、多个CPU都可以实现并发

单个CPU,没法实现并行。因为在某一个时刻,只能执行一个进程。

为了执行其他程序,CPU必须要做切换。这样在一段短的时间内,可以多个进程在执行,这叫并发。

只有在多个CPU的时候,多核处理器, 就会达到在同一个时刻,有多个进程在执行。这叫并行。

进程的组成

  • 程序的代码;
  • 程序处理的数据;
  • 程序计数器中的值,指示下一条将运行的指令;
  • 一组通用的寄存器的当前值,堆,栈;
  • 一组系统资源(如打开的文件)

进程的特点

  • 动态性:可动态地创建,结果进程;
  • 并发性:进程可以被独立调度并占用处理机运行;(并发:一段,并行:一时刻)
  • 独立性:不同进程的工作不相互影响;(页表是保障措施之一)
  • 制约性:因访问共享数据 / 资源或进程间同步而产生制约。

参考资料

进程线程

进程和线程

Chapter7 进程和线程

进程管理与单处理器调度

相关推荐
别说我什么都不会7 小时前
鸿蒙轻内核M核源码分析系列十五 CPU使用率CPUP
操作系统·harmonyos
袁庭新17 小时前
CentOS7通过yum无法安装软件问题解决方案
centos·操作系统
别说我什么都不会1 天前
鸿蒙轻内核M核源码分析系列十二 事件Event
操作系统·harmonyos
qq_437896432 天前
动态内存分配算法对比:最先适应、最优适应、最坏适应与邻近适应
操作系统
别说我什么都不会2 天前
鸿蒙轻内核M核源码分析系列十一 (2)信号量Semaphore
操作系统·harmonyos
别说我什么都不会3 天前
鸿蒙轻内核M核源码分析系列十 软件定时器Swtmr
操作系统·harmonyos
别说我什么都不会3 天前
鸿蒙轻内核M核源码分析系列九 互斥锁Mutex
操作系统·harmonyos
别说我什么都不会4 天前
鸿蒙轻内核M核源码分析系列七 动态内存Dynamic Memory
操作系统·harmonyos
别说我什么都不会4 天前
鸿蒙轻内核M核源码分析系列六 任务及任务调度(3)任务调度模块
操作系统·harmonyos
徐徐同学4 天前
【操作系统】操作系统概述
操作系统·计算机系统