目录
操作系统
什么是操作系统
操作系统 (英语:Operating System,缩写:OS)是一组主管并控制计算机操作、运用和运行硬件、软件资源和提供公共服务来组织用户交互的相互关联的系统软件程序。根据运行的环境,操作系统可以分为桌面操作系统,手机操作系统,服务器操作系统,嵌入式操作系统等。
简单的说,操作系统的作用为:
- 对下(硬件)管理各种计算机设备
- 对上(软件)为各种软件提供一个稳定的运行环境
- 对于有图形界面的操作系统,可以为用户提供一个良好的人机交互界面
常见的操作系统
- windows系列:win95,win98,winXP,win7,8,9,10,11
- Unix/Linux:主要用在服务器,用来部署我们的应用程序
- MacOS
- 移动端的操作系统:Android,iOS,win phone,鸿蒙
- 国产的操作系统:红旗操作系统,基于Unix/Linux
操作系统在计算机所处的位置
进程调度
什么是进程
进程是操作系统对一个正在运行的程序的一种抽象,换言之,可以把进程看做程序的一次运行过程;同时,在操作系统内部,进程又是操作系统进行资源分配的基本单位。
进程可分为:用户执行的进程,前台进程,系统创建的进程,后台进程。操作系统本身也是一个程序,它也需要多个进程。
系统如何管理进程?
1.进程的描述——PCB
进程控制块抽象(PCB Process Control Block):相当于一个Java类,对应到C语言就是一个结构体
1.PID
一个进程的PID全局唯一,相当于人的身份证或者数据表的主键。
2.内存指针
当程序运行时,操作系统从硬盘中读取程序文件,加载到内存里,那么就要在程序运行前给程序分配一块有效的内存空间,最终在内存的数据与指令被CPU执行和读取。
3.文件描述符表
当程序运行时需要访问一些文件资源,这时操作系统就负责给程序分配这些资源需要的每个文件,被称为文件描述符,多个文件描述符在一起组成文件描述符表,类似于集合
默认每个程序会分配三个文件描述符:
- 标准输入:System.in
- 标准输出:System.out
- 标准错误:System.error
2.并行与并发
如图所示,对于这颗CPU,理论上可以支持8个进程同时进行(8个逻辑处理器)。对于现代的CPU来讲,都是多核的,但是在多核之前的CPU都是单核。在单核CPU的机器上,可以打开多个程序,看似也是同时执行,其实操作系统里确实只运行着一个进程,是通过进程间的快速轮动,来实现看似同时运行的一个效果,这个现象就叫做并发执行。如图执行顺序:
而对于多核的CPU就可以做到真正的同时执行,称为并行执行。如图:
3.进程调度的属性
1.进程状态
进程在操作系统中会有三个状态:运行,就绪,阻塞
运行和就绪很容易理解,那么阻塞可以简单的理解为:一个进程等待操作,此时未满足一些特定的条件,此进程就成为阻塞状态。操作系统会专门有一个阻塞队列来保存这些阻塞的进程,等待阻塞完成后,把他们从队列中取出,就变为就绪状态继续参与CPU调试。
2.进程的优先级
哪个进程可以被CPU调度的机会多,哪个优先级就高,这个优先级可以通过代码控制。
3.上下文信息
执行某个进程时,要保存当前执行的位置,也就是存档。
若下一次被重新调度回来执行时,要读取之前的存档信息,也就是读档。
4.进程的记账信息
类似于一个日志,进程执行到哪里了,就在CPU调度时记录下来,以便下次调度回CPU时从这个执行的位置继续执行。
4.进程的组织方式
进程是通过一个双向链表来组织PCB:
- 创建一个进程就是把对应的PCB加入到链表中;
- 销毁一个进程就是把对应的PCB从链表中删除;
- 查看所有进程就是遍历整个链表。
5.内存分配——内存管理
程序在运行的时候都会被操作系统分配内存。
那为什么需要内存的管理呢?
如图所示:在正常情况下,进程A是不会去访问进程B的内存空间的,但是如果发生突发情况,进程A访问进程B的内存空间,修改了进程B的数据,导致其数据不准确,甚至程序崩溃。
我们为了规避这个现象,采用了内存管理单元(MMU)来处理这个这个问题。
MMU 把虚拟地址与真实地址做了一个映射,在物理地址申请,再给每个进程分配虚拟地址,一旦进程访问的地址越界,MMU直接报错,不被允许访问。这样做的目的就是将进程之间隔离开来,互相不受影响。
6.进程间通信
如上所述,进程是操作系统进行资源分配的最小单位,这意味着各个进程互相之间是无法感受到对方存在的,这就是操作系统抽象出进程这一概念的初衷,这样便带来了进程之间互相具备”隔离性(Isolation)“。
但现代的应用,要完成一个复杂的业务需求,往往无法通过一个进程独立完成,总是需要进程和进程进行配合地达到应用的目的,如此,进程之间就需要有进行“信息交换“的需求。进程间通信的需求就应运而生。
目前,主流操作系统提供的进程通信机制有如下:
管道,共享文件,文件,网络,信号量,信号
其中,网络是一种相对特殊的 IPC 机制,它除了支持同主机两个进程间通信,还支持同一网络内部非同一主机上的进程间进行通信。
总结
- 进程调度的目标就是为了让CPU资源得到充分的利用,调度的过程就是一个时间管理的过程。
- 进程是操作系统进行资源分配的最小单位