进程

  1. 不共享任何状态
  2. 调度由操作系统完成
  3. 有独立的内存空间(上下文切换的时候需要保存栈、cpu寄存器、虚拟内存、以及打开的相关句柄等信息,开销大)
  4. 通讯主要通过信号传递的方式来实现(实现方式有多种,信号量、管道、事件等,通讯都需要过内核,效率低)

线程

  1. 共享变量(解决了通讯麻烦的问题,但是对于变量的访问需要加锁)
  2. 调度由操作系统完成
  3. 一个进程可以有多个线程,每个线程会共享父进程的资源(创建线程开销占用比进程小很多,可创建的数量也会很多)
  4. 通讯除了可使用进程间通讯的方式,还可以通过共享内存的方式进行通信(通过共享内存通信比通过内核要快很多)
  5. 线程的使用会给系统带来上下文切换的额外负担。

协程

  1. 调度完全由用户控制
  2. 一个线程(进程)可以有多个协程
  3. 每个线程(进程)循环按照指定的任务清单顺序完成不同的任务(当任务被堵塞时,执行下一个任务;当恢复时,再回来执行这个任务;任务间切换只需要保存任务的上下文,没有内核的开销,可以不加锁的访问全局变量)
  4. 协程需要保证是非堵塞的且没有相互依赖
  5. 协程基本上不能同步通讯,多采用异步的消息通讯,效率比较高

我的微信公众号:架构真经(id:gentoo666),分享Java干货,高并发编程,热门技术教程,微服务及分布式技术,架构设计,区块链技术,人工智能,大数据,Java面试题,以及前沿热门资讯等。每日更新哦!

参考资料:

  1. https://www.cnblogs.com/xuchunlin/p/10329311.html

操作系统(7)-进程、线程、协程的区别相关推荐

  1. 4.19 python 网络编程和操作系统部分(TCP/UDP/操作系统概念/进程/线程/协程) 学习笔记

    文章目录 1 网络编程概念 1)基本概念 2)应用-最简单的网络通信 2 TCP协议和UDP协议进阶(网络编程) 1)TCP协议和UDP协议基于socket模块实现 2)粘包现象 3)文件上传和下载代 ...

  2. linux进程线程协程的区别,进程和线程、协程的区别

    现在多进程多线程已经是老生常谈了,协程也在最近几年流行起来.python中也有协程库,tornado中也用了gevent封装好的协程.本文主要介绍进程.线程和协程三者之间的区别. 一.概念 1.进程 ...

  3. 进程/线程/协程的区别

    1 基本概念 进程(Process) 进程是应用程序的启动实例,进程拥有代码和打开的文件资源.数据资源.独立的内存空间. 线程(Lightweight Process,LWP) 线程从属于进程,是程序 ...

  4. Linux的进程/线程/协程系列4:进程知识深入总结:上篇

    Linux的进程/线程/协程系列4:进程/线程相关知识总结 前言 本篇摘要: 1. 进程基础知识 1.1 串行/并行与并发 1.2 临界资源与共享资源 1.3 同步/异步与互斥 1.4 进程控制原语 ...

  5. linux的进程/线程/协程系列5:协程的发展复兴与实现现状

    协程的发展复兴与实现现状 前言 本篇摘要: 1. 协同制的发展史 1.1 协同工作制的提出 1.2 自顶向下,无需协同 1.3 协同式思想的应用 2. 协程的复兴 2.1 高并发带来的问题 2.2 制 ...

  6. linux的进程/线程/协程系列1:进程到协程的演化

    linux的进程/线程/协程系列1:进程到协程的演化 前言 摘要: 1. 一些历史:批处理时代 2. 现代操作系统启动过程 3. 进程(process)的出现 4. 线程(thread)与线程池 5. ...

  7. 进程 线程 协程 各自的概念以及三者的对比分析

    文章目录 1 进程 2 线程 3 进程和线程的区别和联系 3.1 区别 3.2 联系 4 举例说明进程和线程的区别 5 进程/线程之间的亲缘性 6 协程 线程(执行一个函数)和协程的区别和联系 协程和 ...

  8. linux的进程/线程/协程系列3:查看linux内核源码——vim+ctags/find+grep

    linux的进程/线程/协程系列3:查看linux内核源码--vim+ctags/find+grep 前言 摘要: 1. 下载linux内核源码 2. 打标签方法:vim+ctags 2.1 安装vi ...

  9. 简要说明__python3中的进程/线程/协程

    多任务可以充分利用系统资源,极大提升程序运行效率,多任务的实现往往与 多线程,多进程,多协程有关 稳定性: 进程 > 线程 > 协程 系统资源占用量:进程 > 线程 > 协程 ...

  10. Python之进程+线程+协程(异步、selectors模块、阻塞、非阻塞IO)

    文章目录 一.IO多路复用 二.selectors模块 本篇文字是关于IO多路复用的更深入一步的总结,上一篇 Python之进程+线程+协程(事件驱动模型.IO多路复用.select与epoll)对I ...

最新文章

  1. Spring Cloud【Finchley】-01服务提供者与服务消费者
  2. RPC框架几行代码就够了
  3. vim 与系统剪切板
  4. java测试spring cloud_java – 从Spring引导单元测试中排除Spring Cloud Config Server
  5. 修改input的placeholder颜色
  6. java分布式dubbo_Dubbo剖析-搭建一个简单的分布式系统(1)
  7. Python模块受欢迎排行榜Top200
  8. VMware ESXi6.0注入8060阵列卡驱动过程记录
  9. 如何解决EV3陀螺仪传感器漂移问题
  10. java类库编程_进阶Java编程(5)基础类库
  11. 猜拳小游戏(Java代码实现)
  12. idea 无法加载识别本地类
  13. 恩布企业IM 1.8 版本,企业内部通讯软件
  14. 这样创建EC2实例,才算没浪费AWS的一年免费套餐
  15. java实现图片反色
  16. Java反射面试题(2020)
  17. 高并发抢红包系统红包随机金额生成算法
  18. 电子计算机科学之父,电子计算机之父/历史的丰碑
  19. 闲鱼卖家待发货在哪看
  20. cf997C. Sky Full of Stars(组合数 容斥)

热门文章

  1. Silkroad 与 Tesseract 通信协议 QuestionModel
  2. Jquery.ajax(……)
  3. java语言体系的技术简介之JSP、Servlet、JDBC、JavaBean(Application)
  4. Oracle_PL/SQL developer拷贝粘贴中文乱码问题
  5. 再谈.NET Micro Framework移植
  6. RabbitMQ原理及实现
  7. RabbitMQ (一) MQ介绍以Linux下RabbitMq环境安装
  8. redis aof持久化
  9. 从源码分析RocketMQ系列-start()方法详解
  10. Python精通-Python函数使用