美文网首页
线程和进程有什么区别

线程和进程有什么区别

作者: yangqi916 | 来源:发表于2017-03-19 21:17 被阅读0次

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

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

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

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

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

    相关文章

      网友评论

          本文标题:线程和进程有什么区别

          本文链接:https://www.haomeiwen.com/subject/rkuvnttx.html