Linux0.12-檔案系統-系統調用介面

來源:互聯網
上載者:User

do_execve() ----- 系統調用(int 0x80)功能號_NR_execve()調用的C處理函數

1.確定原CS值是使用者程式碼片段。因為核心程式碼片段不能被替換的

2.初始化128KB的參數和環境空間

3.取出執行檔案的i結點

4.計算命令列參數和環境字串的個數:argc和argv

5.計算當前進程的許可權,判斷當前進程是否有許可權執行這個檔案

6.取出執行檔案頭部,並分析

若執行檔案是一個指令檔,則:執行指令檔的解釋程式

(1)取出解釋程式的程式名和參數

(2)把原命令列參數放入128KB空間中

(3)把新參數和環境放入128KB空間中

(4)擷取解釋程式的i結點,

(5)go to step 5

若執行檔案太大或不全,則:出錯

若要啟動並執行不是指令碼程式的解釋程式,則:

(1)將參數與環境複製到128KB空間

(2)釋放當前進程所佔的資源

(3)修改當前進程的LDT

(4)重設程式碼片段與資料區段的限長

(5)設定TSS

(6)把執行本次系統調用程式的的返回地址eip[]指向執行檔案中代碼的起始位置處

問題:需要同時使用多個檔案描述符來訪問資料流會間歇傳輸的I/O裝置

解決方案:讓核心同時檢測使用者提供的多個檔案描述符,如果檔案描述符的狀態沒有發生變化,就讓調用進程進入睡眠狀態。如果有一個描述符已準備好可被訪問,該函數就返回進程,並告訴進程哪個描述符已準備好

問題:系統調用最多隻帶3個參數,select()有5個參數

解決方案:把所有參數放入一個“緩衝區”中,把“緩衝區”的地址作為參數傳入

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.