当前课程知识点:操作系统 >  第一讲 操作系统概述 >  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讨论区

--piazza访问和使用

--html

-0.2 在线实验平台

--实验平台使用帮助

--平台使用帮助

--Gitlab使用帮助

--IBM内部账号初始化

-0.2在线实验平台

--Raw HTML

第一讲 操作系统概述

-1.1 课程概述

--视频

-第一讲 操作系统概述--练习

-1.2 教学安排

--视频

-1.3 什么是操作系统

--Video

-1.4 为什么学习操作系统,如何学习操作系统

--Video

-1.5 操作系统实例

--视频

-1.6 操作系统的演变

--视频

-1.7 操作系统结构

--视频

第二讲 实验零 操作系统实验环境准备

-2.1 前言和国内外现状

--2.1 前言和国内外现状

-2.2 OS实验目标

--2.2 OS实验目标

-2.3 8个OS实验概述

--2.3 8个OS实验概述

-2.4 实验环境搭建

--2.4 实验环境搭建

-2.5 x86-32硬件介绍

--2.5 x86-32硬件介绍

-2.6 ucore部分编程技巧

--2.6 ucore部分编程技巧

-2.7 演示实验操作过程

--2.7 演示实验操作过程

--Q6

--Q7

--Q10

第三讲 启动、中断、异常和系统调用

-3.1 BIOS

--3.1 BIOS

-3.2 系统启动流程

--3.2 系统启动流程

-3.3 中断、异常和系统调用比较

--3.3 中断、异常和系统调用比较

-第三讲 启动、中断、异常和系统调用--3.3 中断、异常和系统调用比较

-3.4 系统调用

--3.4 系统调用

-第三讲 启动、中断、异常和系统调用--3.4 系统调用

-3.5 系统调用示例

--3.5 系统调用示例

-3.6 ucore+系统调用代码

--3.6 ucore+系统调用代码

第四讲 实验一 bootloader启动ucore os

-4.1 启动顺序

--4.1 启动顺序

-4.2 C函数调用的实现

--4.2 C函数调用的实现

-4.3 GCC内联汇编

--4.3 GCC内联汇编

-4.4 x86中断处理过程

--4.4 x86中断处理过程

-4.5 练习一

--4.5 练习一

-4.6 练习二

--4.6 练习二

-4.7 练习三

--4.7 练习三

-4.8 练习四 练习五

--4.8 练习四练习五

-4.9 练习六

--4.9 练习六

第五讲 物理内存管理: 连续内存分配

-5.1 计算机体系结构和内存层次

--5.1 计算机体系结构和内存层次

-5.2 地址空间和地址生成

--5.2 地址空间和地址生成

-5.3 连续内存分配

--5.3 连续内存分配

-5.4 碎片整理

--5.4 碎片整理

-5.5 伙伴系统

--5.5 伙伴系统

-第五讲 物理内存管理: 连续内存分配--5.6 练习

第六讲 物理内存管理: 非连续内存分配

-6.1 非连续内存分配的需求背景

--6.1 非连续内存分配的需求背景

-6.2 段式存储管理

-- 6.2 段式存储管理

-6.3 页式存储管理

--6.3 页式存储管理

-6.4 页表概述

--6.4 页表概述

-6.5 快表和多级页表

--6.5 快表和多级页表

-6.6 反置页表

--6.6 反置页表

-6.7 段页式存储管理

--6.7 段页式存储管理

-第六讲 物理内存管理: 非连续内存分配--6.8 练习

第七讲 实验二 物理内存管理

-7.1 了解x86保护模式中的特权级

--7.1 了解x86保护模式中的特权级

-第七讲 实验二 物理内存管理--7.1 了解x86保护模式中的特权级

-7.2 了解特权级切换过程

--7.2 了解特权级切换过程

-第七讲 实验二 物理内存管理--7.2 了解特权级切换过程

-7.3 了解段/页表

--7.3 了解段/页表

-第七讲 实验二 物理内存管理--7.3 了解段/页表

-7.4 了解UCORE建立段/页表

--7.4 了解ucore建立段/页表

-第七讲 实验二 物理内存管理--7.4 了解UCORE建立段/页表

-7.5 演示lab2实验环节

--7.5 演示lab2实验环节

第八讲 虚拟存储概念

-8.1 虚拟存储的需求背景

--8.1 虚拟存储的需求背景

-8.2 覆盖和交换

--8.2 覆盖和交换

-8.3 局部性原理

--8.3 局部性原理

-8.4 虚拟存储概念

--8.4 虚拟存储概念

-8.5 虚拟页式存储

--8.5 虚拟页式存储

-8.6 缺页异常

--8.6 缺页异常

第九讲 页面置换算法

-9.1 页面置换算法的概念

--9.1 页面置换算法的概念

-9.2 最优算法、先进先出算法和最近最久未使用算法

