zoukankan      html  css  js  c++  java
  • 进程和线程的区别

    什么是进程?

    进程简单的讲就是计算机中的程序关于数据的一次活动,它是系统资源分配和调度的基本单位。

    进程的上下文组成:
    进程管理块包括进程的编号,状态,优先级以及正文段和数据段中的数据
    什么是正文段?
    就是存放该进程的可执行代码
    什么是数据段?
    存放进程静态产生的数据结构

    上下文还包括用户堆栈。

    线程

    线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务

    线程的基本特点
    • 线程有自己的运行线索,可完成特定任务。

    • 线程自己基本上不拥有系统资源,只拥有少量在运行中必不可少的资源(如程序计数器、一组寄存器、栈、线程信号掩码、局部线程变量和线程私有数据)。

    • 一个线程与同属一个进程的其他线程共享进程所拥有的全部资源(同一地址空间、通用的信号处理机制、数据与I/O)。

    • 可通过相互之间协同来完成进程所要完成的任务。

    线程的优点

    1.节俭。运行于一个进程的多个线程,他们之间使用相同的地址空间,而且线程间彼此切换所需的时间小于进程间切换所需的时间。据统计,一个进程的开销大约是一个线程的开销的30倍左右。

    2.线程间方便的通信方式。对于不同进程。它们具有独立的数据空间,要进行数据的传递只能通过进程间通信的方式进行,这种方式不仅费时,而且很不方便。线程则不然,由于同一进程下的线程之间共享数据空间,所以一个线程的数据可以直接为其它线程所用,这不仅快捷,而且方便。
    进程与线程结构的对比图:
    在这里插入图片描述
    他俩的区别:

    • 进程是资源调度的基本单位,线程时CPU调度的基本单位。
    • 进程是运行中的程序,线程是进程的内部的一个执行序列
    • 进程间切换代价大,线程间切换代价小
    • 进程拥有资源多,线程拥有资源少
    • 多个线程共享进程的资源
  • 相关阅读:
    WPF关于改变ListBoxItem的颜色的注意事项以及如何找到ListBox中的ItemsPanel
    WPF中关于配置文件的读取
    C++虚函数和虚函数表
    gdb调试技巧
    libevent和基于libevent的网络编程
    Reactor模式详解
    Ubuntu Linux 下文件名乱码(无效的编码)的快速解决办法
    Linux进程间通信——使用共享内存
    Linux进程间通信——使用信号量
    布隆过滤器(Bloom Filter)详解
  • 原文地址:https://www.cnblogs.com/dataoblogs/p/14121975.html
Copyright © 2011-2022 走看看