【 了解进程 】

一、进程的概念

进程(Process)是指计算机中已运行的程序,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。进程是程序真正运行的实例,若干进程可能与同一个程序相关,且每个进程皆可以同步或异步的方式独立运行。

例如:
在这里插入图片描述
这些.exe文件被称为 可执行文件 ,在你双击它们之前都是静静的待在硬盘上面的,不会对你的系统产生任何影响。但是一旦你双击执行,操作系统就会把这个.exe文件加载到内存,并且让CPU开始执行exe文件内部的一些二进制指令,这个时候这个exe文件已经运行起来了,并不在躺平。我们把这个运行起来的exe文件称为 进程

二、操作系统如何管理进程

从概念中我们可以知道,一个进程想要运行起来是需要依赖于操作系统的,那操作系统具体是如何来管理进程的呢?

2.1 描述进程-PCB

第一,操作系统先描述一个进程,明确一个进程上面的相关属性。而操作系统用来描述这个进程属性的结构体我们称为 PCB(process control block):进程控制块 。上述情况是指一个进程中只存在一个线程,而实际中一个进程包含若干线程,而每一个线程才称为一个 PCB。至于什么是线程,我们后面马上会接触到。

PCB中又具体包括哪些属性呢?如下:

1、pid(进程id): 进程的身份标识,相当于人的身份证号码。

2、内存指针: 指明了这个进程要执行的代码/指令具体在内存的哪里,以及这个进程执行依赖的数据都在哪里?

3、文件描述符表:
在这里插入图片描述

上面的属性都是一些基础的属性,而为了实现 进程调度 还需要依赖以下属性:

4、状态: 这个状态描述了当前这个进程接下来该如何调度。就绪状态:随时可以去cpu执行 。阻塞状态/睡眠状态:暂时不可以去cpu上执行

5、优先级: 先给哪个进程分配时间,后给谁分配时间。以及给谁分的多,谁分的少

6、记账信息: 统计了每个进程都分别被执行了多久,分别执行了哪些指令等,给进程调度提供指导依据

7、上下文:
在这里插入图片描述

上文中我们提到了 进程调度 这个重要的内容,大家可以参考大佬笔记!!!

2.2 组织进程

操作系统有很多,内部的实现也各有不同,下面我就以开源的Linux来举例

所谓组织进程,就是 通过特定的数据结构来把描述进程的信息放到一起,方便进行增删查改。而Linux中就是使用双向链表把每个进程的PCB给串起来!在Linux中,所谓的创建进程就是把PCB加到链表中,而销毁进程就是从链表中删除,查看进程就是遍历链表。

三、虚拟地址空间

在上文中我们提到了 进程调度,所谓进程调度其实就是操作系统在考虑如何给各个进程分配CPU资源,而具体如何分配资源,我们需要通过虚拟地址空间来实现。

举个例子:

在疫情期间,如果某个居民阳了就需要立刻封锁小区,否则会导致其他人也被传染。这种情况就类似于早起的操作系统,里面的进程都是访问同一个内存的地址空间,如果某个进程出现了BUG就可能引起其他进程的崩溃。那我们该如何解决呢?

解决办法就是在这个小区中划分出很多条道路,这些道路之间彼此隔离开,互不干扰,这样每个居民走各自的道路就不会存在传染的问题了,如下:
在这里插入图片描述

进程也一样,通过类似的虚拟地址空间,来保证进程间的独立性,确保每个进程互不干扰!!

但是在实际工作中,我们有的时候还是需要进程间的交互的,这个时候我们该如何来实现进程间的通信呢?

在以前,操作系统提供了公共空间机制来实现进程通信,就是进程A把数据放到公共空间上,进程B再来取走。但是这种通信机制有很大的缺点,不适合现代程序开发了,目前我们最主要的两种通信方式就是文件操作 和 网络操作。在后面我们也会学习到


在此我们只是稍微了解进程相关的知识点,方便后续学习多线程知识以及并发编程!如果还想了解更过进程知识,请参考大佬笔记!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值