清华大学 - 操作系统 课程笔记
课程地址: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 - 新建:
下一步 - 选择分配的内存大小 - 下一步 :
点击右下方的按钮,然后在弹出的界面中选择刚刚解压的vdi文件,确定之后,点击创建,就OK了,然后可以开心的打开虚拟机了。
(root用户的密码为一个空格键)
第一讲 操作系统概述
1.1 课程概述
1.2 教学安排
1.3 什么是操作系统
1.4 为什么学习操作系统
1.5 操作系统实例
Unix
Linux
Windows
这一系列都是从 Unix 演变出来的
1.6 操作系统演变
为了提高执行时间占的比例,将输入输出交给其他设备去做。
这是程序是顺序执行。
程序1 进行 IO操作时,切到程序2, IO完成后,再切回程序1。从而提高CPU利用率。
每个程序轮流执行一定的时间(如果没有中断、异常、IO等情况的话)
由于计算机价格下降,提高CPU利用率不再是重点。
1.7 操作系统结构
VMM 负责把真实的硬件虚拟成若干个虚拟硬件。
第二讲 实验零 操作系统实验环境准备
2.1 前言和国内外现状
2.2 OS实验目标
2.3 8个OS实验概述
(各个lab的简介可以去看这一节的pdf)
2.4 实验环境搭建
2.5 x86-32硬件介绍
实模式:只有16位寻址空间,且没有保护机制,这是为了兼容8086而设计的。通过两个16位的寄存器CS和IP,可以组合出长度为20位的地址,从而访问 1 M大小的内存。
保护模式:有32位寻址空间,且有保护机制
段机制和页机制只是一种映射关系,把一个地址从A地址映射到B地址,(然后再B地址映射到C地址,A, B, C的地址内容是不一样的)
2.6 ucore部分编程技巧
通过在结构中包含函数指针,保证对外的接口相同,但是对应的函数可以有不同的实现
2.7 演示实验操作过程
编译:(在lab1中会生成 bin 和 obj 两个文件夹)
make
- 1
删除编译出来的执行文件:
make clean
- 1
查看文件类型:file 文件或文件夹
执行:
make qemu
- 1
用ctrl + c
停止程序
在Ecliose中 debug
首先,安装一个plugin,点击菜单 - Help - Install new software
在work with 中输入zylin - http://opensource.zylin.com/zylincdt
,然后安装出现的plugin
在 Help - About Eclipse Platform - 左下角的Installation Details 可以看到已经安装好的软件
然后,要进行一些配置,在 Eclipse 中,找到 debug 图标的下拉菜单 - 点击debug configuration - 在 Zylin Embedded debug(Native)中 New 一个配置信息
使用Understand来看函数调用图
使用meld 来看两个项目的差别
第三讲 启动、中断、异常和系统调用
3.1 BIOS
内存分为:
- RAM:随机访问存储
- ROM:只读存储
计算机加电的时候,从ROM中开始读指令
- 基本输入输出:从磁盘读数据,从键盘上读用户的输入,在显示器输出
- 系统配置信息:例如决定从硬盘,网络,光盘启动
</div><div><div></div></div><div><div></div></div><div><div></div></div>
<link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-60ecaf1f42.css" rel="stylesheet">
</div>
</article>
Asp.Net获取IP的方法
c# 了解委托
用什么方法来判断字符串是否存在的函数
怎么样从地址中获得数据?
新网站如何不被百度查封,请注意以下事项。
搜索引擎如何抓取网页和如何索引网页?
什么情况下include_path不起作用?
用户注册演示程序操作案例
用户提交的cookie提交时为什么传不到服务器