接下来我们开始第二部分内容的介绍
就是系统实验环境怎么去搭建问题
首先我们需要在刚才前面也提到
在Linux环境中搭建出整个实验环境
需要装很多软件
为了避免大家去搭建这个环境
我们建立一个虚拟机
只要安装好这个虚拟机
就可以把这个实验环境搭建起来
就已经帮你装好这台机器
第二方面你需要使用一些工具
我们前面也已经讲到有一系列工具
需要你去掌握和理解 一些基本操作
比如说能够对文件进行相应的处理
第二能够更新一些软件
上载你的代码 下载你的代码等等
第三个能够编辑软件
阅读和编辑软件 这里面列出一系列的工具
第四个去比较软件 这有些工具是比较软件
两个源码有不同 看看它到底不同在什么地方
第五个是关于编译调试开发使用的gcc gdb等等
写好代码之后你要通过编译器编译
生成最终可以执行操作系统
最后你还需要有一个硬件模拟器
来确保操作系统可在qemu模拟硬件中去运行
这块实际上我们说在做实验过程中
需要掌握一些工具 看起来挺多的
但是没关系 这些工具相对来说比较简单
有些工具也不需要你去亲自去操作
你只要能够把它启起来
做一些简单事情就OK了
那我们后面会有实验环节
给大家介绍怎么使用这些工具
另一方面我们需要去了解X86硬件
这也是说因为你是针对操作系统是和硬件相关的
是跑在X86-32机器上面的
那我们对X86-32要有一定了解
它的特征 它的特点是什么
当然这点有很多同学可能会发现
和我们之前学的知识
相对来说还有更多的要求
这个我们后面逐一开始
大致掌握什么方面呢的 它的运行的模式
它运行在比如32位模式还是16位模式
有没有保护机制来保护它
第二内存怎么访问 有什么样的映射机制等等
第三个它的寄存器有什么样特点
通用寄存器 特殊寄存器怎么去使用它
这些都是需要去了解的
当然这样的知识相对来说比较少
我们希望大家以最小的代价
能够掌X86-32这个硬件
最后还去了解什么 了解ucore
它在开发ucore时候用到的一些方法和技巧
这里面虽然ucore是用C语言开发的
但是它也用到了很多C++的
一些面向对象的思路 比如说
它通过函数指针建立一个数据结构
来提供统一的接口
但是它具体实现不一样
函数指针这是一个
第二个建立相对通用的数据结构
来把不同特征的数据结构给连接起来
我们建立一个相对通用的
比如说双向链表 来把不同的
比如说关于某一个数据结构
是关于页的 关于进程管理的
还是关于文件系统
这些不同类型的数据结构
都可以用这种相对通用链表结构给表示出来
这两点应该说在ucore用的很频繁很常见
大家对这个相对来说要熟悉一下
这里面给大家简单介绍一下
它怎么搭建这个环境
我们考虑到很多同学他是在
windows环境下做平时工作的
所以我们可以在windows环境下
装一个VirtualBox虚拟机
在装完虚拟机之后的 在这个虚拟机里面
我们已经提供好了一个虚拟的硬盘
这个硬盘里面已经装好我们所需要所有的工具
包括实验代码都在这里面
那你可以在这里面来找到转建工具硬盘镜像
把这个解压下来之后会看到这么三个文件
最后通过这个VirtualBox来运行VBox
这么一个文件就可以把这个
虚拟硬件环境给搭建起来
我们可以得到一个ubuntu那么一个运行环境
这就是我们实验环境
它的用户名是mooc-os口令是空格
假设我们装好了这个实验环境
当然有同学说我自己就平常喜欢Linux
已经有自己一个Linux环境
当然你也可以把这个工具都装上上之后
一样可以开展相应的实验
不需要说非要用这种虚拟机的环境
只是说用虚拟机之后
大家已经建立好实验环境之后
大家可以更方便一点去完成后期内容
第二部分你要去使用它
你要掌握这些工具基本一些使用的方法
这里面有这么多东西 当然并不是
每一个都必须要掌握 你是选择你最顺手的
有的同学可能他喜欢vim
可能用是比较古老的vim的编辑器
另一个同学可能用的是Eclipse-CDT
还有一个同学用的是understand等等
无所谓 你只要用惯一种工具就OK
用这个工具来完成相应的功能用它来做编辑
用它来做编译开发调试等等都行
一般来说我们需要必须的是qemu
gcc是必须的 其它的一些
你基本上掌握就OK了
这个命令是关于我们称之为命令行的一些操作
完成对这个相应文件系统中有效的访问
显示目录 进入目录 删除文件
得到当前目录的名字 创建目录
查找文件等等 那么这都是基于所谓
bash一个命令行的界面来完成的
有同学如果对Linux有一定了解的话
就对这些很熟悉了
我们也会给大家简单的demo
第二个是apt和git
apt主要是用来干什么 你要装很多软件包
这是一个安装软件包管理器
git是用来开发软件 它有不同版本
这是版本维护工具 这是最常用的两种工具
在Linux用的很多 我们这里面
也为大家做个简单介绍 第三个有源码
你要分析源代码 你要看源代码
你需要源码的编辑工具
最后还要编程 有这么多种Eclipes-CDT
相对来说是比较简单 有很多同学开发Java程序
也是用这种集成开发环境
也类似于我们Visual Studio (Windows中的IDE) 第二个understand
understand它主要是用来理解程序的
Eclipes除了理解还可以去调试
可以Debug运行 understand 主要是理解
它可以生成跟漂亮的函数调用关系图
这是它的一个特点
gedit就是我们通常一个edit编辑器
但是它也是很方便的一种文本编辑
如果你的代码不是很大那么用它也就够了
vim是Unix或者Linux里面相对来说
存在历史很久远一个编辑器
有一些开发人员很喜欢它
如果用熟的话效率也很高
类似于emacs等等
还有其它一些工具都是用来
便于我们去理解 分析 编译 运行
这是一些编辑工具
另外也有一些工具是专门用来比较
不同源代码之间差异性
diff是一个命令行比较工具
meld是一个图形界面
图形界面看起来更加漂亮的一个工具
它可以比较目录比较单个文件等等
功能很强大 这个是gcc gdb make
都是用来编译程序用的 一系列工具
gcc是编译器 C语言的编译器
gdb是Debug调试器
make是软件工程的管理工具
它可以自动把你更新过的文件编译起来
形成新的最终的程序
这些也是我们在开发ucore常用到一些工具
qemu是硬件模拟器
当然我们操作系统是要跑在硬件上面的
当然我们也可以用真实硬件
但是相对来说用真实硬件
比较复杂 所以我们用qemu
qemu可以模拟多种CPU硬件环境
在这里头我们让它模拟X86-32这个机器
然后看我们ucore操作系统能否正常
在X86-32这个机器上面跑起来
这里面还有信息去查找一下
来看看具体的一些操作 有个建议是说
你要把某一工具用的特别熟要花很多时间
但是完成基本功能 开发ucore就够了
那我觉得看一下相关的信息就足够了
没必要为此花大量的时间
我们只需要它的基本功能