zoukankan      html  css  js  c++  java
  • 进程与线程的区别与联系

    定义:
    进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。
    线程是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。
    区别:
    进程和线程的主要差别在于它们是不同的操作系统资源管理方式。
    进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响。
    线程是进程的一个实体,是一个进程中的不同执行路径,一个进程至少有一个线程。线程没有独立的地址空间,只有自己的堆栈和局部变量,与同属一个进程的其他的线程共享地址空间。一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮。但在进程切换时,耗费资源较大,效率要差一些。对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。
    优缺点:
    线程和进程在使用上各有优缺点:线程执行开销小,但不利于资源的管理和保护;而进程正相反。
    进程的三种状态:
    就绪(Ready)状态:当进程已分配到除CPU以外的所有必要的资源,只要获得CPU时间片便可立即执行,这时的进程状态称为就绪状态。
    执行(Running)状态:当进程已获得CPU时间片,其程序正在处理机上执行,此时的进程状态称为执行状态。
    阻塞(Blocked)状态:正在执行的进程,由于等待某个事件发生而无法执行时,便放弃CPU时间片而处于阻塞状态。引起进程阻塞的事件可有多种,例如,等待I/O完成、申请缓冲区不能满足、等待信件(信号)等。
    进程不能从阻塞状态直接进入运行状态,因为进程每次要执行的时候都需要进行一系列的准备,只有准备好后才能执行。

  • 相关阅读:
    动态库 DLL 封装二:dll封装方法
    动态库 DLL 封装一:dll分类
    C++读取配置文件ini
    WCHAR 字符串拼接
    关于web桌面应用的集成解决方案
    CSS Grid网格布局(转)
    使用 antd 的 form 组件来自定义提交的数据格式
    syslogd日志的一些作用
    我的三年感悟——避免无尽的自我内耗
    《被讨厌的勇气》读后感
  • 原文地址:https://www.cnblogs.com/xidian2014/p/8504259.html
Copyright © 2011-2022 走看看