当前课程知识点:操作系统 >  第一讲 操作系统概述 >  1.4 为什么学习操作系统,如何学习操作系统 >  Video

返回《操作系统》慕课在线视频课程列表

Video在线视频

Video

下一节:视频

返回《操作系统》慕课在线视频列表

Video课程教案、知识点、字幕

接下来 我们讨论

为什么要学操作系统

操作系统是计算机系统当中

一个重要的组成部分

但是有很多人并不一定

直接去研究操作系统

作为大学计算机专业本科的必修课

我们大多数的同学

为什么要学操作系统

我们说操作系统是一门综合的课程

在这里综合我们前面讲到的

程序设计 数据结构

计算机系统结构等

在这里我们要去研究的对象

是操作系统的概念和基本原理

对应过来是操作系统的源代码

我们在这里要学到的技能

是操作系统的设计和实现

说我们已经有

很好用的操作系统在用着了

我为什么还要学操作系统

比如说现在我们用到的Windows Linux

能够满足我的需求

那我们在研究当中大量使用Linux

里面很多开源的内容已经很好用了

我们现在在这里面为什么要学呢

实际上说我们修改操作系统

去研究新的操作系统

就是要想实现我们的需求

这个时候说

我们在这里到底有哪些需求

它还没有解决呢

实际上这个问题是说

我们随着一个问题解决

我们会对它有更高的需求

这个需求导致我们会

会进一步的研究操作系统

对于我们本科生的

操作系统的必修课

我们为什么学它

我们说学操作系统呢

操作系统很有挑战

我们在每一年都会有一些同学

对操作系统极端有兴趣

当然操作系统很复杂

每一年也都会有一些同学

对操作系统极端不感兴趣

好 那我们说我们对操作系统很有用

不感兴趣的你也得学

因为你要用计算机

你想把计算机使用的好

你必须了解我操作系统里面

是怎么工作的

如果说你对操作系统很有兴趣

我想知道操作系统里面是如何工作的

我想让它能够更好的为我工作

你也需要来学操作系统

这是我们为什么要学操作系统

我们说操作系统

在整个计算机系统当中的地位

是非常重要的

比如说我们这在里面微软

它最赚钱的不是操作系统软件

是它上面的应用

但是它投入大量精力

去研究和改进操作系统

那也就是说它在这里的重要地位是非常强的

操作系统是计算机系统里的

基本组成部分

操作系统的硬件发展

以至于我要在操作系统里面

添更多的功能

在里面对它做更好的优化

正是由于这些原因在学术界

和工业界都在持续的

对操作系统进行研究和发展

到底有一些什么样人

都在做操作系统呢

随着技术的发展和时代的变化

做操作系统的人也是有一些变化的

比如说最早的时候

只是学计算机的专业人士

会去研究操作系统会去写程序

写操作系统程序是一个很专业的事情

随着操作系统的发展和普及

那么工业界早的时候是

做计算机系统的人的公司

在研究操作系统

比如说像我们说到的IBM DEC

这些公司实际上有一些

已经随着历史的发展

退出了历史舞台

在现在实际上

提供操作系统的服务的公司

比如说谷歌 VMware或者说亚马逊

国内的一些公司像

阿里巴巴 百度 华为

这些公司我们在这里

组成了一些很重要的研究协会

比如说计算机Unix用户协会

每年的研究在操作系统领域里面

最主要的顶级会议有这样两个

一个是操作系统原理研讨会

一个是操作系统设计与实现研讨会

它们俩是隔年开一次 一奇一偶

实际上每年有大约20篇文章

在这个会议上发表

这能代表了计算机

当前发展的最前沿的状态

那么在计算机操作系统领域里头

还有一个重要的标志

就是操作系统里面会

每年评选过去10年当中

最优秀的学术论文

如果说你想了解操作系统

现在最前沿的技术和研究热点在哪

去看这些论文是非常有必要的

我们说操作系统

我们现在仍然需要

去投入大量精力研究它

它在这里有很多挑战

首先第一个挑战就是操作系统非常庞大

我们看Windwos XP代码已经有4500万行

在这么庞大的代码里面

