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緩存》執行隊列

分析方向,正好相反



4.各個部分常出現的漏洞

?CPU: 容易出現該類瓶頸的郵件服務器、動態web服務器
?內存: 容易出現該類瓶頸的打印服務器、數據庫服務器、靜態web服務器
?磁盤I/O: 頻繁讀寫操作的項目
?網絡帶寬: 頻繁大量上傳下載項目

?

5.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相比,最大的優點是訪問性能和安全性大幅提升。具有高效、合理利用磁盤空間,先將的日志管理機制,特意的搜尋方式,海量磁盤存儲等優點

?

5.重點知識

物理內存和虛擬內存

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)線程在執行過程中,需要協作同步。不同進程的線程間要利用消息通信的辦法實現同步。

?

注意:

?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系統由哪幾部分組成?Linux內核處于什么位置?
A:

1)Linux系統由四個部分組成:用戶進程,系統調用接口、Linux內核子系統和硬件;
2)Linux內核處于用戶進程和硬件之間,包括系統調用接口和Linux內核子系統。


?
Q3.Linux內核由哪幾部分組成?各個子系統的主要功能是什么?
A:

(1)Linux內核除系統調用外,由五個主要的子系統組成:進程調度、內存管理、虛擬文件系統、網絡和進程間通信(IPC);
(2)各個子系統的主要功能為:
1)進程調度:它控制著進程對CPU的訪問,當需要選擇一個進程開始運行時,由調度程序選擇最應該運行的進程;
2)內存管理:它允許多個進程安全地共享主內存區域,支持虛擬內存;從邏輯上可以分為硬件無關的部分和硬件相關的部分;
3)虛擬文件系統(VFS):它隱藏了各種不同硬件的具體細節,為所有設備提供統一的接口,支持多達數十種不同的文件系統,分為邏輯文件系統和設備驅動程序;
4)網絡:它提供了對各種網絡標準協議的存取和各種網絡硬件的支持,分為網絡協議和網絡驅動程序兩部分;
5)進程間通信:支持進程間各種通信機制,包括共享內存、消息隊列和管道等。



內存尋址
Q1.什么是物理地址?什么是虛地址?什么是線性地址?
A:

1)將主板上的物理內存條所提供的內存空間定義為物理內存空間,其中每個內存單元的實際地址就是物理地址;
2)將應用程序員看到的內存空間定義為虛擬地址空間(或地址空間),其中的地址就叫做虛擬地址(或虛地址),一般用“段:偏移量”的形式來描述,如A815:CF2D;
3)線性地址空間是指一段連續的、不分段的、范圍為0~4GB的地址空間,一個線性地址就是線性地址空間的一個絕對地址。


?
Q2.在保護模式下,MMU如何把一個虛地址轉換為物理地址?
A:

在保護模式下,內存管理單元(MMU)由一個或一組芯片組成,其功能是指虛擬地址映射為物理地址,即進行地址轉換;MMU是一種硬件電路,它包含分段部件和分頁部件兩個部件,分別叫做分段機制和分頁機制,分段機制是把一個虛擬地址轉換為線性地址,分頁機制是把一個線性地址轉換為物理地址。

.Linux內核的狀態有哪些?
A:

1)Linux最基本的進程狀態有三種:運行態、就緒態和阻塞態(或等待態);這三種狀態之間有四種可能的轉換關系:運行態->阻塞態、運行態->就緒態、就緒態->運行態和阻塞態->就緒態;
2)為了管理上的方便,將就緒態和運行態合并為一個狀態—可運行態,再包括其它方面的一些改變,將進程狀態劃分為:可運行態、睡眠(或等待)態(分為深度睡眠態和淺度睡眠態)、暫停狀態和僵死狀態。

1.Linux目錄樹結構是怎樣的?它與Windows的目錄樹結構有什么區別?為什么Linux的文件系統采用固定的目錄形式?
A:

文件是一個抽象的概念,它是存放一切數據或信息的倉庫;
1)Linux的目錄樹結構為:根目錄(/)在上,其它的平行在下;
2)Windows操作系統也是采用樹型結構,但其樹型結構的根是磁盤分區的盤符,有幾個分區就有幾個樹型結構,它們之間的關系式并列的;而在Linux中,無論操作系統管理幾個磁盤分區,這樣的目錄樹只有一個;
3)這樣做的原因是:Linux是一個多用戶系統,制定這樣一個固定的目錄規劃有助于對系統文件和不同的用戶文件進行統一管理;
4)Linux中的文件類型包括:常規文件、目錄文件、設備文件、管道文件和鏈接文件。

轉載于:https://www.cnblogs.com/klb561/p/8830842.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/452023.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/452023.shtml
英文地址,請注明出處:http://en.pswp.cn/news/452023.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Transaction 那點事兒,Spring事務管理

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 Transaction 也就是所謂的事務了,通俗理解就是一件事情。從小,父母就教育我們,做事情要有始有終&…

網絡爬蟲--12.【XPath實戰】獲取百度貼吧中的圖片

用XPath來做一個簡單的爬蟲,我們嘗試爬取某個貼吧里的所有帖子,并且將該這個帖子里每個樓層發布的圖片下載到本地。 #codingutf-8 import requests from lxml import etree import jsonclass Tieba:def __init__(self,tieba_name):self.tieba_name tie…

合并分ER圖產生的沖突

合并分E-R圖 各個局部應用所面向的問題不同,各個子系統的E-R圖之間必定會存在許多不一致的地方,稱之為沖突。 子系統E-R圖之間的沖突主要有三類: ①屬性沖突 ②命名沖突 ③結構沖突①屬性沖突 屬性域沖突,即屬性值的類型、取值范圍…

