线程和进程的区别是什么小鲨鱼

计算机的核心是CPU,它承担了所有的计算任务;

操作系统是计算机的管理者,它负责任务的调度、资源的分配和管理,统领整个计算机硬件;

应用程序则是具有某种功能的程序,程序是运行于操作系统之上的;

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

进程一般由程序、数据集合和进程控制块三部分组成。程序用于描述进程要完成的功能,是控制进程执行的指令集;数据集合是程序在执行时所需要的数据和工作区;程序控制块(Program Control Block,简称PCB),包含进程的描述信息和控制信息,是进程存在的唯一标志。

进程具有的特征:

•动态性:进程是程序的一次执行过程,是临时的,有生命期的,是动态产生,动态消亡的;

•并发性:任何进程都可以同其他进程一起并发执行;

•独立性:进程是系统进行资源分配和调度的一个独立单位;

•结构性:进程由程序、数据和进程控制块三部分组成。

进程的生命周期

在早期只有进程的操作系统中,进程有五种状态,创建、就绪、运行、阻塞(等待)、退出。

•创建:进程正在创建,还不能运行。操作系统在创建进程时要进行的工作包括分配和建立进程控制块表项、建立资源表格并分配资源、加载程序并建立地址空间;

•阻塞:也叫等待状态,等待某一事件(如IO或另一个线程)执行完;

•退出:进程已结束,所以也称结束状态,释放操作系统分配的资源。

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

后来,随着计算机的发展,对CPU的要求越来越高,进程之间的切换开销较大,已经无法满足越来越复杂的程序的要求了。于是就发明了线程,线程是程序执行中一个单一的顺序控制流程,是程序执行流的最小单元,是处理器调度和分派的基本单位。一个进程可以有一个或多个线程,各个线程之间共享程序的内存空间。

一个标准的线程由线程ID、当前指令指针(PC)、寄存器和堆栈组成。而进程由内存空间(代码、数据、进程空间、打开的文件)和一个或多个线程组成。

多线程与多核 上面提到的时间片轮转的调度方式说一个任务执行一小段时间后强制暂停去执行下一个任务,每个任务轮流执行。很多操作系统的书都说“同一时间点只有一个任务在执行”。其实“同一时间点只有一个任务在执行”这句话是不准确的,至少它是不全面的。

资源分配 ?CPU调度?

首先来一句概括的总论:进程和线程都是一个时间段的描述,是CPU工作时间段的描述。是运行中的程序指令的一种描述,这需要与程序中的代码区别开来。

另外注意这里我说的进程线程概念,和编程语言中的API接口对应的进程/线程是有差异的。

一个最最基础的事实:CPU太快,太快,太快了,寄存器仅仅能够追的上他的脚步,RAM和别的挂在各总线上的设备则难以望其项背。那当多个任务要执行的时候怎么办呢?轮流着来?或者谁优先级高谁来?不管怎么样的策略,一句话就是在CPU看来就是轮流着来。这些任务,在外在表现上就仿佛是同时在执行。

线程是什么呢?进程的颗粒度太大,每次的执行都要进行进程上下文的切换。如果我们把进程比喻为一个运行在电脑上的软件,那么一个软件的执行不可能是一条逻辑执行的,必定有多个分支和多个程序段,就好比要实现程序A,实际分成 a,b,c等多个块组合而成。那么这里具体的执行就可能变成:

程序A得到CPU =》CPU加载上下文,开始执行程序A的a小段,然后执行A的b小段,然后再执行A的c小段,最后CPU保存A的上下文。

这里a,b,c的执行是共享了A进程的上下文,CPU在执行的时候仅仅切换线程的上下文,而没有进行进程上下文切换的。进程的上下文切换的时间开销是远远大于线程上下文时间的开销。这样就让CPU的有效使用率得到提高。这里的a,b,c就是线程,也就是说线程是共享了进程的上下文环境,的更为细小的CPU时间段。线程主要共享的是进程的地址空间。

到此全文结束,再一个总结:进程和线程都是一个时间段的描述,是CPU工作时间段的描述,不过是颗粒大小不同。

