清华大学 - 操作系统 课程笔记

目录

  • 第零讲 在线教学环境准备
    • step 1
    • step 2
    • step 3
  • 第一讲 操作系统概述
    • 1.1 课程概述
    • 1.2 教学安排
    • 1.3 什么是操作系统
  • 1.4 为什么学习操作系统
    • 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 演示实验操作过程
      • 在Ecliose中 debug
      • 使用Understand来看函数调用图
      • 使用meld 来看两个项目的差别
  • 第三讲 启动、中断、异常和系统调用
    • 3.1 BIOS

课程地址: http://www.xuetangx.com/courses/course-v1:TsinghuaX+30240243X+sp/about
piazza注册入口: http://www.xuetangx.com/courses/course-v1:TsinghuaX+30240243X_2015_T2+2015_T2/xblock/block-v1:TsinghuaX+30240243X_2015_T2+2015_T2+type@lti+block@7d025ede0dfe484da35b09a863a50507/handler/preview_handler
课程的piazza论坛: https://piazza.com/class/i5j09fnsl7k5x0?cid=1262
在线实验环境: https://www.shiyanlou.com/courses/221
问题汇总: https://xuyongjiande.gitbooks.io/os-qa/index.html
https://chyyuu.gitbooks.io/os_course_qa/content/
ucore实验指导书(2015版): https://objectkuan.gitbooks.io/ucore-docs/
ucore实验指导书(2019版): https://chyyuu.gitbooks.io/ucore_os_docs/content/
源码和参考答案: https://github.com/chyyuu/ucore_os_lab
课程相关资料(包括讲义等): http://os.cs.tsinghua.edu.cn/oscourse/OS2019spring

第零讲 在线教学环境准备

可以在上面给出的在线实验环境中进行实验,也可以在自己的电脑上安装虚拟机:

step 1

从VirtualBox官网下载软件:https://www.virtualbox.org/wiki/Downloads
安装

step 2

下载该课程提供的VirtualBox虚拟硬盘文件(mooc-os-2015.vdi.xz):
https://pan.baidu.com/s/11zjRK
这是一个已经安装好各种所需编辑/开发/调试/运行软件的Linux实验环境。解压后得到mooc-os-2015.vdi

step 3

打开VirtualBox - 新建:
清华大学 - 操作系统 课程笔记_第1张图片
下一步 - 选择分配的内存大小 - 下一步 :
清华大学 - 操作系统 课程笔记_第2张图片
点击右下方的按钮,然后在弹出的界面中选择刚刚解压的vdi文件,确定之后,点击创建,就OK了,然后可以开心的打开虚拟机了。
(root用户的密码为一个空格键)

第一讲 操作系统概述

1.1 课程概述

清华大学 - 操作系统 课程笔记_第3张图片
清华大学 - 操作系统 课程笔记_第4张图片

1.2 教学安排

清华大学 - 操作系统 课程笔记_第5张图片
清华大学 - 操作系统 课程笔记_第6张图片

1.3 什么是操作系统

清华大学 - 操作系统 课程笔记_第7张图片
清华大学 - 操作系统 课程笔记_第8张图片
清华大学 - 操作系统 课程笔记_第9张图片
清华大学 - 操作系统 课程笔记_第10张图片
清华大学 - 操作系统 课程笔记_第11张图片
清华大学 - 操作系统 课程笔记_第12张图片
清华大学 - 操作系统 课程笔记_第13张图片
清华大学 - 操作系统 课程笔记_第14张图片

1.4 为什么学习操作系统

清华大学 - 操作系统 课程笔记_第15张图片

清华大学 - 操作系统 课程笔记_第16张图片
清华大学 - 操作系统 课程笔记_第17张图片
清华大学 - 操作系统 课程笔记_第18张图片
清华大学 - 操作系统 课程笔记_第19张图片
清华大学 - 操作系统 课程笔记_第20张图片
清华大学 - 操作系统 课程笔记_第21张图片
清华大学 - 操作系统 课程笔记_第22张图片

1.5 操作系统实例

Unix
Linux
Windows
 
清华大学 - 操作系统 课程笔记_第23张图片
这一系列都是从 Unix 演变出来的
 
清华大学 - 操作系统 课程笔记_第24张图片
清华大学 - 操作系统 课程笔记_第25张图片

1.6 操作系统演变

清华大学 - 操作系统 课程笔记_第26张图片
清华大学 - 操作系统 课程笔记_第27张图片
清华大学 - 操作系统 课程笔记_第28张图片
清华大学 - 操作系统 课程笔记_第29张图片
为了提高执行时间占的比例,将输入输出交给其他设备去做。
这是程序是顺序执行。
 
清华大学 - 操作系统 课程笔记_第30张图片
程序1 进行 IO操作时,切到程序2, IO完成后,再切回程序1。从而提高CPU利用率
 
清华大学 - 操作系统 课程笔记_第31张图片
每个程序轮流执行一定的时间(如果没有中断、异常、IO等情况的话)
 
清华大学 - 操作系统 课程笔记_第32张图片
由于计算机价格下降,提高CPU利用率不再是重点。
 
清华大学 - 操作系统 课程笔记_第33张图片
清华大学 - 操作系统 课程笔记_第34张图片

1.7 操作系统结构

