0.11 檔案系統的資料結構

在Linux中普通檔案和目錄檔案儲存在稱為塊物理裝置的磁碟或者磁帶上。一套Linux系統支援若干物理盤,每個物理盤可定義一個或者多個檔案系統。(類比於微機磁碟分割)。每個檔案系統由邏輯塊的序列組成,一個邏輯盤空間一般劃分為幾個用途各不相同的部分,即引導塊、超級塊、inode區以及資料區等。檔案系統邏輯塊各部分分布圖:其中引導塊部分可以不包含代碼,但必須存在以保持格式的一致性。超級快:struct super_block { unsigned short s_ninodes; 

常用演算法之二:動態規划算法

一、基本概念    動態規划過程是:每次決策依賴於目前狀態,又隨即引起狀態的轉移。一個決策序列就是在變化的狀態中產生出來的,所以,這種多階段最佳化決策解決問題的過程就稱為動態規劃。二、基本思想與策略    基本思想與分治法類似,也是將待求解的問題分解為若干個子問題(階段),按順序求解子階段,前一子問題的解,為後一子問題的求解提供了有用的資訊。在求解任一子問題時,列出各種可能的局部解,通過決策保留那些有可能達到最優的局部解,丟棄其他局部解。依次解決各子問題,最後一個子問題就是初始問題的解。    

llinux中的塊裝置操作

當核心想快裝置發出一個讀寫請求或其他請求時,ll_rw_block就會根據其參數指明的操作命令和資料緩衝塊頭中的裝置號,利用對應請求項的操作函數do_xx_request建立一個塊裝置請求項,並利用電梯演算法將新產生的請求項插入請求項隊列中。1.struct request { int dev;  /* -1 if no request */ int cmd;  /* READ or WRITE */ int errors; unsigned long sector; unsigned

kmap_atomic的細節以及改進

kmap_atomic用於高端記憶體映射,用於緊急的,短時間的映射,它沒有使用任何鎖,完全靠一個數學公式來避免混亂,它空間有限且虛擬位址固定,這意味著它映射的記憶體不能長期被佔用而不被unmap,kmap_atomic在效率上要比kmap提升不少,然而它和kmap卻不是用於同一場合的,kmap用於休眠的情況而kmap_atomic則用在不能休眠的情況下(如中斷處理常式等不會被重新調度的時候)。不管怎麼說,它的設計是很完美的。    

指標(二)

文章目錄 (一)下標法(二)數組名指標運算(三)指標變數用指向變數的指標變數用指向一維數組的指標變數  數組的指標和指向數組的指標變數數組的指標就是數組的起始地址,數組元素的指標是數組元素的地址。引用數組元素可以使用下標法(如a[2]),也可以使用指標法。使用指標法能使目標程式品質高(占記憶體少,運行速度快)。如果數組為int型,則指標亦應該指向int型。int a[10];int

遇到的一些問題

今天在驗證completion的測試程式是遇到了以下錯誤:linx1:syntax error : word unexpected (expecting"))網上遇到這個問題的人挺多,原因有很多種,參照文章:http://blog.163.com/againinput4@yeah/blog/static/122764271200962305342334/自己都試了下,沒有解決。結果後來通過 file命令讀取檔案資訊時,發現出了低級問題。file

指標(三)

C程式中,可以用兩種方法訪問一個字串。一、用字元數組存放一個字串char string[]="This is a String.";和前面介紹的一樣,string是數組名,代表字串數組的首地址。二、用字元指標指向一個字串char *string="This is a

指標(四)

 函數的指標和指向函數的指標變數可以用指標變數指向整型變數、字串、數組,也可以指向一個函數。一個函數在編譯時間被分配一個入口地址,成為函數的指標。每一個函數都佔用一段記憶體單元,有一個起始地址。因此,可以用一個指標變數指向一個函數,通過這個指標變數來訪問它指向的函數。指向函數的指標的定義形式為:資料類型 (*指標變數名)(形參表);--(C語言中可以沒有形參表,但在C++中必須有)int max(int a,int b){if(a>b)return a;elsereturn

指標(五)

 main函數的形參main函數一般寫成main(){}實際上main函數也可以有參數main(int argc,char *argv[]){}使用參數的命令列形式為:命令名 參數1 參數2 ......參數n 例如:test.exe的源檔案中有如下代碼main(int argc,char *argv[]){while(argc-->1)printf("%s/n",*++argv);}在命令列輸入test aa

AT&T彙編格式

因為在linux的核心中,很多跟底層硬體接觸的都使用組合語言,但是Linux不僅使用一種組合語言,除了Intel的組合語言之外,還是用AT&T的組合語言,因此可以說這兩個是一個基礎,Intel的彙編相信很多學電腦的人都學習過,但是AT&T的就不一定了,個人認為他們的思想都是一樣的,只不過是文法不同,初級學習可以看如下的文章(文章轉自http://blog.chinaunix.net/u1/59572/showart_1148334.html)一、AT&T 格式Linux

Yii Framework 核心之Component Part1

There’s been a lot of buzz surrounding the use of frameworks for quite a while now and there are many great PHP frameworks to choose from. I was blown away by the simplicity and power of the baseCComponent class in the Yii framework. What does the

verify_area()

 對於80386CPU,在執行特權級0代碼時不會理會使用者空間中的頁面是否是頁保護的,因此在執行核心代碼時使用者空間中資料頁面保護標誌起不了作用,寫時複製機制也就失去了作用。verify_area()就用於此目的。// 對當前進程地址從addr到addr + size這一段空間以頁為單位執行寫操作前的檢測操作。// 由於檢測判斷是以頁面為單位進行操作,因此程式首先需要找出addr所在頁面開始地址start,// 然後start加上進程資料區段基址,使這個start變換成CPU

指標(一)

 指標是C語言中的一個重要概念,正確而靈活的運用它,可以有效地表示複雜的資料結構;能動態分配記憶體;能方便地使用字串;有效而方便地使用數組;在調用函數時能得到多於1個地值;能直接處理記憶體位址等,這對設計系統軟體是很有必要的。地址和指標的概念如果在程式中定義了一個變數,在編譯時間就給這個變數分配記憶體單元。系統根據程式中定義的變數類型,分配一定長度的空間。記憶體中的每一個位元組有一個編號,這就是“地址”;一個變數的地址稱為“指標”。意思是通過它能找到以它為地址的記憶體單元。因此,變數的指標就是變

Yii Framework 核心之 Component part2

文章目錄 Defining EventsTriggering EventsAttaching Events Welcome once again to this tour of the Yii Framework’s CComponent class. This three-part series demonstrates how Yii uses a component-based architecture and how the

Yii Framework 核心之 Component part3

Welcome to the last article in this three-part whirlwind tour of the Yii framework’s component class. The goal of the series is to show you how Yii implements a component-based architecture and how itsCComponent class handles the implementation

常用演算法類型之一:分治演算法

分治演算法一、基本概念   在電腦科學中,分治法是一種很重要的演算法。字面上的解釋是“分而治之”,就是把一個複雜的問題分成兩個或更多的相同或相似的子問題,再把子問題分成更小的子問題……直到最後子問題可以簡單的直接求解,原問題的解即子問題的解的合并。這個技巧是很多高效演算法的基礎,如排序演算法(快速排序,歸併排序),傅立葉變換(快速傅立葉變換)……   

module_param核心模組參數傳遞

在使用者態下編程可以通過main()的來傳遞命令列參數,而編寫一個核心模組則通過module_param() 參數用 moudle_param 宏定義來聲明, 它定義在 moduleparam.h.module_param(name,type,perm);module_param 使用了 3 個參數: 變數名, 它的類型, 以及一個許可權掩碼用來做一個輔助的 sysfs 入口(啥意思). 這個宏定義應當放在任何函數之外, 典型地是出現在源檔案的前面.定義如:static char *whom =

QML,半路出家的程式員?

QML出現已經有段時間了。參加過2次Nokia內部的QML培訓,卻一直沒能在真實的工作中用到它。相較於傳統意義上的Qt GUI編程而言,QML到底有著什麼樣的未來呢? 一、QML,GUI程式員的終結?    眾所周知,以往的GUI開發離不開UI設計師與程式員的通力合作,雖然,大部分的Qter在開發應用時總是兼UI設計與Coding於一身,但無可厚非的是,程式員還是專一與編碼要好一點。   

關於sleep_on()函數的理解

linux核心完全剖析 P283頁, 核心功能void sleep_on(struct task_struct **p): {      struct task_struct *tmp;      if(!p)             return;     if (current == &(init_task.task))          panic("task[0] trying to sleep");     tmp = *p;     *p = current;    

2.6核心塊I/O管理

核心中用到的最小定址單元是塊,塊是檔案系統的一種抽象,只能基於塊來訪問檔案系統。雖然物理磁碟定址是按照扇區進行的,但核心執行的所有磁碟操作都是通過塊來執行的。塊的大小必須是扇區大小的2的整數倍(可以包含多個扇區),並且要小於頁面的大小。2.6核心塊I/O設計到兩個結構體,struct buffer_head和struct

總頁數: 61357 1 .... 17217 17218 17219 17220 17221 .... 61357 Go to: 前往

聯繫我們

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