进程和线程以及它们之间的区别和联系

进程和线程

一.进程

为什么要引入进程

为了深刻描述程序动态执行过程的性质,人们引入“进程”概念。

概念

进程是程序的一次执行过程,是系统进行资源分配和调度的独立单位。它是一个动态的概念。

一个进程实体由PCB,程序段,数据段三部分组成。PCB(进程控制块)是一种数据结构,它描述了进程的运行状态和基本信息。

进程状态

进程的三种基本状态和它们的转换如下所示:

在这里插入图片描述

1.就绪状态

当前进程已分配到除CPU以外的所有必要资源的状态,只要再获得CPU就可以立即执行。

2.运行状态

进程已获得CPU,其程序正在执行。

3.阻塞状态

正在执行的进程由于某件事而暂停无法继续执行的状态,IO,申请缓冲空间等都会使运行状态的进程变为阻塞状态。

三种基本状态的转换

就绪–(进程调度)–>执行

执行–(时间片用完)–>就绪

执行–(IO请求)–>阻塞

阻塞–(IO完成)–>就绪

在不少系统中进程只有上述三种状态,但在另一些系统中,又增加了一些新状态,最重要的是挂起状态。挂起进程在操作系统中可以定义为暂时被淘汰出内存的进程。它们的转换关系如下:

在这里插入图片描述

进程调度算法

1.先来先服务算法

根据进程进入就绪状态的时间先后顺序进行进程调度,是最基本的调度算法。

2.短进程优先

选择就绪队列中执行时间(估计值)最短的进程。

优点:降低了短进程的等待时间,平均周转时间较小;提高了系统吞吐量。

缺点:长进程可能长时间得不到执行。

3.优先权调度算法

选择就绪队列中优先级最高的进程。

抢占式优先权算法可能会导致低优先权进程长时间得不到执行,但是可以通过动态优先权解决这个问题。例如高相应比优先算法,等待时间越长的进程优先权越高。

4.时间片轮转算法

在这里插入图片描述
先按照到来的时间顺序将进程加入就绪队列,就绪队列中的每个进程依次执行一个时间片的时间,时间片用完但还未执行完的进程加入就绪队尾等待下一次执行。

5.多级反馈队列调度算法
在这里插入图片描述

这种算法设置了多个就绪队列,这些就绪队列优先级逐级降低,分配的时间片逐级增长。一个进程进入就绪状态后,先按照先来先服务加入到队列一的末尾,如果时间片内未执行完则将其加入下一队列,依此类推,到最后一个队列时,会一直在此执行直到执行完毕。

优点:兼顾IO密集型和CPU密集型进程

缺点:算法相对复杂

二.线程

为什么要引入线程

1.在一个应用中往往同时发生着各种活动,比如网络请求,图片加载等等。将一个进程分解为许多并发执行的线程会使得程序设计更加简单。

2.使用线程可以节省系统资源。因为线程是“轻量级”的进程,它的创建和消耗消耗的资源相对进程较少。

3.线程可以提高程序的并发执行程度,提高系统吞吐量。

概念

线程是CPU任务调度和执行的基本单位。一个进程中可以有多个线程并发执行。

线程的运行状态

线程在运行时也有三种基本状态:执行状态,就绪状态和阻塞状态,它们和进程的三种基本状态类似,就不再赘述了。

三.线程和进程的区别和联系

区别

1.地址空间

进程间地址空间相互独立,同一进程的各线程间共享。某进程内的线程在其它进程不可见。

2.通信方面

线程间通信可以通过共享进程中的数据实现,而进程间通信通过IPC机制,管道,Socket等方式。

3.资源

进程是资源分配的基本单位,而线程基本上不拥有资源,多个线程共享进程的资源。

4.系统开销

进程间切换代价较大,线程间切换代价较小。

联系

一个进程至少包含一个线程;

进程和线程都可以并发执行;

进程在执行过程中拥有独立的内存单元,其中的所有线程共享进程的内存。

参考资料

《计算机操作系统》

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值