本章內(nèi)容:
1. 什么是Linux
2.Linux內(nèi)核的組成部分
3.探索Linux桌面
4.了解Linux發(fā)行版
1.1 什么是Linux
Linux可劃分為四個部分:Linux內(nèi)核?GNU工具組件?圖形化桌面環(huán)境?應(yīng)用軟件
1.1.1 深入深究Linux內(nèi)核
Linux系統(tǒng)的核心就是內(nèi)核烟零。內(nèi)核控制著與計算機(jī)系統(tǒng)上所有的硬件和軟件的交互:必要時分配硬件化漆,有需要時執(zhí)行軟件
內(nèi)核基本負(fù)責(zé)以下四項主要功能:系統(tǒng)內(nèi)存管理?軟件程序 管理硬件設(shè)備管理 文件系統(tǒng)管理
系統(tǒng)內(nèi)存管理
內(nèi)存管理包含可用物理內(nèi)存、虛擬內(nèi)存空間
虛擬內(nèi)存空間 又稱為交換空間(Swap Space),是內(nèi)核通過硬盤上的存儲空間來實現(xiàn)虛擬內(nèi)存。內(nèi)存存儲單元會被按組分成很多塊,這些塊被稱作頁面(Page),內(nèi)核會將每個內(nèi)存頁面放在物理內(nèi)存或者交換空間蹂窖,然后自己會維護(hù)一張內(nèi)存頁面表,來指明哪些頁面位于物理內(nèi)存抡锈,哪些頁面被換到交換空間疾忍。
內(nèi)核會記錄哪些內(nèi)存頁面正在被程序或者系統(tǒng)使用中,并自動把一段時間未訪問的內(nèi)存頁面復(fù)制到交換空間區(qū)域(這個過程稱為換出床三,Swapping out)即使還有可用內(nèi)存一罩,與之相反的是當(dāng)程序要訪問一個之前被換出到交換空間的內(nèi)存頁面時,內(nèi)核必須從物理內(nèi)存空間換出另外一個內(nèi)存頁面來給其讓出空間撇簿,然后從交換空間換入(這個過程稱之為換入聂渊,Swapping in)請求的頁面。這樣一個過程始終是在Linux系統(tǒng)在運行時四瘫,在一直進(jìn)行著汉嗽。備注: 目前虛擬化的解決方案KVM是默認(rèn)不分配交換空間,那就不在這個討論的范疇之內(nèi)找蜜。
通過查看專門的/proc/meminfo文件來觀察Linux系統(tǒng)上虛擬內(nèi)存和物理內(nèi)存的當(dāng)前狀態(tài)
具體就不貼截圖上來的饼暑,主要幾個參數(shù):MemTotal MemFree SwapTotal等等
默認(rèn)情況下,運行在Linux系統(tǒng)上的每個進(jìn)程都有各自的內(nèi)存頁面洗做。進(jìn)程不能訪問其他進(jìn)程正在使用的內(nèi)存頁面弓叛。內(nèi)核維護(hù)著它自己的內(nèi)存區(qū)域。出于安全的考慮诚纸,用戶空間的進(jìn)程不能訪問內(nèi)核空間使用的內(nèi)存頁面撰筷。
出于方便共享數(shù)據(jù),你可以創(chuàng)建一些共享內(nèi)存頁面畦徘。多個進(jìn)程可以在同一塊共用內(nèi)存空間進(jìn)行數(shù)據(jù)的讀取和寫入操作毕籽。
每個共享內(nèi)存區(qū)域都有屬于某個所有者,也就是創(chuàng)建它的用戶井辆,每個區(qū)域都有標(biāo)準(zhǔn)的Linux權(quán)限設(shè)置來設(shè)定其他用戶是否可以訪問該區(qū)域关筒。
軟件程序管理
Linux操作系統(tǒng)稱運行中的程序叫進(jìn)程 。
內(nèi)核創(chuàng)建了第一個進(jìn)程(稱為init進(jìn)程)用來啟動系統(tǒng)中所有其他的進(jìn)程掘剪,當(dāng)內(nèi)核啟動時平委,它會將init進(jìn)程加載到虛擬內(nèi)存中。內(nèi)核在啟動其他進(jìn)程時夺谁,都會在虛擬內(nèi)存中給新的進(jìn)場分配一個專有區(qū)域來存儲進(jìn)程用到的數(shù)據(jù)和代碼
Linux系統(tǒng)的init系統(tǒng)是采用7個啟動運行級廉赔,運行級為1時,稱為單用戶模式匾鸥,通常用來在系統(tǒng)有問題是進(jìn)行緊急的文件系統(tǒng)維護(hù)(root用戶密碼丟失也在該模式下進(jìn)行密碼修改或者找回)蜡塌。顯然,該模式下僅有一個人(通常是系統(tǒng)管理員)能登陸到系統(tǒng)操作數(shù)據(jù)勿负。
標(biāo)準(zhǔn)的運行級別是3馏艾,在這個運行級別上大部分應(yīng)用軟件劳曹,比如:網(wǎng)絡(luò)支持程序,都會啟動
圖形化界面X Windows系統(tǒng)運行在級別5琅摩,同時運行用戶通過圖形化桌面登陸系統(tǒng)登陸铁孵。
重啟運行在運行級別6
使用ps ax 查看當(dāng)前系統(tǒng)當(dāng)前運行在Linux系統(tǒng)上的進(jìn)程
第一列 PID 進(jìn)程的進(jìn)程號,第一個進(jìn)程就是init進(jìn)程 進(jìn)程號為1
第三列 進(jìn)程的狀態(tài) S代表進(jìn)程在睡眠狀態(tài) SW 代表在睡眠和等待 R代表在運行中
最后一列的方括號中的進(jìn)程 表示由于不活動而被內(nèi)存中換出到磁盤的交換空間
硬件設(shè)備管理
這個就不做詳細(xì)的記錄房资,有興趣的可以google 相關(guān)內(nèi)容蜕劝,相信肯定比我寫得要清楚
文件系統(tǒng)管理
文件系統(tǒng)指文件存在的物理空間,linux系統(tǒng)中每個分區(qū)都是一個文件系統(tǒng)轰异,都有自己的目錄層次結(jié)構(gòu)岖沛。linux會將這些分屬不同分區(qū)的、單獨的文件系統(tǒng)按一定的方式形成一個系統(tǒng)的總的目錄層次結(jié)構(gòu)搭独。一個操作系統(tǒng)的運行離不開對文件的操作婴削,因此必然要擁有并維護(hù)自己的文件系統(tǒng)。
Llinux文件系統(tǒng)使用索引節(jié)點來記錄文件信息牙肝,作用像windows的文件分配表唉俗。
索引節(jié)點是一個結(jié)構(gòu),它包含了一個文件的長度配椭、創(chuàng)建及修改時間互躬、權(quán)限、所屬關(guān)系颂郎、磁盤中的位置等信息。一個文件系統(tǒng)維護(hù)了一個索引節(jié)點的數(shù)組容为,每個文件或目錄都與索引節(jié)點數(shù)組中的唯一一個元素對應(yīng)乓序。系統(tǒng)給每個索引節(jié)點分配了一個號碼,也就是該節(jié)點在數(shù)組中的索引號坎背,稱為索引節(jié)點號替劈。
linux文件系統(tǒng)將文件索引節(jié)點號和文件名同時保存在目錄中。所以得滤,目錄只是將文件的名稱和它的索引節(jié)點號結(jié)合在一起的一張表陨献,目錄中每一對文件名稱和索引節(jié)點號稱為一個連接。
對于一個文件來說有唯一的索引節(jié)點號與之對應(yīng)懂更,對于一個索引節(jié)點號眨业,卻可以有多個文件名與之對應(yīng)。因此沮协,在磁盤上的同一個文件可以通過不同的路徑去訪問它龄捡。
可以用ln命令對一個已經(jīng)存在的文件再建立一個新的連接慷暂,而不復(fù)制文件的內(nèi)容。連接有軟連接和硬連接之分餐禁,軟連接又叫符號連接绷旗。它們各自的特點是:
硬連接:原文件名和連接文件名都指向相同的物理地址庄岖。
目錄不能有硬連接;硬連接不能跨越文件系統(tǒng)(不能跨越不同的分區(qū))
文件在磁盤中只有一個拷貝背桐,節(jié)省硬盤空間又沾;
由于刪除文件要在同一個索引節(jié)點屬于唯一的連接時才能成功,因此可以防止不必要的誤刪除役听。
符號連接:用ln -s命令建立文件的符號連接符號連接是linux特殊文件的一種蚊丐,作為一個文件昭娩,它的數(shù)據(jù)是它所連接的文件的路徑名。類似windows下的快捷方式。
可以刪除原有的文件而保存連接文件,沒有防止誤刪除功能。
隨著Linux的不斷發(fā)展蛛枚,它所支持的文件格式系統(tǒng)也在迅速擴(kuò)充扭吁。特別是Linux 2.4內(nèi)核正式推出后,出現(xiàn)了大量新的文件系統(tǒng)盲镶,其中包括日志文件系統(tǒng)ext4智末、ReiserFS、XFSJFS和其它文件系統(tǒng)徒河。Linux系統(tǒng)核心可以支持十多種文件系統(tǒng)類型:JFS、 ReiserFS送漠、ext顽照、ext2、ext3闽寡、ext4代兵、ISO9660、XFS爷狈、Minx植影、MSDOS、UMSDOS涎永、VFAT思币、NTFS鹿响、HPFS、NFS谷饿、 SMB惶我、SysV、PROC等博投。
Linux操作系統(tǒng)绸贡,/proc/filesystems文件列出了當(dāng)前內(nèi)核支持的所有文件系統(tǒng)
1.2 GNU工具組件
GNU coreutils 軟件包由3部分組成:處理文本工具 操作文本工具 管理進(jìn)程工具
1.2.2 GNU/Linux Shell 稱為交互式工具,它為用戶提供了啟動程序毅哗、管理文件系統(tǒng)上的文件以及管理運行在Linux上的進(jìn)程的途徑听怕。
shell包含內(nèi)置命令,可以完成一系列的操作虑绵,也可以通過將shell命令放入文件中作為程序執(zhí)行尿瞭,這個稱之為shell腳本
大部分Linux發(fā)行版包含多個shell,通常默認(rèn)的shell是bash shell
1.3 Linux 桌面環(huán)境
這個只需了解蒸殿,對于我們的shell命令和shell腳本編程影響不大,主流的桌面環(huán)境: X Windows KDE桌面 GNOME桌面 其他桌面
1.4 Linux 發(fā)行版
主流發(fā)行版:Slackware?Red Hat?Fedora Gentoo Mandriva?openSUSE Debian
只做了解筷厘,一般企業(yè)以Red Hat 紅帽系統(tǒng)以及其社區(qū)版CentOS,Debian 及其分支Ubuntu為主宏所,這里就不深入寫下去酥艳,自行探索