进程和线程

参考文献:    
  https://www.quora.com/What-is-the-difference-between-a-process-and-a-thread
  http://newsmth.net/nForum/#!article/CSArch/45612

进程与线程


虚拟内存和虚拟处理器是现代操作系统中最主要的两种虚拟抽象。对于一个运行的程序,这两者都提供了它独占系统资源的的假象。虚拟内存提供了程序从“内存”到物理RAM或者磁盘存储(swap space)上的无缝地址映射。而虚拟处理器则让程序以为它们单独享有一个处理器,而实际上多个程序是在多个处理器上多任务处理的。

进程是内存管理上的概念,线程是处理器管理上的概念。

进程是对一个运行的程序的抽象,是内存分配的最小单元,包括了 一个二进制映像,虚拟内存,内核资源,上下文等等。线程是一个程序中最小的执行单元,包括了逻辑处理器,栈,程序状态。一个进程可以包含一个或多个线程,因此,在一个进程内的多个线程共享一块内存地址空间。反过来,每个线程与不同的逻辑处理器相关联,是一个独立的调度实体。
每个进程有一个独立的虚拟地址空间,OS会在页表中有个总入口来遍历追踪这个进程的地址空间,cpu电路里有tlb来加速查找。一个进程里的多个线程就是多个执行路径,每个硬件单线程核心同一时刻只在执行同一个线程里的多条代码,每个硬件多线程核心同一时刻流水线里可能有多个线程的多条代码在执行。硬件多线程的目的就是充分将流水线填满,因为某个线程里的指令可能很多时候填不满流水线,比如访存等待,跳转排空等,此时由硬件自动载入另一个线程的指令利用这些空隙。cpu不管其正在执行的线程属于哪个进程。调度器按照优先级等规则轮番调度多个线程执行。

线程的引入为编程提供了以下一些优点:

  1. 编程抽象性:在很多问题中,我们都会将一个任务分成很多小块,再把每个小块安排给每一个执行单元(线程)。很多编程模式都利用了这一点,如reactor(反应器模式),thread-per-connection,线程池等。多线程给程序提供了更好的抽象性,但也有人认为
  2. 并行性:多核CPU时代,线程提供了一个非常有效地实现真正意义上的并行的方式。线程是一个独立的调度实体,并且拥有一个独立的逻辑处理器,因此,多个线程(并不一定属于同一个进程)可以同时运行再多个逻辑处理器上,提高系统处理效率。
  3. I/O阻塞:当I/O发生阻塞时,如果没有线程,进程会陷入长时间的等待。而在多线程程序内,等待的线程会进入睡眠状态,而其它的线程可以继续执行。异步和非阻塞I/O模型也是这种问题的一种解决方式。
  4. 节约内存:同一进程内的线程能高效地进行内存共享,相比于多进程能有效地节约内存空间。

多线程程序与多进程程序的优劣

  1. 线程比进程更轻量级,创建和撤销的代价小,内存、资源占用小。
  2. 线程的切换代价要比进程切换的代价小。
  3. 多线程再数据共享方面效率高很多,进程间通信需要通过信号,套接字,文件,管道等方式进行。反过来说,线程的数据共享也导致了在设计多线程程序时需要考虑同步锁,死锁等问题。
  4. 进程间相互隔离,稳定性更强。

用户级线程和内核线程的区别


内核线程是在操作系统内核中调度的,而用户级线程是在用户空间由程序本身进行调度的。通常情况下是作为一种语言特性提供的,如Golang的routine。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,948评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,371评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,490评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,521评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,627评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,842评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,997评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,741评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,203评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,534评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,673评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,339评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,955评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,770评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,000评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,394评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,562评论 2 349

推荐阅读更多精彩内容