第一章:操作系统概述
1.操作系统的作用
操作系统 简称os 是覆盖在计算机硬件系统之上的 <软件系统> 是第一层软件
裸机 --> 操作系统 -->应用程序与用户程序
操作系统是管理计算机硬件与计算机软件资源的计算机程序 操作系统需要处理如管理与配置内存 决定系统资源的优先次序 控制输入设备与输出设备 操作网络与文件系统等基本事务 操作系统也提供了一个让用户与系统交互操作的页面
2.OS的作用:
<1.os是用户与计算机硬件之间的接口
os处于用户与硬件系统之间 用户通过os来使用计算机硬件系统 或者说 用户在os帮助下可以方便 快捷 可靠的操作计算机硬件和运行自己的程序
从底层到高层
计算机硬件--> 操作系统 ---> 系统工具 ---->应用软件
由此分为三种人员:
操作系统开发人员:计算机硬件
应用开发人员:操作系统 系统工具
应用用户:应用软件
>
<2.os是计算机系统资源的管理者
一个计算机系统宝行的软硬件资源可以分为四类:
处理器 存储器 io设备 文件(数据和程序) OS就是对这四类资源进行有效管理的
对不同资源的管理方式与目标是不同的
例如:
CPU:分配 控制
存储器:分配 管理 回收
io设备:分配 操作 回收
文件:存取 共享 保护
>
<3.os实现了对计算机资源的抽象
为了方便用户对系统资源的使用 os将计算机资源抽象为一组数据结构及操作命令(对象) 如何在设计出对这些抽象资源的管理软件 然后再将这些管理软件逐层覆盖在计算机硬件之上 于是便形成一层一层的虚拟器 这些虚拟机器 就是逐层覆盖裸机上而成的逻辑计算机
用户对计算机的使用大多数集中在io操作上
第一层抽象:对io设备的管理(i/o命令为主)
第二层抽象:对文件的管理(i/o命令为主)
第三层抽象:对图形操作的管理 (图形化界面)
....
地n层抽象:......
>
2.操作系统的基本特性
为了解决人机矛盾 及CPU及io设备速度不匹配矛盾问题在20世纪末出现了脱机io技术
脱机io技术:将io设备从主机中分离 主机只对磁带进行读写操作 主机不在直接与慢速的io设备打交道 二是与速度相对较快的磁带机发生关系
1.单道批处理系统
是晶体管计算机(第二代计算机)
单道批处理系统需要用户事先将鱼皮作业以脱机方式输入到磁带上 该系统中配置了监督程序Monitor
在monitor控制下使这批作业逐个连续批处理 充分利用了主机资源
单道:内存中始终只有一道作业
批处理:磁带上多到作业 安装因此磁带 可以处理一批作业
具体处理过程:monitor将磁带上的第一个作业装入内存 并将运行控制权交给该作业
当该作业处理完毕后 在将运行控制权交还给该作业
一次类推 走到当前磁带中的所有作业运行完毕 这个过程过程是无法与人进行交互的
单到批处理系统存在的问题是:io执行过程中 主机是闲置状态 主机利用率低 因为内存中占有一道作业。只能这样子浪费
多道批处理系统同样要求事先将多道作业 存放到外村上合并成一个对垒 称为后背队列 然后由作业调度程序monitor按照一定的算法 从后备队列中选择出若干作业调入内存 使他们共享cpu与系统中的其他资源 为重复利用作业调用io期间的间隙 在monitor的控制下完成这些作业间cpu使用权的切换
多道批处理系统的优点 处理机利用率高 系统吞吐量大 但是缺点是:作业平均周转时间长 无交互能力
还需要处理以下问题:
处理机竞争问题
内存分配问题
io设备分配问题
文件的组织与管理问题
作业管理问题
用户与系统接口问题
3.操作系统的定义
操作系统:为了实现前述功能 应该在多道批处理系统上增加一组软件 这组软件应包括 能有效组织和管理四大资源(处理器 存储器 io设备 文件) 的软件 能合理对各类作业进行调度 和控制的软件能改变用户使用计算机的软件 而这样一组软件就构成了操作系统
4.分时系统
分时系统:在一台主机上连接多个配有显示器与键盘的终端并由此构成的系统 该系统允许多个用户同时通过自己的终端 以交互方式使用计算机 共享主机中的资源
在系统中配置了一个多路卡 用于及时接收多终端的用户输入 实现分时 多路复用 主机会以很快的速度周期性的扫描各个终端 在每个终端处停留很短的时间 用于接收从终端发来的数据
终端输入通过多路卡进入主机内存 以期将来获得cpu资源进行运算
时间片:在多道批处理系统中 对于一个没有io的长作业 其会长时间独占处理器直到运行完毕 而这个将导致其他作业无法处理 这是与分时系统的两大特征(人机交互 共享主机)是相违背的 为了避免这种情况的发生 分时系统中引入时间片概念
实现了宏观上的并行 微观上的串行 ---并发
实时系统:系统能及时响应外部时间的请求 在规定时间内完成对该时间的处理 并控制所有实时任务协调一致的运行
实时任务分类:
1.周期性实时任务
5.实时系统
实时系统:系统能够及时响应外部事件的请求 在规定时间内完成对该事件的处理 并控制所有实时任务协调的一致的运行
即:系统的正确性 不仅由计算逻辑结果确定 还取决于 产生结果的时间 也就是说 实时系统将时间作为一个关键参数
实时任务分类:
1.周期性实时任务与非周期性任务 非周期性实时任务又可以分为截止时间任务与完成截止时间任务
2.硬实时任务HRT与软实时任务SRT 也就是必须满足截止时间 偶尔错过截止时间也不会有太大的影响
6.其他操作系统
1.微机操作系统:
微机操作系统也有一个发展过程:单用户单任务系统(命令行) 单用户多任务系统(图形化) 多用户多任务系统(window)
网络操作系统:与微机操作系统类似 只不过其提供的服务类型不同
云操作系统:又称为云计算操作系统 又称为云计算中心操作系统 运行在云端
例如:VMware的Sphere 浪潮的云海
7.操作系统的基本特性
操作系统四大特性:
1.并发:
有了并发 提高了计算机系统的吞吐量
并发:两个或多个时间在同一个时间间隔内发生
与并行:
并行:两个或多个时间在同一时刻发生
并发:就是宏观上的并行 微观上的串行
之所以可以实现并发 是因为有了进程这个概念
进程:是指在系统中能独立运行并作为资源分配的基本单位 由一组指令 数据和堆栈等组成 是一个独立运行的活动实体
简单来说:进程就是一个正在执行的程序 或者说进程就是一个具有独立功能的程序在其数据集上的运行过程
2.共享:
os系统中的资源共享 也成为了资源复用 是指系统中的资源可供内存中多个并发执行的教程共同使用 当系统中的资源数量少于多个进程对资源的需求数量时 就会形成对共享资源的争夺 工具进程对资源复用的方式不同 目前主要实现资源共享的方式有两种
---1.互斥共享
某些资源只能互斥访问 如打印机 磁带机等 虽然可供多个进程使用 但在一段时间内 只允许一个进程访问该资源
--这种互斥访问的资源称为临界资源 或独占资源
---2.同时访问:
系统中还要一类资源 允许在一段时间内由多个进程同时访问 不过 对于这个同时需要注意
在单处理机环境中 其是宏观上的意义 微观上对这些资源的访问是交替进行的 最典型的是磁盘
数据库中的数据本身属于同时访问资源 而写所属于互斥共享字眼 读所属于同时访问资源
虚拟Virtual:通过某种技术将一个物理实体变为基于某个逻辑上的对应物 在os中这种功能称为虚拟 而实现虚拟的技术称为虚拟技术 在os中常用的虚拟技术有两种
----1.时分复用技术:复用某设备为一用户服务的空闲时间为其他用户服务 以达到 充分复用的目的 使得看起来好像是多个用户在同时属于多台相同设备 这种虚拟技术称为时分复用技术
虚拟处理机技术 虚拟打印机技术 虚拟存储技术 等都属于时分复用技术
需要注意的速度问题 若某物理设备采用时分复用技术虚拟出了N个虚拟设备 那么每个虚拟设备的平均速度一定是小于物理设备速度的1/N的
--------2.空分复用技术
使用频分复用技术来提高信道的复用率 它是指一个频率分为内比较宽的信道划分为多个频率分为较窄的信道(称为频带) 其中的任何一个频带都仅供一对用户通话 这种频分复用技术就属于空分复用技术
需要注意的是空间问题 若某物理设备采用空分复用技术虚拟出了N个虚拟设备 则第一个虚拟设备占用的实际空间一对是小于等于物理设备空间的1/N的
异步
异步也称为不可预知性 不确定性
对于内存中的每个进程 有的侧重于计算而IO少 有的则计算少而IO多 他们何时能够获取到处理器运行 何时能提出临界资源请求而暂停 没到资源总共用多少时间才能完成 都是不可预知的 不确定的 可能先进入内存的进程后完成 而后进入内存的作业先完成 这种进程以不可预知的速度向前推进的特性称为异步性
主要OS中配置有完善的进程同步机制 且运行环境相同 则作业即使 结果多次运行 也可以获得完全相同的结果 即OS的异步性是不会影响到作业的运行结果的
同步就是确定的 课移植 可在现的
Zookeeper被称为分布式协调服务器 通过对Zookeeper的应用 可实现分布式协调同步进行 实现各协调功能的协调推进
例如:实现 集群管理 Master选举 分布式锁 分布式队列等功能 都是ZK协调机制的体现
Redis的协调性 也可以实现分布式锁 实现分布式功能
在现代操作系统设计中经常采用机制与策略分离原理来构造OS
机制:实现某一功能的具体机构
策略:在机制基础上借助某些参数和算法实现对该功能的优化
机制处于系统的底层 而策略处于系统的高层 在微内核OS中 通常将机制放在微内核中 策略放在微内核外围的服务进程中
例如:进程管理中设置一些进程优先级案例 然后就可以按照优先级从队列中取出进程 为之分配CPU让其运行 这一部分调度功能属于机制问题 而进程优先级算法就属于策略问题
例如:对于虚拟存储器管理 将用户空间中的逻辑页地址转换为内存空间中的物理块地址 需要页表机制与地址转换机制
这两种机制应在内核中实现 而页面转换所采用的算法 内存分配与挥手等策略 应在内核的外置(服务进程)中实现
Dubbo中的微内核:微内核
微内核设计模式 在开发中也很常见 例如RPC框架Dubbo
Dubbo作为一个优秀的RPC框架 一个Apache的顶级项目 其最大的亮点之一 就是其优秀的无限开放性设计架构 微内核+插件的架构设计思想 使得几乎所有的组件均可方便的进行扩展 增强 替换 内核只负责组装插件(扩展点) Dubbo的功能都是由插件实现的
微内核功能:
不同类型的规模的OS 其内核所包含的功能存在着一定的差异 但大多数都包含两大功能:
支撑功能:
当然为了减少CPU中断的时间 提高程序执行的并发性 内核也只是对中断进行了短暂处理 继而转入相关其他进程去完成后续工作
8.资源管理功能
--该功能实现了OS对系统中软件 硬件资源的管理
OS的四大资源 处理器 存储器 IO设备 文件
进程管理:OS内核可以实现对进程的基础化管理 这些基础化管理功能要么使用频率非常高 要么属于可以为其他服务进程提供基础功能 将这些功能放入熬内核中 可以大大提高OS的性能
存储器管理:Os存储器管理相关进程的运行频率非常高 将他们放入到内核中 可以大大提升存储器的运行效率 提高读写速度
设备管理:由于设备管理与计算机硬件紧密相连 所以大部分功能都是常驻内核的
ZK Nacos Apollo中的中断:
--中断处理的思想 反映到同一JVM中的开发来 其实就是监听机制 反映到分布式开发中 其实就是发布/订阅模式
第36节课
第二章:进程和线程
第三章:调度与调度算法
第四章:死锁和活锁
第五章:存储管理
第六章:输入输出系统
第七章:文件与文件管理