0 00:00:00,000 --> 00:00:06,800 1 00:00:06,840 --> 00:00:09,360 接下来我们开始第二部分内容的介绍 2 00:00:09,440 --> 00:00:11,640 就是系统实验环境怎么去搭建问题 3 00:00:11,880 --> 00:00:14,600 首先我们需要在刚才前面也提到 4 00:00:14,640 --> 00:00:16,880 在Linux环境中搭建出整个实验环境 5 00:00:16,920 --> 00:00:18,280 需要装很多软件 6 00:00:18,320 --> 00:00:20,960 为了避免大家去搭建这个环境 7 00:00:21,000 --> 00:00:22,800 我们建立一个虚拟机 8 00:00:22,840 --> 00:00:23,920 只要安装好这个虚拟机 9 00:00:23,960 --> 00:00:26,240 就可以把这个实验环境搭建起来 10 00:00:26,280 --> 00:00:27,920 就已经帮你装好这台机器 11 00:00:27,960 --> 00:00:31,160 第二方面你需要使用一些工具 12 00:00:31,200 --> 00:00:32,520 我们前面也已经讲到有一系列工具 13 00:00:32,560 --> 00:00:35,080 需要你去掌握和理解 一些基本操作 14 00:00:35,120 --> 00:00:38,080 比如说能够对文件进行相应的处理 15 00:00:38,120 --> 00:00:39,880 第二能够更新一些软件 16 00:00:39,920 --> 00:00:42,200 上载你的代码 下载你的代码等等 17 00:00:42,240 --> 00:00:43,920 第三个能够编辑软件 18 00:00:43,960 --> 00:00:46,200 阅读和编辑软件 这里面列出一系列的工具 19 00:00:46,240 --> 00:00:49,320 第四个去比较软件 这有些工具是比较软件 20 00:00:49,360 --> 00:00:52,520 两个源码有不同 看看它到底不同在什么地方 21 00:00:52,560 --> 00:00:57,040 第五个是关于编译调试开发使用的gcc gdb等等 22 00:00:57,080 --> 00:00:59,680 写好代码之后你要通过编译器编译 23 00:00:59,720 --> 00:01:02,840 生成最终可以执行操作系统 24 00:01:02,880 --> 00:01:05,080 最后你还需要有一个硬件模拟器 25 00:01:05,120 --> 00:01:08,760 来确保操作系统可在qemu模拟硬件中去运行 26 00:01:08,800 --> 00:01:12,000 这块实际上我们说在做实验过程中 27 00:01:12,040 --> 00:01:15,320 需要掌握一些工具 看起来挺多的 28 00:01:15,360 --> 00:01:18,000 但是没关系 这些工具相对来说比较简单 29 00:01:18,040 --> 00:01:20,720 有些工具也不需要你去亲自去操作 30 00:01:20,760 --> 00:01:23,160 你只要能够把它启起来 31 00:01:23,200 --> 00:01:25,160 做一些简单事情就OK了 32 00:01:25,200 --> 00:01:27,320 那我们后面会有实验环节 33 00:01:27,360 --> 00:01:28,880 给大家介绍怎么使用这些工具 34 00:01:28,920 --> 00:01:32,120 另一方面我们需要去了解X86硬件 35 00:01:32,160 --> 00:01:36,440 这也是说因为你是针对操作系统是和硬件相关的 36 00:01:36,480 --> 00:01:39,440 是跑在X86-32机器上面的 37 00:01:39,480 --> 00:01:41,400 那我们对X86-32要有一定了解 38 00:01:41,440 --> 00:01:43,800 它的特征 它的特点是什么 39 00:01:43,840 --> 00:01:47,320 当然这点有很多同学可能会发现 40 00:01:47,360 --> 00:01:48,800 和我们之前学的知识 41 00:01:48,840 --> 00:01:50,840 相对来说还有更多的要求 42 00:01:50,880 --> 00:01:52,760 这个我们后面逐一开始 43 00:01:52,800 --> 00:01:56,240 大致掌握什么方面呢的 它的运行的模式 44 00:01:56,280 --> 00:01:59,400 它运行在比如32位模式还是16位模式 45 00:01:59,440 --> 00:02:01,360 有没有保护机制来保护它 46 00:02:01,400 --> 00:02:06,400 第二内存怎么访问 有什么样的映射机制等等 47 00:02:06,440 --> 00:02:09,120 第三个它的寄存器有什么样特点 48 00:02:09,160 --> 00:02:12,640 通用寄存器 特殊寄存器怎么去使用它 49 00:02:12,680 --> 00:02:14,360 这些都是需要去了解的 50 00:02:14,400 --> 00:02:17,960 当然这样的知识相对来说比较少 51 00:02:18,000 --> 00:02:19,400 我们希望大家以最小的代价 52 00:02:19,440 --> 00:02:21,920 能够掌X86-32这个硬件 53 00:02:21,960 --> 00:02:24,040 最后还去了解什么 了解ucore 54 00:02:24,080 --> 00:02:28,000 它在开发ucore时候用到的一些方法和技巧 55 00:02:28,040 --> 00:02:30,360 这里面虽然ucore是用C语言开发的 56 00:02:30,400 --> 00:02:34,120 但是它也用到了很多C++的 57 00:02:34,160 --> 00:02:36,200 一些面向对象的思路 比如说 58 00:02:36,240 --> 00:02:38,960 它通过函数指针建立一个数据结构 59 00:02:39,000 --> 00:02:42,160 来提供统一的接口 60 00:02:42,200 --> 00:02:43,800 但是它具体实现不一样 61 00:02:43,840 --> 00:02:45,560 函数指针这是一个 62 00:02:45,600 --> 00:02:47,640 第二个建立相对通用的数据结构 63 00:02:47,680 --> 00:02:51,320 来把不同特征的数据结构给连接起来 64 00:02:51,360 --> 00:02:52,760 我们建立一个相对通用的 65 00:02:52,800 --> 00:02:55,840 比如说双向链表 来把不同的 66 00:02:55,880 --> 00:02:57,200 比如说关于某一个数据结构 67 00:02:57,240 --> 00:02:59,520 是关于页的 关于进程管理的 68 00:02:59,560 --> 00:03:01,000 还是关于文件系统 69 00:03:01,040 --> 00:03:02,680 这些不同类型的数据结构 70 00:03:02,720 --> 00:03:06,320 都可以用这种相对通用链表结构给表示出来 71 00:03:06,360 --> 00:03:10,560 这两点应该说在ucore用的很频繁很常见 72 00:03:10,600 --> 00:03:13,000 大家对这个相对来说要熟悉一下 73 00:03:13,040 --> 00:03:15,560 这里面给大家简单介绍一下 74 00:03:15,600 --> 00:03:17,720 它怎么搭建这个环境 75 00:03:17,760 --> 00:03:20,520 我们考虑到很多同学他是在 76 00:03:20,560 --> 00:03:24,440 windows环境下做平时工作的 77 00:03:24,480 --> 00:03:26,920 所以我们可以在windows环境下 78 00:03:26,960 --> 00:03:28,880 装一个VirtualBox虚拟机 79 00:03:28,920 --> 00:03:31,640 在装完虚拟机之后的 在这个虚拟机里面 80 00:03:31,680 --> 00:03:34,680 我们已经提供好了一个虚拟的硬盘 81 00:03:34,720 --> 00:03:38,000 这个硬盘里面已经装好我们所需要所有的工具 82 00:03:38,040 --> 00:03:40,360 包括实验代码都在这里面 83 00:03:40,400 --> 00:03:46,160 那你可以在这里面来找到转建工具硬盘镜像 84 00:03:46,200 --> 00:03:50,000 把这个解压下来之后会看到这么三个文件 85 00:03:50,040 --> 00:03:54,760 最后通过这个VirtualBox来运行VBox 86 00:03:54,800 --> 00:03:56,560 这么一个文件就可以把这个 87 00:03:56,600 --> 00:04:00,080 虚拟硬件环境给搭建起来 88 00:04:00,120 --> 00:04:03,920 我们可以得到一个ubuntu那么一个运行环境 89 00:04:03,960 --> 00:04:05,760 这就是我们实验环境 90 00:04:05,800 --> 00:04:10,240 它的用户名是mooc-os口令是空格 91 00:04:10,280 --> 00:04:12,520 假设我们装好了这个实验环境 92 00:04:12,560 --> 00:04:16,320 当然有同学说我自己就平常喜欢Linux 93 00:04:16,360 --> 00:04:18,360 已经有自己一个Linux环境 94 00:04:18,400 --> 00:04:20,360 当然你也可以把这个工具都装上上之后 95 00:04:20,400 --> 00:04:22,120 一样可以开展相应的实验 96 00:04:22,160 --> 00:04:24,480 不需要说非要用这种虚拟机的环境 97 00:04:24,520 --> 00:04:26,080 只是说用虚拟机之后 98 00:04:26,120 --> 00:04:28,080 大家已经建立好实验环境之后 99 00:04:28,120 --> 00:04:31,080 大家可以更方便一点去完成后期内容 100 00:04:31,120 --> 00:04:32,880 第二部分你要去使用它 101 00:04:32,920 --> 00:04:37,800 你要掌握这些工具基本一些使用的方法 102 00:04:37,840 --> 00:04:40,640 这里面有这么多东西 当然并不是 103 00:04:40,680 --> 00:04:43,360 每一个都必须要掌握 你是选择你最顺手的 104 00:04:43,400 --> 00:04:45,800 有的同学可能他喜欢vim 105 00:04:45,840 --> 00:04:48,440 可能用是比较古老的vim的编辑器 106 00:04:48,480 --> 00:04:51,520 另一个同学可能用的是Eclipse-CDT 107 00:04:51,560 --> 00:04:53,440 还有一个同学用的是understand等等 108 00:04:53,480 --> 00:04:56,400 无所谓 你只要用惯一种工具就OK 109 00:04:56,440 --> 00:05:00,040 用这个工具来完成相应的功能用它来做编辑 110 00:05:00,080 --> 00:05:05,160 用它来做编译开发调试等等都行 111 00:05:05,200 --> 00:05:07,760 一般来说我们需要必须的是qemu 112 00:05:07,800 --> 00:05:11,240 gcc是必须的 其它的一些 113 00:05:11,280 --> 00:05:13,400 你基本上掌握就OK了 114 00:05:13,440 --> 00:05:18,040 这个命令是关于我们称之为命令行的一些操作 115 00:05:18,080 --> 00:05:22,240 完成对这个相应文件系统中有效的访问 116 00:05:22,280 --> 00:05:26,000 显示目录 进入目录 删除文件 117 00:05:26,040 --> 00:05:29,160 得到当前目录的名字 创建目录 118 00:05:29,200 --> 00:05:31,680 查找文件等等 那么这都是基于所谓 119 00:05:31,720 --> 00:05:35,960 bash一个命令行的界面来完成的 120 00:05:36,000 --> 00:05:38,800 有同学如果对Linux有一定了解的话 121 00:05:38,840 --> 00:05:40,280 就对这些很熟悉了 122 00:05:40,320 --> 00:05:42,200 我们也会给大家简单的demo 123 00:05:42,240 --> 00:05:44,120 第二个是apt和git 124 00:05:44,160 --> 00:05:47,160 apt主要是用来干什么 你要装很多软件包 125 00:05:47,200 --> 00:05:51,120 这是一个安装软件包管理器 126 00:05:51,160 --> 00:05:56,040 git是用来开发软件 它有不同版本 127 00:05:56,080 --> 00:06:00,240 这是版本维护工具 这是最常用的两种工具 128 00:06:00,280 --> 00:06:03,000 在Linux用的很多 我们这里面 129 00:06:03,040 --> 00:06:08,040 也为大家做个简单介绍 第三个有源码 130 00:06:08,080 --> 00:06:11,320 你要分析源代码 你要看源代码 131 00:06:11,360 --> 00:06:12,560 你需要源码的编辑工具 132 00:06:12,600 --> 00:06:16,400 最后还要编程 有这么多种Eclipes-CDT 133 00:06:16,440 --> 00:06:19,080 相对来说是比较简单 有很多同学开发Java程序 134 00:06:19,200 --> 00:06:20,960 也是用这种集成开发环境 135 00:06:21,000 --> 00:06:23,960 也类似于我们Visual Studio (Windows中的IDE) 第二个understand 136 00:06:24,000 --> 00:06:26,520 understand它主要是用来理解程序的 137 00:06:26,560 --> 00:06:29,960 Eclipes除了理解还可以去调试 138 00:06:30,000 --> 00:06:32,640 可以Debug运行 understand 主要是理解 139 00:06:32,680 --> 00:06:35,640 它可以生成跟漂亮的函数调用关系图 140 00:06:35,680 --> 00:06:37,360 这是它的一个特点 141 00:06:37,400 --> 00:06:40,160 gedit就是我们通常一个edit编辑器 142 00:06:40,200 --> 00:06:43,400 但是它也是很方便的一种文本编辑 143 00:06:43,440 --> 00:06:46,160 如果你的代码不是很大那么用它也就够了 144 00:06:46,200 --> 00:06:50,680 vim是Unix或者Linux里面相对来说 145 00:06:50,720 --> 00:06:53,040 存在历史很久远一个编辑器 146 00:06:53,080 --> 00:06:55,640 有一些开发人员很喜欢它 147 00:06:55,680 --> 00:06:57,280 如果用熟的话效率也很高 148 00:06:57,320 --> 00:06:58,760 类似于emacs等等 149 00:06:58,800 --> 00:07:00,680 还有其它一些工具都是用来 150 00:07:00,720 --> 00:07:06,440 便于我们去理解 分析 编译 运行 151 00:07:06,480 --> 00:07:09,560 这是一些编辑工具 152 00:07:09,600 --> 00:07:12,680 另外也有一些工具是专门用来比较 153 00:07:12,720 --> 00:07:15,160 不同源代码之间差异性 154 00:07:15,200 --> 00:07:18,160 diff是一个命令行比较工具 155 00:07:18,200 --> 00:07:20,480 meld是一个图形界面 156 00:07:20,520 --> 00:07:24,000 图形界面看起来更加漂亮的一个工具 157 00:07:24,040 --> 00:07:26,720 它可以比较目录比较单个文件等等 158 00:07:26,760 --> 00:07:30,280 功能很强大 这个是gcc gdb make 159 00:07:30,320 --> 00:07:33,480 都是用来编译程序用的 一系列工具 160 00:07:33,520 --> 00:07:35,920 gcc是编译器 C语言的编译器 161 00:07:35,960 --> 00:07:38,400 gdb是Debug调试器 162 00:07:38,440 --> 00:07:40,200 make是软件工程的管理工具 163 00:07:40,240 --> 00:07:44,960 它可以自动把你更新过的文件编译起来 164 00:07:45,000 --> 00:07:47,560 形成新的最终的程序 165 00:07:47,600 --> 00:07:52,040 这些也是我们在开发ucore常用到一些工具 166 00:07:52,080 --> 00:07:53,560 qemu是硬件模拟器 167 00:07:53,600 --> 00:07:55,720 当然我们操作系统是要跑在硬件上面的 168 00:07:55,760 --> 00:07:57,000 当然我们也可以用真实硬件 169 00:07:57,040 --> 00:07:58,000 但是相对来说用真实硬件 170 00:07:58,040 --> 00:08:01,520 比较复杂 所以我们用qemu 171 00:08:01,560 --> 00:08:03,520 qemu可以模拟多种CPU硬件环境 172 00:08:03,560 --> 00:08:08,480 在这里头我们让它模拟X86-32这个机器 173 00:08:08,520 --> 00:08:12,120 然后看我们ucore操作系统能否正常 174 00:08:12,160 --> 00:08:14,240 在X86-32这个机器上面跑起来 175 00:08:14,280 --> 00:08:18,040 这里面还有信息去查找一下 176 00:08:18,080 --> 00:08:21,560 来看看具体的一些操作 有个建议是说 177 00:08:21,600 --> 00:08:25,800 你要把某一工具用的特别熟要花很多时间 178 00:08:25,840 --> 00:08:28,440 但是完成基本功能 开发ucore就够了 179 00:08:28,480 --> 00:08:31,120 那我觉得看一下相关的信息就足够了 180 00:08:31,160 --> 00:08:33,400 没必要为此花大量的时间 181 00:08:33,440 --> 00:08:34,640 我们只需要它的基本功能