| 操作系统OS(Operating System)用户与计算机硬件之间的接口控制和管理计算机资源的软件
  
 OS是一个分配者,分配的主体就是任务,就是一切硬件资源都需要找OS申请之后才能被授权使用。 
 程序 & 进程程序 
 程序 = 指令 + 数据程序是静态的,一般表现为一个或者一组文件
 进程什么是进程?进程是动态的。
 1.用户角度  
 进程是程序的一次执行过程,是程序在“运行阶段”的视角主体一个程序,可以进行多次执行(表现为多个进程), 也可以“同时”执行(多个进程同时存在)
 2.操作系统角度  
 进程是OS进行资源分配的基本单位 OS的职责:分配任务资源:被OS管理的硬件资源、软件资源分配的单位:分配的时候,最多考虑到这一层级基本:允许有更高层次的单位,但最小到这里
 换言之,同一个进程中的资源是共享的,不同进程间的资源的隔离的。  
 总结进程是动态过程
 绑定着一个程序
 允许同时存在
 OS内部资源分配的最小实体
 操作系统的职责进程管理模块:主要负责进程的调度工作,主持不同进程在CPU运行的时间划分。内存管理模块:主持内存空间的分配工作——进程通信问题。文件管理模块:把硬盘上的数据抽象成文件。硬盘是最为主要的二级存储,重要的IO设备,OS进行硬盘上的数据协调
 OS一般不会直接去管理硬盘的数据,一般委托文件系统进行抽象管理
网络管理模块其他硬件——以文件驱动的形式进行管理——驱动管理
 进程管理进程管理 / 进程调度, 负责CPU的分配。以时间线作为主轴去理解
 以指令去执行
 要做好进程调度我们面临的问题1.进程控制块抽象(PCB)Process Control Block  
 计算机内部要管理任何现实事物,都需要将其抽象成一组有关联的、互为一体的数据。在Java中,我们可以通过类 / 对象来描述这一特征。
 class PCB {
	1.进程的唯一标识,pid
	2.进程关联的程序信息
		a.哪个用户启动的
		b.进程工作目录
		c.什么时候开始的,什么时候结束的
	3.分配给该资源使用的各个资源
	4.调度是用到的信息
}
 这样,每一个PCB对象都代表着一个实实在在运行着的程序,即进程。操作系统再通过这种数据结构,例如线性表、搜索树等将 PCB 对象组织起来,方便管理时进行增删改查的操作。
 2.细化进程通过对进程做状态划分,来区分处于不同情况下的进程状态 新建,进程处于正在创建中就绪,进程已经获得了除CPU以外的所有所需资源,等待分配CPU资源运行,进程的指令在CPU中运行着阻塞,进程由于等待外部条件无法继续结束,进程的所有指令执行结束,但PCB暂时保留,OS还需要做一些其他工作
 
 3.如何选择进程上CPU在就绪队列中,应该选择哪个进程上CPU?需要保证公平性、要有消息、要让更紧急的任务先被处理、低成本
 先来先服务优先级划分(进程PCB中需要管理一个优先级属性)短作业优先级
 4.OS什么时候会介入进程调度——选择一个新的进程,进行CPU分配 一个新的进程刚处于就绪状态时,当该进程优先级较高时——抢占式(实时)运行状态的进程 -> 结束,一个进程结束了OS每隔一段时间,会调度一次:进程的时间片耗尽进程主动放弃CPU:运行 -> 阻塞
 运行 -> 就绪
 5.OS具体进程切换 
 通过上下文切换 —— 保护上一个进程的上下文 + 恢复下一个进程的上下文(Context)上下文指的是:以PC寄存器所代表的一组寄存器中的值
 保护上下文:把寄存器中的值保存在内存中的某个位置
 恢复上下文:把内存中之前保存的值写入寄存器中
 
 谢谢浏览 |