seL4之hello-2旅途

手机操作系统 2016-11-19

seL4之hello-2旅途

2016/11/19 13:15:38

回顾上周

  • seL4运行环境搭建.
  • 完成hell0-1的运行.

补充上周

1.微内核与宏内核有什么不同?

微内核——用户态提供OS服务,一般采用server-client架构。代表:L4系列微内核

宏内核——内核态提供OS服务,通过syscall结构向用户态提供服务。

出于对seL4的学习,我们比较关注微内核的评价:

  1. 优势:安全性好、可移植性好、灵活性高、容易debug
  2. 劣势:性能低

2.介绍微内核

第一代微内核:

目标是用于解决Unix的可维护性等问题;

代表是CMU的Mach——以失败告终,主要原因是性能不足.

第二代微内核:

目标是解决第一代微内核的性能问题;

代表是LiedtkeL3L4;

主要贡献是通过改进IPC机制,大幅提高了性能,并支持运行Linux,即L4 Linux(虚拟化).

第三代微内核:

目标是解决第二代微内核的安全性问题;

代表是OKL4、seL4

主要贡献是提出enndpoint的IPC机制、基于capability的权限管理机制,提高了安全性.

L4家族简史

seL4之hello-2旅途

[blockquote]

图片来源:L4_family_tree

[/blockquote]

介绍本周

  • 了解seL4的启动流程和初始化线程
  • 了解seL4的几种内核对象和权能机制

来自伊甸一点的温馨提醒:注意本周内容较多,建议分多次练习,并记录下实验结果

1.提供本次必要的实验手册

  • 下载PDF文档以及实验截图链接:http://pan.baidu.com/s/1pL51h5h

文件信息

File: C:\Users\PengFei_Zheng\Desktop\欢迎访问伊甸一点.zip
Size: 4260011 bytes
Modified: 2016年11月19日, 14:42:42
MD5: 374FBCC1782185B358BE3DD7D58FFE88
SHA1: 5261FA4259D9976A227EC7EC86B108E86EF5C1EE
CRC32: 21F07023

来自伊甸一点的温馨提醒:请原谅为文件加了密码,需要密码请在下方留言

2.详细介绍实验步骤

0. 查看手册明确实验内容

来自伊甸一点的温馨提示:手册在刚刚下载的文件中

seL4之hello-2旅途

1. 初始化hello-2状态

执行命令 make ia32_hello-2_defconfig

运行结果截图:

seL4之hello-2旅途

2. 进入hello-2目录下

  • 执行命令如下图所示:

注意到有一个名字叫做cscope.out的文件.

来自伊甸一点的温馨提醒:这里先不解释它是怎么来的,我们先往下走,之后会和它打交道的

  • 进入文件main.c: gedit main.c

hello-2 的部分main函数代码:

seL4之hello-2旅途

需要做的就是完成当中对TODO1 ~ TODO15的修改.

对于小白的我来说还是有点难度的,开发者很贴心地为我们配上了solution文档.

来自小白的我的温馨提醒:不过还是建议大家先自己尝试完成对代码的阅读和修改,然后通过solution进行对比以及修改.

solution的路径如下所示:

seL4之hello-2旅途

相信大家通过自己的阅读和尝试已经将上述的TODO1~TODO15都修改完成了.

希望大家能够在上述的练习中明白其中调用的函数,以及函数的作用,对于某一个函数来说.我们要做的是明白函数名,函数返回值,函数参数,函数作用,函数处理逻辑.

如果没有按照上面的来学习函数的话,还是重新回到TODO1~TODO15重新看上几遍.

3. 生成hello-2

生成hello-2的指令: make

注意需要在项目的Makefile目录下进行make操作

刚开始执行时的截图:

seL4之hello-2旅途

之行结束的截图:

seL4之hello-2旅途

如果大家在执行上面的时候出现了错误,首先查看报出的错误,根据错误信息进行修改我们的mian.c,一般当main.c中的TODO都按照solution提示完成之后,程序是不会出现错误的。

如果确定main.c没有错误,但是程序依旧报错的话,可以尝试下面操作.

首先执行指令: make ia32_hello-2_defconfig

执行指令: make

伊甸一点给的对比截图:

seL4之hello-2旅途

完成上述操作之后,程序应该就可以成功跑起来了,但是现在我们只是生成了hello-2,还没有运行hello-2

4. 运行hello-2

运行指令如下所示: qemu-system-i386 -nographic -m 512 -kernel images/kernel-ia32-pc99 -initrd images/hello-2-image-ia32-pc99

来自伊甸一点的温馨提醒:指令有点长,注意不要copy错了

小白的我给的运行部分截图1:

seL4之hello-2旅途

小白的我给的运行部分截图2:

seL4之hello-2旅途

退出模拟器的指令: Ctrl+a 松开之后再按 x

当前时间:2016/11/19 16:15:32

(今天第一次使用markdown,写得好累啊)

如果你喜欢我的博客,please buy me a cup of coffee.

右侧选择打赏.

3.强大的vim+cscope

未完待续额...

转载注意

转载请注明原作者:伊甸一点

转载请以链接形式注明文章地址

特别说明

安科开发对markdown的支持不是很好

已经将本地的html文件上传到安科开发

有需要的可以下载来看 http://files.cnblogs.com/files/zpfbuaa/seL4%E4%B9%8Bhello-2.zip

相关推荐