【 專欄 】- 萊昂氏unix原始碼分析導讀
萊昂氏unix原始碼分析導讀
即使到今天,《萊昂氏unix原始碼分析》仍是最好的核心原始碼分析書籍之一,它以短短9000多行程式碼實現了一個複雜的作業系統,其程式碼質量之高令人歎為觀止。希望本專欄能為讀者的讀碼過程提供一點幫助。相關推薦
【 專欄 】- 萊昂氏unix原始碼分析導讀
萊昂氏unix原始碼分析導讀 即使到今天,《萊昂氏unix原始碼分析》仍是最好的核心原始碼分析書籍之一,它以短短9000多行程式碼實現了一個複雜的作業系統,其程式碼質量之高令人歎為觀止。希望本專欄能為讀者的讀碼過程提供一點幫助。
(萊昂氏unix原始碼分析導讀-47) exec
by cszhao1980 現在,我們已經儲備了足夠的知識,該吹響向EXEC sys call衝鋒的號角了。 exec是系統中最重要也是最複雜的系統呼叫之一,它的作用是執
(萊昂氏unix原始碼分析導讀-33) swap函式
By cszhao1980 是瞭解swap函式的時候了,它有四個引數: (1)blkno:磁碟塊號; (2)coreaddr:實體記憶體block號; (3)count:讀寫位元組數; (4)rdflg:讀
(萊昂氏unix原始碼分析導讀-18) 再談中斷與陷入
從產生原因看,中斷和陷入也有巨大的差別。 硬體中斷由外部事件造成,屬於非同步事件,往往與當前程序毫無關係; 陷入則不同,它常常都是同步的(如除0錯),並與當前程序上下文相關。 除此之外,陷入還用來實現系統呼叫——核心為user程序提供了大量的服務,這些服務就是通過系統
(萊昂氏unix原始碼分析導讀-36) 快取管理(下)
by cszhao1980 理解了上述內容,下面的這些程式就不難理解了。 首先是函式brelse(buf bp),該函式將傳入的快取歸還到AV佇列中,函式採用尾插法, 即快取會插到AV佇列的隊尾——
(萊昂氏unix原始碼分析導讀-35)快取管理(上)
by cszhao1980 系統定義了NBUF個快取區域,每個514個位元組: 4720: char buffers
(萊昂氏unix原始碼分析導讀-21)時鐘中斷處理
時鐘中斷是系統中最重要的中斷,每個時鐘滴答都會產生時鐘中斷,它的中斷向量為(0100)或(0103)。 0533: . = 100^. 0534: kwlp; br6 0535: kwlp; br6 0569: .globl _clock 05
(萊昂氏unix原始碼分析導讀-11)系統初啟(4)
本章討論程序複製,繼續Main函式。 1625 */ 1626 1627 if(newproc()) { …… 現在看newproc的程式碼。 1826 newproc() 1827 { ......
(萊昂氏unix原始碼分析導讀-15) 系統初啟(8)
程序user態下的分段 User態中將程序空間分為text、data、stack segment三部分。 estabur(nt, nd, ns,sep)根據各個segment的大小,為各段分配page,引數如下: (1) nt—— text segment的長度(blo
(萊昂氏unix原始碼分析導讀-20)中斷、陷入的入口和出口
陷入處理程式的入口都為“trap”(這裡是指一個彙編程式,而非PDP11指令); 中斷則不同。他們有不同的入口,如: 525 .=60^. 當前地址設定為60 octal 526 klin; br4
(萊昂氏unix原始碼分析導讀-44) 檔案系統資源
by cszhao1980 一個裝置被mount進系統後,就被稱為一個檔案系統。它有兩類資源: (1) 磁碟inode資源; (2) 普通盤塊資
(萊昂氏unix原始碼分析導讀-43) 檔案系統的mount
By cszhao1980 當一個裝置被mount進系統,就會在“mount表”中佔據一個表項,mount表的定義如下: 0272: struct mount 0273: { 0274: int m_dev
(萊昂氏unix原始碼分析導讀-39)inode“資源”的獲取和釋放
by cszhao1980 iget()函式用於獲取inode資源,它有2個引數,裝置號和inode id。前面說過,通過這兩個引數 會唯一確定一個inode。簡單的說,該函式的作
(萊昂氏unix原始碼分析導讀-19)再談程序swtch
我們已經涉及到了部分程序切換的概念,在本章中,我們會從更一般的意義上考察程序切換的行為。 首先,程序切換(也稱作context switch)一定是在核心中完成的。 比如,以下為發生程序切換的最常見的情況: (1) active程序因等待某資源阻塞,自動讓出cpu;
(萊昂氏unix原始碼分析導讀-46)許可權、管道
by cszhao1980 1. 檔案與許可權控制 程序u結構中,身份相關的資訊有: 0420: char u_uid; /* effective user id */ 0421: char u_gid; /* effective group id */ 0
(萊昂氏unix原始碼分析導讀-27) Swap in/out (上)
By cszhao1980 Swap in/out指的是程序在實體記憶體(core空間)和磁碟交換檔案間的雙向移動過程,程序在active狀態時, 其segment
【 專欄 】- Redis 3.2.8 原始碼剖析註釋
Redis 3.2.8 原始碼剖析註釋 本專欄主要剖析 Redis 3.2.8 版本的原始碼,包含部分3.0.7版本的原始碼,並且結合圖片,更具體的理解Redis的底層實現。
【 專欄 】- Dubbo開發實踐以及原始碼、原理分析
Dubbo開發實踐以及原始碼、原理分析 本專欄主要是為了對分散式框架Dubbo感興趣或者有開發需要的同學,基於Dubbo開發實踐以及原始碼、原理分析等幾個維度對Dubbo進行由淺入深的介紹,以便更好跟朋友們共享有關Dubbo的點滴
【 專欄 】- 精品技術文章以及原始碼收藏集
精品技術文章以及原始碼收藏集 本專欄針對各個前沿熱門的技術進行分類, 每一類別收藏我讀過的相關的精品文章(個人部落格或者官方文件)以及原始碼,適用於新手上路和高手進階。 主要目的是讓大家能快速找到最值得閱讀的技術資料。
【 專欄 】- JUC-Java併發集合原始碼解析
JUC-Java併發集合原始碼解析 JUC包是java.util.concurrent包的簡寫,主要提供高效能的併發工具類,已解決JDK併發方面的弱勢。通過JUC包下的工具類Java開發者可以很容易的開發出高併發高效能的多執行緒安