原创 C++和C語言函數互相調用

C++中調用C函數 // xx.h extern int fun(); // 聲明fun // xx.c int fun() {} // 定義fun // xx.cpp extern "C"{ #include "xx.h" }

原创 Ubuntu16.04_x64的gcc 編譯32位 elf 文件

原來的格式 源文件爲 main.c 若直接使用gcc 編譯文件,編譯出的是 ELF64 格式的。 用 readelf -e 文件名,即可查看文件的ELF的信息。 由上圖可以看出,直接使用 gcc 編譯、鏈接出來的elf 文件,c

原创 2.編寫主引導記錄MBR

在上一篇博文中(自己寫操作系統–開發環境的搭建與第1個操作系統(完全可復現)),提到了開發環境的搭建和第一個操作系統(其實就是MBR)。 這一篇繼續編寫MBR,但是開發環境有一點的小改動,是在Linux環境下的bochs中進行測試

原创 23.鍵盤驅動程序

在上一篇博文的基礎上來修改鍵盤的驅動。 只修改 keyboard.c (1)添加一些宏定義,(2)修改中斷處理函數。其它不變。 功能:功能有限,只能處理主鍵盤區的字符,只能和 Ctrl、Caps、Shift 組合。 #includ

原创 1.自己寫操作系統--開發環境的搭建與第1個操作系統(完全可復現)

開發環境搭建 硬件 計算機(Windows 7 操作系統) 軟件 VMware虛擬機(裝有Linux系統:Ubuntu9.10) FloppyWriter.exe軟盤絕對扇區讀寫工具(能把 .bin文件寫到真實軟盤或虛擬軟盤中)(

原创 9.完善內核-實現自己的打印函數

經過前面 8 個博客,已經把執行內核之前的準備工作完成了,接下來跳轉到內核執行。 本次的打印函數就是控制顯卡來完成的,就像之前 MBR 讀硬盤,加載loader、loader.S 讀硬盤加載內核到內存一樣,控制顯卡就是控制顯卡中相

原创 14.I/O系統

I/O系統 計算機的兩大任主要工作是處理和I/O。 計算機的操作系統I/O功能是,管理和控制I/O操作和I/O設備。 1.概述 因爲I/O設備的功能與速度差異很大,所以需要採用不同的方法來控制設備。 這些方法構成了I/O子系統,以

原创 15. C語言實現位圖 bitmap

1. 位圖是什麼? 位圖是一種資源管理的方式,按位bit與資源一對一的對應關係。 位圖中的每一位將於內存中的每一頁一一對應。 一個位有 2 種狀態,即 0 和 1 ,用位圖中的每一個位來表示實際物理內存的 4KB(一頁) 。 如果

原创 18.實現雙向鏈表

本文爲實現雙向鏈表,爲以後的 就緒隊列、全部任務隊列準備數據結構。 一共包含兩個文件,放在 /lib/kernel 目錄下。 list.h #ifndef __LIB_KERNEL_LIST_H #define __LIB_KER

原创 3.計算機上電 到 BIOS 再到 MBR的過程詳解

本文結合博文–計算機是如何啓動的?效果更佳。 0. 載入內存 首先明確一個概念:載入內存,包含兩個部分: 程序被加載器(軟件或硬件)加載到內存的某個區域。 CPU 的 CS:IP 寄存器被指向這個程序的起始地址。 1. BIO

原创 20.實現同步機制--鎖

上一篇 博文中 運行了 3 個線程(主線程、k_thread_a、k_thread_b ),運行一段時間就會出現異常,這是由於產生了競爭條件。 有 2 種競爭條件:(1)對顯存未實現互斥訪問。(2)對“光標寄存器”未實現互斥訪問。

原创 多文檔編輯器--(3)菜單項的功能

在前面兩節中,實現了界面的設計(菜單項)和子窗口類的實現,下一步就是實現菜單項的功能,就是把菜單項和子窗口類的成員函數關聯起來。 1. 項目文件 2. mainwindow.h 頭文件 #ifndef MAINWINDOW_H

原创 多文檔編輯器--(2)創建子窗口類

爲了更好的在MDI Area中添加子窗口,那就子類化子窗口,它繼承自 QTexiEdit 類。 1. 添加新文件 選擇新建一個 類 類名爲: MdiChild,繼承自 QTextEdit。 2. 子窗口類的頭文件 #ifnde

原创 多文檔編輯器--(1)界面設計

剛剛接觸 Qt,瞭解了一些基本操作之後準備動手做一個小小的項目。以實踐爲導向來學習Qt,詳細記錄學習步驟。 1.新建項目 新建 Qt Widgets Application 類信息選擇如下,基類選擇QMainWindow,勾選“

原创 5.從實模式進入保護模式

本文接上一篇博文,在 loader.S中乾點正事兒。進入保護模式。 1.什麼是保護模式? 最經典的 8086CPU 是隻有實模式的。實模式下有很多的不足,所以有了保護模式。 實模式的缺點: 操作系統和用戶程序處於同一特權級。 用