V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
kingofzihua
V2EX  ›  操作系统

问一个线程和进程的问题

  •  
  •   kingofzihua · 2022-10-09 11:43:56 +08:00 · 1013 次点击
    这是一个创建于 564 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一般来说线程切换比进程切换代价更小,是因为进程切换需要转换内存地址空间,需要刷新 TLB/cache ,线程切换没有这个动作。

    那么操作系统调度的时候会不会尽量调度同一进程内的线程?

    • 如果会的话,就不公平了,我进程多创建线程岂不是能占用更多的时间片?
    • 如果不会的话,这种开销就是不可避免的,那我有啥可比性?
    sujin190
        1
    sujin190  
       2022-10-09 13:39:30 +08:00
    有没有可能进程并没有切换一说,操作系统调度的都是线程,进程只是用来定义地址空间和关联管理系统资源的
    hangbale
        2
    hangbale  
       2022-10-09 13:52:14 +08:00

    另外需要区分内核级线程和用户级线程
    kingofzihua
        3
    kingofzihua  
    OP
       2022-10-09 14:05:27 +08:00
    @sujin190 会有的,进程内单线程处理
    sujin190
        4
    sujin190  
       2022-10-09 14:13:04 +08:00
    @kingofzihua #3 不是一回事吧,就算是一个线程,内核调度器处理的也是线程,进程就是静态的和运行状态没啥关系吧,顶多优化下相同进程线程间切换不触发 TLB/cache 重置就是了,但是自身并不能影响调度吧
    guanyinli
        5
    guanyinli  
       2022-10-09 20:14:17 +08:00
    read the fucking code 就知道啦
    kingofzihua
        6
    kingofzihua  
    OP
       2022-10-11 11:47:09 +08:00
    果然,操作系统分类不是那么活跃
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3105 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 15:00 · PVG 23:00 · LAX 08:00 · JFK 11:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.