原创 《一個操作系統的實現》筆記(1)--NASM彙編語法和環境搭建

概述 實現一個基於Intel x86的32位操作系統。 環境搭建 Ubuntu虛擬機。 Ubuntu - 彙編編譯器NASM - C編譯器GCC - 軟盤絕對扇區讀寫工具dd - qemu虛擬機 - Bochs模擬器 -

原创 Python斷點調試

很多項目是用python寫構建腳本的,比如微信最近開源的終端跨平臺組件 Mars 本文將以mars爲例簡單介紹下如何用PyCharm對python進行斷點調試。 導入代碼 open整個mars項目,切換合適的python版本,mars

原创 《自制搜索引擎》筆記

第1章 搜索引擎是如何工作的 搜索引擎的基礎是應用於信息檢索、數據庫等領域的信息技術。 1-1 理解搜索引擎的構成 1-2 實現了快速全文搜索的索引結構 利用全掃描進行全文搜索 grep就是從頭到尾掃描作爲檢索對象的文檔的。 利用索

原创 《一個操作系統的實現》筆記(5)--內核雛形

我們希望自己的操作系統內核至少應該在Linux下用GCC編譯鏈接。 Loader要做的事有兩件:加載內核入內存、跳入保護模式。 在Linux下用匯編寫程序 示例: ;hello.asm [section .data] ; 數據在此

原创 《一個操作系統的實現》筆記(4)-- Boot&Loader

一個操作系統從開機到開始運行,大致經歷引導->加載內核入內存->跳入保護模式->開始執行內核這樣一個過程。 引導扇區(Boot)負責把Loader加載入內存並且把控制權交給它,其它工作放心地交給Loader來做,因爲沒有512字節的限

原创 xlog接入方案

mars 是微信最近開源的終端基礎組件,是一個使用 C++ 編寫的基礎組件。 xlog是其中一個可單獨使用的高性能日誌模塊。 本文將簡單介紹下xlog的特點,並給出一個自定義的輸出到文件的策略。 xlog的特點 使用流式壓縮方式對單

原创 《一個操作系統的實現》筆記(3)--中斷和I/O保護

中斷和異常機制 有時候普通的程序流必須可以被要求快速反應的處理事件中斷。電腦提供了一個稱爲中斷的結構來處理這些事件。 外部中斷由CPU的外部引起。 例如:當一個鼠標移動了,硬件鼠標中斷現在的程序來處理鼠標移動(移動鼠標,等等)。中斷

原创 Docker簡單使用

史上最簡單Android源碼編譯環境搭建方法這篇分享介紹了藉助Docker來編譯Android源碼,Docker可以直接把編譯工具鏈和Ubuntu系統整體打包,保證了編譯環境和官方的一致。 我用的macOS,之前嘗試過編譯AOSP,出現

原创 理解mmap

在接入日誌組件xlog的工作中,對mmap內存映射加深了了解,分享一下學習心得。 1.一個Linux進程的虛擬內存 如圖展示了一個Linux進程的虛擬內存。 虛擬的意思是進程以爲自己有這麼一大塊內存,實際上物理內存可能還沒有分配給它