进程,线程,管程。这三个都是程字辈儿的(哪儿令的)。今天就随便说一下这三者的区别(真是随便说一下)
进程
进程:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统中动态执行的基本单元。
进程有三种基本状态:
1. 就绪状态:指进程已经处于准备好运行的状态。此时进程已经分配到除CPU外所有的必要资源,只要再获得CPU,就可以立即执行。
2. 执行状态:进程已获得CPU,其程序正在执行
3. 阻塞状态:指正在执行的进程由于发生某事件(如I/O请求,申请缓冲区失败等)暂时无法继续执行的状态。
三种基本状态之间可以相互转换,具体不再多说。
为了使参与并发执行的每个程序都能够顺利执行,引入一个专门的数据结构PCB(Process Control Block)——进程控制模块。
线程
线程就是进程中的一个实体,一个进程可以拥有许多线程,一个线程必须有一个父进程。与进程不同,线程不拥有系统资源,只有运行必须的一些数据结构。与父进程的其它线程共享该进程所拥有的全部资源。
管程
管程定义了一个数据结构和能为并发进程所执行的一组操作,这组操作能同步进程和改变管程中的数据。
(个人认为:管程与上述的二者属于两个体系,但相互联系)
进程与线程的关系
简而言之。线程的划分尺度小于进程。进程是线程的统一调度,而线程是进程的具体分工。
就如一个公司,公司整体是一个进程,而公司里的各个部门就是一个个线程。这些部门可以一起工作,同时一个部门可以衍生其他部门,也可以被取消。脱离了公司,部门存在的意义就没有了,而没有部门,公司也就只是一个空壳
线程创建的意义在于多线程的应用,多个执行部分可以同步执行且共享资源。操作系统不会将多个线程看成多个应用,而是将其看成一个整体的进程。
总而言之:一个线程可以创建和撤销另一个线程,同一进程中的多个线程可以并发执行
管程的引用
管程的引用是为了解决信号量机制时序错误问题而引用的。
还是公司的例子,与其说是“秘书”,不如说是仓库管理员。管程相当于一道墙,将共享变量和对它进行操作的过程围了起来。所以有公司(进程)要去仓库拉货(访问临界资源)时,都需要进过管理员(管程)的同意才能进入,且管程每次只允许一个进程进入,从而实现了进程的互斥。
0 条评论