Linux2.4開啟一個檔案的系統調用

來源:互聯網
上載者:User

0.sys_open()

(1)從當前進程的“開啟檔案表”中找到一個閒置項get_unused_fs()

(2)建立檔案讀寫的上下文filp_open():(見1)

(3)將上下文安裝到檔案開啟表中

1.filp_open():建立檔案讀寫的上下文

(1)擷取指向檔案名稱的dentry和vfsmount:open_namei()

若只是開啟,則通過path_init()和path_walk()搜尋

若有不存在就建立的要求,則(見3)

3.擷取指向檔案名稱的dentry和vfsmount,若不存在就建立

(1)找到path_name對應的節點的父dentry

(2)找到目標檔案的dentry

(3)若不存在,則建立dentry:vfs_create()(見4)

(4)判斷dentry:

若是一個安裝點,則進入所安裝的檔案系統

若是一個串連符號,則展開目標結點,go to 3-(1)

(5)由dentry計算出inode

(6)對inode各種檢查

(7)如果需要,對檔案截尾

A.切除length之後的內容

B.修改inode

C.把inode掛入髒隊列

4.vfs_create():為檔案在建立一個dentry

(1)建立檔案在存放裝置上的索引節點和記憶體中的inode:ext2_new_inode()

(2)把目標檔案的檔案名稱和索引節點號寫入其所在的目錄ext2_add_entry()

(3)把目標檔案的dentry結構和inode結構聯絡在一起d_instantiate()

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.