线程与进程区别
进程与线程
Process类常用属性和方法
Basepriority 进程优先级(只读) Priortyclass 设置或更改进程优先级 ExitCode 获取关联进程终止时指定的值 一般为0表 明进程成功退出 ExitTime 退出时间 HasExited 是否已终止 Id 进程唯一的标示符 MachineName 进程所运行的计算机名(本机名: Environment.machinename)
线程同步
• 当多个线程要对同一资源进行访问时,会出现如下问题: • 线程1在操作变量1,但线程1对变量1的操作没完成时,线 程1执行的时间已到,执行权交给线程2,此时线程2读取 变量1时读取的就是未知或者错误的数据。 • 要解决这一问题,.NET提供了很多方法,最简单的还是 lock • Lock’可以锁定某一变量,使得锁定范围内的代码期间只 能被一个单一线程操作(进入),操作完成后,其他线程 才可以进入执行。 • Demo 使用Lock实现线程同步 一个经典的多人同时提款 问题
• Demo:在线程池中执行任务
BackGroundWorker组建
• 当某些代码或者任务耗时比较长时,我们需要将 这些任务放在线程内执行,以避免影响主线程与 用户的交互。 • 这些工作用线程即可以实现,但在.NET中提供了 一个BackGroundWorker组件,专门用于完成这 些需要在后台线程内执行的工作,并可以通知主 线程任务进度及发送任务完成的消息。 • BackGroundWorker可以通过编程创建,也可以 通过工具箱拖放创建。
• GetProcessById 通过ID获取对应进程 • GetProcesses 获取本机所有进程 • Start 启动一个新进程
• DEMO 进程管理 启动和停止进程
请阐述进程、程序、线程的异同点。
请阐述进程、程序、线程的异同点。
进程、程序、线程都是计算机领域中常用的概念,它们之间的关系如下:
进程是操作系统中的一个概念,它是指在运行中的一个程序的实例。
每个进程都有自己的地址空间、内存和 CPU 时间片等资源。
进程之间是互相独立的,彼此之间不会相互干扰。
程序是指一组有序的指令集合,是静态的概念。
程序只有在运行中才会成为进程,程序本身不占有 CPU 时间,只有进程才能占有 CPU 时间。
线程是进程中的一个执行路径,是一种轻量级的进程,它共享进程的资源,但是有自己的堆栈和私有的寄存器。
线程之间共享进程的地址空间和进程打开的文件等资源,可以实现多任务的并发执行,提高了程序的效率。
综上所述,进程、程序、线程都是计算机中重要概念,它们之间的关系是进程包含程序,程序需要运行成进程,进程中包含线程。
进程是资源分配的基本单位,而线程是 CPU 调度的基本单位,它们各有优缺点,需要根据实际情况来选择使用。
- 1 -。
进程、线程、管程三者之间的关系
进程、线程、管程三者之间的关系首先我们先了解进程、线程、管程各自的概念:进程:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。
它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。
线程:线程是进程中的实体,一个进程可以拥有多个线程,一个线程必须有一个父进程。
线程不拥有系统资源,只有运行必须的一些数据结构;它与父进程的其它线程共享该进程所拥有的全部资源。
线程可以创建和撤消线程,从而实现程序的并发执行。
一般,线程具有就绪、阻塞和运行三种基本状态。
管程:管程定义了一个数据结构和能为并发进程所执行的一组操作,这组操作能同步进程和改变管程中的数据。
现在我们来了解进程和线程的关系:简而言之,一个进程至少有一个线程. 线程的划分尺度小于进程,使得多线程程序的并发性高。
另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。
线程在执行过程中与进程还是有区别的。
每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。
但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。
但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。
这就是进程和线程的重要区别。
进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行。
下面我们用实际图解来加以分析进程和线程之间的关系:这副图是一个双向多车道的道路图,假如我们把整条道路看成是一个“进程”的话,那么图中由白色虚线分隔开来的各个车道就是进程中的各个“线程”了。
操作系统中的进程与线程区别
操作系统中的进程与线程区别在操作系统中,进程和线程是两个重要的概念。
它们都是操作系统进行任务管理和资源分配的基本单位,但在很多方面存在着区别。
本文将从不同角度详细讨论进程与线程的区别。
一、定义和概念进程是指在操作系统中正在运行的程序。
一个进程可以包含多个线程,它们共享进程的资源,如内存、文件和网络连接等。
每个进程都有自己的地址空间和系统资源。
线程是进程的执行单元。
一个进程可以包含多个线程,它们共享进程的上下文、数据和资源。
线程是进程中的一个实体,通过执行线程代码来完成特定的任务。
二、调度和执行1. 线程是调度和执行的基本单位,进程是资源分配的基本单位。
线程的创建、撤销、切换和同步的开销比进程小,因此操作系统可以更高效地实现线程的调度和执行。
2. 在多核处理器上,多个线程可以并行执行,从而提高系统的并发性和性能。
而进程只能在一个处理器上执行,无法实现真正的并行执行。
三、内存和资源1. 各个线程共享进程的地址空间。
线程可以访问进程的全局变量和堆上的动态内存,也可以共享打开的文件和网络连接等资源。
2. 各个进程拥有独立的地址空间。
不同进程的内存空间相互隔离,彼此之间不能直接访问。
四、通信和同步1. 线程之间共享数据和通信更加方便快捷。
线程可以直接读写进程的共享内存,因此在线程之间进行通信和数据共享的开销比较小。
2. 进程之间通信和数据共享的代价比较大。
进程之间需要通过进程间通信(Inter-Process Communication,IPC)的方式来进行数据交换和通信。
3. 线程之间的同步更加容易,可以使用锁、信号量等机制来实现线程之间的互斥和同步。
而进程之间的同步则需要使用更复杂的机制,如管道、消息队列和信号等。
五、容错性和稳定性1. 一个线程的崩溃通常会导致整个进程的崩溃。
由于线程共享进程的资源,一个线程的错误或异常可能会影响到整个进程的稳定性。
2. 进程之间通常具有较好的容错性。
一个进程的崩溃不会影响其他进程的稳定性,操作系统可以通过重新启动新的进程来替代崩溃的进程。
进程与线程的区别[试题]
进程与线程的区别[试题]进程与线程的区别:通俗的解释一个系统运行着很多进程,可以比喻为一条马路上有很多马车不同的进程可以理解为不同的马车而同一辆马车可以有很多匹马来拉----这些马就是线程假设道路的宽度恰好可以通过一辆马车道路可以认为是临界资源那么马车成为分配资源的最小单位(进程) 而同一个马车被很多匹马驱动(线程)----即最小的运行单位每辆马车马匹数>=1所以马匹数=1的时候进程和线程没有严格界限,只存在一个概念上的区分度马匹数>1的时候才可以严格区分进程和线程专业的解释:简而言之,一个程序至少有一个进程,一个进程至少有一个线程.线程的划分尺度小于进程,使得多线程程序的并发性高。
另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。
线程在执行过程中与进程还是有区别的。
每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。
但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。
但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。
这就是进程和线程的重要区别。
进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行进程和线程的主要差别在于它们是不同的操作系统资源管理方式。
进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。
进程和线程面试题
进程和线程⾯试题1、线程和进程线程:线程是进程的⼀个实体,是CPU调度和分派的基本单元。
进程:进程是具有⼀定独⽴功能的程序,它是系统进程资源分配和调度的⼀个独⽴单元。
区别:(1)⼀个线程只属于⼀个进程,⼀个进程包含⼀个或者多个线程。
(2)进程拥有独⽴的内存单元,⽽多个线程共享内存。
(3)进程的创建调⽤fork或者vfork,⽽线程的创建调⽤pthead_create,进程结束后它拥有的所有线程都将销毁,⽽线程的结束不会影响同个进程中的其他线程的结束。
(4)线程是轻量级的进程,它的创建和销毁所需要的时间⽐进程⼩很多,所有操作系统中的执⾏功能都是创建线程去完成的。
(5)线程中执⾏时⼀般都要进⾏同步和互斥,因为他们共享同⼀进程的资源。
2、死锁?死锁产⽣的原因?死锁的必要条件?怎么处理死锁?死锁:死锁是指两个或者两个以上的进程在执⾏过程中,由于竞争资源或者由于彼此通信⽽造成的⼀种阻塞的现象。
死锁原因:系统资源不⾜、相互竞争资源。
请求资源顺序不当死锁的必要条件:1.互斥条件:⼀个资源每次只能被⼀个进程使⽤。
2.请求和保持条件:⼀个进程因请求资源⽽阻塞时,对已获得的资源保持不放。
3.不可剥夺条件:进程已获得的资源,在未使⽤完之前,不能强⾏剥夺,只能在进程使⽤完时由⾃⼰释放。
4.循环等待条件:若⼲进程之间形成⼀种头尾相接的循环等待资源关系。
避免死锁的⽅法:因为互斥是不可改变的,所以只能破坏其他三个条件中的⼀个来解除死锁,⽅法:剥夺资源、杀死其中⼀个线程。
避免死锁最简单的⽅法就是阻⽌循环等待条件,将系统中所有的资源设置标志位、排序,规定所有的进程申请资源必须以⼀定的顺序做操作来避免死锁。
3、如何在Java中实现线程?(1)继承Thread类(2)实现Runnable接⼝(3)实现Callable接⼝通过FutureTask包装器来创建Thread线程(4)使⽤ExecutorService、Callable、Future实现有返回结果的多线程4、⽤Runnable还是Thread?Java不⽀持类的多重继承,但允许你调⽤多个接⼝(当然是调⽤Runnable接⼝更好)5、Thread类中start()和run()⽅法有什么区别?(1)start()⽅法被⽤来启动新创建的线程,⽽start()内部调⽤了run()⽅法。
进程与线程的定义、关系及区别
进程与线程的定义、关系及区别进程与线程的定义、关系及区别⼀、进程的定义进程:指在系统中能独⽴运⾏并作为资源分配的基本单位,它是由⼀组机器指令、数据和堆栈等组成的,是⼀个能独⽴运⾏的活动实体。
进程⼀般有三个状态:就绪状态、执⾏状态和等待状态【或称阻塞状态】;进程只能由⽗进程建⽴,系统中所有的进程形成⼀种进程树的层次体系;挂起命令可由进程⾃⼰和其他进程发出,但是解除挂起命令只能由其他进程发出。
进程控制块(PCB):PCB不但可以记录进程的属性信息,以便对进程进⾏控制和管理,⽽且PCB标志着进程的存在,操作系统根据系统中是否有该进程的进程控制块PCB⽽知道该进程存在与否。
系统建⽴进程的同时就建⽴该进程的PCB,在撤销⼀个进程时,也就撤销其PCB,故进程的PCB对进程来说是它存在的具体的物理标志和体现。
⼀般PCB包括以下三类信息:进程标识信息;处理器状态信息;进程控制信息。
由程序段、相关的数据段和PCB三部分构成了进程实体(⼜称进程印像),⼀般,我们把进程实体就简称为进程。
进程的特征:1.动态性:进程的实质是程序的⼀次执⾏过程,进程是动态产⽣,动态消亡的。
2.并发性:任何进程都可以同其他进程⼀起并发执⾏。
3.独⽴性:进程是⼀个能独⽴运⾏的基本单位,同时也是系统分配资源和调度的独⽴单位。
4.异步性:由于进程间的相互制约,使进程具有执⾏的间断性,即进程按各⾃独⽴的、不可预知的速度向前推进。
⼆、线程的定义线程:线程是进程中的⼀个实体,作为系统调度和分派的基本单位。
线程的性质:1.线程是进程内的⼀个相对独⽴的可执⾏的单元。
若把进程称为任务的话,那么线程则是应⽤中的⼀个⼦任务的执⾏。
2.由于线程是被调度的基本单元,⽽进程不是调度单元。
所以,每个进程在创建时,⾄少需要同时为该进程创建⼀个线程。
即进程中⾄少要有⼀个或⼀个以上的线程,否则该进程⽆法被调度执⾏。
3.进程是被分给并拥有资源的基本单元。
同⼀进程内的多个线程共享该进程的资源,但线程并不拥有资源,只是使⽤他们。
进程和线程的区别
进程和线程的区别进程:指在系统中正在运⾏的⼀个应⽤程序;程序⼀旦运⾏就是进程;或者更专业化来说:进程是指程序执⾏时的⼀个实例,即它是程序已经执⾏到课中程度的数据结构的汇集。
从内核的观点看,进程的⽬的就是担当分配系统资源(CPU时间、内存等)的基本单位。
线程:系统分配处理器时间资源的基本单元,或者说进程之内独⽴执⾏的⼀个单元执⾏流。
进程——资源分配的最⼩单位,线程——程序执⾏的最⼩单位。
线程进程的区别体现在4个⽅⾯:1、因为进程拥有独⽴的堆栈空间和数据段,所以每当启动⼀个新的进程必须分配给它独⽴的地址空间,建⽴众多的数据表来维护它的代码段、堆栈段和数据段,这对于多进程来说⼗分“奢侈”,系统开销⽐较⼤,⽽线程不⼀样,线程拥有独⽴的堆栈空间,但是共享数据段,它们彼此之间使⽤相同的地址空间,共享⼤部分数据,⽐进程更节俭,开销⽐较⼩,切换速度也⽐进程快,效率⾼,但是正由于进程之间独⽴的特点,使得进程安全性⽐较⾼,也因为进程有独⽴的地址空间,⼀个进程崩溃后,在保护模式下不会对其它进程产⽣影响,⽽线程只是⼀个进程中的不同执⾏路径。
⼀个线程死掉就等于整个进程死掉。
2、体现在通信机制上⾯,正因为进程之间互不⼲扰,相互独⽴,进程的通信机制相对很复杂,譬如管道,信号,消息队列,共享内存,套接字等通信机制,⽽线程由于共享数据段所以通信机制很⽅便。
3、体现在CPU系统上⾯,线程使得CPU系统更加有效,因为操作系统会保证当线程数不⼤于CPU数⽬时,不同的线程运⾏于不同的CPU 上。
4、体现在程序结构上,举⼀个简明易懂的列⼦:当我们使⽤进程的时候,我们不⾃主的使⽤if else嵌套来判断pid,使得程序结构繁琐,但是当我们使⽤线程的时候,基本上可以甩掉它,当然程序内部执⾏功能单元需要使⽤的时候还是要使⽤,所以线程对程序结构的改善有很⼤帮助。
什么情况下使⽤进程个线程:1、需要频繁创建销毁的优先使⽤线程;因为对进程来说创建和销毁⼀个进程代价是很⼤的2、线程的切换速度快,所以在需要⼤量计算,切换频繁时⽤线程,还有耗时的操作使⽤线程可提⾼应⽤程序的响应3、因为对CPU系统的效率使⽤上线程更占优,所以可能要发展到多机分布的⽤进程,多核分布⽤线程4、并⾏操作时使⽤线程,如C/S架构的服务器端并发线程响应⽤户的请求5、需要更稳定安全时,适合选择进程;需要速度时,选择线程更好因为我的项⽬中需要对数据段的数据共享,可以被多个程序所修改,所以使⽤线程来完成此操作,⽆需加⼊复杂的通信机制,使⽤进程需要添加复杂的通信机制实现数据段的共享,增加了我的代码的繁琐,⽽且使⽤线程开销⼩,项⽬运⾏的速度快,效率⾼。
简述进程与线程的区别
简述进程与线程的区别在操作系统中,你知道进程与线程的区别有哪些?下面是店铺为你整理的简述进程与线程的区别,供大家阅览!进程与线程的区别进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。
线程是进程的一个实体, 是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。
一个线程可以创建和撤销另一个线程,同一个进程中的多个线程之间可以并发执行。
进程和线程的主要差别在于它们是不同的操作系统资源管理方式。
进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。
线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。
但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。
进程是什么?程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就称之为进程。
程序和进程的区别就在于:程序是指令的集合,它是进程运行的静态描述文本;进程是程序的一次执行活动,属于动态概念。
在多道编程中,我们允许多个程序同时加载到内存中,在操作系统的调度下,可以实现并发地执行。
这是这样的设计,大大提高了CPU的利用率。
进程的出现让每个用户感觉到自己独享CPU,因此,进程就是为了在CPU上实现多道编程而提出的。
有了进程为什么还要线程?进程有很多优点,它提供了多道编程,让我们感觉我们每个人都拥有自己的CPU和其他资源,可以提高计算机的利用率。
很多人就不理解了,既然进程这么优秀,为什么还要线程呢?其实,仔细观察就会发现进程还是有很多缺陷的,主要体现在两点上:进程只能在一个时间干一件事,如果想同时干两件事或多件事,进程就无能为力了。
进程和线程的区别和联系
进程和线程的区别和联系
联系:1、线程是进程的最⼩执⾏和分配单元,不能独⽴运动,必须依赖于进程,这也就可以说众多的线程组成了进程
2、同⼀个进程中的线程是共享内存资源的,⽐如全局变量,每⼀个线程都可以改变其共同进程中的全局变量的数据
区别:1、进程是程序在系统上进⾏顺序执⾏的动态活动。
程序加载到内存,系统为其分配内存空间⽽执⾏,⽽这种执⾏的程序称之为进程(程序是指令的集合,是程序运⾏的静态描述⽂本)
2、进程是操作系统进⾏分配(⽐如内存)的最基本单位,线程是cpu能够进⾏调度和分派的最基本单位
3、进程下管理的最底层单位是线程,在等级上,进程明显⼤于线程
4、⼀个程序可以有多个进程,⼀个进程可以有多个线程(⼀个进程⾥⾄少有⼀个线程),进程是拥有其独⽴的内存单元地址空间,⽽线程共享进程中的资源,所以极⼤的提⾼了程序的运⾏效率
5、线程基本不拥有系统资源,它与其他线程共享同⼀进程所拥有的共同资源。
由于线程⽐进程⼩,且基本不拥有系统资源,因此对其调度的开销会很⼩,从⽽极⼤的提⾼了对系统资源的利⽤率
6、当服务器需要响应多个⽤户请求时,如果创建多个进程,由于进程与进程之间是相互独⽴的,会过多的占⽤内存空间,降低服务器的响应速度,但线程是共享同⼀进程中的资源的,使⽤线程会提⾼系统的并发型。
进程、线程、协程之概念理解+线程和进程各自有什么区别和优劣
进程、线程、协程之概念理解+线程和进程各⾃有什么区别和优劣⼀、概念⾸先,根据图了解⼀下串⾏,并⾏和并发的基本概念: 1、进程 资源分配的基本单位进程(Process)是计算机中的程序关于某数据集合上的⼀次运⾏活动,是系统进⾏资源分配和调度的基本单位,是操作系统结构的基础。
在早期⾯向进程设计的计算机结构中,进程是程序的基本执⾏实体;在当代⾯向线程设计的计算机结构中,进程是线程的容器。
程序是指令、数据及其组织形式的描述,进程是程序的实体。
Linux系统函数fork()可在⽗进程中创建⼀个⼦进程,在⽗进程接到新请求时,复制出⼀个⼦进程来处理,即⽗进程监控请求,⼦进程处理,实现并发处理。
注意:必须是Linux系统,windows不能⽤fork。
组成进程是⼀个实体。
每⼀个进程都有它⾃⼰的地址空间,⼀般情况下,包括⽂本区域(text region)、数据区域(data region)和堆栈(stack region)。
⽂本区域存储处理器执⾏的代码;数据区域存储变量和进程执⾏期间使⽤的动态分配的内存;堆栈区域存储着活动过程调⽤的指令和本地变量。
特征动态性:进程的实质是程序在多道程序系统中的⼀次执⾏过程,进程是动态产⽣,动态消亡的。
并发性:任何进程都可以同其他进程⼀起并发执⾏独⽴性:进程是⼀个能独⽴运⾏的基本单位,同时也是系统分配资源和调度的独⽴单位;异步性:由于进程间的相互制约,使进程具有执⾏的间断性,即进程按各⾃独⽴的、不可预知的速度向前推进结构特征:进程由程序、数据和进程控制块三部分组成。
多个不同的进程可以包含相同的程序:⼀个程序在不同的数据集⾥就构成不同的进程,能得到不同的结果;但是执⾏过程中,程序不能发⽣改变。
进程的⼏种状态(1)run(运⾏状态):正在运⾏的进程或在等待队列中等待的进程,等待的进程只要以得到cpu就可以运⾏(2)Sleep(可中断休眠状态):相当于阻塞或在等待的状态(3)D(不可中断休眠状态):在磁盘上的进程(4)T(停⽌状态):这中状态⽆法直观的看见,因为是进程停⽌后就释放了资源,所以不会留在linux中(5)Z(僵⼫状态):⼦进程先与⽗进程结束,但⽗进程没有调⽤wait或waitpid来回收⼦进程的资源,所以⼦进程就成了僵⼫进程,如果⽗进程结束后任然没有回收⼦进程的资源,那么1号进程将回收 2、线程 CPU调度和分配的基本单位,程序执⾏的最⼩单位。
进程和线程的区别
进程和线程的区别进程是什么?进程是⼀个具有⼀定独⽴功能的程序在⼀个数据集上的⼀次动态执⾏的过程,是操作系统进⾏资源分配和调度的⼀个独⽴单位,是应⽤程序运⾏的载体。
进程是⼀种抽象的概念,所以,进程也是资源分配的最⼩单位,每个进程有各⾃独⽴的⼀块内存,使得各个进程之间内存地址相互隔离进程⼀般由程序,数据集合进程控制块三部分组成(PCB)程序⽤于描述进程要完成的功能,是控制进程执⾏的指令集;数据集合是程序在执⾏时所需要的数据和⼯作区;程序控制块包含进程的描述信息和控制信息,是进程存在的唯⼀标志线程是什么线程作为进程的⼀部分,扮演的⾓⾊就是怎么利⽤中央处理器去运⾏代码。
这其中牵扯到的最重要资源的是CPU和其中的寄存器,和线程的栈(stack)。
线程是程序执⾏中⼀个单⼀的顺序控制流程,是程序执⾏流的最⼩单元,是处理器调度和分派的基本单位。
⼀个进程可以有⼀个或多个线程,各个线程之间共享程序的内存空间(也就是所在进程的内存空间)。
⼀个标准的线程由线程ID,当前指令指针PC,寄存器和堆栈组成。
⽽进程由内存空间(代码,数据,进程空间,打开的⽂件)和⼀个或多个线程组成。
线程是进程的⼀部分,⼀个线程只能属于⼀个进程,⽽⼀个进程可以有多个线程,但⾄少有⼀个线程线程和进程的关系和区别再说进程进程的5个特点动态性:进程的实质是程序在多道操作系统中的⼀次执⾏过程,进程是动态产⽣,动态消亡的。
并发性:任何进程都可以同其他进程⼀起并发执⾏独⽴性:进程是⼀个能独⽴运⾏的基本单位,同时也是系统分配资源和调度的独⽴单位;异步性:由于进程间的相互制约,使进程具有执⾏的间断性,即进程按各⾃独⽴的、不可预知的速度向前推进结构特征:进程由程序、数据和进程控制块三部分组成。
多个不同的进程可以包含相同的程序:⼀个程序在不同的数据集⾥就构成不同的进程,能得到不同的结果;但是执⾏过程中,程序不能发⽣改变。
进程的3种基本状态就绪(Ready)状态:指进程已处于准备好运⾏的状态,及进程已经分配到需要的系统资源,只要在获得CPU就可以执⾏执⾏(Running)状态:指进程获得了CPU正在执⾏,在单处理机系统中,最多只有⼀个进程处于该状态阻塞(Block)状态:指正在执⾏的进程,在执⾏过程中发⽣了某时间(如:I/O请求、申请缓冲区失败等)进程的5种状态--3+2为满⾜进程控制块pcb对数据及操作的完整性要求以及增强管理的灵活性,通常在引⼊两种状态:创建状态和终⽌状态创建状态:创建⼀个进程要经过以下⼏步:⾸先进程申请⼀个空⽩PCB,并向PCB中填写⽤于控制和管理进程的信息然后为该进程分配运⾏时所必须的资源最后把该进程转⼊就绪状态并插⼊就绪队列引⼊创建状态是为了保证进程的调度必须是在创建⼯作完成之后终⽌状态:进程的终⽌状态有以下两步:⾸先,等待操作系统做善后处理最后将其PCB清零,并将PCB空间返还给系统当⼀个进程达到了⾃然结束点或是出现了⽆法克服的错误,或是被操作系统终结,则进⼊终⽌状态。
进程和线程的异同点
线程,进程和程序的简单比较
我对于线程,进程的概念一直都是比较模糊,最近整理了一下。总结起来就是,线程是进程的一部分,进程是程序的一部分。
线程的引入:例如,有一个Web服务器要进程的方式并发地处理来自不同用户的网页访问请求的话,可以创建父进程和多个子进程的方式来进行处理,但是创建一个进程要花费较大的系统开销和占用较多的资源。除外,这些不同的用户子进程在执行的时候涉及到进程上下文切换,上下文切换是一个复杂的过程。所以,为了减少进程切换和创建的开销,提高执行效率和节省资源,人们在操作系统中引入了"线程(thread)"的概念。
总结:
线程是进程的一部分,进程是程序的一部分。
****************************************************************
1、线程是进程的一部分,所以线程有的时候被称为是轻权进程或者轻量级进程。
2、一个没有线程的进程是可以被看作单线程的,如果一个进程内拥有多个进程,进程的执行过程不是一条线(线程)的,而是多条线(线程)共同完成的。
3、系统在运行的时候会为每个进程分配不同的内存区域,但是不会为线程分配内存(线程所使用的资源是它所属的进程的资源),线程组只能共享资源。那就是说,出了CPU之外(线程在运行的时候要占用CPU资源),计算机内部的软硬件资源的分配与线程无关,线程只能共享它所属进程的资源。
(c) 线程和子进程共享父进程中的资源;线程和子进程独立于它们的父进程,竞争使用处理器资源;线程和子进程的创建者可以在线程和子进程上实行某些控制,比如,创建者可以取消、挂起、继续和修改线程和子进程的优先级;线程和子进程可以改变其属性并创建新的资源。
操作系统简单题汇总
操作系统简单题汇总1.什么是进程?什么是线程?进程与线程有何区别?答:进程是具有独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和度的独立单位。
线程有时称轻量级进程,进程中的一个运行实体,是一个CPU调度单位,资源的拥有者还是进程或称任务。
进程和线程的不同之处可从以下四个方面比较:(1)调度:线程作为调度的基本单位,同进程中线程切换不引起进程,当不同进程的线程切换才引起进程切换;进程作为拥有资源的基本单位。
(2)并发性:一个进程间的多个线程可并发。
(3)拥有资源:线程仅拥有隶属进程的资源;进程是拥有资源的独立单位。
(4)系统开销:进程大;线程小。
2.什么叫设备独立性?如何实现设备独立性?答:为了提高系统的可适应性和可扩展性,应用程序应独立于具体使用的物理设备,这就是所谓的设备独立性,也称设备无关性。
答:为了解决碎片问题,可采用的一种方法是,将内存中的所有作业进行移动,使它们相邻接。
这样,原来分散的多个小分区便拼接成一个大分区,从而就可以把作业装入运行,这种通过移动,把多个分散的小分区拼接成大分区的方法被称为紧凑。
进行接凑的目的是为了提高内存的利用率。
4.对空闲磁盘空间的管理常采用哪几种分配方式?在UNI某系统中又是采用何种分配方式?答:空闲表法、空闲链表法、位示图法和成组链接法。
在UNI某系统中采用成组链接法。
5.进程有那三种基本状态它们之间相互转换的原因是什么6.试说明UNI某系统中所采用的混合索引分配方式。
7.为什么说SPOOLING系统是“伪脱机输入输出”系统?。
8.分页和分段存储管理有何区别?9.试画出进程的基本状态图,并注明状态转换的典型原因。
10.什么是死锁?产生死锁的根本原因是什么?11.什么叫设备独立性?如何实现设备独立性?12.试说明分页地址映射的基本原理。
13.简述死锁产生的原因及必要条件,解决死锁的办法有哪些?答:死锁是指多个进程因竞争资源而造成的一种僵局,若无外力作用,这些进程将永远不能再向前推进。
进程与线程
一:线程与进程1.概念线程:是程序执行流的最小单元,是系统独立调度和分配CPU (独立运行)的基本单位。
【操作系统技术中的术语,是操作系统能够进行运算调度的最小单位,它被包涵在进程之中,是行程中的实际运作单位。
一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并行多个线程,每条线程并行执行不同的任务。
在Unix System及SunOS中也被称为轻量进程(lightweight processes),但轻量进程更多指内核线程(kernel thread),而把用户线程称为线程。
计算机科学术语,指运行中的程序的调度单位。
】主要特点【在多线程OS中,通常是在一个进程中包括多个线程,每个线程都是作为利用CPU的基本单位,是花费最小开销的实体。
线程具有以下属性。
1)轻型实体线程中的实体基本上不拥有系统资源,只是有一点必不可少的、能保证独立运行的资源,比如,在每个线程中都应具有一个用于控制线程运行的线程控制块TCB,用于指示被执行指令序列的程序计数器、保留局部变量、少数状态参数和返回地址等的一组寄存器和堆栈。
2)独立调度和分派的基本单位。
在多线程OS中,线程是能独立运行的基本单位,因而也是独立调度和分派的基本单位。
由于线程很“轻”,故线程的切换非常迅速且开销小。
3)可并发执行。
在一个进程中的多个线程之间,可以并发执行,甚至允许在一个进程中所有线程都能并发执行;同样,不同进程中的线程也能并发执行。
4)共享进程资源。
在同一进程中的各个线程,都可以共享该进程所拥有的资源,这首先表现在:所有线程都具有相同的地址空间(进程的地址空间),这意味着,线程可以访问该地址空间的每一个虚地址;此外,还可以访问进程所拥有的已打开文件、定时器、信号量机构等。
】线程的五大状态【线程从创建、运行到结束总是处于下面五个状态之一:新建状态、就绪状态、运行状态、阻塞状态及死亡状态。
1.新建状态(New):当用new操作符创建一个线程时,例如new Thread(r),线程还没有开始运行,此时线程处在新建状态。
简述进程、线程、协程的区别以及应用场景?
简述进程、线程、协程的区别以及应⽤场景?
1.进程是计算器最⼩资源分配单位 .
2.线程是CPU调度的最⼩单位 .
3.进程切换需要的资源很最⼤,效率很低 .
4.线程切换需要的资源⼀般,效率⼀般(当然了在不考虑GIL的情况下) .
5.协程切换任务资源很⼩,效率⾼(协程本⾝并不存在,是程序员通过控制IO操作完成) .
6.多进程、多线程根据cpu核数不⼀样可能是并⾏的,但是协程是在⼀个线程中所以是并发.
进程:
⼀个运⾏的程序(代码)就是⼀个进程,没有运⾏的代码叫程序,进程是系统资源分配的最⼩单位,进程拥有⾃⼰独⽴的内存空间,所以进程间数据不共享,开销⼤。
线程:
调度执⾏的最⼩单位,也叫执⾏路径,不能独⽴存在,依赖进程存在⼀个进程⾄少有⼀个线程,叫主线程,⽽多个线程共享内存(数据共享,共享全局变量),从⽽极⼤地提⾼了程序的运⾏效率。
协程:
是⼀种⽤户态的轻量级线程,协程的调度完全由⽤户控制。
协程拥有⾃⼰的寄存器上下⽂和栈。
协程调度切换时,将寄存器上下⽂和栈保存到其他地⽅,在切回来的时候,恢复先前保存的寄存器上下⽂和栈,直接操作栈则基本没有内核切换的开销,
可以不加锁的访问全局变量,所以上下⽂的切换⾮常快。
计算机中的操作系统中的进程和线程有什么区别
计算机中的操作系统中的进程和线程有什么区别操作系统中的进程和线程是计算机中重要的概念,它们在实现多任务处理和资源管理方面发挥着重要作用。
虽然进程和线程都是运行在操作系统上的执行单位,但它们在功能和使用方式上存在一些区别。
本文将从进程和线程的定义、特点、创建和切换、资源管理等方面进行详细论述。
一、进程的定义和特点进程是指正在执行的程序在操作系统中的一次执行过程。
它是操作系统进行资源分配和调度的基本单位。
每个进程都拥有独立的内存空间、数据栈、寄存器等资源,进程之间相互独立、互不干扰。
进程的特点包括:1. 独立性:每个进程都是独立的执行实体,具有独立的内存空间和资源。
2. 并发性:多个进程可以同时存在,并且可以同时执行,实现多任务处理。
3. 随机性:多个进程之间的执行顺序是不确定的,由操作系统调度决定。
4. 阻塞性:进程在运行过程中可能会受到阻塞,等待某些事件的发生。
二、线程的定义和特点线程是进程的一部分,是程序执行的最小单元。
一个进程中可以包含多个线程,它们共享进程的内存空间和资源,拥有独立的栈空间和程序计数器。
线程的特点包括:1. 共享性:同一进程内的线程之间共享进程的资源,包括内存、文件等。
2. 并发性:多个线程可以同时执行,实现并发处理,提高系统的运行效率。
3. 独立性:每个线程拥有独立的栈空间和程序计数器,可以独立执行指令序列。
4. 灵活性:线程的创建、销毁和切换成本较低,可以方便地实现任务的切换和资源共享。
三、进程和线程的创建和切换1. 进程的创建和切换:进程的创建通常通过fork()系统调用实现。
fork()会创建一个与当前进程几乎完全相同的子进程,包括代码段、数据段、堆和栈等。
子进程可以执行不同的程序,但初始状态与父进程相同。
进程的切换是由操作系统的调度器完成的,通过保存和恢复进程的上下文来实现,包括寄存器值、堆栈指针等。
2. 线程的创建和切换:线程的创建通常通过pthread_create()函数实现。
线程与进程区别
线程与进程区别线程是指进程内的一个执行单元,也是进程内的可调度实体.与进程的区别:(1)地址空间:进程中的执行单元;该进程至少有一个线程;它们共享进程的地址空间;进程有自己独立的地址空间;(2)资源拥有:进程是资源分配和拥有的单位,同一个进程内的线程共享进程的资源(3)线程是处理器调度的基本单位,但进程不是.4)二者均可并发执行.进程和线程是操作系统所经历的程序操作的基本单元。
系统使用这个基本单元来实现系统对应用程序的并发。
进程和线程之间的区别是:简而言之,一个程序至少有一个进程,一个进程至少有一个线程.线程的划分尺度小于进程,使得多线程程序的并发性高。
此外,该进程在执行过程中有一个独立的内存单元,多个线程共享内存,大大提高了程序的运行效率。
线程在执行过程中与进程还是有区别的。
每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。
但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
从逻辑的角度来看,多线程的意义在于,应用程序中有多个可以同时执行的执行部分。
然而,操作系统并没有将多个线程视为多个独立的应用程序来实现进程调度、管理和资源分配。
这是进程和线程之间的重要区别。
进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.线程是进程的实体。
它是CPU调度和调度的基本单元。
它是一个较小的基本单元,可以独立于进程运行。
线程本身基本上不拥有系统资源,但只拥有运行中的一些基本资源(如程序计数器、一组寄存器和堆栈),但它可以与属于同一进程的其他线程共享该进程拥有的所有资源。
一个线程可以创建和撤消另一个线程;同一进程中的多个线程可以并发执行线程和进程都是现在电脑概念里比较时髦的用语,什么是多线程,什么是多进程?本文详细的给您介绍一下,希望能增进您对当代电脑技术的了解,有不到之处,还往高手予以更正。
进程(英语:process,中国大陆译作进程,台湾译作行程)是计算机中已运行程序的实体。
线程和进程的区别
线程和进程的区别1、进程:进程在操作系统中可以独⽴运⾏,作为资源分配的基本单位。
表⽰运⾏中的程序。
2、线程:线程是进程中的⼀个实例,作为系统调度和分派的基本单位。
是进程中的⼀段序列,能够完成进程中的⼀个功能。
3、进程和线程的区别:(1)同⼀个进程可以包含多个线程,⼀个进程中⾄少包含⼀个线程,⼀个线程只能存在于⼀个进程中。
(2)同⼀个进程下的所有线程能够共享该进程下的资源。
(系统运⾏时会为每个进程分配不同的内存区域,但不会为线程分配内存。
线程只能共享它所属进程的资源。
)(3)进程结束后,该进程下的所有线程将销毁,⽽⼀个线程的结束不会影响同⼀进程下的其他线程。
(4)线程是轻量级的进程,它的创建和销毁所需要的时间⽐进程⼩得多,所有操作系统的执⾏功能都是通过创建线程去完成的。
(5)线程在执⾏时是同步和互斥的,因为他们共享同⼀个进程下的资源。
(6)在操作系统中,进程是拥有系统资源的独⽴单元,它可以拥有⾃⼰的资源。
⼀般⽽⾔,线程不能拥有⾃⼰的资源,但是它能够访问其⾪属进程的资源。
⼀个进程可以定义程序的⼀个实例。
在Win32中,进程并不执⾏什么,它只是占据应⽤程序所使⽤的地址空间。
为了让进程完成⼀定的⼯作,进程必须⾄少占有⼀个线程,正是这个线程负责包含进程地址空间中的代码。
实际上,⼀个进程可以包含⼏个线程,它们可以同时执⾏进程地址空间中的代码。
为了做到这⼀点,每个线程有⾃⼰的⼀组CPU寄存器和堆栈。
每个进程中⾄少有⼀个线程在执⾏其地址空间中的代码。
如果没有线程执⾏进程地址空间中的代码,进程也就没有继续存在的理由,系统将⾃动清除进程及其地址空间。
4、⼀个进程是不是可以创建⽆限数量的线程? 不是。
操作系统给⼀个系统进程提供的空间是2GB ,⽽⼀个线程堆栈的空间默认在启动的时候是1MB,理论上最⼤线程数=2GB/1MB=2048。
但是内存当然不可能完全拿来作线程的栈,所以实际数⽬要⽐这个值要⼩。
你也可以通过连接时修改默认栈⼤⼩,将其改的⽐较⼩,这样就可以多开⼀些线程。
CPU进程与线程的关系及区别
CPU进度与线程的关系和差异篇一:进度和线程的差异进度和线程的差异线程是指进度内的一个执行单元,也是进度内的可调换实体 .与进度的差异 :(1)地址空间 :进度内的一个执行单元 ;进度最少有一个线程 ;它们共享进度的地址空间 ;而进度有自己独立的地址空间 ;(2)资源拥有 :进度是资源分配和拥有的单位 ,同一个进度内的线程共享进度的资源(3)线程是办理器调换的基本单位,但进度不是 .4)二者均可并发执行 .进度和线程都是由操作系统所领悟的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。
进度和线程的差异在于:简而言之 ,一个程序最少有一个进度,一个进度最少有一个线程.线程的划分尺度小于进度,使得多线程程序的并发性高。
别的,进度在执行过程中拥有独立的内存单元,而多个线程共享内存,进而极大地提高了程序的运行效率。
线程在执行过程中与进度还是有区其他。
每个独立的线程有一个程序运行的入口、序次执行序列和程序的出口。
但是线程不能够够独立执行,必定依存在应用程序中,由应用程序供应多个线程执行控制。
从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分能够同时执行。
但操作系统并没有将多个线程看做多个独立的应用,来实现进度的调换和管理以及资源分配。
这就是进度和线程的重要差异。
进度是拥有必然独立功能的程序关于某个数据会集上的一次运行活动 ,进度是系统进行资源分配和调换的一个独立单位 .线程是进度的一个实体 ,是 CPU调换和分配的基本单位 ,它是比进度更小的能独立运行的基本单位 .线程自己基本上不拥有系统资源,只拥有一点在运行中必不能少的资源 (如程序计数器 ,一组寄存器和栈 ),但是它可与同属一个进度的其他的线程共享进度所拥有的全部资源.一个线程能够创办和撤掉另一个线程 ;同一个进度中的多个线程之间能够并发执行 .和"stdio.h " 差异#include"stdio.h "当要调用某个函数时先在用户自已编写的文件中查找,若是找不到再到库文件里去找,而#include 是直接到库文件里去找因此若是是调用自己写的函数的话就用 #include"stdio.h ",这种形式而调用标准库函数的话就用 #include 这种形式,能够提高速度篇二:进度线程差异与联系定义:一程序可是一组指令的有序会集二进度是拥有必然独立功能的程序关于某个数据会集上的一次运行活动,是系统进行资源分配和调换的一个独立单位;三线程是进度的一个实体,是 CPU 调换和分配的基本单位,它是比进度更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不能少的资源(如程序计数器 ,一组寄存器和栈 ),一个线程能够创办和撤掉另一个线程;一进度与线程差异与联系(1)划分尺度 :线程更小,因此多线程程序并发性更高;(2)资源分配:进度是资源分配的基本单位,同一进度内多个线程共享其资源;(3)地址空间:进度拥有独立的地址空间,同一进度内多个线程共享其资源;(4)办理器调换:线程是办理器调换的基本单位;(5)执行:每个线程都有一个程序运行的入口,序次执行序列和程序的出口,但线程不能够单独执行,必定组成进度,一个进度最少有一个主线程。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
线程是指进程内的一个执行单元,也是进程内的可调度实体.与进程的区别:(1)地址空间:进程内的一个执行单元;进程至少有一个线程;它们共享进程的地址空间;而进程有自己独立的地址空间;(2)资源拥有:进程是资源分配和拥有的单位,同一个进程内的线程共享进程的资源(3)线程是处理器调度的基本单位,但进程不是.4)二者均可并发执行.进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。
进程和线程的区别在于:简而言之,一个程序至少有一个进程,一个进程至少有一个线程.线程的划分尺度小于进程,使得多线程程序的并发性高。
另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。
线程在执行过程中与进程还是有区别的。
每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。
但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。
但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。
这就是进程和线程的重要区别。
进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行.线程和进程都是现在电脑概念里比较时髦的用语,什么是多线程,什么是多进程?本文详细的给您介绍一下,希望能增进您对当代电脑技术的了解,有不到之处,还往高手予以更正。
进程(英语:Process,中国大陆译作进程,台湾译作行程)是计算机中已运行程序的实体。
进程本身不会运行,是线程的容器。
程序本身只是指令的集合,进程才是程序(那些指令)的真正运行。
若干进程有可能与同一个程序相关系,且每个进程皆可以同步(循序)或不同步(平行)的方式独立运行。
进程为现今分时系统的基本运作单位线程(英语:thread,台湾译为运行绪),操作系统技术中的术语,是操作系统能够进行运算调度的最小单位。
它被包涵在进程之中,一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。
在Unix System V及SunOS中也被称为轻量进程(lightweight processes),但轻量进程更多指内核线程(kernel thread),而把用户线程(user thread)称为线程。
线程是独立调度和分派的基本单位。
线程可以操作系统内核调度的内核线程,如Win32 线程;由用户进程自行调度的用户线程,如Linux Portable Thread; 或者由内核与用户进程,如Windows 7的线程,进行混合调度。
同一进程中的多条线程将共享该进程中的全部系统资源,如虚拟地址空间,文件描述符和信号处理等等。
但同一进程中的多个线程有各自的调用栈(call stack),自己的寄存器环境(register context),自己的线程本地存储(thread-local storage)。
一个进程可以有很多线程,每条线程并行执行不同的任务。
在多核或多CPU,或支持Hyper-threading的CPU上使用多线程程序设计的好处是显而易见,即提高了程序的执行吞吐率。
在单CPU单核的计算机上,使用多线程技术,也可以把进程中负责IO处理、人机交互而常备阻塞的部分与密集计算的部分分开来执行,编写专门的workhorse线程执行密集计算,从而提高了程序的执行效率进程是资源分配的最小单位,线程是CPU调度的最小单位。
线程和进程的区别在于,子进程和父进程有不同的代码和数据空间,而多个线程则共享数据空间,每个线程有自己的执行堆栈和程序计数器为其执行上下文.多线程主要是为了节约CPU时间,发挥利用,根据具体情况而定. 线程的运行中需要使用计算机的内存资源和CPU。
多进程:进程是程序在计算机上的一次执行活动。
当你运行一个程序,你就启动了一个进程。
显然,程序是死的(静态的),进程是活的(动态的)。
进程可以分为系统进程和用户进程。
凡是用于完成操作系统的各种功能的进程就是系统进程,它们就是处于运行状态下的操作系统本身;所有由用户启动的进程都是用户进程。
进程是操作系统进行资源分配的单位。
进程又被细化为线程,也就是一个进程下有多个能独立运行的更小的单位。
在同一个时间里,同一个计算机系统中如果允许两个或两个以上的进程处于运行状态,这便是多任务。
现代的操作系统几乎都是多任务操作系统,能够同时管理多个进程的运行。
多任务带来的好处是明显的,比如你可以边听mp3边上网,与此同时甚至可以将下载的文档打印出来,而这些任务之间丝毫不会相互干扰。
那么这里就涉及到并行的问题,俗话说,一心不能二用,这对计算机也一样,原则上一个CPU只能分配给一个进程,以便运行这个进程。
我们通常使用的计算机中只有一个CPU,也就是说只有一颗心,要让它一心多用,同时运行多个进程,就必须使用并发技术。
实现并发技术相当复杂,最容易理解的是“时间片轮转进程调度算法”,它的思想简单介绍如下:在操作系统的管理下,所有正在运行的进程轮流使用CPU,每个进程允许占用CPU的时间非常短(比如10毫秒),这样用户根本感觉不出来CPU 是在轮流为多个进程服务,就好象所有的进程都在不间断地运行一样。
但实际上在任何一个时间内有且仅有一个进程占有CPU。
如果一台计算机有多个CPU,情况就不同了,如果进程数小于CPU数,则不同的进程可以分配给不同的CPU 来运行,这样,多个进程就是真正同时运行的,这便是并行。
但如果进程数大于CPU数,则仍然需要使用并发技术。
进行CPU分配是以线程为单位的,一个进程可能由多个线程组成,这时情况更加复杂,但简单地说,有如下关系:总线程数<= CPU数量:并行运行总线程数> CPU数量:并发运行并行运行的效率显然高于并发运行,所以在多CPU的计算机中,多任务的效率比较高。
但是,如果在多CPU计算机中只运行一个进程(线程),就不能发挥多CPU的优势。
这里涉及到多任务操作系统的问题,多任务操作系统(如Windows)的基本原理是:操作系统将CPU的时间片分配给多个线程,每个线程在操作系统指定的时间片内完成(注意,这里的多个线程是分属于不同进程的).操作系统不断的从一个线程的执行切换到另一个线程的执行,如此往复,宏观上看来,就好像是多个线程在一起执行.由于这多个线程分属于不同的进程,因此在我们看来,就好像是多个进程在同时执行,这样就实现了多任务多线程:在计算机编程中,一个基本的概念就是同时对多个任务加以控制。
许多程序设计问题都要求程序能够停下手头的工作,改为处理其他一些问题,再返回主进程。
可以通过多种途径达到这个目的。
最开始的时候,那些掌握机器低级语言的程序员编写一些“中断服务例程”,主进程的暂停是通过硬件级的中断实现的。
尽管这是一种有用的方法,但编出的程序很难移植,由此造成了另一类的代价高昂问题。
中断对那些实时性很强的任务来说是很有必要的。
但对于其他许多问题,只要求将问题划分进入独立运行的程序片断中,使整个程序能更迅速地响应用户的请求。
最开始,线程只是用于分配单个处理器的处理时间的一种工具。
但假如操作系统本身支持多个处理器,那么每个线程都可分配给一个不同的处理器,真正进入“并行运算”状态。
从程序设计语言的角度看,多线程操作最有价值的特性之一就是程序员不必关心到底使用了多少个处理器。
程序在逻辑意义上被分割为数个线程;假如机器本身安装了多个处理器,那么程序会运行得更快,毋需作出任何特殊的调校。
根据前面的论述,大家可能感觉线程处理非常简单。
但必须注意一个问题:共享资源!如果有多个线程同时运行,而且它们试图访问相同的资源,就会遇到一个问题。
举个例子来说,两个线程不能将信息同时发送给一台打印机。
为解决这个问题,对那些可共享的资源来说(比如打印机),它们在使用期间必须进入锁定状态。
所以一个线程可将资源锁定,在完成了它的任务后,再解开(释放)这个锁,使其他线程可以接着使用同样的资源。
多线程是为了同步完成多项任务,不是为了提高运行效率,而是为了提高资源使用效率来提高系统的效率。
线程是在同一时间需要完成多项任务的时候实现的。
一个采用了多线程技术的应用程序可以更好地利用系统资源。
其主要优势在于充分利用了CPU的空闲时间片,可以用尽可能少的时间来对用户的要求做出响应,使得进程的整体运行效率得到较大提高,同时增强了应用程序的灵活性。
更为重要的是,由于同一进程的所有线程是共享同一内存,所以不需要特殊的数据传送机制,不需要建立共享存储区或共享文件,从而使得不同任务之间的协调操作与运行、数据的交互、资源的分配等问题更加易于解决。
进程间通信(IPC,Inter-Process Communication),指至少两个进程或线程间传送数据或信号的一些技术或方法。
进程是计算机系统分配资源的最小单位。
每个进程都有自己的一部分独立的系统资源,彼此是隔离的。
为了能使不同的进程互相访问资源并进行协调工作,才有了进程间通信。
这些进程可以运行在同一计算机上或网络连接的不同计算机上。
进程间通信技术包括消息传递、同步、共享内存和远程过程调用。
IPC是一种标准的Unix通信机制。
使用IPC 的理由:信息共享加速;模块化;方便; 以及私有权分离.主要的IPC 方法方法提供方(操作系统或其他环境)文件多数操作系统信号多数操作系统Socket 多数操作系统消息队列(en:Message queue) 多数操作系统管道(en:Pipe) 所有的POSIX systems, Windows.具名管道(en:Named Pipe) 所有的POSIX 系统, Windows.信号量(en:Semaphore) 所有的POSIX 系统, Windows.共享内存所有的POSIX 系统, Windows.Message passing(en:Message passing) 用于MPI规范,Java RMI, CORBA, MSMQ, MailSlot 以及其他.进程和线程的区别收藏简而言之,一个程序至少有一个进程,一个进程至少有一个线程.线程的划分尺度小于进程,使得多线程程序的并发性高。
另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。