seL4之hello 2旅途 2016/11/19 13:15:38 If you like my blog, please buy me a cup of coffee. 回顧上周 seL4運行環境搭建. 完成 的運行. 補充上周 1.微內核與巨集內核有什麼不同? 微內核——用戶態提供OS服務,一般 ...
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
轉載註意
轉載請註明原作者:伊甸一點
轉載請以鏈接形式註明文章地址