目录
前言
首先,我们需要明白操作系统(OS)是一个管理资源(硬件、软件)的软件。同时OS是一个分配者,分配的主体就是任务。站在任务的角度,就是一切资源都需要找到OS申请后才可以使用。而这个任务就是进程(process)。
一、进程和程序
首先对应程序,就是一套静态的步骤,一套数据处理的步骤。对于进程则可以分为两个视角:
1.用户角度
对于用户来说,进程就是一次程序的执行过程,是动态的。而且一个程序可以多次的执行,甚至可以“同时”执行。
2.OS角度
对于OS来说,进程就是资源分配的基本单位。在这里OS扮演了协调者/管理者的职责,这里的分配的资源就是被OS管理的资源(硬件资源,软件资源)。
二、OS的职责
1.进程管理
OS进行CPU的协调模块:负责进程的调度工作---主持不同的线程在CPU运行的时间的划分。面对进程调度的一些问题下面就是他的应对方法:
1.进程抽象为(PCB)
面向对象的思想,变成数据,更好的被计算机处理。PCB大致的数据如下图:
2.进程状态
这个是为了对进程做区分,那些可以分配CPU,那些还没有准备好。
状态转移图:
下面是对这里的每个状态的解释:
关于就绪队列:装有所有处于就绪状态的进程(一般只有一个)。
关于阻塞队列: 所有处于阻塞状态的进程(一般有多个),因为外部IO设备可能有多个。
3.如何从就绪队列选择进程
大致有以下:
1.先来先服务
2.优先级的划分(PCB中需要管理一个优先级的属性)
3.短作业优先级
4.OS什么时候介入进程调度
5.进程切换
OS通过上下文切换来实现进程切换--->可以简单的理解为:保护上一个进程的上下文+恢复下一个进程的上下文--->上下文:指的是以PC寄存器所代表的一组寄存器中的值。
保护上下文:将对应寄存器的值,保存到内存的某一个位置。
恢复上下文:把内存中之前保护的值,写入对应的寄存器中。
下面展示在CPU的视角的进程切换:
2.内存管理
OS进行内存协调模块:主持内存空间的分配。
内存管理主要研究:
1.那些内存已经被分配,那些暂时没有分配
2.已经分配的内存何时回收、何时回收
3.物理地址<->虚拟地址的转换
4.关于内存碎片
1.作为java程序员眼中的内存
2.线性地址与物理地址
3.进程通信
1.管道通信
2.消息队列
3.信号量
4.信号
5.共享内存
6.网络
3、文件管理
硬盘是最为主要的二级存储,是比较重要的一个IO设备---OS进行硬盘上数据的协调模块:OS一般不直接去管理硬盘上的数据,一般委托文件系统进行抽象管理---把硬盘的数据抽象成文件的概念。
4.网络模块管理
5.驱动管理
总结
每天都要加油哦~~~