linux操作系統(tǒng)基礎(chǔ)知識
1.操作系統(tǒng)總體介紹
?CPU: 就像人的大腦,主要負(fù)責(zé)相關(guān)事情的判斷以及實際處理的機(jī)制。
查詢指令: cat /proc/cpuinfo
?內(nèi)存: 大腦中的記憶區(qū)塊,將皮膚、眼睛等所收集到的信息記錄起來的地方,以供CPU進(jìn)行判斷。查詢指令: cat /proc/meminfo
物理內(nèi)存
物理內(nèi)存,就是我們將內(nèi)存條插在主板內(nèi)存槽上的內(nèi)存條的容量的大小。看計算機(jī)配置的時候,主要看的就是這個物理內(nèi)存
虛擬內(nèi)存
Windows中運(yùn)用了虛擬內(nèi)存技術(shù),即拿出一部分硬盤空間來充當(dāng)內(nèi)存使用,當(dāng)內(nèi)存占用完時,電腦就會自動調(diào)用硬盤來充當(dāng)內(nèi)存,以緩解內(nèi)存的緊張。
關(guān)系:windows中虛擬內(nèi)存和物理內(nèi)存可能都會被使用,linux中,只有物理內(nèi)存使用完了,才會使用虛擬內(nèi)存
?硬盤: 大腦中的記憶區(qū)塊,將重要的數(shù)據(jù)記錄起來,以便未來再次使用這些數(shù)據(jù)。
查詢指令: fdisk -l (需要root權(quán)限)
2.內(nèi)存和硬盤的關(guān)系
具體命令后面會介紹
3.操作系統(tǒng)監(jiān)控命令》單獨(dú)寫一份
?vmstat
?sar
?iostat
?top
?free
?uptime
?netstat
?ps
?strace
?lsof
4.如何分析操作系統(tǒng)
實際流程: 讀數(shù)據(jù)》數(shù)據(jù)》硬盤》虛擬內(nèi)存(swaP)》內(nèi)存》cpu緩存》執(zhí)行隊列
分析方向,正好相反
4.各個部分常出現(xiàn)的漏洞
?CPU: 容易出現(xiàn)該類瓶頸的郵件服務(wù)器、動態(tài)web服務(wù)器
?內(nèi)存: 容易出現(xiàn)該類瓶頸的打印服務(wù)器、數(shù)據(jù)庫服務(wù)器、靜態(tài)web服務(wù)器
?磁盤I/O: 頻繁讀寫操作的項目
?網(wǎng)絡(luò)帶寬: 頻繁大量上傳下載項目
5.Linux本身的一些優(yōu)化
1. 系統(tǒng)安裝優(yōu)化
當(dāng)安裝linux系統(tǒng)時,磁盤劃分、 SWAP內(nèi)存的分配都直接影響系統(tǒng)性能。對于虛擬內(nèi)存SWAP的設(shè)定,現(xiàn)在已經(jīng)沒有了所謂虛擬內(nèi)存是物理內(nèi)存兩倍的要求,但是根據(jù)經(jīng)驗,如果內(nèi)存較小(物理內(nèi)存小于4GB),一般設(shè)置SWAP交換分區(qū)大小為內(nèi)存的2倍;如果物理內(nèi)存大約4GB小于16GB,可以設(shè)置SWAP大小等于或者略小于物理內(nèi)存即可;如果內(nèi)存在16GB以上,原則上可以設(shè)置SWAP為0,但最好設(shè)置一定大小的SWAP
? 2. 內(nèi)核參數(shù)優(yōu)化
例如,如果系統(tǒng)部署的oracle數(shù)據(jù)庫應(yīng)用,那么就需要對系統(tǒng)共享內(nèi)存段( kernel.shmmax, kenerl.shmmni, kernel.shmall)、
系統(tǒng)信號量( kernel.sem)、文件句柄( fs.file0max)等參數(shù)進(jìn)行優(yōu)化設(shè)置;如果部署的WEB應(yīng)用,那么就需要根據(jù)web應(yīng)用特性進(jìn)行網(wǎng)絡(luò)參數(shù)的優(yōu)化,例如修改net.ipv4.ip_local_port_range、net.ipv4.tc_tw_reuse、 net.core.somaxconn等網(wǎng)絡(luò)
內(nèi)核參數(shù)
? 3. 文件系統(tǒng)優(yōu)化
在linux下可選的文件系統(tǒng)有ext2,、 ext3、 xfs、 ReiserFS
linux標(biāo)準(zhǔn)文件系統(tǒng)是從VFS開始,然后ext、 ext2, ext2是linux上的標(biāo)準(zhǔn)文件系統(tǒng), ext3是在ext2基礎(chǔ)上增加日志形成的。從VFS到ext3,設(shè)計思想沒有太大變化,都是早期UNIX家族基于超級塊和inode的設(shè)計理念設(shè)計而成。XFS文件系統(tǒng)是SGI開發(fā)的一個高級日志文件系統(tǒng),通過分布處理磁盤請求、定位數(shù)據(jù)、保持cache的一致性來提供對文件系統(tǒng)數(shù)據(jù)的低延遲、高帶寬的訪問,因此XFS極具伸縮性,非常健壯,具有優(yōu)秀的日志記錄功能、可擴(kuò)展性強(qiáng)、快速寫入等優(yōu)點。ReiserFS在Hans Reiser領(lǐng)導(dǎo)下開發(fā)出來的一款高性能的日志文件系統(tǒng),通過完全平衡樹來管理數(shù)據(jù),包括文件數(shù)據(jù)、文件名及日志支持等。與ext2、 ext3相比,最大的優(yōu)點是訪問性能和安全性大幅提升。具有高效、合理利用磁盤空間,先將的日志管理機(jī)制,特意的搜尋方式,海量磁盤存儲等優(yōu)點
5.重點知識
物理內(nèi)存和虛擬內(nèi)存
1.如何查看物理內(nèi)存和虛擬內(nèi)存?
Top 命令可以查看物理內(nèi)存和虛擬內(nèi)存的數(shù)值
2.Buffer
是硬盤控制器上的一塊內(nèi)存芯片,具有極快的存取速度,它是硬盤內(nèi)部存儲和外界接口之間的緩沖器。由于硬盤的內(nèi)部數(shù)據(jù)傳輸速度和外界介面?zhèn)鬏斔俣炔煌?,緩存在其中起到一個緩沖的作用。緩存的大小與速度是直接關(guān)系到硬盤的傳輸速度的重要因素,能夠大幅度地提高硬盤整體性能。
3.Cache
CPU緩存(Cache Memory)是位于CPU與內(nèi)存之間的臨時存儲器,它的容量比內(nèi)存小的多但是交換速度卻比內(nèi)存要快得多。緩存的出現(xiàn)主要是為了解決CPU運(yùn)算速度與內(nèi)存讀寫速度不匹配的矛盾,因為CPU運(yùn)算速度要比內(nèi)存讀寫速度快很多,這樣會使CPU花費(fèi)很長時間等待數(shù)據(jù)到來或把數(shù)據(jù)寫入內(nèi)存。在緩存中的數(shù)據(jù)是內(nèi)存中的一小部分,但這一小部分是短時間內(nèi)CPU即將訪問的,當(dāng)CPU調(diào)用大量數(shù)據(jù)時,就可避開內(nèi)存直接從緩存中調(diào)用,從而加快讀取速度
4.CPU中斷
當(dāng)CPU執(zhí)行完一條現(xiàn)行指令時,如果外設(shè)向CPU發(fā)出中斷請求,那么CPU在滿足響應(yīng)的情況下,將發(fā)出中斷響應(yīng)信號,與此同時關(guān)閉中斷,表示CPU不在受理另外一個設(shè)備的中斷。這時,CPU將尋找中斷請求源是哪一個設(shè)備,并保存CPU自己的程序計數(shù)器(PC)的內(nèi)容。然后,他將轉(zhuǎn)移到處理該中斷源的中斷服務(wù)程序。CPU在保存現(xiàn)場信息,設(shè)備服務(wù)(如交換數(shù)據(jù))以后,將恢復(fù)現(xiàn)場信息。在這些動作完成以后,開放中斷,并返回到原來被中斷的主程序的下一條指令。
5.上下文切換
上下文切換(Context Switch) 或者環(huán)境切換
多任務(wù)系統(tǒng)中,上下文切換是指CPU的控制權(quán)由運(yùn)行任務(wù)轉(zhuǎn)移到另外一個就緒任務(wù)時所發(fā)生的事件。
在操作系統(tǒng)中,CPU切換到另一個進(jìn)程需要保存當(dāng)前進(jìn)程的狀態(tài)并恢復(fù)另一個進(jìn)程的狀態(tài):當(dāng)前運(yùn)行任務(wù)轉(zhuǎn)為就緒(或者掛起、刪除)狀態(tài),另一個被選定的就緒任務(wù)成為當(dāng)前任務(wù)。上下文切換包括保存當(dāng)前任務(wù)的運(yùn)行環(huán)境,恢復(fù)將要運(yùn)行任務(wù)的運(yùn)行環(huán)境。
進(jìn)程上下文用進(jìn)程的PCB(進(jìn)程控制塊,也稱為PCB,即任務(wù)控制塊)表示,它包括進(jìn)程狀態(tài),CPU寄存器的值等。
通常通過執(zhí)行一個狀態(tài)保存來保存CPU當(dāng)前狀態(tài),然后執(zhí)行一個狀態(tài)恢復(fù)重新開始運(yùn)行。
上下文切換會對性能造成負(fù)面影響。然而,一些上下文切換相對其他切換而言更加昂貴;其中一個更昂貴的上下文切換是跨核上下文切換(Cross-Core Context Switch)。一個線程可以運(yùn)行在一個專用處理器上,也可以跨處理器。由單個處理器服務(wù)的線程都有處理器關(guān)聯(lián)(Processor Affinity),這樣會更加有效。在另一個處理器內(nèi)核搶占和調(diào)度線程會引起緩存丟失,作為緩存丟失和過度上下文切換的結(jié)果要訪問本地內(nèi)存??傊?,這稱為“跨核上下文切換”。
6.進(jìn)程和線程
進(jìn)程概念
進(jìn)程是表示資源分配的基本單位,又是調(diào)度運(yùn)行的基本單位。例如,用戶運(yùn)行自己的程序,系統(tǒng)就創(chuàng)建一個進(jìn)程,并為它分配資源,包括各種表格、內(nèi)存空間、磁盤空間、I/O設(shè)備等。然后,把該進(jìn)程放人進(jìn)程的就緒隊列。進(jìn)程調(diào)度程序選中它,為它分配CPU以及其它有關(guān)資源,該進(jìn)程才真正運(yùn)行。所以,進(jìn)程是系統(tǒng)中的并發(fā)執(zhí)行的單位。
線程概念
線程是進(jìn)程中執(zhí)行運(yùn)算的最小單位,亦即執(zhí)行處理機(jī)調(diào)度的基本單位。如果把進(jìn)程理解為在邏輯上操作系統(tǒng)所完成的任務(wù),那么線程表示完成該任務(wù)的許多可能的子任務(wù)之一
進(jìn)程和線程的關(guān)系
?。?)一個線程只能屬于一個進(jìn)程,而一個進(jìn)程可以有多個線程,但至少有一個線程。 (2)資源分配給進(jìn)程,同一進(jìn)程的所有線程共享該進(jìn)程的所有資源。
(3)處理機(jī)分給線程,即真正在處理機(jī)上運(yùn)行的是線程。
?。?)線程在執(zhí)行過程中,需要協(xié)作同步。不同進(jìn)程的線程間要利用消息通信的辦法實現(xiàn)同步。
注意:
1.Linux是大小寫敏感的系統(tǒng),舉個例子,Mozilla, MOZILLA, mOzilla和 mozilla是四個不同的命令(但是只有第四個mozilla是真正有效的命令)。還有,my_filE, my_file,和 my_FILE是三個不同的文件。用戶的登錄名和秘密也是大小寫敏感的(這是因為UNIX系統(tǒng)和C語言的傳統(tǒng)一向是大小寫敏感所致)。
2.文件名最多可以有256個字符,可以包含數(shù)字,點號”?!保聞澗€”_”,橫桿”-”,加上其他一些不被建議使用的字符。
3.文件名前面帶”?!钡奈募谳斎搿眑s”或者”dir” 命令時一般不顯示??梢园堰@些文件看作是隱含文件,當(dāng)然你也可以使用命令”ls –a”來顯示這些文件。
4.“/”對等于DOS下的”\”(根目錄,意味著所有其他目錄的父目錄,或者是在目錄之間和目錄和文件之間的一個間隔符號)。舉個例子,cd /usr/doc。
5.在Linux系統(tǒng)下,所有的目錄顯示在單一目錄樹下(有別于DOS系統(tǒng)的驅(qū)動器標(biāo)識)。這意味著所有的物理設(shè)備上的所有文件和目錄都合并在單一的目錄樹下。
6.在配置文件里,以#打頭的行是注釋行。在修改配置文件的時候盡量不要刪除舊的設(shè)置――可以把原來的設(shè)置加上”#”變成注釋行,總是在修改地方對應(yīng)地加入一些關(guān)于修改的注釋,你會發(fā)覺在以后的管理中獲益多多。
7.Linux是繼承性的多用戶操作系統(tǒng)。你的個人設(shè)定(和其他用戶的個人設(shè)定)放在你的主目錄下(一般是/home/your_user_login_name)。許多的配置文件的文件名都以”?!遍_頭,這樣用戶一般看不到這些文件。
8.整個系統(tǒng)范圍的設(shè)定一般放在目錄/etc下。
9.和其他的多用戶操作系統(tǒng)類似,在Linux下,文件和目錄有自己的擁有者和訪問權(quán)限。一般來說,你只被允許文件到你的主目錄下(/home/your_user_login_name)。學(xué)習(xí)一些關(guān)于文件權(quán)限管理的相關(guān)知識,否則你肯定會覺得Linux實在很麻煩。
10.命令參數(shù)選項一般由”-”引導(dǎo),后面跟一個字符(或者”--“,當(dāng)選項超過一個字符時)。這樣,”-”有點象DOS下的”/”。舉個例子,輸入命令 rm --help。
.Linux系統(tǒng)由哪幾部分組成?Linux內(nèi)核處于什么位置?
A:
1)Linux系統(tǒng)由四個部分組成:用戶進(jìn)程,系統(tǒng)調(diào)用接口、Linux內(nèi)核子系統(tǒng)和硬件;
2)Linux內(nèi)核處于用戶進(jìn)程和硬件之間,包括系統(tǒng)調(diào)用接口和Linux內(nèi)核子系統(tǒng)。
Q3.Linux內(nèi)核由哪幾部分組成?各個子系統(tǒng)的主要功能是什么?
A:
?。?)Linux內(nèi)核除系統(tǒng)調(diào)用外,由五個主要的子系統(tǒng)組成:進(jìn)程調(diào)度、內(nèi)存管理、虛擬文件系統(tǒng)、網(wǎng)絡(luò)和進(jìn)程間通信(IPC);
(2)各個子系統(tǒng)的主要功能為:
1)進(jìn)程調(diào)度:它控制著進(jìn)程對CPU的訪問,當(dāng)需要選擇一個進(jìn)程開始運(yùn)行時,由調(diào)度程序選擇最應(yīng)該運(yùn)行的進(jìn)程;
2)內(nèi)存管理:它允許多個進(jìn)程安全地共享主內(nèi)存區(qū)域,支持虛擬內(nèi)存;從邏輯上可以分為硬件無關(guān)的部分和硬件相關(guān)的部分;
3)虛擬文件系統(tǒng)(VFS):它隱藏了各種不同硬件的具體細(xì)節(jié),為所有設(shè)備提供統(tǒng)一的接口,支持多達(dá)數(shù)十種不同的文件系統(tǒng),分為邏輯文件系統(tǒng)和設(shè)備驅(qū)動程序;
4)網(wǎng)絡(luò):它提供了對各種網(wǎng)絡(luò)標(biāo)準(zhǔn)協(xié)議的存取和各種網(wǎng)絡(luò)硬件的支持,分為網(wǎng)絡(luò)協(xié)議和網(wǎng)絡(luò)驅(qū)動程序兩部分;
5)進(jìn)程間通信:支持進(jìn)程間各種通信機(jī)制,包括共享內(nèi)存、消息隊列和管道等。
內(nèi)存尋址
Q1.什么是物理地址?什么是虛地址?什么是線性地址?
A:
1)將主板上的物理內(nèi)存條所提供的內(nèi)存空間定義為物理內(nèi)存空間,其中每個內(nèi)存單元的實際地址就是物理地址;
2)將應(yīng)用程序員看到的內(nèi)存空間定義為虛擬地址空間(或地址空間),其中的地址就叫做虛擬地址(或虛地址),一般用“段:偏移量”的形式來描述,如A815:CF2D;
3)線性地址空間是指一段連續(xù)的、不分段的、范圍為0~4GB的地址空間,一個線性地址就是線性地址空間的一個絕對地址。
Q2.在保護(hù)模式下,MMU如何把一個虛地址轉(zhuǎn)換為物理地址?
A:
在保護(hù)模式下,內(nèi)存管理單元(MMU)由一個或一組芯片組成,其功能是指虛擬地址映射為物理地址,即進(jìn)行地址轉(zhuǎn)換;MMU是一種硬件電路,它包含分段部件和分頁部件兩個部件,分別叫做分段機(jī)制和分頁機(jī)制,分段機(jī)制是把一個虛擬地址轉(zhuǎn)換為線性地址,分頁機(jī)制是把一個線性地址轉(zhuǎn)換為物理地址。
.Linux內(nèi)核的狀態(tài)有哪些?
A:
1)Linux最基本的進(jìn)程狀態(tài)有三種:運(yùn)行態(tài)、就緒態(tài)和阻塞態(tài)(或等待態(tài));這三種狀態(tài)之間有四種可能的轉(zhuǎn)換關(guān)系:運(yùn)行態(tài)-》阻塞態(tài)、運(yùn)行態(tài)-》就緒態(tài)、就緒態(tài)-》運(yùn)行態(tài)和阻塞態(tài)-》就緒態(tài);
2)為了管理上的方便,將就緒態(tài)和運(yùn)行態(tài)合并為一個狀態(tài)—可運(yùn)行態(tài),再包括其它方面的一些改變,將進(jìn)程狀態(tài)劃分為:可運(yùn)行態(tài)、睡眠(或等待)態(tài)(分為深度睡眠態(tài)和淺度睡眠態(tài))、暫停狀態(tài)和僵死狀態(tài)。
1.Linux目錄樹結(jié)構(gòu)是怎樣的?它與Windows的目錄樹結(jié)構(gòu)有什么區(qū)別?為什么Linux的文件系統(tǒng)采用固定的目錄形式?
A:
文件是一個抽象的概念,它是存放一切數(shù)據(jù)或信息的倉庫;
1)Linux的目錄樹結(jié)構(gòu)為:根目錄(/)在上,其它的平行在下;
2)Windows操作系統(tǒng)也是采用樹型結(jié)構(gòu),但其樹型結(jié)構(gòu)的根是磁盤分區(qū)的盤符,有幾個分區(qū)就有幾個樹型結(jié)構(gòu),它們之間的關(guān)系式并列的;而在Linux中,無論操作系統(tǒng)管理幾個磁盤分區(qū),這樣的目錄樹只有一個;
3)這樣做的原因是:Linux是一個多用戶系統(tǒng),制定這樣一個固定的目錄規(guī)劃有助于對系統(tǒng)文件和不同的用戶文件進(jìn)行統(tǒng)一管理;
4)Linux中的文件類型包括:常規(guī)文件、目錄文件、設(shè)備文件、管道文件和鏈接文件。
linux操作系統(tǒng)的優(yōu)勢
1、免費(fèi)開源。Linux是一款完全免費(fèi)的操作系統(tǒng),任何人都可以從網(wǎng)絡(luò)上下載到它的源代碼,并可以根據(jù)自己的需求進(jìn)行定制化的開發(fā),而且沒有版權(quán)限制。
2、模塊化程度高。Linux的內(nèi)核設(shè)計分成進(jìn)程管理、內(nèi)存管理、進(jìn)程間通信、虛擬文件系統(tǒng)、網(wǎng)絡(luò)5部分,其采用的模塊機(jī)制使得用戶可以根據(jù)實際需要,在內(nèi)核中插入或移走模塊,這使得內(nèi)核可以被高度的剪裁定制,以方便在不同的場景下使用。
3、Linux系統(tǒng)廣泛的硬件支持。得益于其免費(fèi)開源的特點,有大批程序員不斷地向Linux社區(qū)提供代碼,使得Linux有著異常豐富的設(shè)備驅(qū)動資源,對主流硬件的支持極好,而且?guī)缀跄苓\(yùn)行在所有流行的處理器上。
4、安全穩(wěn)定。Linux采取了很多安全技術(shù)措施,包括讀寫權(quán)限控制、帶保護(hù)的子系統(tǒng)、審計跟蹤、核心授權(quán)等,這為網(wǎng)絡(luò)環(huán)境中的用戶提供了安全保障。實際上有很多運(yùn)行Linux的服務(wù)器可以持續(xù)運(yùn)行長達(dá)數(shù)年而無須重啟,依然可以性能良好地提供服務(wù),其安全穩(wěn)定性已經(jīng)在各個領(lǐng)域得到了廣泛的證實。
5、多用戶,多任務(wù)。多用戶是指系統(tǒng)資源可以同時被不同的用戶使用,每個用戶對自己的資源有特定的權(quán)限,互不影響。多任務(wù)是現(xiàn)代化計算機(jī)的主要特點,指的是計算機(jī)能同時運(yùn)行多個程序,且程序之間彼此獨(dú)立,Linux內(nèi)核負(fù)責(zé)調(diào)度每個進(jìn)程,使之平等地訪問處理器。由于CPU處理速度極快,從用戶的角度來看所有的進(jìn)程好像在并行運(yùn)行。
6、良好的可移植性。Linux中95%以上的代碼都是用C語言編寫的,由于C語言是一種機(jī)器無關(guān)的高級語言,是可移植的,因此Linux系統(tǒng)也是可移植的。
責(zé)任編輯:YYX
評論
查看更多