--9.2 最优算法、先进先出算法和最近最久未使用算法

-第九讲 页面置换算法--9.2 最优算法、先进先出算法和最近最久未使用算法

-9.3 时钟置换算法和最不常用算法

--9.3 时钟置换算法和最不常用算法

-第九讲 页面置换算法--9.3 时钟置换算法和最不常用算法

-9.4 Belady现象和局部置换算法比较

--9.4 Belady现象和局部置换算法比较

-第九讲 页面置换算法--9.4 Belady现象和局部置换算法比较

-9.5 工作集置换算法

--9.5 工作集置换算法

-第九讲 页面置换算法--9.5 工作集置换算法

-9.6 缺页率置换算法

--9.6 缺页率置换算法

-第九讲 页面置换算法--9.6 缺页率置换算法

-9.7 抖动和负载控制

--9.7 抖动和负载控制

第十讲 实验三 虚拟内存管理

-10.1 实验目标:虚存管理

--10.1 实验目标:虚存管理

-第十讲 实验三 虚拟内存管理--10.1 实验目标:虚存管理

-10.2 回顾历史和了解当下

-- 10.2 回顾历史和了解当下

-第十讲 实验三 虚拟内存管理--10.2 回顾历史和了解当下

-10.3 处理流程、关键数据结构和功能

--10.3 处理流程、关键数据结构和功能

-第十讲 实验三 虚拟内存管理--10.3 处理流程、关键数据结构和功能

-10.4 页访问异常

--10.4 页访问异常

-第十讲 实验三 虚拟内存管理--10.4 页访问异常

-10.5 页换入换出机制

--10.5 页换入换出机制

-第十讲 实验三 虚拟内存管理--10.5 页换入换出机制

第十一讲 进程和线程

-11.1 进程的概念

--11.1 进程的概念

-第十一讲 进程和线程--11.1 进程的概念

-11.2 进程控制块

--11.2 进程控制块

-第十一讲 进程和线程--11.2 进程控制块

-11.3 进程状态

--11.3 进程状态

-第十一讲 进程和线程--11.3 进程状态

-11.4 三状态进程模型

--11.4 三状态进程模型

-11.5 挂起进程模型

--11.5 挂起进程模型

-第十一讲 进程和线程--11.5 挂起进程模型

-11.6 线程的概念

--11.6 线程的概念

-第十一讲 进程和线程--11.6 线程的概念

-11.7 用户线程

--11.7 用户线程

-第十一讲 进程和线程--11.7 用户线程

-11.8 内核线程

--11.8 内核线程

-第十一讲 进程和线程--11.8 内核线程

第十二讲 进程控制

-12.1 进程切换

--12.1 进程切换

-第十二讲 进程控制--12.1 进程切换

-12.2 进程创建

--12.2 进程创建

-第十二讲 进程控制--12.2 进程创建

-12.3 进程加载

--12.3 进程加载

-第十二讲 进程控制--12.3 进程加载

-12.4 进程等待与退出

--12.4 进程等待与退出

-第十二讲 进程控制--12.4 进程等待与退出

第十三讲 实验四 内核线程管理

-13.1 总体介绍

--13.1 总体介绍

-13.2 关键数据结构

--13.2 关键数据结构

-13.3 执行流程

--13.3 执行流程

-13.4 实际操作

--13.4 实际操作

第十四讲 实验五 用户进程管理

-14.1 总体介绍

--14.1 总体介绍

-14.2 进程的内存布局

--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.5 进程复制

-14.6 内存管理的copy-on-write机制

--14.6 内存管理的copy-on-write机制

第十五讲 处理机调度

-15.1 处理机调度概念

--15.1 处理机调度概念

-第十五讲 处理机调度--15.1 处理机调度概念

-15.2 调度准则

--15.2 调度准则

-15.3 先来先服务、短进程优先和最高响应比优先调度算法

--15.3 先来先服务、短进程优先和最高响应比优先调度算法

-第十五讲 处理机调度--15.3 先来先服务、短进程优先和最高响应比优先调度算法

-15.4 时间片轮转、多级反馈队列、公平共享调度算法和ucore调度框架

--15.4 时间片轮转、多级反馈队列、公平共享调度算法和ucore调度框架

-第十五讲 处理机调度--15.4 时间片轮转、多级反馈队列、公平共享调度算法和uc

-15.5 实时调度和多处理器调度

--15.5 实时调度和多处理器调度

-第十五讲 处理机调度--15.5 实时调度和多处理器调度

-15.6 优先级反置

--15.6 优先级反置

-第十五讲 处理机调度--15.6 优先级反置

第十六讲 实验六 调度器

-16.1 总体介绍和调度过程

--16.1 总体介绍和调度过程

-16.2 调度算法支撑框架

--16.2 调度算法支撑框架

