Skip to content

Latest commit

 

History

History
33 lines (24 loc) · 1.29 KB

操作系统.md

File metadata and controls

33 lines (24 loc) · 1.29 KB

[toc]

进程、线程和协程的区别

进程

  1. 资源分配的最小单位
  2. 进程拥有独立的地址空间
  3. 进程间通信通过信号量,信号、共享内存、消息传递、管道、队列 ==会经常考这个问题==
  4. 进程由操作系统调度
  5. 多进程方式比多线程稳定

线程

  1. 程序执行的最小单元。CPU调度的基本单位
  2. 线程来自于进程,一个进程下可以产生多个线程
  3. 每个线程都有自己一个栈,不共享栈,但多个线程能共享同一个属于进程的堆
  4. 线程共享内存
  5. 线程消耗低于进程
  6. 某个线程产生致命错误会导致进程奔溃
  7. 线程间读写变量存在锁的问题处理起来相对麻烦

协程

  1. 协程的控制由应用程序显式调度,非抢占式的
  2. 协程的执行最终靠的还是线程,应用程序来调度协程选择合适的线程来获取执行权
  3. 切换非常快,成本低。一般占用栈大小远小于线程(协程KB级别,线程MB级别),所以可以开更多的协程 协程比进程更轻量级

堆和栈的区别?

栈 是由操作系统来分配的。存放函数的参数,局部变量。其操作方式类似于数据结构中的栈。

堆,一般是由程序员分配,若程序员不分配,可能由OS收回。