首页 > 系统相关 >线程与进程

线程与进程

时间:2022-10-22 16:01:04浏览次数:71  
标签:多线程 程序 线程 切换 进程 执行

今天我们就来主要介绍一下什么是线程和进程,线程和进程并没有表面上看起来这么简单。

一、进程

定义:进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是操作系统进行资源分配和调度的一个独立单位,是应用程序运行的载体。

特征:1.进程是程序的一次执行过程,是临时的,有生命期的,是动态产生,动态消亡的。

          2.任何进程都可以同其他进行一起并发执行。

          3.每个进程拥有独立的地址空间,地址空间包括代码区、数据区和堆栈区,进程之间的地址空间是隔离的,互不影响。

          4.进程由程序,数据和进程控制块三部分组成 。

          5.进程是操作系统进行资源分配和调度的一个独立单位。

二、线程

定义:在早期的操作系统中并没有线程的概念,进程是拥有资源和独立运行的最小单位,也是程序执行的最小单位。任务调度采用的是时间片轮转的抢占式调度方式,而进程是任务调度的最小单位,每个进程有各自独立的一块内存,使得各个进程之间内存地址相互隔离。

  后来,随着计算机的发展,对CPU的要求越来越高,进程之间的切换开销较大,已经无法满足越来越复杂的程序的要求了。于是就发明了线程,线程是进程当中的一条执行流程,是程序执行流的最小单元,是处理器调度和分派的基本单位。一个进程可以有一个或多个线程,各个线程之间共享程序的内存空间(也就是所在进程的内存空间)。一个标准的线程由线程ID,当前指令指针PC,寄存器和堆栈组成。而进程由内存空间(代码,数据,进程空间,打开的文件)和一个或多个线程组成,因此系统对线程的调度所需的成本远远小于进程。

三、线程与进程的区别

         线程具有许多传统进程所具有的特征,故又称为轻型进程(Light—Weight Process)或进程元;而把传统的进程称为重型进程(Heavy—Weight Process),它相当于只有一个线程的任务。在引入了线程的操作系统中,通常一个进程都有若干个线程,至少包含一个线程。

根本区别:进程是操作系统资源分配的基本单位,而线程是处理器任务调度和执行的基本单位(也可以理解为进程当中的一条执行流程)

资源开销:每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈                     和程序计数器(PC),线程之间切换的开销小。

包含关系:如果一个进程内有多个线程,则执行过程不是一条线的,而是多条线(线程)共同完成的;线程是进程的一部分,所以线程也被称为轻权进程或者轻量级进程。

内存分配:同一进程的线程共享本进程的地址空间和资源,而进程之间的地址空间和资源是相互独立的

影响关系:一个进程崩溃后,在保护模式下不会对其他进程产生影响,但是一个线程崩溃整个进程都死掉。所以多进程要比多线程健壮。

执行过程:每个独立的进程有程序运行的入口、顺序执行序列和程序出口。但是线程不能独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制,两者均可并发执行

调度和切换:线程上下文切换比进程上下文切换要快得多。

四、多进程与多线程      

         多进程:操作系统中同时运行的多个程序。

         多线程:在同一个进程中同时运行的多个任务。

         多线程并不能提高运行速度,但可以提高运行效率,让CPU的使用率更高。但是如果多线程有安全问题或出现频繁的上下文切换时,运算速度可能反而更低。

五、并发与并行 

         并发是指在一个时间段内有多个进程在执行。

         并行指的是在同一时刻有多个进程在同时执行。

       如果是在只有一个CPU的情况下,是无法实现并行的,因为同一时刻只能有一个进程被调度执行,如果此时同时要执行其他进程则必须上下文切换,这种只能称之为并发,而如果是多个CPU的情况下,就可以同时调度多个进程,这种就可以称之为并行。

 

参考文章:http://t.csdn.cn/PuTl2

                 http://t.csdn.cn/KKJAR

                 http://t.csdn.cn/PaEIi

                 http://t.csdn.cn/orna9

标签:多线程,程序,线程,切换,进程,执行
From: https://www.cnblogs.com/HuangCB/p/16816259.html

相关文章

  • 单核多线程可见性问题
    背景学习群上有个同学提出问题,如下截图这里可以看到分歧点,我认为JMM协议规定了工作内存,那么即使是单核,JAVA虚拟机也会保证线程本地内存变量的私有性,所以会存在不可见。......
  • java线程的优先级
    packageA_ShangGuiGu.Thread.ThreadDemo;/***优先级*1.MAX_Priority-----最大优先级为10*2.MIN_Priority-----最小优先级为1*3.NORM_Priority----默认优先级5*4......
  • Linux进程(一)
    操作系统概念:操作系统是管理计算机硬件与软件资源的计算机程序,简称OS。为什么要有操作系统:1.给用户提供稳定、高效和安全的运行环境,为程序员提供各种基本功能(OS不信任任......
  • 3_linux多线程
    3_linux多线程编程基本概念程序执行的最小单位进程是线程的容器,不是基本执行单位,是线程容器线程是进程中的不同执行路径,有独立的堆栈、局部变量(因为线程需要线程函数)......
  • 驱动开发:内核枚举进程与线程ObCall回调
    在笔者上一篇文章《驱动开发:内核枚举Registry注册表回调》中我们通过特征码定位实现了对注册表回调的枚举,本篇文章LyShark将教大家如何枚举系统中的ProcessObCall进程回调......
  • 驱动开发:内核枚举进程与线程ObCall回调
    在笔者上一篇文章《驱动开发:内核枚举Registry注册表回调》中我们通过特征码定位实现了对注册表回调的枚举,本篇文章LyShark将教大家如何枚举系统中的ProcessObCall进程回调以......
  • Java多线程(1):线程生命周期
    您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来~ 从事Java开发这些年来,如果要问我Java当中最难的部分是什么?最有意思的部分是什么?最多人讨论的部分是什么?那我会毫不犹豫......
  • 各种线程状态的打断方法
    一、方法方法名static功能说明注意run()新线程启动后会调用的方法,线程之间串行如果在构造Thread对象时传递了Runnable参数,则线程启动后会调用Runnabl......
  • 进程与线程的区别
    简单介绍一、线程的基本概念线程是进程中执行运算的最小单位,是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少......
  • 进程与线程的区别
    进程是操作系统分配资源的基本单位,而线程是操作系统调度的基本单位。一个进程中至少包含一个线程,线程不能独立于进程而存在。进程不能共享资源,而线程可以。线程可以看作是......