自己動手寫作業系統

2021-05-22 05:09:21 字數 2176 閱讀 3585

virtual pc 5.2 下 dos7.1 中 執行.com檔案相關問題

2009-09-09 12:55

剛才在進入dos後,編譯.asm檔案獲得.com檔案,但系統會出現:emm386:unrecoverable privileged operation error #n9.press enter to reboot.. 的顯示。

在dos下修改config.sys檔案,將emm386那一行去掉即可。

(修改檔案的命令為:edit config.sys)

config.sys是用來在啟動時載入系統檔案的。

載入檔案的命令是device,比如每個config.sys裡都有一條命令 device=himem.sys ,這就是載入himem.sys的命令。

另外,這裡還可以設定dos命令占用空間,比如dos=high,umb

可以設定臨時資料夾,比如 set temp=c:/temp

而且config.sys和autoexec.bat相結合,還可以製作多模式啟動選單。

一些在config.sys中經常用到的配置專案如下:

1、files=數字

表示可同時開啟的檔案數,一般可選擇20到50,需要注意的是,如果把files的值設得過大會占用過多的基本記憶體。系統預設為files=8。

2、buffers=數字

表示設定磁碟緩衝區的數目,通常設定為20-30左右。預設值一般為15。磁碟緩衝區是一塊記憶體區,用於儲存從磁碟讀入的資料或儲存寫到磁碟的資料。 

3、device和devicehigh

用於載入一些記憶體駐留程式,用於管理裝置。比如記憶體管理程式和光碟機驅動程式等。如:

device=c:\dos\himem.sys

device=c:\dos\emm386.exe ram

devicehigh=c:\cdrom\cdrom.sys

devicehigh與device的不同是前者將程式加載入高階記憶體。

4、himem.sys和emm386.exe

dos只能直接使用640kb的記憶體,即基本記憶體,必須依靠其他記憶體管理程式來使用更多的記憶體,這兩條命令就是最常用的記憶體管理程式。

其中640kb到1mb之間的記憶體被稱為高階記憶體,是系統保留使用的。1mb以上的記憶體成為擴充套件記憶體,himem.sys就是負責管理擴充套件記憶體的。

emm386.exe負責管理高階記憶體並在擴充套件記憶體中模擬擴充記憶體供某些軟體使用。

因此為了使用更多的記憶體,配置檔案中應有以下指令。

device=c:\dos\himem.sys

device=c:\dos\emm386.exe ram

需要注意的是:emm386.exe必須要求先安裝himem.sys,因而必須確保安裝himem.sys的配置命令在emm386.exe之前。

5、dos=high,umb

一般情況下,需要config.sys檔案加入這條命令,這樣會將dos的系統檔案移入高階記憶體,空出更多的基本記憶體給其他軟體使用。需要注意的是,如果沒有安裝emm386.exe,umb,那麼這條指令將是無效的。

下是乙個典型的config.sys檔案內容:

device=c:\dos\himem.sys (載入himem,擴充套件記憶體管理器)

device=c:\dos\emm386.exe noems (高階記憶體併入擴充套件記憶體的工具)

buffers=15,0          (緩衝區數目)

files=50            (同時開啟的檔案數)

dos=umb            (系統把dos本身放在什麼地方)

lastdrive=z          (驅動器碟符最大可以用大哪個)

dos=high                          

devicehigh=c:\dos\atapi_cd.sys /d:mscd000 /i:0 (載入光碟機驅動程式。)

stacks=9,256

此外,在config中還可以配置選單式多重任務選擇的配置,用於不同任務的選擇,比如玩遊戲、設定虛擬磁碟等,不過在這些應用在目前已經不常用了,這裡就不多做介紹了。

乙個小小的錯誤背後居然有如此之豐富的內容,值得深思。

自己動手寫作業系統

今天看了前兩章,現將重點記錄如下 作業系統的啟動,關鍵點時同bios的介面 這裡有兩個位址很重要,a,0x7c00 510 0x7dfe登記標誌位 兩個byte 0xaa55 b,0x7c00,作業系統載入的目標位址 系統啟動過程 1 bios清零cpu現場 傳送reset訊號 2 cpu從0xf ...

自己動手寫作業系統

2 自己動手寫作業系統 3自己動手寫作業系統 如何呼叫bios中斷 在一般的程式語言中,函式的呼叫是一件非常容易的事情。比如在c語言中,如果有乙個名為display的程式,它帶有兩個引數,其中引數 noofchar表示顯示的字元數,引數attr表示顯示字元的屬性。那麼要呼叫它,只需給出程式的名稱即可...

自己動手寫作業系統 二

上一期,我講述了如何在軟盤的啟動扇區寫一些 然後再從軟盤啟動的過程。製作好乙個啟動扇區,在切換到保護模式之前,我們還應該知道如何使用bios中斷。bios中斷是一些由bios提供的 為了使作業系統的建立更容易的低階程式。在本文中,我們將學習處理bios的中斷。為什麼要用bios bios會把啟動扇區...