我们要想在里面管理它的并发

这时候你的编程挑战是非常大的

然后操作系统要管理

各种各样的硬件故障

然后我需要对它的各个部分的管理

要实现高效

这些都会使得

我们在这个庞大的系统里

来处理这个问题的时候非常复杂

而随着计算机系统的联网

那么在网络环境下安全的问题

又变成是越来越关键的

而在操作系统里

必须在操作系统层面上

解决安全的问题

那上面的应用才能有一个很好的

安全基础

这是由于操作系统庞大所带来的挑战

第二个挑战

实际上操作系统里面它的关系是错综复杂的

我们说我们前面讲操作系统有并发

两个多个进程之间交替使用资源

这个时候有一些相互之间的相互影响

但实际上这个时候在操作系统里面

最复杂的一个问题是

各个资源相互使用的时候

到最底层你必须互斥的

这个时候

我们这种锁机制导致很多时候

我们一些资源处在空等的状态

这个实际上是提高操作系统效率

必须解决的一个重要的问题

也就是说它这里由于关系错综复杂

如何能让它高效变成异常困难

而在这种环境下

反倒是我们传统操作系统里面

讲到的调度这些问题都变成了

不是当前研究的最热的点了

操作系统面临的第三个挑战是

各种错综复杂关系之间的权衡

比如说我们在操作系统里面

有时间优化目标和空间优化目标

这两个实际上是相互矛盾的

比如说我在这里做一个数组的排序

如果说我有很大的空间都在内存里

这个时候我会排起来很快

但是这个时候

它占用很大的存储空间

而我的储存空间又是十分有限的

这个时候你只能在这两者之间去平衡

然后说我们需要提高它的性能

这个时候需要资源多的

我会给它分配更多的系统资源来使用

但是这个时候另外一个应用

如果说它长时间分配不到资源

这个时候它的响应时间又不可预测

这个时候我们的性能和

行为的可预测之间又是一个矛盾

这种矛盾在操作系统里头

都必须对它做平衡

再有一个我们希望各种各样的情况下

我的算法都能体现出很好的特征

不会对某些应用性能好

到另一些应用里面它的性能比较差

这种差异性呢

和我们性能的优化目标又是矛盾的

这是我们通常所说的

公平性和性能之间的矛盾

你需要在这两者之间

牺牲一定的公平性来达到性能

或者反之你需要牺牲一定的性能

我才能保证它的公平性

再有一个就是操作系统

要面对很多硬件细节

我如何能够实现中断 异常

上下文切换的有效进行

我如何能让这个快表

有很高的利用效率

这都涉及到你的CPU的实现细节

所以在这里操作系统很大一部分的

直接跟硬件打交道的地方

都是使用汇编代码来写的

这样才能保证它的高效

所以学操作系统里头

你一定会是要用到汇编代码的

到底我们如何学操作系统呢

不闻不若闻之

闻之不若见之

见之不若知之

知之不若行之

学至于行而止矣

这是我们的一句古话

在这个里面我们说

你必须要落实到行动上

你才能真正掌握它

所以我们学操作系统呢

在那的实验成分比较多的

而另外一句提法是

天才是1%的灵性加上99%的汗水

你必须付出艰苦的努力

你才能学好操作系统

我们有同学的一个反馈意见说

操作系统是困难的

最好的和最有趣的三年级课程

当然也有同学把它描述成地狱一般的

这都是说明我们学操作系统的时候

你必须下努力

才能够学的好

当然说我们这个里面太庞大了

是不是我们就学不好了呢

在这里给出来的是我们的Linux

他在1991年开始做Linux操作系统的时候

也是一个大学本科生

1991年 2001年 2011年 20多年过去以后

Linux操作系统已经变成了

我们广泛使用的一个系统

我们做这件事情的时候

谁也不会想到几十年以后

一个由大学生发起的一个操作系统

能发展到目前的状态

所以我也鼓励大家

现在大家是三年级的大学生

那么你的未来也可能成为Linux第二

操作系统课程列表:

第零讲 在线教学环境准备

-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

Video笔记与讨论

也许你还感兴趣的课程:

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