目录
二、需要对进程做个区分:那些可以分配CPU了,那些现在还暂时没有准备好
操作系统OS:
多用户-多任务场景 OS的主要职责就是协调——专门的软件来做协调工作
JobA ia1 ia2 ia3..
JobB ib1 ib2 ib3...
有了分时操作系统就不用等A全部执行完,再执行B
硬件(资源)会被多个任务“同时”访问
OS协调不同任务对硬件资源的访问
OS管理着硬件的资源,分配给不同的任务去使用
OS是一个管理(硬件/软件)资源的软件
OS是一个协调者(管理的含义就是做协调)
OS一个分配者,分配的主体就是任务。站在任务的角度,就是一切硬件资源都需要找OS申请后才能授权使用
OS原来,主要研究就是“管理学”,如何高效、低耗、稳定的进行资源的分配,协调工作以及在其中遇到的种种问题。
硬件资源cpu 内存 IO设备 协调者(管理者)OS 不同用户的不同任务 进程process
1.程序program 静态
一套做数据处理的步骤,程序=指令+数据
是一套静态的步骤 菜谱
2.进程process 动态
程序的一次执行过程(按照菜谱的依次做菜过程,动态)
一个程序理论上可以有多次进程,甚至可以同时执行(多个进程同时存在)
进程是程序运行阶段的视角主体。
站在OS实现的角度看,进程是OS进行资源分配的基本单位。
同一个进程中的资源是共享的,不同进程之间的资源,是隔离的
A进程只能访问A进程自己的资源(这里讨论内存),A进程无法访问B进程的资源(内存),更无法访问被OS直接管理的资源
可以把操作系统的职责做个简单的划分:
1.OS进行CPU协调的模块——进程管理模块:主要负责进程的调度工作,主持不同进程在CPU运行的时间划分。实践中,OS需要负责把进程A从CPU上拿下来,把进程B放到CPU上。 via修改PC寄存器的值
CPU之前执行A进程的指令——通过修改PC,让CPU去执行属于B的指令——CPU去执行属于B进程的指令 进程管理
2.OS进行内存协调的模块——内存管理模块:支持内存空间的分配工作——进程通信的问题
内存管理
3.硬盘最为主要的二级存储,是比较重要的一个IO设备——OS进行硬盘上的数据的协调模块
OS一般不直接去管理硬盘上的数据,一般是委托文件系统进行抽象管理
把硬盘上的数据抽象成文件(包含文件夹/目录)的概念 文件管理
4.网络管理模块
5.其他硬件——以文件驱动的形式进行管理——驱动管理
3.作业task
4.作业job
进程管理(进程调度) :负责CPU的管理,天然是以时间线作为主轴去理解(指令的执行)
类比人们每天的时间作息
做好进程调度,面临什么问题?
一、需要把进程(程序执行的过程)这个抽象概念,用数据表示处理——面向对象的思想
变成数据,才能被计算机进行处理(才能被OS这个软件进行处理)通过数据结构组织起来管理
1. 管理程序的信息(那个进程下的那个程序文件)
2.关于运行的一些信息(那个用户启动的、进程工作目录)
进程是何时开始的,何时结束
3.分配资源
CPU:CPU的占用率:之前过去的一段时间,分配给该进程的时间占比
内存:分配出去的内存(内存不一定连续)
4.调度时用到的信息
二、需要对进程做个区分:那些可以分配CPU了,那些现在还暂时没有准备好
通过对进程做状态划分,来区分出处于不同情况下的进程 ——进程状态/状态的转义
1.新建(进程处于正在创建中)随着程序的启动运行
2.就绪(万物具备,只差cpu)
3.运行(进程的指令真正在CPU运行着)进程被OS选中,并且分配了CPU
4.阻塞(进程由于等待外部条件,所以暂时无法继续)
5.结束(进程的所有指令执行结束,但PCB暂时保留,OS还需要做一些其他工作的)
进程的CPU必须经过OS系统分配才能得到
->新建:随着程序的启动运行
新建->就绪:进程的初始化工作完全完成(这个工作是由OS指令完成的)
就绪->运行:进程被OS选中,并且分配了CPU
运行->结束:进程的最后一条指令执行结束(main方法执行结束了)
运行->就绪:1.被高优先级的进程抢占了 2.时间片耗尽 3.进程可以执行一些OS提供的系统调用,主动放弃
运行->阻塞:等待一些外部条件:等待IO设备、进程休眠一段时间
阻塞->就绪:外部条件满足:IO数据来了、休眠时间到了
结束->:进程PCB彻底被OS回收了
三、现在手上有等待分配CPU的所有进程列表——就绪队列没下个问题,选择哪个进程上的CPU:
要求:要有消息、保证公平性、要让更紧急的任务被更紧急的处理、低成本解决...
先来先服务
优先级划分(进程PCB中需要管理一个优先级的属性)
短作业优先级
四、OS什么时候会介入进程调度:需要选择一个新的进程,进行CPU分配
1.一个新的进程刚出于就绪状态时,当该进程的优先级较高时——具备这种能力的OS被称为抢占式(实时)
2.运行状态的进程 ->结束 一个进程结束了
3.OS每隔一段时间,会调度依次为:进程的时间片耗尽
4.进程主动放弃CPU
1.运行->阻塞
2.运行->就绪
五、OS具体怎么进程切换:通过上下文切换——保护上一个进程的上下文+恢复下一个进程的上下文(contex)
上下文指的是:以PC寄存器所代表的一组寄存器中的值
保护上下文:把寄存器中的值,保存到内存的某个位置
恢复上下文:把内存中之前保护的值,写入寄存器中
由进程管理引出的OS概念:
1.并行parallel 和 并发concurrent
并行:进程真的同时在执行(微观角度的同一时刻,是多多个指令在执行的,所以只会在多CPU多核场景下)
并发:进程加的同时在执行(微观上,表现为一次只执行一个进程,但宏观上,多个进程在“同时”执行)
CPU正在执行的是普通进程的指令时,就进入到内核态。反之,正在执行的是普通进程的指令,就在用户态
管理的核心就是权限的划分。
内核态的指令权限高(所有的硬件都能直接访问) 可以访问所有内存
用户态的指令权限低(只能访问OS规定的资源) 只能访问进程自己的内存
CPU本身就有权限的开关,所以可以做到
用户态的性能较好,内核态的性能较差