駐留程式

駐留程式是一種特殊應用程式,它在裝入記憶體運行後,其部分代碼仍然駐留在記憶體,當該段代碼被激活時,它又進入運行狀態。

基本介紹

  • 中文名:駐留程式
  • 性質:程式
  • 屬性:駐留
  • DOS 是一個:單用戶的作業系統
基本信息,駐留程式概述,

基本信息

常用的駐留程式是作為某個中斷處理程式的一部分,其激活條件就是系統產生了此中斷的中斷請求

駐留程式概述

DOS 是一個單用戶的作業系統,它的核心程式是不允許重入的,說的具體一點,如果我們要編一個遞歸調用的程式,我們會把參數放在堆疊里,而不是用設定變數的方法,這樣在下一層程式返回時,不會有臨時變數被改變的危險,而 DOS 在處理中斷 INT 21H 時使用的臨時數據是放在內部數據區內的,如果在一個 INT 21H 過程中再發生另一個 INT 21H,在第二個 INT 21H 執行完以後回到第一個 INT 21H 時,原來保存的臨時數據就不是原來的樣子了,而是第二個 INT 21H 執行完後留下的‘垃圾’,編一個記憶體駐留程式,隨時彈出一個視窗執行 INT 21H 功能,要想不當機,就必須先解決 DOS 的重入問題。
解決重入問題有兩種方法,第一種是在進入 INT 21H 前人為保存 DOS 的內部數據結構到自己的緩衝區,在執行完後恢復,這種方法依賴於 DOS 的內部資料,而且不同的 DOS 版本的數據結構、數據位置是不一樣的,使用起來有相當的難度,而且對新版的作業系統的兼容程度是未知的。
常用的辦法是在要激活駐留程式前,先檢測 DOS 的狀態,如果 DOS 是空閒的,就可以馬上激活,如果DOS 忙,就等到 DOS 空閒後再激活。本文就是討論檢測 DOS 狀態的方法。
實際上,DOS 本身已經或多或少的考慮了這個問題,它本身有個 InDOS 標誌,在執行 DOS 功能時,它會把標誌 +1,退出時 -1,如果檢測 InDOS 不是 0,就說明 DOS 的某些功能在執行中。DOS 功能 INT 21H的 34H 子功能即是得到 InDOS 標誌的地址,在這個標誌前一個位元組是 DOS緊急錯誤標誌。在 DOS 忙判斷上有兩個特殊情況,一是 DOS 在緊急錯誤時會減少 InDOS 標誌,所以檢測到 InDOS 為 0 時還要確定錯誤標誌為 0,進入 DOS 才是安全的,二是有些 DOS 功能本身就允許重入,它們是一些不用到內部數據區的輸入命令等,如等待命令輸入時 DOS 執行的是輸入子功能,這時的 InDOS 為 1,但實際上是允許進入 DOS 的,在這中情況下,DOS 會不停的發 INT 28H 中斷,原來的 INT 28H 功能是不做任何事馬上返回。用戶可以在 INT 28H中掛上自己的程式而不必擔心 DOS 重入。

相關詞條

熱門詞條

聯絡我們