进程
进程定义:进程是正在运行的程序的实例(比如说开了一个QQ进程、开了一个微信),他是一个具有一定独立功能的程序关于某个数据集合的一次运行活动,他是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本分配单元,也是基本执行单元,进程是一个实体,是一个'执行中的程序'。
进程的特点:
1)并发性,任何进程都可以同其他进程一起,并发执行
2)独立性,进程是一个能独立运行的基本单元,同时也是系统分配资源和调度的独立结构
3)异步性,由于进程之间相互制约,使进程具有执行的间断性,也就是说,进程按照各自独立的,不可预知的速度向前推进
组成部分:进程由程序,数据,和进程控制三部分组成。
线程定义: 线程是进程中的实体,一个进程可以拥有多个线程,(比如说一个QQ进程中,传输文字开了一个线程,传输语音开了一个线程,弹出对话框又开了一个线程)
一个线程必须拥有一个父进程,线程不拥有系统资源,只有运行必须的一些数据结构,他与父进行的其他线程共享该进程的其他全部资源,线程可以创建和撤销线程,从而实现进程的并发执行,,一般线程具有就绪,阻塞,运行三种基本状态。
线程的基本操作
1)派生:线程在进程中派生出来,他即可由进程派生,也可由线程派生
2)阻塞:如果一个线程,在执行过程中需要等待某个事件的发生,则被阻塞
3)激活:如果阻塞线程的事件发生,则该线程被激活并进入就绪队列
4)调度:选择一个就绪线程进入执行状态
5)结束:如果一个线程执行结束,他的寄存器上下文以及堆栈中的内容被释放。
宏观上的区别
1)进程是运行中的程序,线程是进程的内部一个执行序列。
2)进程是资源分配的单元,线程是执行单元。
3)进程间切换代价大,线程间切换代价小。
4)进行拥有资源多,线程拥有资源少
5)多个线程共享进程的资源。
打个比喻:
开个QQ,开了一个进程;开了迅雷,开了一个进程。在QQ的这个进程里,传输文字开一个线程、传输语音开了一个线程、弹出对话框又开了一个线程。所以运行某个软件,相当于开了一个进程。在这个软件运行的过程里(在这个进程里),多个工作支撑的完成QQ 的运行,那么这“多个工作”分别有一个线程。所以一个进程管着多个线程。通俗的讲:“进程是爹妈,管着众多的线程儿子”… 复制代码
微观上区别
1)地址空间和其他资源:进程间相互独立,同一进程的各线程之间共享数据,某进程内的线程在其他进程不可见。
2)通信:进程间通信IPC(进程间通信),线程间可以直接读写进程数据段来进行通信,但是需要进程同步和互斥手段的辅助,来保证数据的一致性。
3)切换和调度:线程上下文切换比进行上下文切换要快的多。
4)在多线程OS中,进程是一个不可执行的实体。
没有评论:
发表评论