-16.3 时间片轮转调度算法

--16.3 时间片轮转调度算法

-16.4 Stride调度算法

--16.4 Stride调度算法

第十七讲 同步互斥

-17.1 背景

--17.1 背景

-17.2 现实生活中的同步问题

--17.2 现实生活中的同步问题

-第十七讲 同步互斥--17.2 现实生活中的同步问题

-17.3 临界区和禁用硬件中断同步方法

--17.3 临界区和禁用硬件中断同步方法

-第十七讲 同步互斥--17.3 临界区和禁用硬件中断同步方法

-17.4 基于软件的同步方法

--17.4 基于软件的同步方法

-第十七讲 同步互斥--17.4 基于软件的同步方法

-17.5 高级抽象的同步方法

--17.5 高级抽象的同步方法

-第十七讲 同步互斥--17.5 高级抽象的同步方法

第十八讲 信号量与管程

-18.1 信号量

--18.1 信号量

-第十八讲 信号量与管程--18.1 信号量

-18.2 信号量使用

--18.2 信号量使用

-第十八讲 信号量与管程--18.2 信号量使用

-18.3 管程

--18.3 管程

-第十八讲 信号量与管程--18.3 管程

-18.4 哲学家就餐问题

--18.4 哲学家就餐问题

-18.5 读者-写者问题

--18.5 读者-写者问题

第十九讲 实验七 同步互斥

-19.1 总体介绍

--19.1 总体介绍

-19.2 底层支撑

--19.2 底层支撑

-第十九讲 实验七 同步互斥--19.2 底层支撑

-19.3 信号量设计实现

--19.3 信号量设计实现

-第十九讲 实验七 同步互斥--19.3 信号量设计实现

-19.4 管程和条件变量设计实现

--19.4 管程和条件变量设计实现

-第十九讲 实验七 同步互斥--19.4 管程和条件变量设计实现

-19.5 哲学家就餐问题

--19.5 哲学家就餐问题

第二十讲 死锁和进程通信

-20.1 死锁概念

--20.1 死锁概念

-第二十讲 死锁和进程通信--20.1 死锁概念

-20.2 死锁处理方法

--20.2 死锁处理方法

-第二十讲 死锁和进程通信--20.2 死锁处理方法

-20.3 银行家算法

--20.3 银行家算法

-第二十讲 死锁和进程通信--20.3 银行家算法

-20.4 死锁检测

--20.4 死锁检测

-第二十讲 死锁和进程通信--20.4 死锁检测

-20.5 进程通信概念

--20.5 进程通信概念

-第二十讲 死锁和进程通信--20.5 进程通信概念

-20.6 信号和管道

--20.6 信号和管道

-第二十讲 死锁和进程通信--20.6 信号和管道

-20.7 消息队列和共享内存

--20.7 消息队列和共享内存

-第二十讲 死锁和进程通信--20.7 消息队列和共享内存

第二十一讲 文件系统

-21.1 文件系统和文件

--21.1 文件系统和文件

-第二十一讲 文件系统--21.1 文件系统和文件

-21.2 文件描述符

--21.2 文件描述符

-第二十一讲 文件系统--21.2 文件描述符

-21.3 目录、文件别名和文件系统种类

--21.3 目录、文件别名和文件系统种类

-第二十一讲 文件系统--21.3 目录、文件别名和文件系统种类

-21.4 虚拟文件系统

--21.4 虚拟文件系统

-第二十一讲 文件系统--21.4 虚拟文件系统

-21.5 文件缓存和打开文件

--21.5 文件缓存和打开文件

-第二十一讲 文件系统--21.5 文件缓存和打开文件

-21.6 文件分配

--21.6 文件分配

-第二十一讲 文件系统--21.6 文件分配

-21.7 空闲空间管理和冗余磁盘阵列RAID

--21.7 空闲空间管理和冗余磁盘阵列RAID

-第二十一讲 文件系统--21.7 空闲空间管理和冗余磁盘阵列RAID

第二十二讲 实验八 文件系统

-22.1 总体介绍

--22.1 总体介绍

-第二十二讲 实验八 文件系统--22.1 总体介绍

-22.2 ucore 文件系统架构

--22.2 ucore 文件系统架构

-第二十二讲 实验八 文件系统--22.2 ucore 文件系统架构

-22.3 Simple File System分析

--22.3 Simple File System分析

-第二十二讲 实验八 文件系统--22.3 Simple File System分析

-22.4 Virtual File System分析

--22.4 Virtual File System分析

-第二十二讲 实验八 文件系统--22.4 Virtual File System分

-22.5 I/O设备接口分析

--22.5 I/O设备接口分析

-第二十二讲 实验八 文件系统--22.5 I/O设备接口分析

-22.6 执行流程分析

--22.6 执行流程分析

第二十三讲 I/O子系统

-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

--html

视频笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。