V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
abser
V2EX  ›  问与答

进程和线程能否有一些拟物的比喻?

  •  
  •   abser · Dec 19, 2020 · 3403 views
    This topic created in 1955 days ago, the information mentioned may be changed or developed.

    比如锁可以理解为现实中的锁。

    27 replies    2020-12-28 11:50:29 +08:00
    ZRS
        1
    ZRS  
       Dec 19, 2020 via iPhone   ❤️ 3
    没有很贴切的比喻,另外我个人认为比喻并不是一个很合理的用来理解概念的手段,对思维能力是一种戕害
    dswyzx
        2
    dswyzx  
       Dec 19, 2020 via iPhone
    进程 1 是钢笔,进程 2 是毛笔。一个钢笔手握住仨钢笔一起写字是多线程,但这个手不能用毛笔
    opengps
        3
    opengps  
       Dec 19, 2020   ❤️ 4
    进程是一个车站,线程是车站提供的多条出入口通道,使用多通道(多线程)需要消耗额外的人力(系统资源)成本去指挥管理

    多进程能提高运输总量(负载量),但是多个站只能各自管各自的旅客,当然可以设计一下多个站之间的合作关系(进程间通信)实现负载分流
    luzemin
        4
    luzemin  
       Dec 19, 2020   ❤️ 3
    明喻和暗喻是文学描述中精妙的辅助手段,但他们常常掩盖了科学技术的真正光芒。
    ---《编码:隐匿在计算机软硬件背后的语言》
    Cooky
        5
    Cooky  
       Dec 19, 2020
    电脑用了这么多年,进程还要比喻?
    dalabenba
        6
    dalabenba  
       Dec 19, 2020 via Android
    很多不合理的比喻会影响你对现实的认知。进程是对资源隔离带来的产物,什么是资源,cpu,memory 。隔离怎么理解,程序跑的时候觉得自己是独占资源的。怎么实现的,通过操作系统,保存寄存器上下文来隔离 cpu,通过 mmu 来隔离地址空间,比如 a 进程的 0x100 地址和 b 进程的 0x100 地址可以指向完全不同的物理内存。线程是怎么来的,多核 cpu,为了充分利用资源,就要在多个 cpu 上运行,但是进程间通信开销太大,所以共享了部分资源,比如地址空间。a,b 线程同处一个进程,a 线程的 0x100 地址和 b 线程的 0x100 地址指向同一个物理地址。
    dalabenba
        7
    dalabenba  
       Dec 19, 2020 via Android   ❤️ 1
    还有锁的原因是因为操作的非原子(事务)性,就是有一个状态会影响你代码的结果,你的代码执行了前一半的时候,这个状态被别人修改了,那你后一半的代码根据被修改之后的状态来进行操作,这就造成了不连续,不一致。就需要锁来保证你执行这段时间内状态不被修改
    cmostuor
        8
    cmostuor  
       Dec 19, 2020
    一般举例子或拟物是说给普通人听的 作为这行业的几乎没有要这样解释的
    opengps
        9
    opengps  
       Dec 19, 2020   ❤️ 1
    比喻只是工具,合理使用即可。
    不否认楼层里有些大佬提出的避免比喻,我自身就有个负面例子:我识别左右不如别人灵敏,因为我小时候是用了先思考下用哪只手写字才能知道哪个是右的认知弯路。
    不过话说回来,计算机在历史上是个出现比较晚的词汇,里面太多自定义的解释,很多名词并非象形出身,所以本身就需要设法简化理解难度,使用例子理解无可厚非。能找到合适的例子对外表达交流是个非常好的沟通状态。

    锁这个词很好的描述了锁定唯一的概念,那就用了,打比方无妨。但是“完成端口”这种想破脑袋都猜不透意思的概念就最好不要去找现实中的比喻了,毕竟符合特征的场景太少了。
    carlclone
        10
    carlclone  
       Dec 19, 2020
    我看了那么多年比喻都没明白,看 ucore 课程的进程部分就明白了,主要看进程控制块的结构,创建进程的过程,创建线程的过程 , 以后再也不会靠比喻学概念了
    ipwx
        11
    ipwx  
       Dec 19, 2020
    @opengps 不 问题的本质不在于你要用作比解释某个概念。而是当你把来龙去脉说清楚了,不需要解释,你自然就懂了,还会举一反三。作比只会让你以为懂了,其实根本不懂,等遇到比喻不能涵盖的上下文,你就会错了。
    yangzhezjgs
        12
    yangzhezjgs  
       Dec 19, 2020
    https://www.bilibili.com/video/BV1N741177F5
    可以看看蒋老师这个课,状态机这个视角可能更容易理解一些
    opengps
        13
    opengps  
       Dec 19, 2020   ❤️ 2
    @ipwx 例子的目的,在于懂的人讲给不懂的人用来加深理解用的。注意我并非反驳例子坏处,只是在强调合理使用例子。
    不懂的人需要先看概念,再参考例子去加深理解,而不是先看例子去重新定义概念。
    wellsc
        14
    wellsc  
       Dec 19, 2020
    不就是资源的具象表达和抽象管理
    zhuawadao
        15
    zhuawadao  
       Dec 19, 2020
    每个人都是一个进程,干啥的人(进程)都有,人身上的每个器官都是线程,有的线程(嘴吃饭)可以单独做一件事,有的需要多个线程(两个眼镜都可以看东西)做同一件事,脑子(CPU)反应很快的时候,不同线程可以同时做不同的事,脑子(CPU)反应不过来的时候,比如,嘴巴(线程)打喷嚏的时候,眼镜(线程)就睁不开,那就是线程阻塞了。
    itechify
        16
    itechify  
    PRO
       Dec 19, 2020 via Android
    爸爸与孩子们
    walsh
        17
    walsh  
       Dec 19, 2020
    隔离程度不一样,线程类似车道,进程类似公路,车道到车道间的切换共享手段极多,公路到公路间的切换共享手段很有限。红绿灯类似信号量,电台类似跨进程信号量,奔溃类似发生交通事故,死锁类似进入一个没有出口不能掉头的死胡同。不过这个比喻也不是很严谨
    YYYeung
        18
    YYYeung  
       Dec 19, 2020
    进程:一只手 👋
    线程:上面这只手的五根手指

    四舍五入,当用这只手来弹钢琴的时候,可以这样比喻
    jzmws
        19
    jzmws  
       Dec 19, 2020
    工厂和流水线的区别
    ruokw
        20
    ruokw  
       Dec 19, 2020 via Android
    公司 打工人 哈哈
    syahd
        21
    syahd  
       Dec 19, 2020 via Android
    不同进程分配的空间独立,同一个进程内的线程可以共享空间。
    感觉就像小组和和小组成员一样。
    hello2060
        22
    hello2060  
       Dec 20, 2020 via iPhone
    进程就是党领导人民建立了人民当家作主的新中国这件事。

    线程就是这个过程中的各种小事,有的时间长,有的时间短,有的贯穿始终,他们可能互有联系,可能毫无关系,但对完成中华民族的伟大复兴缺一不可
    mmdsun
        23
    mmdsun  
       Dec 20, 2020 via Android
    启动一个软件 Word 叫进程,
    Word 的字数统计是线程。
    Chemist
        24
    Chemist  
       Dec 20, 2020 via iPhone   ❤️ 1
    进程是单个人
    线程是哪吒,三头六臂
    lap510200
        25
    lap510200  
       Dec 21, 2020
    一个码农负责一个项目是一个进程 多个人负责多个 但项目可能需求不饱和 他们可能会摸鱼 老板让他们每个人负责多个 他就要在多个项目间切换做事 这样效率提升 老板又可以买套别墅了
    baobao1270
        26
    baobao1270  
       Dec 21, 2020 via Android
    我觉得这两个词本身就有比喻了啊
    很多技术名词都是借用了现实中的东西,比如 H
    handle socket

    非要说的话
    线程就是京沪铁路沪宁段和沪宁铁路的关系
    进程就是京沪铁路和京沪高铁的关系
    abser
        27
    abser  
    OP
       Dec 28, 2020
    @kyuuseiryuu 那如果线程之间的资源竞争和通信怎么通过三头六臂解释?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1021 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 74ms · UTC 22:29 · PVG 06:29 · LAX 15:29 · JFK 18:29
    ♥ Do have faith in what you're doing.