原创 Linux 內存管理

Linux將它的物理內存虛擬化。進程並不能直接在物理內存上尋址,而是由Linux內核爲每個進程維護一個特殊的虛擬地址空間(virtual address space)。這個地址空間是線性的,從0開始,到某個最大值。虛擬空間由許多頁組成。系統

原创 Linux進程管理(一)進程的創建與銷燬

在進程的創建上, Unix採取了一種有趣和少見的處理方法:它將進程的創建和加載一個新二進制鏡像分離。Unix提供了兩個系統調用fork和exec。 創建進程: 缺省情況下,內核將進程ID的最大值限制爲32768,2^15。系統管理員可以設置

原创 Linux進程管理(二)進程的調度與資源限制

1 進程調度就緒進程最重要的特徵是該進程是非阻塞的。進行用戶交互、大量讀寫文件、響應I/O和網絡事件的進程會花費大量時間來等待資源可用,在相當長的時間內無法轉爲就緒狀態(長是相對於指令運行時間而言),因此就緒進程首先應該是非阻塞的。一個就緒

原创 Linux文件IO(五)IO內核

Linux內核實現I/O主要在三個內核子系統:虛擬文件系統(VFS),頁緩存,和頁回寫。虛擬文件系統(有時也叫做virtual file switch)是一種Linux內核的文件操作的抽象機制。它允許內核在無需瞭解文件系統類型的情況下,使用

原创 Linux文件IO(四)IO多路複用

當程序進行IO時,如果數據尚未準備好,那麼IO將處於阻塞狀態。當某個進程有多個打開的文件,比如socket,那麼其後的所有準備好讀寫的文件將受到阻塞的影響而不能操作。不借助線程,單一進程無法在同一時間服務多個文件描述符。非阻擋式IO可以作爲

原创 Linux 內存管理

Linux將它的物理內存虛擬化。進程並不能直接在物理內存上尋址,而是由Linux內核爲每個進程維護一個特殊的虛擬地址空間(virtual address space)。這個地址空間是線性的,從0開始,到某個最大值。虛擬空間由許多頁組成。系統

原创 Linux文件IO(三)高級IO

直接文件IO與其他現代操作系統內核一樣,Linux內核實現了一個複雜的緩存、緩衝以及設備和應用之間的I/O管理的層次結構。一個高性能應用可能希望越過這些複雜的層次結構並進行獨立的I/O管理,如數據庫系統,比較傾向於使用他們自己的緩存機制,以

原创 Linux文件IO(二)標準IO

塊做爲文件系統的抽象,它是I/O 中最基本的概念——所有的磁盤操作都是基於塊進行的。因此,當請求以塊大小整數倍對齊地址時, I/O 效率是最理想的。操作效率隨着系統調用次數的增多而急劇下降,例如,每次讀一字節讀1024次與一次讀1024字節

原创 Linux文件IO(一)基本IO

1, 什麼是文件 任何一個進程在對文件進行讀寫操作前,都需要先打開該文件。操作系統內核爲每個進程維護一個打開文件的列表,該列表是一個指針數組,指向每個打開文件的元數據,其中包括指向文件inode的內存拷貝,文件位置和訪問模式等),數組的索引