进程与线程的概念

1. 进程产生的背景

计算机刚被创造出来的时候,只能接受一些特殊的指令。操作者每输入一次指令,计算机就会执行对应的操作,这类似于 windows 下的 cmd。直观上看待这种操作无疑是效率低下的,因为每当用户在思考或输入下一次指令时,计算机都处于空闲等待状态,也就侧面造就了系统资源无法充足利用。


2 批处理系统

批处理系统是在上文的环境下优化出来的,不同的是批处理系统可以提前把所有操作指令写下来,一次性递交给计算机。类似于 windows 下的 bat 后缀文件。

批处理系统在一定程度上提高了计算机的效率,但同一时刻内存中只有一个程序在运行。如果前面的程序涉及到了 I/O,网络等,那么程序程序将会进入阻塞状态,直至对应的指令执行完成。所以批处理系统还需要再被提高。


3 进程的概念

在批处理的环境下,不能同一时间运行多个程序。

于是,进程的概念在此背景下提出。

进程就是应用程序在内存中分配的空间,也就是正在运行的程序。不过各个进程之间互不干扰,同时每个进程保存着程序每一时刻的状态。

进程在此背景下诞生,它给予了系统的并发能力。

问:CPU 是如何运行多个进程的呢?
答:CPU 采用时间片轮转方式运行进程。CPU 为每个进程分配一个时间段(时间片),如果分配的时间片结束时程序还在运行,那么就强制暂停该程序的运行,并且将 CPU 分配给另一个进程(此操作称为上下文切换)。如果进程在时间片结束前阻塞或结束,则 CPU 会立即切换,无需等待时间片用尽。

当进程被暂停时,它会保存当前进程的状态(进程标识,进程使用的资源等),在下一次的执行中会根据保存的状态进行恢复,接着继续执行。

由于时间片太过短暂(5ms ~ 800ms),在宏观上来看也就是同一时间执行多个任务。但事实上,单核 CPU 同一时刻只有一个任务在占用 CPU 资源。


4. 线程的概念

有了进程,但似乎还是不够完善。

如果需要一个应用在同一时间完成多个任务呢?
进程只得逐个执行这些子任务,这貌似又回到了批处理时代。

线程在此背景下诞生,其目的就是为了提供给应用并发能力。


5. 进程与线程的区别

进程:

  1. 进程是一个独立运行的环境。
  2. 进程单独占有内存地址与系统资源
  3. 进程内存隔离,进程间数据共享复杂,同步简单。
  4. 进程之间各不干扰,任意进程出现问题都不会影响至其它进程。

线程:

  1. 线程是存在于进程中
  2. 线程资源共享简单,同步复杂。
  3. 任意一个线程崩溃都会影响整个程序的稳定性。

问:多进程与多线程统一都是提供并发,为何还需要线程呢?
答:

  1. 进程之间的通信复杂,而线程通信较为简单。
  2. 进程是重量级的,而线程是轻量级的。

进程是操作系统分配的基本单位,而线程是操作系统调度的基本单位。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值