一、概念
1.什么是操作系统?
任何计算机系统都包含一个基本的程序集合,称为操作系统(Operator System)
那么,我们为什么要设计操作系统呢?
在上图中可以看出,操作系统是衔接用户模块和硬件模块的关键。
因此,设计操作系统的目的就是:
- 与硬件交互,管理所有的软硬件资源(对内且对下)
- 为用户程序(应用程序)提供一个良好的执行环境(对外且对上)
2.操作系统包括什么?
- 内核(进程管理,内存管理,文件管理,驱动管理)
- 其他程序(例如函数库,shell程序等等)
3.操作系统是如何管理硬件和软件的呢?
- 软件管理:进程管理,内存管理,文件管理
- 硬件管理:驱动管理—>是通过驱动程序间接管理硬件
二、进程
1. 进程、程序、文件
文件: 一个pdf文件就是文件
程序: 表现在磁盘上的静态资源,属于文件,是一种可执行的资源,通过双击运行在内存中,然后程序就转变为进程
进程: 运行起来的是程序,对于操作系统来说,一个任务就是一个进程(Process)。------->任务管理器里边的进程,表现在操作上动态执行的,被操作系统所管理的
进程、程序、文件之间的关系:
- 用wps这个程序文件运行pdf文件,运行起来的wps(打开pdf)是进程
- 比如我们使用的idea,它本身是用程序写的,通过双击,将idea运行起来,就变成了进程,在任务管理器中可以查看。
2. 进程中的上下文
- 上下文:具体指某一个环境,环境的上文和下文
- cpu在时间点内切换出去的进程叫环境的上文,会保存寄存器中的值、进程的状态以及堆栈的内容,再次切换回来为环境的下文。
3. 时间片:
1) 多任务:
现代操作系统比如Mac OS X,UNIX,Linux,Windows等,都是支持 “多任务”的操作系统 。所谓的多任务,就是操作系统可以同时运行多个任务。
2) 操作系统的调度方式:
操作系统(如Windows、Linux)的任务调度是采用时间片轮转的抢占式调度方式,也就是说一个任务执行一小段时间后强制暂停去执行下一个任务,每个任务轮流执行。
3) 时间片、进程状态:
任务执行的一小段时间叫做时间片
就绪: 进程处于可运行的状态,只是CPU时间片还没有轮转到该进程,则该进程处于就绪状态。
运行: 进程处于可运行的状态,且CPU时间片轮转到该进程,该进程正在执行代码,则该进程处于运行状态。
阻塞: 进程不具备运行条件,正在等待某个事件的完成。
任务正在执行时的状态叫运行状态,其他进程就属于就绪态
任务执行一段时间后强制暂停去执行下一个任务,被暂停的任务就处于就绪状态等待下一个属于它的时间片的到来。
4.单核CPU与多核CPU
1) 单核CPU:
单核cpu:是一个cpu通过时间片轮转的方式循环调度进程的。
表现结果:人肉眼看起来所有进程都在“同时”执行,但是在CPU视角来看,是每个进程在时间段内进行切换—>不停的轮流执行(时间片轮转调度)
并发(假同时): 即:单个CPU多个任务在一个时间范围以时间片轮转方式
2) 多核CPU:
- 每一个CPU和单核的CPU是一样的
- 但是在一个时间点上,可以同时运行多个进程(每个CPU都可以调度进程,就是多进程)
并行(真同时): 多个CPU一个时间点多个任务同时执行
5.内核态和用户态
- 进程运行起来以后属于用户态,当涉及到网络io/本地io操作,进程就由用户态切换到内核态,操作完返回程序时,由内核态装变为用户态
- 用户态切换到内核态比较耗时的一种操作
- 文件操作:用户由用户态转为内核态(本地IO)。本地文件读取过程:从本地磁盘读取到系统的内存中,然后再读取到Java虚拟机的内存(读)。