进程、线程、协程

进程是操作系统分配资源的基本单位,而线程是程序执行的最小单位。早期操作系统采用时间片轮转的抢占式调度,后来引入线程以减少资源消耗和提高切换效率。当线程数量超过处理器数量时,并发变为模拟状态。协程是用户态的上下文切换技术,允许在单个线程中模拟多任务执行,减少了上下文切换的开销。
摘要由CSDN通过智能技术生成

一、进程

  1. 什么是进程

在在早期的操作系统中并没有线程的概念,进程是能拥有资源和独立运行的最小单位,也是程序执行的最小单位。任务调度采用的是时间片轮转的抢占式调度方式,而进程是任务调度的最小单位,每个进程有各自独立的一块内存,使得各个进程之间内存地址相互隔离。后来,随着计算机的发展,对CPU的要求越来越高,进程之间的切换开销较大,已经无法满足越来越复杂的程序的要求了。于是就发明了线程。

  1. 为什么可以同时运行通过进程(程序)
    答案是使用了空间复用技术和时间复用技术

**空间复用:**cpu把一整个空间分成多个小空间(小房间),但当我们运行一个程序的时候,cpu会给这个程序分配一个小空间让这个程序使用,从而保证在同一个cpu下可以运行多个程序。

**时间复用:**这里有一个资源抢占机制,如:在同一时间打开程序A,程序B,程序C,程序A先告诉CPU我已经准备好了,随时可以运行,那么CPU就会给程序A分配运行资源给他运行,在这运行的过程中遇到两种情况:1,程序A运行是遇到IO堵塞,会立即释放占用的CPU资源,然后让别的程序对这资源进行抢占。程序A在IO堵塞完成后会进入到就绪状态进行运行资源的抢占。2,正常运行,没有堵塞的情况发生,那么CPU会让程序A运行1-10ms,然后会是释放程序A的运行资源,程序A就会进程到就绪状态,程序B和程序C对就会在就绪状态对运行资源进行抢占,抢占到的程序也执行1-10ms,然后在给别的程序。以此类推。由于每个程序运行的时间不人感觉不出来,感觉到同一时间多个程序都在运行

在这里插入图片描述
二、线程
1,线程的出现

当进程开启到一定数量后,消耗的资源占据太大,频繁切换进程的时间太久(如听歌会一卡一卡的)因此CPU就不让进程为最小执行单元了–在进程之上出现了线程管理(一个线程可以看作一个代码块)

2,多线程

现在线程作为最小的执行单元,进程就是最小资源管理单元,这个的优势相比较进程而言资源占用更少,切换更快更流畅。而且访问百度和搜狗只用开启两个线程即可不用开启两个进程。例子:goole浏览器,打开google浏览器,但是不访问网址,那么这个时候就是告诉CPU开辟进程空间,但是没有执行,现在想访问百度,搜狗,这个时候google浏览器就会告诉CPU,开启两个线程分别访问百度和搜狗。

当线程的数量小于处理器的数量时,线程的并发是真正的并发,不同的线程运行在不同的处理器上。但当线程的数量大于处理器的数量时,线程的并发会受到一些阻碍,此时并不是真正的并发,因为此时至少有一个处理器会运行多个线程。

在单个处理器运行多个线程时,并发是一种模拟出来的状态。操作系统采用时间片轮转的方式轮流执行每一个线程。现在,几乎所有的现代操作系统采用的都是时间片轮转的抢占式调度方式,如我们熟悉的Unix、Linux、Windows及macOS等流行的操作系统。

三、进程和线程的区别

  1. 线程是程序执行的最小单位,而进程是操作系统分配资源的最小单位;
  2. 一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线;
  3. 进程之间相互独立,但同一进程下的各个线程之间共享程序的内存空间(包括代码段、数据集、堆等)及一些进程级的资源(如打开文件和信号),某进程内的线程在其它进程不可见;
  4. 调度和切换:线程上下文切换比进程上下文切换要快得多。

四,协程
线程由内核态(操作系统)管理,在同一个线程中,把代码分成多个任务,让一个协程模块调度,从而在用户态对任务的执行进程管理。从操作系统和cpu来看,只识别了为一个线程。官方语言:协程可称为微线程,或非抢占式的多任务子例程,一种用户态的上下文切换技术(通过一个线程实现代码块间的相互切换执行)。这种由程序员自己写程序来管理的轻量级线程叫做『用户空间线程』,具有对内核来说不可见的特性。正如一个进程可以拥有多个线程一样,一个线程也可以拥有多个协程。
执行过程:在用户态上有任务1和任务2两个任务–用户态调用了调度代码----向操作系统创建一个线程,在线程中创建了任务1,任务2和调度任务三个模块–cpu只执行线程—因此调度任务就模拟出同时执行任务1和任务2的情况—而且这个调度任务是认为选择的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值