注意这里描述的进程线程概念和实际代码中所说的进程线程是有区别的。编程语言中的定义方式仅仅是语言的实现方式,是对进程线程概念的物化。

这个问题,是操作系统里问的最多的问题之一,也是被误解最深的概念之一。Alan Kay说过,好的角度可以提升80分的智商。理解它们的差别,我从资源使用的角度出发。所谓的资源就是计算机里的中央处理器,内存,文件,网络等等。

进程,在一定的环境下,把静态的程序代码运行起来,通过使用不同的资源,来完成一定的任务。比如说,进程的环境包括环境变量,进程所掌控的资源,有中央处理器,有内存,打开的文件,映射的网络端口等等。

这里我把进程对内存的管理稍微展开说一下。一个系统中,有很多进程,它们都会使用内存。为了确保内存不被别人使用,每个进程所能访问的内存都是圈好的。一人一份,谁也不干扰谁。还有内存的分页,虚拟地址我就不深入探讨了。这里给大家想强调的就是,进程需要管理好它的资源。

其中,线程作为进程的一部分,扮演的角色就是怎么利用中央处理器去运行代码。这其中牵扯到的最重要资源的是中央处理器和其中的寄存器,和线程的栈(stack)。这里想强调的是,线程关注的是中央处理器的运行,而不是内存等资源的管理。

当只有一个中央处理器的时候,进程中只需要一个线程就够了。随着多处理器的发展,一个进程中可以有多个线程,来并行的完成任务。比如说,一个web服务器,在接受一个新的请求的时候,可以大动干戈的fork一个子进程去处理这个请求,也可以只在进程内部创建一个新的线程来处理。线程更加轻便一点。线程可以有很多,但他们并不会改变进程对内存(heap)等资源的管理,线程之间会共享这些资源。

viho_he 说:

抛开各种技术细节,从应用程序角度讲:

1、在单核计算机里,有一个资源是无法被多个程序并行使用的:cpu。

没有操作系统的情况下,一个程序一直独占着全都cpu。

如果要有两个任务来共享同一个CPU,程序员就需要仔细地为程序安排好运行计划--某时刻cpu和由程序A来独享,下一时刻cpu由程序B来独享

而这种安排计划后来成为OS的核心组件,被单独名命为“scheduler”,即“调度器”,它关心的只是怎样把单个cpu的运行拆分成一段一段的“运行片”,轮流分给不同的程序去使用,而在宏观上,因为分配切换的速度极快,就制造出多程序并行在一个cpu上的假象。

2、在单核计算机里,有一个资源可以被多个程序共用,然而会引出麻烦:内存。

在一个只有调度器,没有内存管理组件的操作系统上,程序员需要手工为每个程序安排运行的空间 -- 程序A使用物理地址0x00-0xff,程序B使用物理地址0x100-0x1ff,等等。

然而这样做有个很大的问题:每个程序都要协调商量好怎样使用同一个内存上的不同空间,软件系统和硬件系统千差万别,使这种定制的方案没有可行性。为了解决这个麻烦,计算机系统引入了“虚拟地址”的概念,从三方面入手来做:

2.1、硬件上,CPU增加了一个专门的模块叫MMU,负责转换虚拟地址和物理地址。2.2、操作系统上,操作系统增加了另一个核心组件:memory management,即内存管理模块,它管理物理内存、虚拟内存相关的一系列事务。2.3、应用程序上,发明了一个叫做【进程】的模型,(注意)每个进程都用【完全一样的】虚拟地址空间,然而经由操作系统和硬件MMU协作,映射到不同的物理地址空间上。不同的【进程】,都有各自独立的物理内存空间,不用一些特殊手段,是无法访问别的进程的物理内存的。

PS:在有的操作系统里,进程不是调度单位(即不能被调度器使用),线程是最基本的调度单位,调度器只调度线程,不调度进程

我觉得比喻的挺好的。至于 线程是CPU的基本调度单位,也能从工人的点去理解,因为工厂里的基本单位也是人,即使分成小组,来调度,也是人为单位的。

进程是具有独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度(若不支持线程机制,进程的系统调度的单位。否则,线程是系统调度的单位)的独立单位。#### 特点

