进程线程及进程间通信

进程的定义
进程是一个具有一定独立功能的程序或程序段在一组数据集合上的一次动态执行过程。

进程的特性
进程具有动态性
1、进程具有动态的地址空间。进程的地址空间无论从数量还是从内容上都是动态的,因为进程中所包含的代码是随指令执行和CPU状态的改变而变得;进程中使用的数据是随变量的生成及变量的复制而变的。

2、系统对进程的控制信息是动态的。系统要对进程进行控制,就需要建立一个包含进程属性的数据结构,该结构就是进程控制块--PCB。而进程控制块在系统调用进程时随时生成的,同时随着进程的结束,进程控制块也被删除了

进程具有独立性
因为进程是为了实现程序并发而设立的一种管理单元,因此,为了保证程序在多道环境中能够被有效执行,就要确保各进程的地址空间相互独立,成型过程相互独立。

进程间具有并发性和异步性

进程具有结构化特征


进程和程序的区别
1、进程是动态的,但程序是静态的。程序是有序代码的集合,一旦编写完成就永远不变地存在那里,除非程序做修改。但是进程是程序的执行过程,计时对于同一段程序来讲,由于执行环境参数等的改变,都会产生不同的进程。

2、进程是暂时的,而程序是永久的。因为进程是一个程序执行中状态变化的过程,它随着系统需求而生成,随着任务完成而结束;但程序是可以长久保存下来的。

3、进程和程序的组成结构不同。进程的组成包含程序、数据和进程控制块,这些不仅记录进程的执行内容,同时也包含了进程的执行状态信息。而程序是由算法策略、指令语句及执行数据构成,主要描述的是执行逻辑问题,不包含程序执行中的过程问题。

4、进程与程序既有区别又有联系。通过多次执行,一个程序可以对应多个进程;通过不同的调用执行,一个进程中可以包括多个程序段。

线程的定义
线程是指在程序执行过程中,能够执行程序代码的一个执行单元。在java语言中,线程有4中状态是:运行、就绪、挂起和结束。

进程和线程的对比关系
一个进程可以拥有多个线程,各个线程之间共享程序的内存空间(代码段、数据段和堆空间)及一些进程级的资源(例如打开的文件),但是各个线程拥有自己的栈空间。

为什么要使用多线程
在操作系统级别,程序的执行都是以进程为单位的,而每个进程通常都会用多个线程互不影响地并发执行,那么为什么要使用多线程呢?

有几个方面的原因:
1、使用多线程可以减少程序的响应时间。使用多线程,可以将耗时的线程分配到一个单独的线程去执行,从而使程序具备更好的交互性

2、与进程相比,线程的创建和切换开销更小。同时,多线程在数据共享方面效率非常高

3、多CPU或多核计算机本身就具有执行多线程的能力,如果使用单个线程,将无法重复利用计算机资源,造成浪费

4、使用多线程能简化程序的结构,使得程序便于理解和维护


进程和线程的区别
1、调度:线程作为处理器调度和分配的基本单元,而进程是作为拥有资源的基本单元
2、并发性:不仅进程之间可以并发执行,同一个进程之间的多个线程之间也能并发执行
3、拥有资源:进程是拥有资源的一个独立单位,有自己独立的地址空间,线程不拥有系统资源,但可以访问隶属进程的资源,共享进程的地址空间
4、系统开销:在创建或注销进程时,由于系统都要为之分配和回收资源,导致系统的开销明显大于创建或销毁线程的资源


进程和线程的关系
1、二者均可以并发执行
2、线程指进程内的一个执行单元,也是进程内的可调度实体。一个程序内至少有一个进程,一个进程至少有一个线程,一个线程只属于一个进程。
3、资源分配给进程,同一进程的所有线程共享进程的所有资源
4、处理机分给线程,及真正在处理机上运行的是线程
5、线程在执行过程中,需要协调同步。不同的进程的线程间要利用消息通信的方法实现同步。线程是指进程内的一个执行单元,也是进程内的可调度尸体。进程和线程的主要区别在于他们是不同的
操作系统资源管理方式,进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其他的进程产生影响,而线程死掉等于进程死掉,所以多进程的程序比多线程的程序健壮,但在进程切换时,
耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。


进程间通信的方式
1、管道及有名管道:管道用于具有亲缘关系的父子进程间的通信,有名管道除了具有管道所有的功能外,它还允许无亲缘关系的进程间的通信
2、信号:信号时在软件层次上对终端机制的一种模拟,它是比较复杂的通信方式,用于通知进程某事件的发生,一个进程收到一个信号与处理器收到终端请求效果上可以说是一致的
3、消息队列:消息队列是消息的连接表,它克服了上两种通信方式中信号量有限的缺点,具有写权限的进程可以按照一定的规则向消息队列中添加终端信息;对消息队列有读权限的进程则可以从消息
队列中读取信息
4、共享内容:可以说这是最有用的进程间通信方式,它使得多个进程可以访问同一块内存空间。不同进程可以及时看到对方进程中对共享内存中数据更新。这种方式需要依靠某种同步操作,如互斥锁
和信号量等
5、信号量:主要作为进程间及同一种进程的不同线程间的同步和互斥手段
6、套接字:这是一种更为一般的进程间通信机制,可以用于网络中不同机器之间的进程间通信。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值