目录:
一、认识操作系统
二、什么是进程/任务(Process/Task)
三、进程管理(调度)问题
1.1什么是操作系统
操作系统是一组做计算机资源管理的软件的统称。目前常见的操作系统有:Windows系列、Unix系
列、Linux系列、0SX系列、Android系列、i0S系列、鸿蒙等。
1.2操作系统的定位
1.3操作系统的主要功能:
(1)管理不同的硬件设备:
计算机能接入很多的设备.扫码枪,医疗设备,B 超超声机等等。
(2)给软件提供稳定的运行环境:
现代的操作系统上,都是要同时运行很多程序的,希望这些程序之间,不能相互干扰.
某个程序出 bug 了,不会影响到别的程序。
注意:
操作系统管理的硬件设备,很多的,不是系统直接操作硬件,而是硬件厂商会提供对应的"驱动程序”
操作系统其实是通过驱动程序,间接的操作硬件设备的
2.1什么是进程/任务(Process/Task)
每个应用程序运行于现代操作系统之上时,操作系统会提供一种抽象,好像系统上只有这个程序在运行,所有的硬件资源都被这个程序在使用。这种假象是通过抽象了一个进程的概念来完成的,进程可以说是计算机科学中最重要和最成功的概念之一。
进程是操作系统对一个正在运行的程序的一种抽象,换言之,可以把进程看做程序的一次运行过程;同时,在操作系统内部,进程又是操作系统进行资源分配的基本单位。
2.2什么是进程管理
进程就是正在执行的应用程序,谈到一个应用程序,有两种状态
(1)没有运行时候,是一个 exe 文件,躺在硬盘上的
(2)运行的时候,exe 就会被加载到内存中,并且 由cpu 执行里面的指令了。进程执行进程里的指令,需要硬件资源的如图:
(3)进程是操作系统,进行资源分配的基本单位,由于一个系统上进程比较多,才需要管理,简单来说进程管理就是操作系统对多个进程进行资源分配的过程。
2.3进程管理的过程
(1)描述 通过 结构体/类,把进程的各种属性, 表示出来
*结构体:(主流系统 C/C++ 实现的,广泛用到 结构体 struct)
*对于 Linux 操作系统来说,使用 称为PCB(进程控制块)这样的结构体来描述进程信息的。
*进程控制块抽象(PCB Process ControlBlock)
计算机内部要管理任何现实事物,都需要将其抽象成一组有关联的、互为一体的数据。在 Java 语言中,我们可以通过类/对象来描述这一特征。
(2)组织通过 数据结构,把多个上面的结构体,穿起来,并进一步的进行各种增删改査.简单认为,通过链表的方式,把上述多个 PCB 串到一起~~
创建新的进程 (双击 exe,运行起程序),就相当于创建了一个 PCB 结构体, 并且插入到链表中,销毁进程, 就是把 PCB 从链表上 删除掉,并且释放这个 PCB 结构体查看进程列表,就是在遍历这个链表,依次显示出对应的信息~~
注意:
(简化版本的说法,实际的情况更复杂,不只是一个链表。。)
2.4 PCB所包含的属性
1.PID进程标识符
同一时刻,一个机器上的多个进程之间,PID 唯一的,不会重复,系统内部的很多操作,都是通过 PID 找到对应的进程的.
2.内存指针(一组)
描述进程依赖的指令和数据都在内存的哪个区域~~
操作系统, 运行 exe,就会读取 exe 中的 指令和数据,加载到内存中,(内存地址)
3.文件描述符表(顺序表/数组)
描述了进程打开了哪些文件对应到硬盘上的数据
进程中,打开了某个文件,就会在顺序表中添加一项~~
4. 进程状态
大致分为:
就绪状态的进程,是可以随时被调度到 CPU 上执行指令的~~
阻塞状态的进程,无法调度到 CPU 上执行,之所以阻塞,是因为要做一些其他的工作,比如 进行 10 操作 (读写硬盘/读写网卡...)
5.进程优先级(后面再说)
6.进程上下文
分时复用:一个进程执行一会之后, 就要从 cpu 上调度走,过一段时间,还会调度回 cpu, 就要沿着上次执行的结果,继续往后执行~~
把之前执行的中间结果 (各种 cpu 寄存器中的值)保存起来,以备下次使用~~)这就是进程上下文
上下文也可以理解成,打游戏,存档,读档~~
7.进程的记账信息
优先级的加持之下 使不同的进程,吃到的资源,差异越来越大了~~操作系统,统计每个进程,在 CPU 上执行的时间根据这个来进一步的调整调度的策略~~