zoukankan      html  css  js  c++  java
  • 操作系统中线程与进程

    在传统的操作系统中,进程拥有独立的内存地址空间和一个用于控制的线程。但是,现在的情况更多的情况下要求在同一地址空间下拥有多个线程并发执行。因此线程被引入操作系统。

    进程的定义:

    (1)进程是程序在处理机上的一次执行过程。
    (2)进程是可以和背的计算并行执行的计算。
    (3)进程是程序在一个数据集合上的运行过程,是系统进行资源分配和调度的一个独立单位。
    (4)进程是一个具有一定功能的程序关于某个数据集合的一次运行活动。

    进程的结构:

    每个进程实体都由程序段、数据段和一个进程控制块(进程存在的唯一标志)组成。

    进程的状态与转换:

    三种基本状态:
    (1)就绪状态:进程已经获得除了处理机之外的所有资源,一旦获得处理机分配即可立即执行,此时进程所处的状态即为就绪状态。处于该状态的进程具备了运行条件,但是由于处理机被其他进程占用,使得其暂时不能运行处于等待分配处理机的状态。正在执行的进程如果因为时间片用完而暂停执行也会进入该状态。
    (2)执行状态(运行状态):当一个进程获得必要的资源并在处理机上执行时,此时进程所处的状态即为执行状态。
    (3)阻塞状态(等待状态、睡眠状态):正在执行的进程,由于发生某事而暂时无法继续执行(如等待输入/输出完成),此时进程所处状态即为阻塞状态。
    其他状态:
    (1)创建状态(新建状态):进程刚创建还未被放入就绪队列。
    (2)退出状态(终止状态):进程已经结束运行,释放除进程控制块之外的其他资源。
    (3)挂起状态:为了更好地管理和调度进程及适应系统的功能目标,人为加入的状态,使进程挂起。

    进程的组织方式:

    线性方式、链接方式、索引方式。


    为了使多个程序更好地并发执行,并且减少操作系统的开销。操作系统设计者引入线程,让线程完成独立调度和分配,进程只是资源分配的基本单元。


    线程的定义:

    (1)线程是进程内的一个执行单元。
    (2)线程是进程内的一个可调度实体。
    (3)线程是程序(或进程)中相对独立的一个控制流序列。
    (4)线程是执行的上下文,其含义是执行的现场数据和其他调度所需的信息(这种观点来自Linux系统)。
    即:线程是进程内一个相对独立、可调度的执行单元。线程可以和同属一个进程的其他线程共享进程所拥有的全部资源。一个线程可以创建和撤销另一个线程。

    线程作为CPU调度单位,进程作为其他资源的分配单位。

    线程与进程的比较:

    (1)调度:传统操作系统中,拥有资源和独立调度的基本单位都是进程。在引用线程的操作系统中,进程都是拥有资源的基本单位,线程不拥有系统资源(也可以有一点必不可少的资源)。
    (2)拥有资源:进程是拥有系统资源的基本单位,线程不拥有系统资源(也可以有一点必不可少的资源)。
    (3)并发性:进程间可以并发,同一进程中的多个线程之间也可以并发。
    (4)系统开销:由于创建进程或撤销进程时,系统都要为之分配或回收资源,如内存空间、I/O设备等,操作系统所付出的开销远大于创建或撤销线程时的开销。在进程切换过程中,涉及到当前执行进程CPU环境的保存及新调度到进程CPU环境的设置,而线程切换时只需要保存和设置少量寄存器内容,开销很小。由于同一进程内的多个线程共享进程的地址空间,所以这些线程之间的同步和通信非常容易实现。

  • 相关阅读:
    springboot整合mybatis采用druid连接池对mysql,hive双数据源整合并打包
    csv数据导入kudu
    Hive数据导入导出的几种方式
    【纪中受难记】——Day20:祈祷落幕时
    2017第八届蓝桥杯C/C++ B组省赛 —— 第三题:承压计算
    2017第八届蓝桥杯C/C++ B组省赛 —— 第一题:购物单
    2017第八届蓝桥杯C/C++ B组省赛 —— 第一题:购物单
    位运算的奇巧淫技
    位运算的奇巧淫技
    数据结构和算法 —— 图
  • 原文地址:https://www.cnblogs.com/zyg-/p/9642638.html
Copyright © 2011-2022 走看看