进程与线程的区别 进程间通信方式
处理器执行的一个实体;由单一顺序的执行显示,一个当前状态和一组相关的系统资源所描述的活动单元。进
程是一个具有独立功能的程序关于某个数据集合的一次运行活动。狭义来说:进程就是程序的执行过程。它可
以申请和拥有系统资源,是一个动态的概念,是一个活动的实体。它不只是程序的代码,还包括当前的活动,
通过程序计数器的值和处理寄存器的内容来表示。
进程管理器注意两点:第一,进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(textregion)、
数据区域(data region)和堆栈(stackregion)。文本区域存储处理器执行的代码;数据区域存储变量和
进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量。第二,进程是一个“
执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时,它才能成为一个活动的实体,我
们称其为进程。进程三状态:进程可能具有以下三种基本状态:一、就绪状态(Ready):进程已获得除处理器外的所需资源,等待分配处理器资源;只要分配了处理器进程就可执行。就绪进程可以按
多个优先级来划分队列。例如,当一个进程由于时间片用完而进入就绪状态时,排入低优先级队列;当进程由
I/O操作完成而进入就绪状态时,排入高优先级队列。二、运行状态(Running):进程占用处理器资源;处于此状态的进程的数目小于等于处理器的数目。在没有其他进程可以执行时(如所有
进程都在阻塞状态),通常会自动执行系统的空闲进程。三、阻塞状态(Blocked):由于进程等待某种条件(如I/O操作或进程同步),在条件满足之前无法继续执行。该事件发生前即使把处理
机分配给该进程,也无法运行。
进程间的通信方式:windows:Windows提供了多种机制,使得应用程序之间能够快速、方便地共享数据和信息。这些机制包括RPC、COM、OLE
、DDE、消息、剪切板、邮件槽、管道、套接字等。但是,如果在同一台机器上的多个进程间进行通信的话,
那么上面的机制都与共享内存有关。这在Windows上称作内存映射文件。linux:Linux下的进程间通信机制大致包括:管道、信号(在Windows上成为消息)、信号队列(实际是消息链表)、
共享内存、信号量、套接字。什么是线程:线程(thread, 台湾称执行绪)是"进程"中某个单一顺序的控制流。也被称为轻量进程(lightweight
processes)。计算机科学术语,指运行中的程序的调度单位。线程,有时被称为轻量级进程(Lightweight
Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和
堆栈组成。线程是程序中一个单一的顺序控制流程。在单个程序中同时运行多个线程完成不同的工作,称为多
线程。线程间通信方式:线程间通信可以通过下列三种方法:1)使用全局变量实现线程间通信2)使用消息实现线程间通信3)使用CEvent类实现线程间通信进程与线程的区别:线程线程和进程的区别在于,子进程和父进程有不同的代码和数据空间,而多个线程则共享数据空间,每个线
程有自己的执行堆栈和程序计数器为其执行上下文。多线程主要是为了节约CPU时间,发挥利用,根据具体情
况而定。线程的运行中需要使用计算机的内存资源和CPU。通常在一个进程中可以包含若干个线程,它们可以利用进程所拥有的资源。在引入线程的操作系统中,通常都
是把进程作为分配资源的基本单位,而把线程作为独立运行和独立调度的基本单位。由于线程比进程更小,基
本上不拥有系统资源,故对它的调度所付出的开销就会小得多,能更高效的提高系统内多个程序间并发执行的
程度,从而显著提高系统资源的利用率和吞吐量。1)地址空间和其它资源(如打开文件):进程间相互独立,同一进程的各线程间共享。某进程内的线程在其
它进程不可见。2)通信:进程间通信IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信——需要进程同步和互
斥手段的辅助,以保证数据的一致性。3)调度和切换:线程上下文切换比进程上下文切换要快得多。4)在多线程OS中,进程不是一个可执行的实体。又如说我们一边玩cs,一边挂着Q,一边又开关网页,那么这些都是进程来的。一个进程里,比如说cs,里面的每个人都是可以自动走,自动开枪的,这些可以理解为线程。
进程与线程的同步:为了防止多个进程或者线程间同时访问同一个对象(包括全局变量、共享资源、API函数和MFC对象)而可能导
致程序错误问题,进程和线程在设置为同步。同步的方法:临界区:临界区是一种最简单的同步对象,它只可以在同一进程内部使用。它的作用是保证只有一个线程可以
申请到该对象互斥量:互斥量与临界区的作用非常相似,但互斥量是可以命名的,也就是说它可以跨越进程使用。所以创建
互斥量需要的资源更多,所以如果只为了在进程内部是用的话使用临界区会带来速度上的优势并能够减少资源
占用量。因为互斥量是跨进程的互斥量一旦被创建,就可以通过名字打开它创建互斥量。信号灯:信号灯有一个初始值,表示有多少进程/线程可以进入,当信号灯的值大于0时为有信号状态,小于等
于0时为无信号状态,所以可以利用WaitForSingleObject进行等待,当WaitForSingleObject等待成功后信号
灯的值会被减少1,直到释放时信号灯会被增加1。事件:事件对象用于通知其他进程/线程某件操作已经完成方面的作用是很大的,而且如果有的任务要在进程尖
进行协调采用等待其他进程中线程结束的方式是不可能实现的。事件对象可以一两种方式创建,一种为自动重
置,在其他线程使用WaitForSingleObject等待到事件对象变为有信号后该事件对象自动又变为无信号状态,
一种为人工重置在其他线程使用WaitForSingleObject等待到事件对象变为有信号后该事件对象状态不变。例
如有多个线程都在等待一个线程运行结束,我们就可以使用人工重置事件,在被等待的线程结束时设置该事件
为有信号状态,这样其他的多个线程对该事件的等待都会成功(因为该事件的状态不会被自动重置)。
更多阅读
小米1s与小米2的区别 小米1 1s区别
小米1s与小米2的区别——简介小米1S与小米2有什么区别?现在小米1S已经上市很久了。小米2也已经出来过了小米2工程机!官网是公布的十月上市。但是十月都快过咯, 都没看到有啥动静!不过小米2的详细配置官网都会有展示的。这里就来分析一下
冬虫夏草纯粉片与冬虫夏草粉的区别 冬虫夏草纯粉片官网
冬虫夏草纯粉片与冬虫夏草粉的区别——简介冬虫夏草纯粉片一直很受消费者喜爱,在超低温下低温常温卫生的状态下,把冬虫夏草的虫体细胞打破破膜,子座破壁把冬虫夏草打成雾状粉末,在压制成片,方便服用,因为是低温状态,所以在破壁的过程中基本
健忘与老年痴呆的区别 玉米粥什么时候吃最好
健忘与老年痴呆的区别?当今有不少人会问,老人健忘就是得了老年痴呆吗?老人上了年纪,记忆力下降十分明显。而出现记忆力下降的老人也常常会被人们耻笑为“老糊涂”。不过你可不要以为只要记忆力下降就是老年痴呆。有很多老人的记忆
Mini USB与 micro USB的区别 mini usb micro usb
Mini USB与 micro USB的区别——简介USB是Universal Serial Bus的简称,Mini USB与 micro USB是两种不同的USB接口,区别如下:Mini USB与 micro USB的区别——方法/步骤Mini USB与 micro USB的区别 1、一图胜千言,图片中,第一张是micro US
企业贷款与法人贷款的区别 企业贷款要查法人代表
企业贷款与法人贷款的区别——简介 企业贷款大家都很熟悉,就是运营的公司因为资金短缺而进行的贷款,那么法人贷款又是怎么一回事呢?很多人搞不清楚企业贷款和法人贷款,觉得两者是一回事,其实不是。今天汇小贷主要为大家讲解一下企业贷