为什么引入线程 有了进程这概念之后 应用程序可以并发地去执行了 那么为什么要在进程当中再派生出线程呢?

首先我们引入了进程这个概念,虽然进程有利于资源的管理和保护。然而在实际应用中,进程有这样的问题:

引入线程有以下三个方面的考虑

线程

cpu 眼里没有进程的概念,进程只提供一个 cr3。

可以简单的理解 cpu 的调度单位是线程。

一个cpu核心有一套寄存器,可以执行一个任务(一般是线程),所以一个核心同一时刻只能运行一个线程。(不论这个线程是哪个进程的,cpu眼里没有进程的概念)。每隔一定时间(没记错的话是20ms)会切换线程(可能是同一个进程的线程,也可能是另外一个进程的线程,如果是其它进程的线程,会切换cr3)。

对于 CPU 而言,看到的是线程,多核 CPU 可以同时调度多个线程执行。我想楼主可能不是很理解线程的意义把。一个进程有多个线程的好处:对于单核 CPU 而言,CPU每次只能调度 1 个线程,但是若当前线程阻塞了, CPU 可以不必等待,而是先调用别的线程执行,这样就提高了 CPU 的利用率

最早 UNIX 的调度是以 “进程” 为最小调度单位,那个时候还没有线程的概念。线程有两种,一种是 “用户态线程” ,对内核不可见,内核不可以调度,现在一般叫做纤程或协程。另一种是 “内核态线程”,由内核调度,也称作轻量进程 LWP 。现在说的线程,一般不特殊指定,都是内核线程。能不能利用多核的关键是能不能被内核调度,既然内核态线程可以被调度,自然可以利用多核。

现代操作系统进程代表的是地址空间 (Address Space)。目的是隔离,一个进程不可以直接访问另一个进程的内存空间,这是由操作系统内核保护的。

计算机有多少个核心,意味着实际可以同时运行的了进程是多少个,cpu处理任务的顺序是时间片轮转的方式,因此造成多个进程在同时运行的假象。线程是cpu调度的基本单元,一个进程(一个核心)可以包含一到多个线程,多个线程之间可以实现部分资源的共享,多个线程的目的是为了降低颗粒度,切换时间片的成本更低,多个线程协作,更快的完成这个进程。

一个系统中,有很多进程,它们都会使用内存。为了确保内存不被别人使用,每个进程所能访问的内存都是圈好的。一人一份,谁也不干扰谁。

进程是资源分配的最小单位

线程是CPU调度的最小单位

线程:CPU的基本调度单位

进程之间不能实现资源共享,线程之间可以实现资源共享。

从cpu来讲,一个计算机的核心越多(单点时间实际可以运行的进程越多),每个核心中的线程越多(处理一个任务进程的颗粒度更细),处理能力就越强。

