seL4之hello-2旅途(完成更新)
seL4之hello-2旅途 #
2016/11/19 13:15:38
If you like my blog, please buy me a cup of coffee.
回顾上周
- seL4运行环境搭建.
- 完成
hell0-1
的运行.
补充上周
1.微内核与宏内核有什么不同?####
微内核——用户态提供OS服务,一般采用server-client架构。代表:L4系列微内核
宏内核——内核态提供OS服务,通过syscall结构向用户态提供服务。
出于对seL4的学习,我们比较关注微内核的评价:
- 优势:安全性好、可移植性好、灵活性高、容易debug
- 劣势:性能低
2.介绍微内核
第一代微内核:
目标是用于解决Unix的可维护性等问题;
代表是CMU的Mach——以失败告终,主要原因是性能不足.
第二代微内核:
目标是解决第一代微内核的性能问题;
代表是Liedtke的L3和L4;
主要贡献是通过改进IPC机制,大幅提高了性能,并支持运行Linux,即L4 Linux(虚拟化).
第三代微内核:
目标是解决第二代微内核的安全性问题;
代表是OKL4、seL4
主要贡献是提出enndpoint的IPC机制、基于capability的权限管理机制,提高了安全性.
L4家族简史
图片来源:L4_family_tree
介绍本周
- 了解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. 查看手册明确实验内容 ####
1. 初始化hello-2状态 ####
执行命令 make ia32_hello-2_defconfig
运行结果截图:
2. 进入hello-2目录下 ####
- 执行命令如下图所示:
注意到有一个名字叫做cscope.out
的文件.
来自伊甸一点的温馨提醒:这里先不解释它是怎么来的,我们先往下走,之后会和它打交道的
- 进入文件main.c:
gedit main.c
hello-2 的部分main
函数代码:
需要做的就是完成当中对TODO1 ~ TODO15的修改.
对于小白的我来说还是有点难度的,开发者很贴心地为我们配上了solution
文档.
来自小白的我的温馨提醒:不过还是建议大家先自己尝试完成对代码的阅读和修改,然后通过solution
进行对比以及修改.
solution
的路径如下所示:
相信大家通过自己的阅读和尝试已经将上述的TODO1~TODO15都修改完成了.
希望大家能够在上述的练习中明白其中调用的函数,以及函数的作用,对于某一个函数来说.我们要做的是明白函数名,函数返回值,函数参数,函数作用,函数处理逻辑.
如果没有按照上面的来学习函数的话,还是重新回到TODO1~TODO15重新看上几遍.
3. 生成hello-2
####
生成hello-2
的指令: make
注意需要在项目的Makefile目录下进行make操作
刚开始执行时的截图:
之行结束的截图:
如果大家在执行上面的时候出现了错误,首先查看报出的错误,根据错误信息进行修改我们的mian.c,一般当main.c中的TODO都按照solution
提示完成之后,程序是不会出现错误的。
如果确定main.c没有错误,但是程序依旧报错的话,可以尝试下面操作.
首先执行指令:
make ia32_hello-2_defconfig
执行指令:
make
伊甸一点给的对比截图:
完成上述操作之后,程序应该就可以成功跑起来了,但是现在我们只是生成了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:
小白的我给的运行部分截图2:
退出模拟器的指令: Ctrl+a
松开之后再按 x
当前时间:2016/11/19 16:15:32
(今天第一次使用markdown,写得好累啊)
如果你喜欢我的博客,please buy me a cup of coffee.
右侧选择打赏.
3.强大的vim+cscope ###
未完待续额...
2016年11月20日09:13:01
1.介绍Cscope ####
From 百度词条
Cscope 是一款开源免费的 C/C++浏览工具,自带一个基于文本的用户界面,通过cscope可以很方便地找到某个函数或变量的定义位置、被调用的位置等信息。Cscope对 C /C++支持较好,也可以自己定制来支持Java和Perl、Python等脚本语言。Vim和gvim都提供了cscope接口,通过适当的配置,可以在Unix/Linux下实现变量、函数、文件等之间跳转,就像Windows下的Source Insight一样灵活易用。由于cscope是开源免费的,而且配合vim可以脱离鼠标,实现全键盘操作,方便快捷地浏览源代码,深受程序员、Geek等人士的喜爱。
From Wikipedia
cscope is a programming tool which works in console mode, text-based interface, that allows computer programmers or software developers to search source code of the programming language C, with some support for C++ and Java. It is often used on very large projects to find source code, functions, declarations, definitions and regular expressions given a text string. cscope is free and released under a BSD license. The original developer of cscope is Joe Steffen.
有兴趣的可以专门了解一下cscope,这里简单介绍如何使用cscope搭配vim来更好地阅读seL4的代码.
这里是cscope的查询界面
这里是cscope的help界面
2.举一个简单例子
通过指令: vim a.cpp
进入vim界面
vim界面示意图如下:
在vim中使用cscope
进行查询操作
按F5运行程序:
退出vim,或者另起终端,查看是否生成可执行文件
使用指令 ./a
运行该文件
3.安装cscope以及修改vim配置文件 ####
先介绍到这里,我们来安装一下cscope,以及修改一下vim的配置文件,让大家也可以在vim中玩得更开心玩得更高兴.
由于已经安装过cscope,我这里就不在演示安装截图了,因为之前没有保存下来.
安装指令如下: sudo apt-get install cscope
小白的我温馨提示: 使用指令 ls -a
可以查看隐藏的文件
小白的我温馨提示:如果您存在文件.vimrc
,有必要先对您的.vimrc
文件进行备份
配置文件流程请移步强大的vim配置文件,让编程更随意
好哒,这样就完成对vim配置文件的修改.
通过指令 ls -a
来查看是否成功获取.vimrc
文件
上述博客提供两种得到.vimrc
的方法
获取配置文件方法1
通过指令touch .vimrc
创建空的文件,使用指令 gedit .vimrc
进入文件,复制上述博客的代码,保存到创建的.vimrc
中即可
获取配置文件方法2
利用上述博客提供的方法
执行指令 wget http://files.cnblogs.com/ma6174/vimrc.zip
再执行指令 unzip -f vimrc.zip -d ~/
4.学习cscope ###
这里不再对vim配置文件进行折腾,想了解更多请移步.
这里不再对cscope的使用做详细讲解,想了解更多请移步.
Vim + Cscope打造Linux下的Source Insight
2016年11月20日10:42:50
转载注意
转载请注明原作者:伊甸一点
转载请以链接形式注明文章地址
seL4之hello-2旅途(完成更新)的更多相关文章
- seL4环境配置
转载声明:希望大家能够从这里收获知识之外,也能够体会到博主撰写博客的辛苦.个人博客势单力薄,对于强转甚至转载博客访问量高于原文的例子不在少数. 希望能够得到大家关注的同时,也能够稍微体谅一下博主的 ...
- fedora23没有/var/log/messages &如何禁用后台自动更新软件?
警告!! Linux是一个非常敏感的操作系统,若删除文件错误,很容易造成系统崩溃. fedora23没有/var/log/messages 不是没有messages这个文件,而是 从 fc core ...
- 差旅日志i·长安&北京(更新于8.21_夜)
大学之时,看到zealer王自如的差旅日志系列欲罢不能,扁平化的管理理念以及轻松的工作氛围,耳目一新的出差体验,抵消了部分不曾走入职场的紧张感甚至是恐惧感.如今初入职场也进入了职业生涯,特记录此次的差 ...
- 【原】Android热更新开源项目Tinker源码解析系列之三:so热更新
本系列将从以下三个方面对Tinker进行源码解析: Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Android热更新开源项目Tinker源码解析系列之二:资源文件热更新 A ...
- 使用TSQL查询和更新 JSON 数据
JSON是一个非常流行的,用于数据交换的文本数据(textual data)格式,主要用于Web和移动应用程序中.JSON 使用“键/值对”(Key:Value pair)存储数据,能够表示嵌套键值对 ...
- 【原】Android热更新开源项目Tinker源码解析系列之一:Dex热更新
[原]Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Tinker是微信的第一个开源项目,主要用于安卓应用bug的热修复和功能的迭代. Tinker github地址:http ...
- 【原】Android热更新开源项目Tinker源码解析系列之二:资源文件热更新
上一篇文章介绍了Dex文件的热更新流程,本文将会分析Tinker中对资源文件的热更新流程. 同Dex,资源文件的热更新同样包括三个部分:资源补丁生成,资源补丁合成及资源补丁加载. 本系列将从以下三个方 ...
- Entity Framework 6 Recipes 2nd Edition 译 -> 目录 -持续更新
因为看了<Entity Framework 6 Recipes 2nd Edition>这本书前面8章的翻译,感谢china_fucan. 从第九章开始,我是边看边译的,没有通读,加之英语 ...
- iOS热更新-8种实现方式
一.JSPatch 热更新时,从服务器拉去js脚本.理论上可以修改和新建所有的模块,但是不建议这样做. 建议 用来做紧急的小需求和 修复严重的线上bug. 二.lua脚本 比如: wax.热更新时,从 ...
随机推荐
- 【初探Spring】------Spring IOC(三):初始化过程---Resource定位
我们知道Spring的IoC起到了一个容器的作用,其中装得都是各种各样的Bean.同时在我们刚刚开始学习Spring的时候都是通过xml文件来定义Bean,Spring会某种方式加载这些xml文件,然 ...
- ABP源码分析十五:ABP中的实用扩展方法
类名 扩展的类型 方法名 参数 作用 XmlNodeExtensions XmlNode GetAttributeValueOrNull attributeName Gets an attribu ...
- out和ref详解
要想充分理解C# out和ref,必须先明确如下两个概念(对值类型与引用类型掌握比较好的,可以跳过"一.明确两个基本概念") 一.明确两个基本概念 值类型: 定义:通过值的方式来传 ...
- Html5 冒泡排序演示
冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法. 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要 ...
- Android开发学习之路-DiffUtil使用教程
谷歌最近更新了Support Library 24.2.0,而DiffUtil就是在这个版本添加的一个工具类. DiffUtil是一个查找集合变化的工具类,是搭配RecyclerView一起使用的,如 ...
- delete
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Atitit webservice发现机制 WS-Discovery标准的规范attilax总结
Atitit webservice发现机制 WS-Discovery标准的规范attilax总结 1.1. WS-Discovery标准1 1.2. 一.WS-Discovery1 1.2.1. ...
- Android 捕获异常并在应用崩溃后重启应用
问题概述: 在Android应用开发中,偶尔会因为测试的不充分导致一些异常没有被捕获,这时应用会出现异常并强制关闭,这样会导致很不好的用户体验,为了解决这个问题,我们需要捕获相关的异常并做处理. 首先 ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(53)-工作流设计-我的批阅
系列目录 前言:由于工作原因工作流一直没时间更新,虽然没有更新,但是批阅和申请差不多,改变一下数据的状态字段就行,有几个园友已经率先完成了 说句实话,一个工作流用文章表达很难,我起初以为这是一个很简单 ...
- Bootstrap相关资料
WEB项目中,使用Bootstrap较多.但是一些插件却比较确实,所以整理了一份Bootstrap相关插件的地址.基本满足日常WEB开发中插件需求.并且还挺好用的 bootstrap说明文档,有问题可 ...