【操作系统01】进程与线程

一、认识进程

先感性地认识一下,进程是载入内存中进行处理的程序,是程序的一次执行过程。

需要了解,程序是什么?程序是指令序列的集合,平时存放在外存,是一堆静态的代码。当用户需要它时,CPU就将这段程序调入内存运行起来,它就变成了动态的进程。

可以理解为,进程就是动起来的程序。那么想让原本静态的程序动起来,还需要什么东西来驱动呢?也就是说,进程都包含哪些部分。回答这个问题,还涉及到“进程实体”的概念。

进程实体(进程映像)由程序段数据段PCB三部分组成。而进程,是进程实体的运行过程,是系统进行资源分配调度的一个独立单位。

Tip:进程实体也是静态的,是那三部分的一个集合;而进程更强调动态过程。一般情况下,不严格区分“进程”和“进程实体”,可以认为进程实体简称为进程。

详细认识认识上述的三部分。

  • 程序段:就是一段程序,由多条指令组成,比如读、写、跳转。
  • 数据段:程序运行时使用、产生的运算数据,如全局变量、局部变量、宏定义的常量等就存放在这里。
  • PCB:Process Control Block,进程控制块,用于管理进程。它唯一标志着进程的存在。创建进程,就是创建进程实体中的PCB,撤销就是撤销进程实体中的PCB。

PCB既然肩负着管理重任,必然存放着很多用于管理进程的信息,用一张图简单了解。
在这里插入图片描述
总的来说,程序 + 所需的数据 + 大管家PCB = 进程实体,进程实体动起来的过程就是进程。

二、认识线程

首先要有个概念,引入线程是为了增加系统的并发度。可以将线程看作是轻量级的进程。但与真正的多进程不同的是,对于同一进程的多个线程,系统只为该进程分配资源,由这些线程共享。

线程是进程的一个实体,是CPU调度和分派的基本单位,是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),一个线程可以创建和撤销另一个线程。

很重要的一句话:

进程是分配资源(打印机、内存空间地址等)的最小单位,而线程是调度的最小单位。

线程又分为以下两种:

  1. 用户级线程:这些线程的管理工作(包括线程切换)由应用程序负责,操作系统看不到
  2. 内核级线程:线程的管理由操作系统负责,线程切换需要在核心态下才能完成

三、多线程

并不是说一个进程包含多个线程就叫多线程了。多线程是指计算机在同一时间能够执行多于一个线程,这要求该计算机必须拥有多核心处理器,实现真正的“并行运算”。

四、二者联系与区别

联系

  1. 二者都有运行就绪阻塞状态。
  • 运行状态:进程/线程既有所需资源,又被分配到CPU;
  • 就绪状态:进程/线程所需的资源到位,但是没被分配到CPU;
  • 阻塞状态:进程/线程所需的资源没有到位。
  1. 一个线程只能属于一个进程,而一个进程可以拥有多个线程(至少一个),其中一个是主线程。

区别

  1. 进程是系统分配资源的最小单位,意思就是系统不会为线程单独分配资源,多个线程共享它们共同的进程的资源。
  2. 因为线程更加轻量,所以线程的创建和销毁的代价更小,切换线程(同一进程的)也比切换进程的开销更少。
  3. 同一进程的线程之间因为共享资源,所以通信非常方便,而不同进程间的线程通信时需要用到“进程间通信”,比较复杂。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值