THE END
0.『软件工程2』详解软件工程和软件过程模型②特点:过程被描述,并得到良好理解。 ③关键过程区域:组织过程定义;组织过程焦点;培训大纲;集成软件管理;软件质量保证;软件配置管理。 (4)第四级:管理级(managed) ①定义:软件过程和产品质量的详细数据被收集,通过这些度量数据,软件过程和产品能够被定量地理解和控制。包含第三级的所有特征。 jvzquC41fg|fnxugt0gmk‚zp0eun1jwvkerf1A>8;59
1.高校德育的特点汇总十篇在自律教育方面,大学生处于青年中期,他们已经具有了独立思考和进行自我教育的能力。但是,在目前的诚信教育中,对受教育者的主体性的发挥仍然重视不够,对他们在德育过程中的主体地位有所忽视,或没有给予足够的关注。 篇(3) 一、研究生群体特征及思想概况 自1978年国内高校及科研院所开始恢复研究生招生特别是上世纪九十年代末高校大规 jvzquC41yy}/z~jujw4dqv3ep1nbq€jp1689;@3jvor
2.《PMP精讲视频》第6章时间管理阅读清单时间的特征 时间不等人 投入有上限 对谁都公平 时间管理的过程 6个过程 6.1 规划进度管理:输出进度管理计划,进度管理计划不是进度计划,包含怎么编制进度的工具,使用的方法,时间是什么单位(天、小时)等 6.2 定义活动:WBS最低层次的元素是工作包,工作包还要进一步分解成活动 6.3 排列活动顺序:活动顺序,活动间可能会jvzquC41enuvf7ygpekov7hqo1jfxnqqrgx0kw{gpvus{873:480c{ykenk03>=675=
3.四年级下册数学苏教版教学计划(通用16篇)(1)使学生联系已有的知识和经验,经历从具体问题中抽象数量关系,并探索算法和运算律的过程,掌握有关的计算方法和运算顺序,发现并初步理解一些简单的运算规律;初步认识自然数的一些特征;初步理解用字母表示数的意义和基本方法。 (2)使学生经历探索一些常见平面图形的特征以及简单变换的过程,认识三角形、平行四边形和梯形jvzquC41yy}/fr~khctxgw3eqo5gcw|gp1pjcx}wgiuoiƒzqlknvc8658564693jvor
4.研学课程设计流程范文“习而学”思想强调“习”与“学”是往复交替的过程,且学生在这个过程中应具有很强的主动性,这样才能充分锻炼他们的工程思维与创新实践能力。传统的课程设计和实验课程等实践环节,多以内容预设、时间固定和形式统一为主要特征,因此学生的实践过程处于较为被动、封闭和受约束的状态。真正有效的实践应是一种常态化的、jvzquC41yy}/i€~qq0ipo8mcqyko1;58438/j}rn
5.张树华:习近平总书记关于社会主义民主重要论述的理论创新与现实一方面,相比西式票决民主,协商民主生动展现了社会主义民主的特征和优势。全过程民主是中国社会主义民主在新时代的最新概括,充分展现了社会主义民主的鲜明特征。社会主义协商民主与全过程民主相辅相成,相得益彰,不是边界不清、前后冲突或相互替代的关系。目前理论界对全过程人民民主与社会主义民主、人民民主之间的关系的探讨jvzquC41ui4vejxu0gjv0ls1kplp1:6721982<3jvo
6.合格评定技术和方法合格评定基础学习笔记使用统计抽样的抽样方案应基于合格评定目标和抽样总体的特征。 (1)统计抽样设计使用一种基于概率论的样本选择过程。 当每个样本只有两种可能的结果时使用计数抽样。 当样本结果是连续值时使用计量抽样。 (2)抽样方案应考虑检查的结果计数的还是计量的。 当调查食品安全事件或安全漏洞的数量时,计量抽样可能更加合适。 jvzquC41yy}/elfck0tfv8nphq3976665/6/j}rn
7.会计诚信论文我国的制度安排从推进到实施是一种渐进式的协调过程,因而具有过程性的特征,这就为会计诚信丧失提供时间上的可能。实际上,会计准则与会计制度也有上述特征,毕竟他们是制度变迁的一个有机成分。中国正处在这个由计划经济向市场经济体制转轨的过渡时期,转变政府职能和转换经营机制是这一时代的主旋律,同时也经历着从关系经济向信用jvzquC41yy}/uofdkcu/exr1hctxgw4436;30qyon
8.长方体和正方体的认识教学设计(精选12篇)把握特征,培养空间观念。 教学难点: 空间观念的培养。 教学准备: 课件、模型、搭长方体的材料等。 教学过程: 一、导入 师:同学们,今天老师给大家带来了很多的数学图形,你认识它们吗?(认识) 师:那这个图形叫什么?这个呢?这个…… 师:在这些图形里,你能分辨哪些是平面图形,哪些是立体图形吗?(能) jvzquC41okv/t~nygp4dqv4lkcuywnxjglo04:<679=/j}rn
9.思想政治工作方式方法8篇精神文明创建活动和思想政治工作具有共同的特征,都具有宏观性特点,因此综合性比较强。在精神文明创建过程中,离不开党的支持与引领,需要全民参与,需要社会支持。企业思想政治工作要善于利用精神文明创建的综合性优势,在企业党委领导下,强化全员目标朝向,有效协调各部门关系,发动广大企业员工,优化企业资源配置,使各种力量有效jvzquC41yy}/kofdkcu/exr1jcuxgw46;2?30qyon