目录
一. 操作系统
1. 操作系统的概念
2. 操作系统的功能
二. 进程
1. 进程的概念
2. 进程在系统中的管理
3. PBC
(1)pid
(2)内存指针
(3)文件标识符
4. 资源分配
5. 进程的调度
(1)状态
(2)优先级
(3)记账信息
(4)上下文
6. 进程的通信
一. 操作系统
1. 操作系统的概念
操作系统是计算机系统的核心软件,负责管理计算机的硬件和软件资源,并为用户和应用程序提供统一的接口。
常见的操作系统:Windows,macOS,Linux,Android,iOS,鸿蒙
注意:操作系统是一个软件
2. 操作系统的功能
1. 管理各种硬件设备(向下,管理各种硬件设备)
2. 给软件提供稳定的运行环境(向上,向上层提供方便易用的服务)
3. 操作系统是系统资源的管理者
一个电脑由硬件组成,比如鼠标,键盘等
市面上,每一种硬件有很多厂商在生产,不同厂商生产的硬件会存在差异,
即使是同一个厂商,型号不同,也会存在差异,
意味着:每一个硬件就会对应一个程序,这样很不利于市场的发展,
这时候操作系统就会提出统一的API,软件来实现API,达到管理这些种硬件设备的功能操作系统会提供一些管理软件资源的API常见的管理:文件管理,存储器管理,设备管理,处理器管理
二. 进程
1. 进程的概念
进程是操作系统提供的一种软件资源
多任务操作系统(同一时刻,可以执行多个任务)
单任务操作系统(同一时刻,可以执行一个任务)
进程的组成部分:程序代码,数据和PCB(进程控制块)组成
在任务管理器中,正在运行的程序或者正在执行的任务都可以被称为进程,进程是动态的
注意:进程和程序的区别
- 程序是静态的,进程是动态的
一个可执行文件(程序),当我们双击运行的时候,操作系统就会把这个可执行文件中的关键信息(小部分)加载到内存中,并且开始运行里面的代码,就形成了一个进程.
2. 进程在系统中的管理
操作系统,一般使用C/C++实现,没有java实现的
- 一般使用结构体的方式来描述进程的信息—PCB(进程控制块)
- 再使用一些数据结构(链表等)将这些结构体,串在一起
可以粗劣认为:
- 运行一个新的程序,系统上就会多出一个进程,也意味着会多出一个新的结构体(PCB),并且添加在链表上
- 结束一个程序,就意味着将链表中对应进程的PCB删除并销毁
- 当在运行管理器中,看到这些任务在运行的时候,就说明在遍历链表并打印每个节点的信息
也就意味着,有一些特殊的程序(在内核中执行),如果出现问题,可能会导致系统故障(卡死或者蓝屏) ,但是大部分,不会导致崩溃,最多是会抛出一些异常
3. PBC
本质上是一个结构体
结构体内包含了进程的核心信息(以为很少吗?并不,事实上可能会有上百个)
(1)pid
作用:进程的身份表示(进行区分)
在同一个机器上,某一个时刻,每个进程pid都是唯一的
在针对进程的操作中,经常使用pid作为参数
(2)内存指针
作用:描述进程使用内存资源的情况
- 进程只能使用申请到的资源
- 进程在运行的时候,必须将指令和数据都加载到内存中
内存指针就详细说明进程可以使用那些资源,并且知道那些地址存放的指令,那些地址存放的数据
注意:肯定是先将指令和数据传入内存中,再创建和运行进程
(3)文件标识符
作用:说明了这个进程在运行的时候,会涉及到的外存相关资源
文件:对外存的一种抽象,无论是硬盘,软盘,U盘,都叫“文件”
一个进程想要操作文件,那么结构体内的文件标识符,会记录这个文件的相关信息
4. 资源分配
进程是系统分配资源的基本单位
- 内存和硬盘的资源分配问题,在PCB中详细体现
- cpu中同样会出现资源分配的情况(一块cpu可能会有一个核心或者多个核心)
同一时刻,一个核心只能运行一个进程
但是电脑上的进程往往不止几个,而是上百个甚至更多,要如何解决这个问题?
于是出现了分时复用(并发)的概念:因为cpu运行的速度很快,让这些进程轮流进入cpu运行
在人眼看来,这些进程就是“同时执行”
注意:多核cpu的特点
假如只有4个进程,4核cpu并不是通过进程快速切换的方式实现的并行,而是真正的同时执行(并发)
但是,现在的计算机都是并行加并发 ,具体如何,还是看系统的调度
5. 进程的调度
PCB 中还提供一些属性, 来支持系统对进程的调度
(1)状态
- 就绪状态:进程已经准备好,等待CPU调度。
- 运行状态:进程正在CPU上运行。
- 阻塞状态:进程因为某些原因暂时无法运行,需要等待某个事件的发生。
(2)优先级
在多个进程需要调动的时候,会根据优先级从而选择调动谁,
优先级的排序会根据优先级算法得出
比如:在打王者和qq,这个时候王者的优先级肯定比qq高
(3)记账信息
会根据每个进程占用cpu多少时间,进行一个统计,然后根据统计结果,调整调度的策略
比如,一个进程很长时间都没有进入cpu,那么就会适当的提高这个进程的优先级
(4)上下文
支撑进程调度的重要属性,类似于游戏的存档和读档
- cpu内有一些寄存器,专门存放信息
- 进程调度出 CPU 之前,把关键寄存器中的这些数据,保存到内存中。
- 在该进程下次再去 CPU 上执行的时候,把数据从内存中加载到cpu的对应寄存器上。
6. 进程的通信
每个进程的内存,都是相互独立的,彼此互不干扰
进程A不能访问进程B,对应进程B也不能访问进程A,这种称为“进程独立性”
好处:如果这个进程出现了问题,只会影响当前进程,不会导致所有的进程崩溃
比如:在打王者的时候,qq突然有人给你发了个神秘信息,导致你手机崩溃了,那确实很让人恼
注意:
进程的通信和进程的独立性,并不冲突,系统会提供一些公共的空间来交互数据
常见的几种通信方式:管道,文件,网络,信号等
其中,最常用的是网络,网络可以实现一个主机的不同进程,也支持不同主机的不同进程
点赞的宝子今晚自动触发「躺赢锦鲤」buff!