第三讲 进程 & 线程

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

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

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

进程

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

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

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

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

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

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

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

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

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

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

进程的组成

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

进程的特点

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

参考资料

进程线程

进程和线程

Chapter7 进程和线程

进程管理与单处理器调度

相关推荐
崎岖Qiu18 小时前
【OS笔记35】:文件系统的使用、实现与管理
笔记·操作系统·存储管理·文件系统·os
顾林海19 小时前
Android文件系统安全与权限控制:给应用数据上把“安全锁”
android·面试·操作系统
清风拂山岗 明月照大江20 小时前
同步与死锁
操作系统
崎岖Qiu20 小时前
【OS笔记38】:设备管理 - I/O 设备原理
笔记·操作系统·os·设备管理·io设备
崎岖Qiu2 天前
【OS笔记36】:文件存储空间管理(一)- 空闲区表法
笔记·操作系统·存储管理·文件系统·os
柏木乃一3 天前
进程(11)进程替换函数详解
linux·服务器·c++·操作系统·exec
羑悻的小杀马特5 天前
【Linux篇章】穿越网络迷雾:揭开 HTTP 应用层协议的终极奥秘!从请求响应到实战编程,从静态网页到动态交互,一文带你全面吃透并征服 HTTP 协议,打造属于你的 Web 通信利刃!
linux·运维·网络·http·操作系统·网络通信
彩妙不是菜喵6 天前
操作系统中的Linux:进程详解--->(深入浅出)从入门到精通
linux·操作系统
农民真快落6 天前
【操作系统】手撸xv6操作系统——types.h/param.h/memlayout.h/riscv.h/defs.h头文件解析
操作系统·risc-v·嵌入式软件·xv6
小当家.1057 天前
操作系统期末考试基础知识点速成:高频考点与题集精要
考研·操作系统·计算机基础·速成·大学·期末考试