linux作業系統基礎:1、作業系統區分實體記憶體和虛擬記憶體;2、了解記憶體和硬碟的關係;3、各部分常出現的漏洞,如cpu容易出現該類瓶頸的郵件伺服器、動態web伺服器;4、掌握Linux本身的一些最佳化。
linux作業系統基礎:
1.作業系統總體介紹
#•CPU: 就像人的大腦,主要負責相關事情的判斷以及實際處理的機制。
查詢指令: cat /proc/cpuinfo
•記憶體: 大腦中的記憶區塊,將皮膚、眼睛等所收集到的資訊記錄起來的地方,以供CPU進行判斷。查詢指令: cat /proc/meminfo
物理記憶體
物理內存,就是我們將記憶體條插在主機板記憶體槽上的記憶體的容量的大小。看電腦配置的時候,主要看的就是這個實體記憶體
虛擬記憶體
Windows中運用了虛擬記憶體技術,即拿出一部分硬碟空間來充當記憶體使用,當記憶體佔用時,電腦就會自動調用硬碟來充當內存,以緩解內存的緊張。
關係:windows中虛擬記憶體和實體記憶體可能都會被使用,linux中,只有實體記憶體使用完了,才會使用虛擬記憶體
•硬碟: 大腦中的記憶區塊,將重要的數據記錄起來,以便未來能再次使用這些數據。
查詢指令: fdisk -l (需要root權限)
2.記憶體和硬碟的關係
具體指令後面會介紹
3.作業系統監控指令>單獨寫一份
#•vmstat
•sar
• iostat
•top
•free
•uptime
#•netstat
•ps
•strace
•lsof
4.如何分析作業系統
實際流程:讀取資料》資料>硬碟》虛擬記憶體(swaP)》記憶體》 cpu快取》執行佇列
分析方向,剛好相反
5.各個部分常出現的漏洞
•CPU: 容易出現該類別瓶頸的郵件伺服器、動態網頁伺服器
•記憶體: 容易出現該類別瓶頸的列印伺服器、資料庫伺服器、靜態網頁伺服器
•磁碟I/O: 頻繁讀寫操作的項目
•網路頻寬: 頻繁大量上傳下載項目
#6.Linux本身的一些最佳化
1.系統安裝最佳化
當安裝linux系統時,磁碟分割、 SWAP記憶體的分配都會直接影響系統效能。對於虛擬記憶體SWAP的設定,現在已經沒有了所謂虛擬記憶體是物理記憶體兩倍的要求,但是根據經驗,如果記憶體較小(實體記憶體小於4GB),一般設定SWAP交換分割區大小為記憶體的2倍;如果實體記憶體大約4GB小於16GB,可以設定SWAP大小等於或略小於實體記憶體即可;如果內存在16GB以上,原則上可以設定SWAP為0,但最好設定一定大小的SWAP
• 2. 核心參數最佳化
例如,如果系統部署的oracle資料庫應用,那麼就需要對系統共享記憶體段( kernel.shmmax, kenerl.shmmni, kernel.shmall)、
系統信號量( kernel.sem)、檔案句柄( fs.file0max)等參數進行最佳化設定;如果部署的WEB應用,那麼就需要根據web應用特性進行網路參數的最佳化,例如修改net.ipv4.ip_local_port_range、net. ipv4.tc_tw_reuse、net.core.somaxconn等網路
核心參數
• 3. 檔案系統最佳化
在linux下可選的檔案系統有ext2,、ext3 、 xfs、 ReiserFS
linux標準檔案系統是從VFS開始,然後ext、ext2, ext2是linux上的標準檔案系統, ext3是在ext2基礎上增加日誌形成的。從VFS到ext3,設計想法沒有太大變化,都是早期UNIX家族基於超級塊和inode的設計概念設計而成。 XFS檔案系統是SGI開發的一個高級日誌檔案系統,透過分散處理磁碟請求、定位資料、保持cache的一致性來提供對檔案系統資料的低延遲、高頻寬的訪問,因此XFS極具伸縮性,非常健壯,具有優異的日誌記錄功能、可擴充性強、快速寫入等優點。 ReiserFS在Hans Reiser領導下開發出來的一款高效能的日誌檔案系統,透過完全平衡樹來管理數據,包括檔案資料、檔案名稱及日誌支援等。與ext2、 ext3相比,最大的優點是存取效能和安全性大幅提升。具有高效率、合理利用磁碟空間,先將的日誌管理機制,刻意的搜尋方式,海量磁碟儲存等優點
4.重點知識
#實體記憶體和虛擬記憶體
(1).如何查看實體記憶體和虛擬記憶體?
Top 指令可以檢視實體記憶體與虛擬記憶體的數值
(2).Buffer
是硬碟控制器上的一塊記憶體晶片,具有極快的存取速度,它是硬碟內部儲存和外部介面之間的緩衝器。由於硬碟的內部資料傳輸速度和外界介面傳輸速度不同,快取在其中扮演一個緩衝的角色。快取的大小與速度是直接關係到硬碟的傳輸速度的重要因素,能夠大幅提升硬碟整體效能。
(3).Cache
CPU快取(Cache Memory)是位於CPU與記憶體之間的暫存器,它的容量比記憶體小的多但是交換速度卻比記憶快很多。快取的出現主要是為了解決CPU運算速度與記憶體讀寫速度不匹配的矛盾,因為CPU運算速度要比記憶體讀寫速度快很多,這樣會使CPU花費很長時間等待資料到來或把資料寫入記憶體。在快取中的資料是記憶體中的一小部分,但這一小部分是短時間內CPU即將訪問的,當CPU調用大量資料時,就可避開記憶體直接從快取中調用,從而加快讀取速度
(4).CPU中斷
當CPU執行完一條現行指令時,如果外設向CPU發出中斷請求,那麼CPU在滿足回應的情況下,將發出中斷回應訊號,同時關閉中斷,表示CPU不在受理另外一個裝置的中斷。這時,CPU將尋找中斷請求來源是哪一個設備,並保存CPU自己的程式計數器(PC)的內容。然後,他將轉移到處理該中斷來源的中斷服務程序。 CPU在保存現場訊息,設備服務(如交換數據)以後,將恢復現場資訊。在這些動作完成以後,開放中斷,並回到原來被中斷的主程式的下一個指令。
(5).上下文切換
上下文切換(Context Switch) 或在環境切換
多任務系統中,上下文切換是指CPU的控制權由運行任務轉移到另外一個就緒任務時所發生的事件。
在作業系統中,CPU切換到另一個進程需要保存目前進程的狀態並恢復另一個進程的狀態:當前運行任務轉為就緒(或掛起、刪除)狀態,另一個被選定的就緒任務成為目前任務。上下文切換包括保存目前任務的運行環境,恢復將要運行任務的運行環境。
進程上下文以進程的PCB(進程控制區塊,也稱為PCB,即任務控制區塊)表示,它包括進程狀態,CPU暫存器的值等。
通常透過執行一個狀態保存來保存CPU目前狀態,然後執行一個狀態復原重新開始運作。
上下文切換會對效能造成負面影響。然而,一些上下文切換相對其他切換而言更加昂貴;其中一個更昂貴的上下文切換是跨核上下文切換(Cross-Core Context Switch)。一個執行緒可以運行在一個專用處理器上,也可以跨處理器。由單一處理器服務的執行緒都有處理器關聯(Processor Affinity),這樣會更有效。在另一個處理器核心搶佔和調度執行緒會造成快取遺失,作為快取遺失和過度上下文切換的結果要存取本機記憶體。總之,這稱為“跨核上下文切換”。
6.進程與執行緒
程式概念
進程是表示資源分配的基本單位,又是調度運作的基本單位。例如,使用者執行自己的程序,系統就建立一個流程,並為它分配資源,包括各種表格、記憶體空間、磁碟空間、I/O裝置等。然後,把該行程放人進程的就緒佇列。進程調度程序選中它,為它分配CPU以及其它有關資源,該進程才真正運行。所以,進程是系統中的並發執行的單位。
執行緒概念
執行緒是進程中執行運算的最小單位,也是執行處理機調度的基本單位。如果把行程理解為邏輯上作業系統所完成的任務,那麼執行緒表示完成該任務的許多可能的子任務之一
行程和執行緒的關係
(1)一個執行緒只能屬於一個行程,而一個行程可以有多個執行緒,但至少有一個執行緒。 (2)資源分配給進程,同一進程的所有執行緒共享該進程的所有資源。
(3)處理機分給線程,也就是真正在處理機上執行的是執行緒。
(4)執行緒在執行過程中,需要協同同步。不同行程的執行緒間要利用訊息通訊的辦法實現同步。
相關學習推薦:linux影片
:
######################1.Linux是大小寫敏感的系統,舉個例子,Mozilla, MOZILLA, mOzilla和 mozilla是四個不同的命令(但是只有第四個mozilla是真正有效的命令)。還有,my_filE, my_file,和 my_FILE是三個不同的檔案。使用者的登入名稱和秘密也是大小寫敏感的(這是因為UNIX系統和C語言的傳統一向是大小寫敏感所致)。
2.檔案名稱最多可以有256個字符,可以包含數字,點號”.”,下劃線”_”,橫桿”-”,加上其他一些不被建議使用的字符。
3.檔案名稱前面帶”.」的檔案在輸入”ls”或”dir” 指令時一般不顯示。可以把這些文件看作是隱含文件,當然你也可以使用指令”ls –a」來顯示這些文件。
4.「/」對等於DOS下的」\」(根目錄,意味著所有其他目錄的父目錄,或是在目錄之間和目錄和檔案之間的一個間隔符號)。舉個例子,cd /usr/doc。
5.在Linux系統下,所有的目錄顯示在單一目錄樹下(有別於DOS系統的磁碟機識別)。這意味著所有的實體設備上的所有檔案和目錄都合併在單一的目錄樹下。
6.在設定檔裡,以#打頭的行是註解行。在修改設定檔的時候盡量不要刪除舊的設定――可以把原來的設定加上」#」變成註解行,總是在修改地方對應地加入一些關於修改的註釋,你會發覺在以後的管理中獲益多多。
7.Linux是繼承性的多用戶作業系統。你的個人設定(和其他使用者的個人設定)放在你的主目錄下(一般是/home/your_user_login_name)。許多的設定檔的檔名都以”.”開頭,這樣用戶一般看不到這些文件。
8.整個系統範圍的設定大致放在目錄/etc下。
9.和其他的多用戶作業系統類似,在Linux下,檔案和目錄有自己的擁有者和存取權限。一般來說,你只被允許檔案到你的主目錄下(/home/your_user_login_name)。學習一些關於檔案權限管理的相關知識,否則你一定會覺得Linux實在很麻煩。
10.指令參數選項一般由”-”引導,後面跟著一個字元(或”--“,當選項超過一個字元時)。這樣,”-”有點象DOS下的”/”。舉個例子,輸入指令 rm --help。
相關推薦:程式設計影片課程
以上是linux作業系統基礎有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!