进程,线程,协程

程序执行

  • 写在硬盘上的静态程序文件
  • cpu从磁盘上找到程序文件
  • .exe 文件中包含操作cpu的指令
  • 把指令放到内存中
  • 在内存中的指令就可以叫做cpu的进程

进程

对于cpu来讲,有一个时间线的概念,时间线上的每一个点对应着一个操作指令

操作系统把时间线分割为不同的时间片,时间片是执行程序的小单位

按照 1,2,1,2的顺序,来回切换任务的分配,可以让cpu调度进程,看起来在同时执行多个操作

进程比较重,每个任务分配一个进程,频繁切换的时候损耗比较大,所以有了线程的概念

进程之间内存相互独立,进程之间相互通信需要内核转发(系统调用)。也就是进程之间的通信需要经过操作系统,损耗比较大

进程主要占据的内存代码(进程的实现代码),数据(需要处理的数据),文件(和硬盘文件关联的文件句柄,需要通过系统内核,来完成文件的操作)

执行的时候需要写寄存器,在进程切换的时候需要保存寄存器中信息的状态,把寄存器中的数据写到内存中。

栈 函数调用栈

线程

线程比较轻,线程依附与进程,是多个线程对应一个进程的关系,

线程共享进程的内存(代码,数据,文件),但是有自己独立的寄存器和栈,所以线程比较轻

线程共享数据存在的问题,可能读写同时操作,需要线程锁

IO 密集型

输入输出的速度远小于CPU的速度。

多任务 -> 多线程 -> 时间驱动 -> 协程

CPU密集型

多进程 -> 多线程

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2015-2025 SunZhiqi

此时无声胜有声!

支付宝
微信