熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> 操作系統 >> 正文

系統調用陷入後需處理的若干公共問題

2013-11-15 15:58:32  來源: 操作系統 

   系統調用陷入後需處理的若干公共問題

   確定系統調用號

  trap(usp type code PC PSL)

  其中參數PSL為陷入時處理機狀態字長PC為程序計數器code為代碼操作數type為陷入類型號usp為用戶棧指針對陷入的處理可分為多種情況如果陷入是由於系統調用所引起的則對此陷入的第一步處理便是確定系統調用號通常系統調用號是包含在代碼操作數中故可利用code來確定系統調用號i其方法是

  i=code &

   參數傳送

  這是對因系統調用引起的陷入的第二步處理參數傳送是指由trapC程序將系統調用參數表中的內容從用戶區傳送到User結構的UUarg[ ]中供系統調用處理程序使用由於用戶程序在執行系統調用命令之前已將參數表的首址放入R寄存器中在進入trapC程序後該程序便將該首址賦予UUarg[ ]指針因此trapC在處理參數傳送時可讀取該指針的內容以獲得用戶所提供的參數表並將之送至UUarg[ ]中應當注意對不同的系統調用所需傳送參數的個數並不相同trapC程序應根據在系統調用定義表中所規定的參數個數來進行傳送最多允許個參數

   利用系統調用定義表轉入相應的處理程序

  在UNIX系統中對於不同(編號)的系統調用都設置了與之相應的處理子程序為使不同的系統調用能方便地轉入其相應的處理子程序也將各處理子程序的入口地址放入了系統調用定義表即Sysent[ ]中該表實際上是一個結構數組在每個結構中包含三個元素其中第一個元素是相應系統調用所需參數的個數第二個元素是系統調用經寄存器傳送的參數個數第三個元素是相應系統調用處理子程序的入口地址在系統中設置了該表之後便可根據系統調用號i從系統調用定義表中找出相應的表目再按照表目中的入口地址轉入相應的處理子程序由該程序去完成相應系統調用的特定功能在該子程序執行完後仍返回到中斷和陷入總控程序中的trapC程序中去完成返回到斷點前的公共處理部分

   系統調用返回前的公共處理

  在UNIX系統中進程調度的主要依據是進程的動態優先級隨著進程執行時間的加長其優先級將逐步降低每當執行了系統調用命令並由系統調用處理子程序返回到trapC後都將重新計算該進程的優先級另外在系統調用執行過程中若發生了錯誤使進程無法繼續運行時系統會設置再調度標志處理子程序在計算了進程的優先級後又去檢查該再調度標志是否已又被設置若已設置 便調用switch調度程序再去從所有的就緒進程中選擇優先級最高的進程把處理機讓給該進程去運行

——返回教材目錄

了解更多計算機相關基礎課程視頻


From:http://tw.wingwit.com/Article/program/czxt/201311/24304.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.