概述
文章目录
- 进程
- 进程的定义
- 进程的创建
- 进程和程序
- 进程管理
- 进程控制块PCB
- 进程调度
- 进程的虚拟地址空间
- 进程间通信
进程
进程的定义
什么是进程?简单来说,进程就是运行中的程序,即进程=程序+执行。如果是更规范的说法,进程就是操作系统为正在运行的程序提供的抽象。
进程的创建
所谓“程序”,一定是静态的,像一个.exe的可执行文件,它就是静态的,当我们双击运行这个文件的时候,操作系统就会将文件中的关键信息,一些代码和静态数据加载到内存中,这样一来,一个进程就形成了。
进程和程序
程序的最初形态是躺在磁盘上的一个可执行文件,它一定是静态的,操作系统运行程序就有了进程,因此进程是动态的,它是被加载在内存中的。
进程管理
计算机在同一时刻可能运行着不止一个进程,操作系统如何对这些进程进行管理就成了一个问题,一般操作系统进行进程管理时,需要做到2个方面:首先是操作系统使用一个类或是结构体,表示出该进程的特征、状态;然后再使用一个数据结构,将这些类或是结构体进行整合即可。
进程控制块PCB
PCB就是存储关于进程的信息的个体结构,;
那么通过PCB我们可以得到什么呢?或者说,PCB里面又包含了些什么呢?
- 进程的身份标识
在创建进程时,系统会为其分配一个唯一的编号,以此作为进程的身份标识,而在PCB中,就存储了这一信息,进程的身份标识是系统内部区分不同进程的依据。 - 内存指针
前面已知,在创建进程的时候,系统将程序的一些关键信息加载到内存中,这些关键信息就包括了一些指令(代码)和一些静态数据,这里的内存指针就是在指明该进程的内存中哪些是指令,哪些又是数据。
- 文件描述符表
文件描述符表的作用就是记录该进程都打开了哪些文件。
文件描述符表和内存指针都是在指明进程中包含哪些系统的资源,因此,也认为进程就是系统资源分配的基本单位。
除此之外,进程控制块中还包含了一些关于进程调度的信息。
进程调度
什么是进程调度呢?
进程的调度就是操作系统进程管理的一个主要部分,主要就是确定在诸多进程中下一个要运行的进程,进程的调度一般是借助这样几个点:
- 进程的优先级
进程的优先级就是首先为每个进程赋予一个优先级,当需要进行进程的切换时,就参考之前已经赋予的优先级,找到一个优先级最高的进程进程进行调度。 - 进程的状态
一般,进程的基本状态主要有3种:
执行:即进程就是正在执行的;
就绪:进程可以随时被执行,是准备就绪的;
阻塞:进程正在等待另一个任务执行结束,才可以被执行;
- 进程的记账信息
进程的记账信息就是记录这个进程已经在CPU上执行了多久或是执行了多少指令了,可以作为决定这个进程还要不要继续执行的一个辅助条件; - 进程的上下文
有时会发生的一种情况是:进程在执行某个操作时,仅仅执行了一半,就被调度走了,一段时间以后,也许进程又再次回来,就需要继续执行之前尚未执行的操作。因此,记录进程的这些信息也是必要的。对于进程而言,上下文就是将进程切出CPU时将寄存器中的信息记录到内存中去。
进程的虚拟地址空间
为什么要有虚拟地址空间呢?
如果没有这个虚拟地址空间,所有的进程必然就会访问同一个物理地址空间,这种情况下,一旦进程的访问出现了错乱,就极有可能造成不可控的后果,因此虚拟地址空间的引入就是非常必要的。
一般,操作系统为每个进程分配了4G的虚拟地址,当进程需要保存数据或是分配内存时,就通过操作虚拟地址空间由操作系统为进程进行分配即可。
因为虚拟地址空间的引入,带给了进程一个主要特征,即隔离性:一个进程的运行不会影响其他进程的执行,当一个进程崩溃时,可不会造成其他进程的崩溃。
但是,也是由于这种隔离的特性,进程间的通行似乎又存在了问题~~
进程间通信
操作系统为进程间的通行提供了许多种方式,这里不会一一展开,因为其本质其实是一致的:借助一个公共资源;
首先在内核中开辟一块缓冲区,进程A将数据从用户空间拷到内核缓冲区,然后进程B再从缓冲区中读走数据,从而实现进程间的通信。
最后
以上就是任性口红为你收集整理的进程与进程调度的全部内容,希望文章能够帮你解决进程与进程调度所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复