• 【知识】操作系统题目


    请你说说线程和协程的区别 (补:关于进程)

    1. 协程适合I/O 密集型任务, 线程在这方面弱于协程
    2. 协程的开销远远小于线程的开销
    3. 同一时间, 在多核处理器的环境下, 多个线程是可以并行的,但协程只能并发
    4. 在协程之间的切换不需要涉及任何系统调用或任何阻塞调用
    5. 通常的线程是抢先式(即由操作系统分配执行权), 而协程是由开发者分配执行权

    由于协程在同一个线程中, 所以不需要用来守卫临界区段的同步性原语(primitive)比如互斥锁、信号量等,并且不需要来自操作系统的支持

    进程:一个程序,可以独立运行的一段程序。系统对它进行资源分配和调度。

    线程: 进程的基本单位,对它进行cpu分配和调度。只拥有一点在运行中必不可少的资源(寄存器,栈,程序计数器)

    协程:Coroutines)是一种比线程更加轻量级的存在。协程完全由程序所控制(在用户态执行),带来的好处是性能大幅度的提升。 一个操作系统中可以有多个进程
    在这里插入图片描述

    一个进程可以有多个线程;同理,一个线程可以有多个协程

    协程,看起来和线程差不多,但创建一个协程却不用调用操作系统的功能,编程语言自身就能完成这项操作,所以协程也被称作用户态线程。
    而服务器端开发中,大多数时候都是要花大量等待时间的场景,也就是所谓的IO密集,协程极为适合这种场景,而go又主打协程,直接从语法层面支持,切中了以往开发高性能程序太过于复杂的痛点,因此广受程序员们的欢迎。

    进程和线程的关系:
    (1)一个线程只能属于一个进程,而一个进程可以有多个线程,且至少有一个线程。
    (2)资源分配给进程,同一进程的所有线程共享该进程的所有资源。
    (3)处理机分给线程,即真正在处理机上运行的是线程。
    (4)线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。

    进程与线程的区别:

    (1)调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位
    (2)并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行
    (3)拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源.
    (4)系统开销:在创建或撤消进程时,由于系统都要为之分配和回收资源,导致系统的开销明显大于创建或撤消线程时的开销。

    在这里插入图片描述
    在这里插入图片描述
    用多线程的原因:
    在这里插入图片描述
    协程:
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    Flutter-实现头像叠加动画效果
    web前端-html-css-background背景(color样式,image图片,repeat重复方式,position定位,简写)
    关于python pytorch 与CUDA版本相关问题
    Workfine新手入门:数据规范之列表
    Kali Linux 2022新版发布
    微信小程序(自定义组件)
    数据库高可靠,轻松解决事务丢失问题
    City2vec:一种学习人口迁徙网络知识的新方法
    【JS红宝书学习笔记】第6章 集合引用类型
    Socks5代理:数字化时代的技术支柱
  • 原文地址:https://blog.csdn.net/weixin_47994845/article/details/126862722