提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
本文重点在于区分进程和线程,会结合一些经典考研题进行综合理解。同时本文会借用清华大学ucore OS实验中的部分代码帮助理解。
请用点赞催更~
在操作系统诞生初期,为了提高操作系统的并发性和共享性,引入进程这个概念。这里伴随着三个重要概念的产生,我这里用两组集合来表示他们(进程,进程映像)&&(进程,程序)。让我们来看看这两组概念的辨析:
ps:进程映像也被叫做进程实体。
(1). 进程,进程映像
进程映像=PCB+程序段+相关数据段,它是静态概念;
进程的定义有很多,我们只需要灵活的理解,需要记忆的是进程是一个动态的概念。
(2). 进程,程序
程序程序是指令的有序集合,无执行含义,所以它也是静态的;
相反进程是动态的。
四大特征:动态性,并发性,独立性,异步性
这里不对进程的五个状态的转换做说明,因为有太多的文章讲了类似的事情。我们把重点放在一些值得关注的点上面(俗称 考点)。
首先,我们要对特殊状态的转化做到心中有数,所谓特殊是指单向性,触发条件的特定性,我们结合一些题目来记忆。
eg1.在进程转换时,不可能发生的状态是___。(阻塞->运行)
eg2.__事件的发生必然引起进程的切换。(一个进程从运行态变为就绪态)
大家对进程实体的构成并不陌生,但你知道他们具体的工作吗?
这里假设一个进程实体的构成为PCB,共享正文段,数据堆段,数据栈段组成。
PCB:里面的东西都是大同小异的,包括PID,UID,优先级,状态等,如下图所示,图为UCORE OS中PCB的具体构成部分。
正文段:(也叫程序段)其中包含的是二进制代码和常量。(代码+常量)
数据堆段:里面是动态分配的存储区。(动态分配内存)
数据栈段:存放临时使用的变量,包括一些未赋值的临时变量。(变量)
大家记住正文段,堆栈段中有什么,剩下的全在PCB。>.<
上次我们讲中断里提到过,内核态主要负责的四大板块,其中一个是原语。
啥是原语,我们现在来解释。一般把进程控制用的程序段称为原语。
常用的原语有:
特别需要注意的是,Block原语要与Wakeup原语配套使用,否则你的进程就一直处于阻塞态永远不会被唤醒。
即通信的进程存在一块可以直接访问的共享空间。这里有个问题,如果两个通信进程同时读取或者同时写入到底以谁为准呢?所以要利用同步互斥工具(P/V)。
OS只负责提供可共享使用的存储空间和同步互斥工具(P/V)。数据交换由用户自己安排。
在消息传递系统中,进程间的数据交换是用格式化的消息(message)为单位.通过发送原语和接受原语进行数据交换。
具体的通信方式分成两种:
1)直接,直接交给想要想给的进程;
2)间接,相比直接通信,需要一个中间实体(这个实体叫做信箱),跟现在的写信寄信收信的方式很像;
这种方式的优点:隐藏通讯细节,对用户透明。这样的机制常用于计算机网络和分布式系统中。
基于文件系统的进程通信方式。对于一个进程,它有一个读缓冲区和一个写缓冲区,所以缓冲区只允许一边写入另一边读出。即一个进程的读缓冲区是另一个进程的写缓冲区,因为这种特殊机制的存在,这决定了管道通信是半双工通信。
管道通信中的共享文件是一种特殊文件,特殊性体现在:
1)限制管道大小;
2)读进程也可能工作得比写进程快。
引入线程机制之后,线程成为了一个基本的CPU执行单元,也是程序执行流的最小单元,线程是一个"轻量级的进程"。由线程id,pc,寄存器集合和堆栈组成。
最重要的是,线程是进程中的一个实体,线程不能自己拥有系统资源,但线程还有一点在运行中必不可少的资源。一句话,有点资源但不多,虽然不多但是有。它可以与共享他所属的进程的全部资源(进程允许共享的全部资源)。
线程可以创建更多的线程,一个进程可以有多个线程。
内核意识不到线程的存在。调度仍然是以进程为单位。
优点:
缺点:
由内核创建线程。
优点:
缺点:
集合了前面的优点,还有效的避免了前面的缺陷,是现代操作系统常用的操作。
我们用“人的生命历程”来类比进程。首先,人的生命历程一定是一个动态的、过程性的概念,要研究人的生命历程,先要介绍经历这个历程的主体是什么。主体当然是人,相当于经历进程的主体是进程映像,人有自己的身份,相当于进程映像里有 PCB:人生历程会经历好几种状态出生的时候、弥留的时候、充满斗志的时候、发奋图强的时候及失落的时候,相当于进程有创建撤销、就绪、运行、阻塞等状态,这几种状态会发生改变,人会充满斗志而转向发奋图强,发奋图强获得进步之后又会充满斗志预备下一次发奋图强,或者发奋图强后遇到阻碍会进入失落状态,然后在别人的开导之下又重新充满斗志。类比进程,会由就绪态转向运行态,运行态转向就绪态,或者运行态转向阻塞态,然后在别的进程帮助下返回就绪态。
若我们用“人生历程”这个过程的概念去类比进程,则对进程的理解就会更深一层。前面生活化的例子可以帮我们理解进程的实质,但它毕竟有不严谨的地方。一种较好的方式是,在类比进程和“人生历程”后,再看一遍前面较为严谨的书面阐述和讨论,这样对知识的掌握会更加准确而全面。
本文发布于:2024-02-02 01:09:23,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170681218940429.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |