seL4之hello-2旅途(完成更新)

来源:http://www.cnblogs.com/zpfbuaa/archive/2016/11/19/6080819.html
-Advertisement-
Play Games

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

  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

轉載註意

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

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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1.帶緩存和不帶緩存 系統調用是不帶緩存的,使用它編寫程式,需要程式員設置緩存;庫函數是帶緩存的,不需設置緩存。 2.三個位元組流 程式執行時自動打開三個位元組流,標準輸入、標準輸入和標準錯誤。 3.標準輸出重定向 4.標準輸入重定向 5.標準錯誤重定向 6.管道 可以將一個命令的位元組流輸出導向另一個命 ...
  • top 幾個磁碟fdisk -l 磁碟空間 df -lhdf -al 查看進程:ps -ef“grep java殺死進程:kill -9 進程號 more中過濾 more xxx |grep www.makaidong.com 安裝linux後配置ip Vim /etc/sysconfig/netw ...
  • 1.進入vi的命令 vi filename :打開或新建文件,並將游標置於第一行首 【新建文件】vi +n filename :打開文件,並將游標置於第n行首 【比如:某個shell報錯的行數時使用】vi + filename :打開文件,並將游標置於最後一行首 【追加功能】vi +/pattern ...
  • 命令是一種可執行文件,包括:關鍵字 參數。 1.顯示目錄中的文件 2.查詢工作目錄 3.改變文件許可權mask 4.以root身份執行命令 5.查看幫助 6.創建文件 7.複製文件 8.移動文件 9.刪除文件 10.創建目錄 11.刪除空目錄 12.改變文件訪問許可權 13.改變文件的擁有者 14.改變 ...
  • 新的2016MBP終於發佈了,作為把蘋果電腦裝WIN使用的人,等候很久之後,終於可以行動了。 1、之前的2013款Macbook Air 2013年之前一直用的是DELL電腦,由於DELL鍵盤左下角的Fn鍵在Ctrl鍵的右側,已經慣了多年,所以一直對於ThinkPad和Apple這樣Fn和Ctrl鍵... ...
  • spi子系統之驅動SSD1306 OLED 接觸Linux之前,曾以為讀源碼可以更快的學習軟體,於是前幾個博客都是一邊讀源碼一邊添加註釋,甚至精讀到每一行代碼,實際上效果並不理想,看過之後就忘記了。主要原因是沒理解透程式架構,各個模塊之間的關係,如何聯繫在一起,再加上沒有實例驗證。後來逐漸發現,理解 ...
  • 情況描述: 當安裝某些軟體後,磁碟根目錄中多出了msdia80.dll文件,該文件顯示為2006年12月1日,884KB。 原因: 當使用64位操作系統時,在電腦上安裝 Microsoft Visual C++ 2005 可再發行組件時, Msdia80.dll文件被安裝在啟動驅動器的根文件夾中。 ...
  • 【大型網站技術實踐】初級篇:藉助Nginx搭建反向代理伺服器(轉) 出處:http://edisonchou.cnblogs.com/ 一、反向代理:Web伺服器的“經紀人” 1.1 反向代理初印象 反向代理(Reverse Proxy)方式是指以代理伺服器來接受internet上的連接請求,然後將 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...