8.類定義、屬性、初始化和析構

類定義 類 是一個獨立存放變量(屬性/方法)的空間 封裝: 類可以把各種對象組織在一起,作為類的屬性,通過 . (點)運算符來調用類中封裝好的對象 屬性: 變量在類中稱為屬性,但是類中的屬性不僅僅只包含變量&#x…

GPL以及Copyleft協議使用率下降明顯

根據最新的協議數據分析,不光是GPL,另外一些copyleft(AGPL,LGPL 等等)協議的使用率在不斷下降,并且下降的速度越來越快。 這結果是在意料之中的,因為GPL非常的復雜。越來越多的個人和企業將選擇…

概念模型和關系模型

ER模型(邏輯模型) ER模型的基本元素是:實體、聯系和屬性 實體:是一個數據對象,指應用中可以區別的客觀存在的事物。(ER模型中的實體往往是指實體集) 實體集:指同一類實體構成的集合…

iOS AutoLayout使用技巧

關于ContentCompressionResistance, ContentHugging運用 如下圖效果圖,兩個Label并列在同一排上,左邊label自適應,右邊label(紅色)要使得內容全部展示,如果左邊label內容很少,那么右…

網絡爬蟲--13.數據提取之JSON與JsonPATH

文章目錄一. 前言二. JSON三. json.loads()四. json.dumps()五. json.dump()六. json.load()七. JsonPath八. JsonPath與XPath語法對比九. 案例分析一. 前言 JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式,它使得人們很容易的進行閱讀和編寫。同時…

vs2017生成sqlserver 2017項目出現.Net SqlClient Data Provider: Msg 10343

一、使用vs2017生成sqlserver 2017項目時由于添加的程序集(CLR集成,可以參考后面給出的鏈接進行理解) ,由于安全權限的配置不正確引發以下的問題: SQL72014: .Net SqlClient Data Provider: Msg 10343, Level 14, State 1, Line 1 針對帶有 SAFE 或 EXT…

數據庫系統常用的存取方法

1. B樹索引存取方法 2. Hash索引存取方法 3. 聚簇存取方法

創建型模式二:工廠方法模式

1. 工廠模式介紹 工廠模式(Factory Pattern)的意義就跟它的名字一樣,在面向對象程序設計中,工廠通常是一個用來創建其他對象的對象。工廠模式根據不同的參數來實現不同的分配方案和創建對象。 在工廠模式中,我們在創建…

spring 的4種事務管理(1種編程式+3種聲明式)

見:http://blog.csdn.net/sinat_25926481/article/details/48208619 Spring的4種事務管理(1種編程式事務三種聲明事務) 一、Spring事務的介紹 二、編程式事務xml的配置 注入后直接在service層調用模板的方法使用 三、基于AOP方式的聲明式事務…

如何創造出更優秀的用戶體驗?

對于互聯網公司來說,用戶體驗起到至關重要的作用,能否給用戶留下深刻的印象;開發出的產品是否實用、易用?等等這些都是開發者必將思考的話題。當有用性一樣的時候,大家的競爭重點就是易用性了,這就是互聯網…

java并發編程實戰-第三章-對象的共享

3.1可見性 首先我們需要知道的是,java的線程都有自己獨立的緩存,線程之間進行共享變量的交互是通過自身和緩存和主存的交互實現的。如果線程的每次更改緩存都刷入主存,主存每次被一個線程的緩存修改,都通知所有的線程刷新自身的緩…

GitHub(從安裝到使用)

一、安裝Git for Windows(又名msysgit) 下載地址: https://git-for-windows.github.io/ 在官方下載完后,安裝到Windows Explorer integration的時候,將選項中將“Git Bash here”和“Git GUI here”打對勾。 然后就一直next直到Fi…

Spring事務配置的五種方式和spring里面事務的傳播屬性和事務隔離級別、不可重復讀與幻讀的區別

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 spring事務配置的五種方式 前段時間對Spring的事務配置做了比較深入的研究,在此之間對Spring的事務配置雖說也配置過&#x…

Google編程之夏入圍項目公布

Google編程之夏(Google Summer of Code),是由Google公司所主辦的年度程式設計比賽,第一屆從2005年開始。“Summer of Code”之名取自1967年的“夏日之愛”(Summer of Love)風潮。比賽的主要目的是鼓勵學生參…

普通索引 唯一索引 主鍵索引 候選索引

普通索引 最基本的索引類型&#xff0c;沒有唯一性之類的限制。普通索引可以通過以下幾種方式創建&#xff1a; 創建索引&#xff0c;例如CREATE INDEX <索引的名字> ON tablename (列的列表)&#xff1b; 修改表&#xff0c;例如ALTER TABLE tablename ADD INDEX [索引…

Android 基于注解IOC組件化/模塊化的架構實踐

當前參與的項目歷史也很久遠&#xff0c;第一行代碼據說是寫于2014年的某一天&#xff0c;那時Android用的ide還是Eclipse、那時Android還沒有很好的架構指導&#xff08;mvp、mvvm&#xff09;、那時Android最新的版本是5.0、那時Android的Material Design還沒流行……背景隨著…

網絡爬蟲--14.【糗事百科實戰】

文章目錄一. 要求二. 參考代碼一. 要求 爬取糗事百科段子&#xff0c;假設頁面的URL是 http://www.qiushibaike.com/8hr/page/1 使用requests獲取頁面信息&#xff0c;用XPath / re 做數據提取 獲取每個帖子里的用戶頭像鏈接、用戶姓名、段子內容、點贊次數和評論次數 保存到…