当前课程知识点:操作系统 > 第一讲 操作系统概述 > 1.6 操作系统的演变 > 视频
接下来我们讲操作系统的演变
也就是说在历史上操作系统的技术
它到底有些什么样的变化
那么对于操作系统来说
它主要的功能是在用户态和硬件之间
做一个中间的协调和抽象
然后是使得
用户可以很方便的使用硬件的资源
和操作系统里面的软件资源
那么从这个道理上来讲
这个中间的变化做成以后
应该没有什么变化了
但是实际上我们说
操作系统的变化非常巨大的
原因在于在过去
操作系统发展的半个世纪的历史当中
技术上有非常大的变化
我们在这里举一个例子
说从80年代个人计算机出现
到2012年操作系统硬件技术
有一些什么样的变化
从这张表里我们可以看到
计算机系统里的价格
基本没有明显的变化
我们先不考虑物价上涨之类的因素
基本是在几千美元的尺度
但是我们看一下计算机系统当中
各个部分之间的变化
就是非常巨大的
我们从这里可以看出来CPU的速度
从4M到3G基本上M到G
基本增加了几百倍到1千倍的尺度
而处理能力从0.3个MIPS到12年的76个MIPS
基本上涨了200倍
而存储能力变化是最大的部分
从最早的内存从64K
到8个G应该是涨了几十万倍
而几十万倍的话
从硬盘的存储能量也是类似的
这种变化对于我们来说
到底计算机技术里有什么样的区别呢
大家可以想象一下
早的时候有可能我一个文件
从文本就是几百个字节
几千个字节
现在我们存的一个视频文件
动不动几个G了
这种变化实际上对操作系统来说
它有至关重要的影响
实际上在操作系统的发展历史上
它从最简单的单用户系统
就是说我们能让一个用户
能够用计算机的资源
能够算它的作业这就是它的目的了
然后有了这个目的之后
我计算机系统这个系统太贵了
好 这个时候
我能不能提高它的利用效率
提高利用效率就是批处理系统
和多道系统要干的事
等到效率能提高一定程度以后
如果说我在这里排作业算的时候
我排到前面一个用户算的时间很长
我在后面要等很长的时间
这个时候怎么弄
这个时候我们这个分时系统
使得我可以
在前一个作业没有结束的时候
我后一个作业能够交替运行
等到分时系统出现之后
并且成熟了以后
我们操作系统里面
这些性能提高的这一部分
就大致差不多了
接下来是说个人计算机系统出现
那这个时候
它易用性变成它最主要的部分
而分布式系统出现之后
它的这种联成网络以后
它的安全性和高可靠性
变成它的主要内容
我们看一下在这个变化的过程当中
各个技术的变化的要点
从计算机出现的
40年代的前面的10年左右
基本是解决
我如何能让花很大价钱买来的计算机
能够让它的利用效率能提高
比如说这是最早的计算机系统
能摆半层楼
那在这头昂贵的计算系统
我花了很多的时间
去换子代穿孔机和最后打印成的结果
这对于我来说是很不合算的
我要努力的减少这部分的时间
从而使得我的执行时间
占的比例越来越高
这样我的利用效率就高了
怎么做呢
它的做法是把这些
前后打印和前面的输入
不用昂贵的计算机来做
用周边设备来做这种输入和最后的输出
中间这一段价钱贵的部分
我让它尽可能的快
这一部分数顺序的快速的执行
这是第一个阶段要做的事情
顺序执行我用批处理
然后在这里面呢
我为了让它能快
我在这里把若干个作业搁到一起
它们在执行的时候还是顺序执行
结果一块顺序打印
这个阶段最有名的计算机公司就是IBM
它在这里面发家
就是靠做这些输入输出设备
和计算机系统
那么等到这一个阶段行了
实际上对于我的CPU来说
对于我的计算机系统来说
它是满负荷的从头一个作业
接一个作业去算
为了进一步的提高系统的性能
我们这个时候看怎么来做这点
这就是我们这里的多道系统
多道系统是干什么呢
它利用到的一点还是为了提高效率
也就是说我一个程序开始执行
其中有一个做I/O
做I/O呢我从系统调用进入系统里面来
布置相应的设备进行I/O操作
进行IO操作的过程当中
我的计算机系统就在这等着了
那这个等待呢
我CPU是停着的
没法干别的事
要想进一步提高效率呢
我让系统里同时存在多个作业
第二个作业是
在你第一个作业不在执行的时候
空闲的时候
这个时候我让第二个作业来执行
等到你第一个作业返回结果回来以后
我再切回来继续执行你的第一个作业
这个时候在内存里面程序执行的
就由原来的顺序执行
变成的多道程序的交替执行
但是交替的条件
是前一个正在执行的程序
主动让出CPU的使用权
有了这一条以后我的CPU
就可以变成是连续的
尽可能的在处于运行的状态了
这样的话我的效率又进一步提高了
这一步提高以后再往下发展呢
就是我们的分时系统
分时系统它仍然是在做系统的
多个程序的交替执行
但是这个时候大家注意
我们交替的条件不一样了
我在这里加了一个时钟中断
每一个作业算一段时间以后
硬件会产生一个时钟中断
时钟中断的时候
我会暂停当前进程的执行
去由操作系统去调度
我让另一个程序继续执行
等它的时间再一个时钟中断
然后再回来
这样的话我让多个进程交替执行
这个时候交替执行就变成什么
如果我有一个作业在前面
花很长时间要算
我又来一个作业我仅仅是做编译
也许编译我就不一定通过了
这种情况下我排在后面
我会等很长时间
有了分时系统以后大家一人算一点
对于我刚才说的这种
只是做编译测试的这种情况
它可以分到它的时间很快算完
算错了它就退出来了
而另外一个长的呢
它在交互式的这几个运行结束以后
后面长的作业可以一直算下去
这样一来就可以减少了
我用户等待的时间
这个时候说它的系统的性能
在什么地方做提升
它的提升不是在于
有CPU的效率有提高
原因在于CPU加了调度以后
它的性能某种角度它会下降
但是由于我让一些短的作业
能够公平性能更好了
这样的话我短作业
用户的时间的会节约了
从这个角度来讲仍然是提高效率的
到了这一步以后
分时系统我们的CPU的效率
就基本上提到极致了
接下来计算机发展的变化是什么呢
就是个人计算机系统
在个人计算机系统里面呢
效率已经不再是我们关心的重点了
这个时候计算机的价格
已经降低到一个办公室
或者说一个家庭
可以有一台计算机的状态
在这种状态下
我用户也不再是局限于
是计算机专业人士
才能够使用计算机 写计算机程序
很多人开始利用计算机
来做自己的事情
这个时候计算机的易用性
变得非常重要了
这个时候图形用户界面
是这个阶段发展的重点
在这个里面计算机变成一个
支持沟通和交流的系统了
而这个里头呢
安全性的问题又变成这里最重要的了
这个相当于安全的问题
在操作系统里面重要程度有上升
个人操作系统实际上
和网络的出现又联在一起
这个时候我们网络的
又形成了另外一个分支
就是分布式操作系统
分布式操作系统
它因为有了网络以后
我在多台机器之间
需要有数据的共享和协调
然后一台机器里面
我也可能使用多个CPU
这个时候多个CPU的使用
和多台机器互联的使用
这个时候可能提高的结果
使得我们系统的可用性
和可靠性有进一步提高
这个时候我们见到的一种典型场景
是若干个用户通过网络联在一起
我们有服务器提供一些
共性的资源的共享
各个用户在自己的机器上
进行相应的处理
使得我整个网络可以开始
去处理一些实时的信息
比如说我们在这样的系统里面
可以买飞机票 买火车票
在网上进行购物
这个图可以很方便地的来说明
在操作系统演变的过程当中
计算机的处理能力和
操作系统变化之间的某种关系
在最早的时候计算机系统
主要是一个大型的主机系统
一个学校可能会有一台计算机系统
很多的计算机专业人士
围绕这台计算机系统
来提高它的效率
我们所说到的批处理系统
多道系统 分时系统
都是在这个阶段出现
并且不断成熟和发展起来的
然后等到计算机硬件成本
降低到一定程度
这个时候我们每一个办公室
或者说每一个家庭
可以有一台计算机的时候
这个时候通过网络互联的
个人计算机变成主流了
在这种情况下我们的方便性
易用性就变成其中一个重要的内容
这是我们在桌面系统上看到的
图形用户接口的发展
鼠标的使用
这些都算是这个阶段的
再往上等到我们每一个人
都有一台便携式的
可随身携带的计算机系统的时候
这个时候我们要处理的易用性
或者说这种自适应能力变得更强
也许到不远的将来
甚至于现在我们一个人就有可能有
多台计算机系统了
比如说我会有手机
有一台笔记本
那在这个系统里面呢
我们如果说到某一个状态下是
每一个电子设备里
都有一个计算机系统
里面都有操作系统的话
这个时候就是我们所说的
普适计算 移动计算 云计算
就变成一个主流的内容了
而在这种环境下
我们可能涉及到大量的数据
而这种数据的处理
又对主机系统又会产生一轮影响
这就是我们这个云计算
需要面对的环境
在这个状态下实际上操作系统
还会再继续往前又发展
这个就是我们在最开始讲到的
实际上像现在的
谷歌 亚马逊 百度 搜狐
这一类的互联网公司
会把精力集中到
操作系统研究上来的缘故
好 这就是我们说到的
操作系统发展的过程
-0.1 Piazza讨论区
--html
-0.2 在线实验平台
--实验平台使用帮助
--平台使用帮助
-0.2在线实验平台
--Raw HTML
-1.1 课程概述
--视频
-第一讲 操作系统概述--练习
-1.2 教学安排
--视频
-1.3 什么是操作系统
--Video
-1.4 为什么学习操作系统,如何学习操作系统
--Video
-1.5 操作系统实例
--视频
-1.6 操作系统的演变
--视频
-1.7 操作系统结构
--视频
-2.1 前言和国内外现状
-2.2 OS实验目标
-2.3 8个OS实验概述
-2.4 实验环境搭建
-2.5 x86-32硬件介绍
-2.6 ucore部分编程技巧
-2.7 演示实验操作过程
--Q6
--Q7
--Q10
-3.1 BIOS
--3.1 BIOS
-3.2 系统启动流程
-3.3 中断、异常和系统调用比较
-第三讲 启动、中断、异常和系统调用--3.3 中断、异常和系统调用比较
-3.4 系统调用
--3.4 系统调用
-第三讲 启动、中断、异常和系统调用--3.4 系统调用
-3.5 系统调用示例
-3.6 ucore+系统调用代码
-4.1 启动顺序
--4.1 启动顺序
-4.2 C函数调用的实现
-4.3 GCC内联汇编
-4.4 x86中断处理过程
-4.5 练习一
--4.5 练习一
-4.6 练习二
--4.6 练习二
-4.7 练习三
--4.7 练习三
-4.8 练习四 练习五
-4.9 练习六
--4.9 练习六
-5.1 计算机体系结构和内存层次
-5.2 地址空间和地址生成
-5.3 连续内存分配
-5.4 碎片整理
--5.4 碎片整理
-5.5 伙伴系统
--5.5 伙伴系统
-第五讲 物理内存管理: 连续内存分配--5.6 练习
-6.1 非连续内存分配的需求背景
-6.2 段式存储管理
-- 6.2 段式存储管理
-6.3 页式存储管理
-6.4 页表概述
--6.4 页表概述
-6.5 快表和多级页表
-6.6 反置页表
--6.6 反置页表
-6.7 段页式存储管理
-第六讲 物理内存管理: 非连续内存分配--6.8 练习
-7.1 了解x86保护模式中的特权级
-第七讲 实验二 物理内存管理--7.1 了解x86保护模式中的特权级
-7.2 了解特权级切换过程
-第七讲 实验二 物理内存管理--7.2 了解特权级切换过程
-7.3 了解段/页表
-第七讲 实验二 物理内存管理--7.3 了解段/页表
-7.4 了解UCORE建立段/页表
-第七讲 实验二 物理内存管理--7.4 了解UCORE建立段/页表
-7.5 演示lab2实验环节
-8.1 虚拟存储的需求背景
-8.2 覆盖和交换
-8.3 局部性原理
-8.4 虚拟存储概念
-8.5 虚拟页式存储
-8.6 缺页异常
--8.6 缺页异常
-9.1 页面置换算法的概念
-9.2 最优算法、先进先出算法和最近最久未使用算法
-第九讲 页面置换算法--9.2 最优算法、先进先出算法和最近最久未使用算法
-9.3 时钟置换算法和最不常用算法
-第九讲 页面置换算法--9.3 时钟置换算法和最不常用算法
-9.4 Belady现象和局部置换算法比较
-第九讲 页面置换算法--9.4 Belady现象和局部置换算法比较
-9.5 工作集置换算法
-第九讲 页面置换算法--9.5 工作集置换算法
-9.6 缺页率置换算法
-第九讲 页面置换算法--9.6 缺页率置换算法
-9.7 抖动和负载控制
-10.1 实验目标:虚存管理
-第十讲 实验三 虚拟内存管理--10.1 实验目标:虚存管理
-10.2 回顾历史和了解当下
-第十讲 实验三 虚拟内存管理--10.2 回顾历史和了解当下
-10.3 处理流程、关键数据结构和功能
-第十讲 实验三 虚拟内存管理--10.3 处理流程、关键数据结构和功能
-10.4 页访问异常
-第十讲 实验三 虚拟内存管理--10.4 页访问异常
-10.5 页换入换出机制
-第十讲 实验三 虚拟内存管理--10.5 页换入换出机制
-11.1 进程的概念
-第十一讲 进程和线程--11.1 进程的概念
-11.2 进程控制块
-第十一讲 进程和线程--11.2 进程控制块
-11.3 进程状态
-第十一讲 进程和线程--11.3 进程状态
-11.4 三状态进程模型
-11.5 挂起进程模型
-第十一讲 进程和线程--11.5 挂起进程模型
-11.6 线程的概念
-第十一讲 进程和线程--11.6 线程的概念
-11.7 用户线程
-第十一讲 进程和线程--11.7 用户线程
-11.8 内核线程
-第十一讲 进程和线程--11.8 内核线程
-12.1 进程切换
-第十二讲 进程控制--12.1 进程切换
-12.2 进程创建
-第十二讲 进程控制--12.2 进程创建
-12.3 进程加载
-第十二讲 进程控制--12.3 进程加载
-12.4 进程等待与退出
-第十二讲 进程控制--12.4 进程等待与退出
-13.1 总体介绍
-13.2 关键数据结构
-13.3 执行流程
-13.4 实际操作
-14.1 总体介绍
-14.2 进程的内存布局
-14.3 执行ELF格式的二进制代码-do_execve的实现
--14.3 执行ELF格式的二进制代码-do_execve的实现
-14.4 执行ELF格式的二进制代码-load_icode的实现
--14.4 执行ELF格式的二进制代码-load_icode的实现
-14.5 进程复制
-14.6 内存管理的copy-on-write机制
-15.1 处理机调度概念
-第十五讲 处理机调度--15.1 处理机调度概念
-15.2 调度准则
-15.3 先来先服务、短进程优先和最高响应比优先调度算法
--15.3 先来先服务、短进程优先和最高响应比优先调度算法
-第十五讲 处理机调度--15.3 先来先服务、短进程优先和最高响应比优先调度算法
-15.4 时间片轮转、多级反馈队列、公平共享调度算法和ucore调度框架
--15.4 时间片轮转、多级反馈队列、公平共享调度算法和ucore调度框架
-第十五讲 处理机调度--15.4 时间片轮转、多级反馈队列、公平共享调度算法和uc
-15.5 实时调度和多处理器调度
-第十五讲 处理机调度--15.5 实时调度和多处理器调度
-15.6 优先级反置
-第十五讲 处理机调度--15.6 优先级反置
-16.1 总体介绍和调度过程
-16.2 调度算法支撑框架
-16.3 时间片轮转调度算法
-16.4 Stride调度算法
-17.1 背景
--17.1 背景
-17.2 现实生活中的同步问题
-第十七讲 同步互斥--17.2 现实生活中的同步问题
-17.3 临界区和禁用硬件中断同步方法
-第十七讲 同步互斥--17.3 临界区和禁用硬件中断同步方法
-17.4 基于软件的同步方法
-第十七讲 同步互斥--17.4 基于软件的同步方法
-17.5 高级抽象的同步方法
-第十七讲 同步互斥--17.5 高级抽象的同步方法
-18.1 信号量
--18.1 信号量
-第十八讲 信号量与管程--18.1 信号量
-18.2 信号量使用
-第十八讲 信号量与管程--18.2 信号量使用
-18.3 管程
--18.3 管程
-第十八讲 信号量与管程--18.3 管程
-18.4 哲学家就餐问题
-18.5 读者-写者问题
-19.1 总体介绍
-19.2 底层支撑
-第十九讲 实验七 同步互斥--19.2 底层支撑
-19.3 信号量设计实现
-第十九讲 实验七 同步互斥--19.3 信号量设计实现
-19.4 管程和条件变量设计实现
-第十九讲 实验七 同步互斥--19.4 管程和条件变量设计实现
-19.5 哲学家就餐问题
-20.1 死锁概念
-第二十讲 死锁和进程通信--20.1 死锁概念
-20.2 死锁处理方法
-第二十讲 死锁和进程通信--20.2 死锁处理方法
-20.3 银行家算法
-第二十讲 死锁和进程通信--20.3 银行家算法
-20.4 死锁检测
-第二十讲 死锁和进程通信--20.4 死锁检测
-20.5 进程通信概念
-第二十讲 死锁和进程通信--20.5 进程通信概念
-20.6 信号和管道
-第二十讲 死锁和进程通信--20.6 信号和管道
-20.7 消息队列和共享内存
-第二十讲 死锁和进程通信--20.7 消息队列和共享内存
-21.1 文件系统和文件
-第二十一讲 文件系统--21.1 文件系统和文件
-21.2 文件描述符
-第二十一讲 文件系统--21.2 文件描述符
-21.3 目录、文件别名和文件系统种类
-第二十一讲 文件系统--21.3 目录、文件别名和文件系统种类
-21.4 虚拟文件系统
-第二十一讲 文件系统--21.4 虚拟文件系统
-21.5 文件缓存和打开文件
-第二十一讲 文件系统--21.5 文件缓存和打开文件
-21.6 文件分配
-第二十一讲 文件系统--21.6 文件分配
-21.7 空闲空间管理和冗余磁盘阵列RAID
-第二十一讲 文件系统--21.7 空闲空间管理和冗余磁盘阵列RAID
-22.1 总体介绍
-第二十二讲 实验八 文件系统--22.1 总体介绍
-22.2 ucore 文件系统架构
-第二十二讲 实验八 文件系统--22.2 ucore 文件系统架构
-22.3 Simple File System分析
-第二十二讲 实验八 文件系统--22.3 Simple File System分析
-22.4 Virtual File System分析
-第二十二讲 实验八 文件系统--22.4 Virtual File System分
-22.5 I/O设备接口分析
-第二十二讲 实验八 文件系统--22.5 I/O设备接口分析
-22.6 执行流程分析
-23.1 I/O特点
--视频
-第二十三讲 I/O子系统--23.1 I/O特点
-23.2 I/O结构
--816C80A0F5E3B8809C33DC5901307461
-第二十三讲 I/O子系统--23.2 I/O结构
-23.3 I/O数据传输
--C58221E14388B9DB9C33DC5901307461
-第二十三讲 I/O子系统--23.3 I/O数据传输
-23.4 磁盘调度
--567A3F1FCBFB3F4C9C33DC5901307461
-第二十三讲 I/O子系统--23.4 磁盘调度
-23.5 磁盘缓存
--C327536B80D25CE79C33DC5901307461
-第二十三讲 I/O子系统--23.5 磁盘缓存
-html
--html