线程和进程有什么区别

进程:资源分配的最小单位,线程:程序执行的最小单位
进程有独立的地址空间,线程没有单独的地址空间。
启动一个新的进程必须分配给它独立的地址空间,建立众多的数据表来维护它的代码段、堆栈段或数据段,而运行一个进程中的多个线程,它们彼此之间使用相同的地址空间,共享大部分数据,启动一个线程所花费的时间远远小于启动一个进程所花费的时间。
通信机制:进程之间要进行数据传递只能通过通信的方式,而线程之间是共享数据空间
从函数调用上来说:进程创建使用fork()操作,线程创建使用clone()操作

笔记本上的内容:
进程和线程的主要差别在于它们是不同的操作系统资料管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其他进程产生影响,而线程只是一个进程的不同执行路径。线程有自己的堆栈和局部变量,而线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉。所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。

以前的IE就是多线程的,所以一个Tab挂掉了整个IE就挂掉了,其他的Tab也不能用了,这就是因为一个线程死掉就等于整个进程死掉。chrome是用的多进程来管理多个Tab,所以不会有这样的问题。

一个线程包含以下内容:
一个指向当前被执行指令的指令指针
一个栈
一个寄存器的集合,定义了一部分描述正在执行线程的处理器状态的值
一个私有的数据区。

Linux的进程包含以下几个关键要素:
有一段可执行程序
有专用的系统堆栈空间
内核中有它的控制块(进程控制块),描述进程占用的资源,这样,进程才能接受内核的调度。
具有独立的存储空间

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 又来到了一个老生常谈的问题,应用层软件开发的程序员要不要了解和深入学习操作系统呢? 今天就这个问题开始,来谈谈操...
    tangsl阅读 4,172评论 0 23
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,402评论 25 708
  • Object C中创建线程的方法是什么?如果在主线程中执行代码,方法是什么?如果想延时执行代码、方法又是什么? 1...
    AlanGe阅读 1,793评论 0 17
  • 很小的时候崇拜会写作的人。虽然在义务教育那九年里写了不少的作文,却很少受到老师的赞许。但是我对写作一直充满了热情,...
    闭嘴吧猴头阅读 210评论 0 0
  • 总有一天你会忘记我,会爱上此刻和你相拥的女孩子。我以后会变成你的回忆,你脑海里一缕青烟,你心中一块模糊的痕迹。
    零七七阅读 112评论 0 0