日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

Linux 核心--3.軟件基礎(chǔ)( 二 )




2.2 操作系統(tǒng)概念
如果沒有軟件,計(jì)算機(jī)只不過是一堆發(fā)熱的電子器件 。如果將硬件比做計(jì)算機(jī)的心臟則軟件就是它的靈魂 。操作系統(tǒng)是一組系統(tǒng)程序的集合,它提供給用戶運(yùn)行應(yīng)用軟件的功能 。操作系統(tǒng)對系統(tǒng)硬件進(jìn)行抽象,它提供給系統(tǒng)用戶一臺(tái)虛擬的機(jī)器 。大多數(shù)PC可以運(yùn)行一種或者多種操作系統(tǒng),每個(gè)操作系統(tǒng)都有不同的外觀 。Linux由許多獨(dú)立的功能段組成 。比如Linux內(nèi)核,如果沒有庫函數(shù)和外殼程序,內(nèi)核是沒有什么用的 。為了理解操作系統(tǒng)到底是什么,思考一下當(dāng)你敲入一個(gè)簡單命令時(shí),系統(tǒng)中發(fā)生了什么:


$ ls
Mailc imagesperl
docstcl
$


$符號(hào)是由用戶登錄外殼(這里指Bash)提供的提示符 。它表示正在等待用戶敲入一些命令 。敲入ls命令,首先鍵盤驅(qū)動(dòng)程序識(shí)別出敲入的內(nèi)容 。然后鍵盤驅(qū)動(dòng)將它們傳遞給外殼程序,由外殼程序來負(fù)責(zé)查找同名的可執(zhí)行程序(ls) 。如果在/bin/ls目錄中找到了ls,則調(diào)用核心服務(wù)將ls的可執(zhí)行映象讀入虛擬內(nèi)存并開始執(zhí)行 。ls調(diào)用核心的文件子系統(tǒng)來尋找那些文件是可用的 。文件系統(tǒng)使用緩沖過的文件系統(tǒng)信息,或者調(diào)用磁盤設(shè)備驅(qū)動(dòng)從磁盤上讀取信息 。當(dāng)然ls還可能引起網(wǎng)絡(luò)驅(qū)動(dòng)程序和遠(yuǎn)程機(jī)器來交換信息以找出關(guān)于系統(tǒng)要訪問的遠(yuǎn)程文件系統(tǒng)信息(文件系統(tǒng)可以通過網(wǎng)絡(luò)文件系統(tǒng)或者NFS進(jìn)行遠(yuǎn)程安裝) 。當(dāng)?shù)玫竭@些信息后,ls將這些信息通過調(diào)用視頻驅(qū)動(dòng)寫到顯示器屏幕上 。以上這些聽起來十分復(fù)雜 。這個(gè)非常簡單命令的處理過程告訴我們操作系統(tǒng)是一組協(xié)同工作的函數(shù)的集合,它們給所有的用戶對系統(tǒng)有一致的印象 。


2.2.1 內(nèi)存管理
由于資源的有限,比如內(nèi)存,操作系統(tǒng)處理事務(wù)的過程看起來十分冗長 。操作系統(tǒng)的一個(gè)基本功能就是使一個(gè)只有少量物理內(nèi)存的系統(tǒng)工作起來象有多得多的內(nèi)存一樣 。這個(gè)大內(nèi)存叫為虛擬內(nèi)存 。其思想就是欺騙系統(tǒng)中運(yùn)行的軟件,讓它們認(rèn)為有大量內(nèi)存可用 。系統(tǒng)將內(nèi)存劃分成易于處理的頁面,在系統(tǒng)運(yùn)行時(shí)將這些頁面交換到硬盤上去 。由于有另外一個(gè)技巧:多處理的存在,這些軟件更加感覺不到系統(tǒng)中真實(shí)內(nèi)存的大小 。


2.2.2 進(jìn)程
進(jìn)程可以認(rèn)為是處于執(zhí)行狀態(tài)的程序,每個(gè)進(jìn)程有一個(gè)特定的程序?qū)嶓w 。觀察以下Linux系統(tǒng)中的進(jìn)程,你會(huì)發(fā)現(xiàn)有比你想象的要多得多的進(jìn)程存在 。比如,在我的系統(tǒng)中敲入ps命令,將得到以下結(jié)果:

$ ps
PID TTY STATTIME COMMAND
158 pRe 1 0:00 -bash
174 pRe 1 0:00 sh /usr/X11R6/bin/startx
175 pRe 1 0:00 xinit /usr/X11R6/lib/X11/xinit/xinitrc --
178 pRe 1 N 0:00 bowman
182 pRe 1 N 0:01 rxvt -geometry 120x35 -fg white -bg black
184 pRe 1 < 0:00 xclock -bg grey -geometry -1500-1500 -padding 0
185 pRe 1 < 0:00 xload -bg grey -geometry -0-0 -label xload
187 pp6 1 9:26 /bin/bash
202 pRe 1 N 0:00 rxvt -geometry 120x35 -fg white -bg black
203 ppc 2 0:00 /bin/bash
 1796 pRe 1 N 0:00 rxvt -geometry 120x35 -fg white -bg black
 1797 v06 1 0:00 /bin/bash
 3056 pp6 3 < 0:02 emacs intro/introduction.tex
 3270 pp6 3 0:00 ps
$

如果系統(tǒng)有許多個(gè)CPU,則每個(gè)進(jìn)程可以運(yùn)行在不同的CPU上 。不幸的是,大多數(shù)系統(tǒng)中只有一個(gè)CPU 。這樣 操作系統(tǒng)將輪流運(yùn)行幾個(gè)程序以產(chǎn)生它們在同時(shí)運(yùn)行的假象 。這種方式叫時(shí)間片輪轉(zhuǎn) 。同時(shí)這種方法還騙過了進(jìn)程使它們都認(rèn)為只有自己在運(yùn)行 。進(jìn)程之間被隔離開,以便某個(gè)進(jìn)程崩潰或者誤操作不會(huì)影響到別的進(jìn)程 。操作系統(tǒng)通過為每個(gè)進(jìn)程提供分立的地址空間來作到這一點(diǎn) 。

推薦閱讀