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的學習,我們比較關注微內核的評價:

  1. 優勢:安全性好、可移植性好、靈活性高、容易debug
  2. 劣勢:性能低

2.介紹微內核

第一代微內核:

目標是用於解決Unix的可維護性等問題;

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

第二代微內核:

目標是解決第一代微內核的性能問題;

代表是LiedtkeL3L4;

主要貢獻是通過改進IPC機制,大幅提高了性能,並支持運行Linux,即L4 Linux(虛擬化).

第三代微內核:

目標是解決第二代微內核的安全性問題;

代表是OKL4、seL4

主要貢獻是提出enndpoint的IPC機制、基於capability的權限管理機制,提高了安全性.

L4家族簡史

圖片來源:L4_family_tree

介紹本周

  • 了解seL4的啟動流程和初始化線程
  • 了解seL4的幾種內核對象和權能機制

來自伊甸一點的溫馨提醒:注意本周內容較多,建議分多次練習,並記錄下實驗結果

1.提供本次必要的實驗手冊 ###

文件信息


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配置文件進行折騰,想了解更多請移步.

vim主頁

強大的vim配置文件,讓編程更隨意

曬曬我的vimrc配置【不定期更新】

這里不再對cscope的使用做詳細講解,想了解更多請移步.

cscope主頁

Vim + Cscope打造Linux下的Source Insight

2016年11月20日10:42:50

轉載注意

轉載請注明原作者:伊甸一點

轉載請以鏈接形式注明文章地址


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM