檔案使用磁碟的實現 OS

2021-10-06 06:56:23 字數 1169 閱讀 4165

通過檔案使用磁碟,**如下

在fs/read_write.c中

int sys_write(int fd, const char *buf, int count)

//fd為檔案索引,buf為緩衝區,count表示要處理的字串長度

我們理一下file_write的工作過程

file_write(inode, file, buf, count)

根據file還有count找到字元流的位置如(200-212)

根據inode對映表找到對應的盤塊號

進行讀寫操作

file_write的實現

int file_write(struct m_inode *inode, struct file *filp, char *buf, int count)

filp->f_pos=pos;

}

create_block算盤塊,檔案抽象的核心

while(ii_dev, block);

}int _bmap(m_inode *inode, int block, int create)

}block-=7;

if(block<512)

//乙個盤塊大小為1k,乙個盤塊號大小為2個位元組,所以一共有512個block

...}struct d_inode

上面基本就完成了磁碟的讀寫工作了

m_inode,裝置檔案的inode

struct m_inode

int sys_open(const char* filename, int flag)

}#define major(a)(((unsigned)(a))>>8) //取高位元組

#define minor(a)((a)&0xff) //取低位元組

通過inode可以形成檔案檢視,如果使用不同的裝置,只要使用inode形成對映就可以了,可以看一下這兩篇部落格,你可以更清楚的認識檔案檢視

cpu如何讀取鍵盤傳過來的資料

作業系統如何使用顯示器的

OS 李治軍 L28 生磁碟的使用

磁碟具有更複雜的結構,在作業系統內有著更為複雜的抽象層次,這裡的生 raw 是讓disk跑起來的意思。可以將磁碟的結構理解為多個原片疊起來的柱面,我們用以下的引數取描述乙個磁碟 理論上,我們要操控乙個磁碟,就要對其控制器發出指令,控制磁頭的電機,使磁頭移動到相應的軌道上去 找到乙個柱面 然後開始旋轉...

python基礎 檔案os模組使用

with open 可自動釋放資源 stream open r c users lizhu.ding desktop aa.txt wb with open r c users lizhu.ding desktop aa.txt rb as stream container stream.read ...

python實現 os模組使用(1)

coding utf 8 created on sun feb 4 16 40 02 2018 author administrator 統計當前目錄下每個檔案型別的檔案數 import os def file count file path file list os.listdir file pa...