从零了解进程(操作系统定位,进程的概念,特征,虚拟地址)

时间:2022-12-25 08:01:41

目录

操作系统的定位

进程的概念

如何描述进程?

如何组织进程?

进程的特征

1.pid

2.内存指针

3.文件描述符

4.进程调度的相关属性

(1)进程的状态

(2)优先级

(3)上下文

(4)记账信息

进程是如何利用cpu资源的?

进程的虚拟地址

物理地址

内存随机访问的特性

为什么程序不直接获取内存的物理地址?

虚拟地址


操作系统的定位

介绍进程之前我们先简单介绍一下操作系统

操作系统是一个搞管理的软件,它对下管理硬件设备,对上给软件提供稳定的运行环境,操作系统是:软件 硬件 用户之间交互的媒介

我们熟悉的操作系统有:Window Linux Mac......

从零了解进程(操作系统定位,进程的概念,特征,虚拟地址)

进程的概念

一个正在运行的程序,就是一个进程.

从零了解进程(操作系统定位,进程的概念,特征,虚拟地址)

 比如我们打开任务管理器,这些都是进程,它们对应着一些cpu,内存,磁盘,网络资源,

进程是操作系统资源分配的基本单位.

进程是一个重要的软件资源,由操作系统负责管理的
操作系统是如何管理的呢?

简单来说就是,描述和组织进程,讲清楚进程有哪些属性和特征,通过一定的数据结构把多个这样的
基本单位串联起来.

如何描述进程?

使用结构体来描述进程,
用来描述进程的结构体我们称之为PCB(进程控制块)

如何组织进程?

通过双向链表,把多个PCB串联在一起,
创建一个进程,本质上就是创建一个pcb这样的结构体对象,把它插入到双向链表当中
销毁一个进程,本质上就是把链表上的pcb节点删除掉
用任务管理器查看进程,本质上就是遍历整个pcb链表

进程的特征

我们用pcb这个结构体来描述进程,那么pcb描述了进程的哪些特征?

1.pid

进程的身份标识符,是唯一的一串数字

2.内存指针

指向了说自己要用到哪些内存

3.文件描述符

硬盘上的文件等其他资源

4.进程调度的相关属性

(1)进程的状态

就绪状态:随叫随到,随时准备到cpu上取执行

运行状态:正在cpu上执行

堵塞状态:短时间内无法在cpu上执行

(2)优先级

进程也是有优先级的.谁先排,谁后排也是有一定的算法逻辑的

(3)上下文

简单来说就是"存档"和"读档",操作系统在进行切换的时候,就需要把中间状态给记录下来,
下次这个进程再上cpu上执行时,就可以恢复上次的状态继续往下执行了.

本质上,进程的上下文,就是cpu中的各个寄存器的值.
寄存器:cpu内置的存储数据模块,保存的就是程序运行的中间结果
保存上下文:就是把这些cpu寄存器的值,记录到内存中
恢复上下文:就是把内存中这些cpu寄存的值,恢复回去

(4)记账信息

操作系统,统计在每个进程在cpu上占用的时间,和执行的指令数目,
根据这个来决定,下一阶段该如何调度.

进程是如何利用cpu资源的?

内存指针和文件描述符,其实就是描述了,进程持有了哪些硬件资源
进程的调度的相关属性,其实就描述了进程是如何利用cpu资源的.

硬件资源,内存,硬盘,网卡等比较好分,而cpu资源不好分,
一般我们的电脑进程有上百个,而cpu只有一个,尽管现在cpu是多核的,每个核心都可以看作一个独立的cpu,但是往往也就是8核,12核,16核......还是不够进程分!

狼多肉少,这些进程都希望能够同时运行,这时我们就要用到并行核并发了.

并行:微观上,同一时刻,俩个核心上的进程,就是同时执行的

并发:微观上同一时刻,一个核心上只能运行一个进程,但是能够进行快速切换
比如一个cpu核心上,先运行谷歌浏览器,再运行qq音乐,再运行微信......
只有切换速度足够快,宏观上,让人感知不到

操作系统内核处理的应用程序,我们感知不到是并行还是并发
因此,往往把并行和并发统称为并发

操作系统也有一个重要的模块调度器,负责让有限的cpu调度执行这么多的进程.

进程的虚拟地址

物理地址

内存:物理上是一条内存条,可以存很多数据,
内存可以想象成一条大走廊,有很多房间,每个房间的大小都是1Byte
每个房间都有一个编号,从0开始依次累加
这个内存编号,就是地址,
这个地址我们称之为物理地址.

内存随机访问的特性

随机访问:访问内存上任意地址的数据,速度都极快,时间上都差不多.
数组取下标时间复杂度是O(1),也是因为内存随机访问的特点.

为什么程序不直接获取内存的物理地址?

从零了解进程(操作系统定位,进程的概念,特征,虚拟地址)

虚拟地址

使用物理地址有个明显的弊端,如果出bug了,明明是进程1的bug,可能会把其它进程给搞坏.
所以我们针对进程使用的内存空间,进行"隔离",使用虚拟地址空间,
由操作系统和专门的硬件设备(MMU),负责进行虚拟地址,到物理地址的转换

从零了解进程(操作系统定位,进程的概念,特征,虚拟地址)

一旦访问越界了,比如进程1的指针地址成了0x3000
操作系统内核会发现这里的地址超出了进程1的访问范围了
此时就会直接反馈一个错误
因此,谁出bug,影响谁,其它进程不受影响.