操作系统
操作系统图解
这个图详细说明了计算机整个框架,系统调用,操作系统内核和驱动程序三个统称为操作系统,应用程序通过操作系统提供的api来调用硬件设备,而对于硬件设别来说,每个计算机的硬件设备的种类和厂家不同,不能直接被操作系统调用,此时需要通过操作系统中的驱动程序来适配各种计算机的硬件设备,从而达到操作系统对硬件管理的作用。
操作系统的概念
操作系统指的是对计算机中系统资源管理的软件的统称(这里主要突出的是管理功能,分为对上和对下两个方面的管理:对上给软件提供稳定的运行环境,对下管理硬件设备)。
常见的操作系统:Windows系列、Unix系列、Linux系列、OSX系列、Android系列、iOS系列、鸿蒙等。
进程
进程的概念
进程是操作系统对一个正在运行的程序的一种抽象,可以把进程看做程序的一次运行过程,通俗来说,操作系统中一个正在运行的程序叫做进程,不在运行的则不能成为进程。
特性类似于这种在计算机上的程序但并没有在操作系统中运行的就不能叫做进程。
进程的管理
进程是操作系统分配系统资源的基本单位,是一个重要的“软件资源”,它由操作系统内核来负责管理,管理主要包括对进程的描述和组织;
描述:通过C语言中的结构体(因为操作系统底层使用C/C++代码来写的)来对进程的属性和特征进行描述;
组织:每一个结构体成为一个PCB(进程控制块),组织就是通过数据结构把这些PCB串起来,底层所使 用的数据结构可以近似看成一个双向链表(其实远比双向链表复杂)。
- 创建PCB:相当于在双向链表中插入一个包含进程属性的节点
- 销毁PCB:相当于在双向链表中删除一个包含进程属性的节点
- 查看PCB:相当于遍历双向链表查找到所需要查找的进程节点
进程的属性/特征
- pid身份标识符(唯一数字,类似于居民身份证号码,学生的学号)
打开任务管理器在pid这一列可以看出每个进程所对应的pid都是不一样的,一个应用程序也可以对应多个pid - 内存指针(指向了该进程使用的内存有哪些)
- 文件描述符表(描述了该进程在硬盘上所使用的文件和其他资源)
注意:这里的内存指针和文件描述符表通常被统称为进程有哪些硬件资源 - 进程调度相关的属性(解决了CPU如何分配的问题)
进程调度
每一个进程在执行时需要分配一定的资源(包括硬盘资源和CPU资源),其中硬盘空间很大,硬盘资源的分配比较充裕,而CPU资源较少(大部分为8核或者16核CPU)难以分配给上百个进程,那么如何分配这些CPU资源能让尽可能多的进程可以同时运行呢?这里就会涉及到进程调度。
在讲解进程调度之前,我们需要了解一下操作系统中的并发和并行的问题;
并发:两个进程在微观上不是同时执行,但是进程在不断的快速切换,使得在宏观上感觉是同时执行的。
并发和并行都是由操作系统内核负责处理的,对于操作系统来说,它无法感知进程是并发还是并行,所以我们一般都会称为并发(这里的并发 = 并行 + 并发)。
进程调度的属性
进程是由操作系统来负责管理的,操作系统中的有一个重要模块叫做进程调度器让有限的CPU来调度执行这么多进程。
- 进程状态:一般分为三种状态;
- 优先级:优先级主要解决的是CPU资源先分配给哪些进程后分配给哪些进程,哪些进程分配的资源多哪些进程分配的资源少;
- 上下文:上下文主要指的是某一进程进行到哪会被记录下来,下次该进程继续执行的时候会先读取上次的记录紧接着上次后面继续执行(这里的保存记录和读取记录都是CPU中各寄存器的值);
- 记账信息:记账信息指的是操作系统统计每个进程在CPU上占用的时间和执行的指令数目,根据这个来决定下一阶段如何调度。
所以操作系统内核通过以上4个属性来决定如何让有限的CPU来调度执行这么多进程