清华大学 - 操作系统 课程笔记_第35张图片
清华大学 - 操作系统 课程笔记_第36张图片
清华大学 - 操作系统 课程笔记_第37张图片
清华大学 - 操作系统 课程笔记_第38张图片
清华大学 - 操作系统 课程笔记_第39张图片
清华大学 - 操作系统 课程笔记_第40张图片
清华大学 - 操作系统 课程笔记_第41张图片
VMM 负责把真实的硬件虚拟成若干个虚拟硬件。
清华大学 - 操作系统 课程笔记_第42张图片
清华大学 - 操作系统 课程笔记_第43张图片

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

2.1 前言和国内外现状

清华大学 - 操作系统 课程笔记_第44张图片
清华大学 - 操作系统 课程笔记_第45张图片

2.2 OS实验目标

清华大学 - 操作系统 课程笔记_第46张图片
清华大学 - 操作系统 课程笔记_第47张图片
清华大学 - 操作系统 课程笔记_第48张图片
清华大学 - 操作系统 课程笔记_第49张图片

2.3 8个OS实验概述

清华大学 - 操作系统 课程笔记_第50张图片
(各个lab的简介可以去看这一节的pdf)
清华大学 - 操作系统 课程笔记_第51张图片
清华大学 - 操作系统 课程笔记_第52张图片

2.4 实验环境搭建

清华大学 - 操作系统 课程笔记_第53张图片
清华大学 - 操作系统 课程笔记_第54张图片
清华大学 - 操作系统 课程笔记_第55张图片
清华大学 - 操作系统 课程笔记_第56张图片
清华大学 - 操作系统 课程笔记_第57张图片
清华大学 - 操作系统 课程笔记_第58张图片
清华大学 - 操作系统 课程笔记_第59张图片
清华大学 - 操作系统 课程笔记_第60张图片
清华大学 - 操作系统 课程笔记_第61张图片
清华大学 - 操作系统 课程笔记_第62张图片
清华大学 - 操作系统 课程笔记_第63张图片
清华大学 - 操作系统 课程笔记_第64张图片

2.5 x86-32硬件介绍

清华大学 - 操作系统 课程笔记_第65张图片
实模式:只有16位寻址空间,且没有保护机制,这是为了兼容8086而设计的。通过两个16位的寄存器CS和IP,可以组合出长度为20位的地址,从而访问 1 M大小的内存。
保护模式:有32位寻址空间,且有保护机制
 


段机制和页机制只是一种映射关系,把一个地址从A地址映射到B地址,(然后再B地址映射到C地址,A, B, C的地址内容是不一样的)


清华大学 - 操作系统 课程笔记_第66张图片
清华大学 - 操作系统 课程笔记_第67张图片
清华大学 - 操作系统 课程笔记_第68张图片
清华大学 - 操作系统 课程笔记_第69张图片

2.6 ucore部分编程技巧

清华大学 - 操作系统 课程笔记_第70张图片
通过在结构中包含函数指针,保证对外的接口相同,但是对应的函数可以有不同的实现
清华大学 - 操作系统 课程笔记_第71张图片
清华大学 - 操作系统 课程笔记_第72张图片
清华大学 - 操作系统 课程笔记_第73张图片

2.7 演示实验操作过程

编译:(在lab1中会生成 bin 和 obj 两个文件夹)

make

删除编译出来的执行文件:

make clean

查看文件类型:file 文件或文件夹
 
执行

make qemu

清华大学 - 操作系统 课程笔记_第74张图片
ctrl + c停止程序

在Ecliose中 debug

首先,安装一个plugin,点击菜单 - Help - Install new software
在work with 中输入zylin - http://opensource.zylin.com/zylincdt,然后安装出现的plugin
 
在 Help - About Eclipse Platform - 左下角的Installation Details 可以看到已经安装好的软件
清华大学 - 操作系统 课程笔记_第75张图片
然后,要进行一些配置,在 Eclipse 中,找到 debug 图标的下拉菜单 - 点击debug configuration - 在 Zylin Embedded debug(Native)中 New 一个配置信息
清华大学 - 操作系统 课程笔记_第76张图片
清华大学 - 操作系统 课程笔记_第77张图片
清华大学 - 操作系统 课程笔记_第78张图片
清华大学 - 操作系统 课程笔记_第79张图片
清华大学 - 操作系统 课程笔记_第80张图片
清华大学 - 操作系统 课程笔记_第81张图片
清华大学 - 操作系统 课程笔记_第82张图片
在这里插入图片描述
清华大学 - 操作系统 课程笔记_第83张图片

使用Understand来看函数调用图

清华大学 - 操作系统 课程笔记_第84张图片
清华大学 - 操作系统 课程笔记_第85张图片
清华大学 - 操作系统 课程笔记_第86张图片
清华大学 - 操作系统 课程笔记_第87张图片

使用meld 来看两个项目的差别

在这里插入图片描述
清华大学 - 操作系统 课程笔记_第88张图片清华大学 - 操作系统 课程笔记_第89张图片

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

3.1 BIOS

清华大学 - 操作系统 课程笔记_第90张图片
清华大学 - 操作系统 课程笔记_第91张图片
内存分为:

  1. RAM:随机访问存储
  2. ROM:只读存储
     

计算机加电的时候,从ROM中开始读指令
清华大学 - 操作系统 课程笔记_第92张图片

  • 基本输入输出:从磁盘读数据,从键盘上读用户的输入,在显示器输出
  • 系统配置信息:例如决定从硬盘,网络,光盘启动

清华大学 - 操作系统 课程笔记_第93张图片
清华大学 - 操作系统 课程笔记_第94张图片
清华大学 - 操作系统 课程笔记_第95张图片

你可能感兴趣的:(计算机基础)