亚洲精品中文字幕无乱码_久久亚洲精品无码AV大片_最新国产免费Av网址_国产精品3级片

操作系統(tǒng)

Linux操作系統(tǒng)基礎(chǔ)知識

時間:2024-06-27 07:12:13 操作系統(tǒng) 我要投稿
  • 相關(guān)推薦

Linux操作系統(tǒng)基礎(chǔ)知識

  Linux就是一個操作系統(tǒng),它可以管理整個計算機(jī)硬件,并且可以接收我們的指令,來指揮硬件完成相應(yīng)的任務(wù),并把結(jié)果反饋給我們。Linux操作系統(tǒng)基礎(chǔ)知識你了解多少呢? 下面是相關(guān)的知識,歡迎閱讀。

Linux操作系統(tǒng)基礎(chǔ)知識

  Linux操作系統(tǒng)概述

  Q1.什么是GNU?Linux與GNU有什么關(guān)系?

  A:

  1)GNU是GNU is Not Unix的遞歸縮寫,是自由軟件基金會(Free Software Foundation,F(xiàn)SF)的一個項目,該項目已經(jīng)開發(fā)了許多高質(zhì)量的編程工具,包括emacs編輯器、著名的GNU C和C++編譯器(gcc和g++);

  2)Linux的開發(fā)使用了許多GNU工具,Linux系統(tǒng)上用于實現(xiàn)POSIX.2標(biāo)準(zhǔn)的工具幾乎都是由GNU項目開發(fā)的;Linux內(nèi)核、GNU工具以及其它一些自由軟件組成了人們常說的Linux系統(tǒng)或Linux發(fā)布版。

  Q2.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:

  (1)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)程開始運行時,由調(diào)度程序選擇最應(yīng)該運行的進(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)換為物理地址。

  Q3.為什么對32位線性地址空間要采用兩級頁表?

  A:

  頁表是把線性地址映射到物理地址的一種數(shù)據(jù)結(jié)構(gòu),4GB的線性空間可以被劃分為1M個4KB大小的頁,每個頁表項占4字節(jié),則1M個頁表項的頁表就需要占用4MB空間,而且還要求是連續(xù)的,于是采用兩級頁表來實現(xiàn);兩級頁表就是對頁表再進(jìn)行分頁,第一級稱為頁目錄,其中存放關(guān)于頁表的信息;4MB的頁表再次分頁,可以分為1K個4KB大小的頁。

  Q4.頁面高速緩存的作用是什么?Linux為什么主要采用分頁機(jī)制來實現(xiàn)虛擬存儲管理?它為什么采用三級分頁模式而不是兩級?

  A:

  (1)頁面高速緩存自動保留處理器最近使用的32項頁表項,因此可以覆蓋128KB范圍的內(nèi)存;

  (2)Linux主要采用分頁機(jī)制來實現(xiàn)虛擬存儲器管理,原因為:

  1)Linux的分段機(jī)制使得所有的進(jìn)程都使用相同的段寄存器,這使得內(nèi)存管理變得簡單;

  2)Linux的設(shè)計目標(biāo)之一就是能夠被移植到絕大多數(shù)流行的處理平臺上,但許多RISC處理器支持的分段功能非常有限;為了保證可移植性,Linux采用三級分頁模式,因為許多處理器都采用64位結(jié)構(gòu);Linux定義了三種類型的頁表:頁目錄(PGD)、中間目錄(PMD)和頁表(PT)。

  進(jìn)程

  Q1.程序與進(jìn)程的概念分別是什么?為什么要引入“進(jìn)程”的概念?

  A:

  1)程序是一個普通文件,是機(jī)器代碼指令和數(shù)據(jù)的集合,這些指令和數(shù)據(jù)存儲在磁盤上的一個可執(zhí)行映像中,可執(zhí)行映像(executable image)就是一個可執(zhí)行文件的內(nèi)容;

  2)進(jìn)程代表程序的執(zhí)行過程,它是一個動態(tài)的實體,隨著程序中指令的執(zhí)行而不斷地變化,在某個時刻進(jìn)程的內(nèi)容被稱為進(jìn)程映像(process image);

  3)程序的執(zhí)行過程可以說是一個執(zhí)行環(huán)境的總和,這個執(zhí)行環(huán)境除了包括程序中各種指令和數(shù)據(jù)外,還有一些額外數(shù)據(jù);而執(zhí)行環(huán)境的動態(tài)變化體現(xiàn)了程序的運行,為了對動態(tài)變化的過程進(jìn)行描述,就引入了“進(jìn)程”概念。

  Q2.什么是進(jìn)程控制塊?它包含哪些基本信息?

  A:

  1)Linux中把對進(jìn)程的描述結(jié)構(gòu)叫做task_struct,將這樣的數(shù)據(jù)結(jié)構(gòu)稱作進(jìn)程控制塊(PCB);

  2)PCB是一個其域多達(dá)80多項的相當(dāng)龐大的數(shù)據(jù)結(jié)構(gòu),按其功能將所有域劃分為:狀態(tài)信息,鏈接信息、各種標(biāo)識符、進(jìn)程間通信信息、時間和定時器信息、調(diào)度信息、文件系統(tǒng)信息、虛擬內(nèi)存信息和處理器環(huán)境信息。

  Q3.Linux內(nèi)核的狀態(tài)有哪些?

  A:

  1)Linux最基本的進(jìn)程狀態(tài)有三種:運行態(tài)、就緒態(tài)和阻塞態(tài)(或等待態(tài));這三種狀態(tài)之間有四種可能的轉(zhuǎn)換關(guān)系:運行態(tài)->阻塞態(tài)、運行態(tài)->就緒態(tài)、就緒態(tài)->運行態(tài)和阻塞態(tài)->就緒態(tài);

  2)為了管理上的方便,將就緒態(tài)和運行態(tài)合并為一個狀態(tài)—可運行態(tài),再包括其它方面的一些改變,將進(jìn)程狀態(tài)劃分為:可運行態(tài)、睡眠(或等待)態(tài)(分為深度睡眠態(tài)和淺度睡眠態(tài))、暫停狀態(tài)和僵死狀態(tài)。

  Q4.PCB的組織方式有哪幾種?

  A:

  PCB的組織方式有:進(jìn)程鏈表、散列表、可運行隊列和等待隊列。

  Q5.主要的調(diào)度算法包括哪些?一個好的調(diào)度算法要考慮哪些方面?

  A:

  1)主要的調(diào)度算法包括:時間片輪轉(zhuǎn)調(diào)度算法、優(yōu)先級調(diào)度算法(非搶占式優(yōu)先級算法和搶占式優(yōu)先級算法)、多級反饋隊列調(diào)度算法和實時調(diào)度算法;

  2)一個好的調(diào)度算法應(yīng)該考慮五個方面:公平、高效、響應(yīng)時間、周轉(zhuǎn)時間和吞吐量。

  內(nèi)存管理

  Q1.為什么把進(jìn)程的地址空間劃分為“內(nèi)核空間”和“用戶空間”?

  A:

  Linux的虛擬地址空間的大小為4GB,內(nèi)核將這4GB的空間分為兩部分,較高的1GB(虛地址0xC0000000到0xFFFFFFFF)供內(nèi)核使用,稱為“內(nèi)核空間”;而較低的3GB(虛地址0x00000000到0xBFFFFFFF)供各個進(jìn)程使用,稱為“用戶空間”;因為每個進(jìn)程可以通過系統(tǒng)調(diào)用進(jìn)入內(nèi)核,因此,內(nèi)核空間由系統(tǒng)內(nèi)的所有進(jìn)程共享;于是,從具體進(jìn)程的角度來看,每個進(jìn)程都可以擁有4GB的虛擬地址空間(也叫做虛擬內(nèi)存)。

  Q2.Linux是如何實現(xiàn)“請求調(diào)頁”的?

  A:

  1)如果被訪問的頁不在內(nèi)存,也就是說,這個頁還沒有被存放在任何一個物理頁面中,那么,內(nèi)核分配一個新的頁面并將其適當(dāng)?shù)爻跏蓟@種技術(shù)稱為“請求調(diào)頁”;

  2)“請求調(diào)頁”是一種動態(tài)內(nèi)存分配技術(shù),它將頁面的分配推遲到不能再推遲為止,也就是說,一直推遲到進(jìn)程要訪問的頁不在物理內(nèi)存時為止,由此引起一個缺頁異常;該技術(shù)的引入主要是因為進(jìn)程開始運行時并不訪問其地址空間中的全部地址。

  中斷和異常

  Q1.什么是中斷?什么是異常?二者有何不同?

  A:

  1)中斷控制是為克服對I/O接口采用程序查詢控制服務(wù)方式所帶來的處理器低效率而產(chǎn)生的,它的主要優(yōu)點是只有在I/O接口需要服務(wù)時才能得到處理器的響應(yīng),而不需要處理器不斷地進(jìn)行查詢;因此,最初的中斷全部是對外部設(shè)備而言的,稱為外部中斷(或硬件中斷);

  2)異常也叫做內(nèi)部中斷,它是為解決機(jī)器運行時所出現(xiàn)的某些隨機(jī)事件及編程的方便而出現(xiàn)的;

  3)中斷分為外部可屏蔽中斷(INTR)和外部非屏蔽中斷(NMI),所有I/O設(shè)備產(chǎn)生的中斷請求(IRQ)均引起可屏蔽中斷,而緊急事件(如硬件故障)引起的故障則產(chǎn)生非屏蔽中斷;

  4)異常又分為故障(fault)和陷阱(trap),它們的共同特點是既不使用中斷控制器,又不能被屏蔽(異常其實是CPU發(fā)出的終端信號)。

  Q2.什么是中斷向量?Linux是如何分配中斷向量的?

  A:

  (1)為使處理器可以容易地識別每種中斷源,將256種向量中斷從0到255進(jìn)行編號,即賦以一個中斷類型碼n,把這個8位的無符號整數(shù)叫做向量,即中斷向量;

  (2)Linux對256個中斷向量的分配如下:

  1)編號為0~31的向量對應(yīng)于異常和非屏蔽中斷;

  2)編號為32~47的向量(即由I/O設(shè)備引起的中斷)分配給可屏蔽中斷;

  3)剩余的、編號為48~255的向量用來標(biāo)識軟中斷;Linux只用其中的一個(即128或0x80向量)來實現(xiàn)系統(tǒng)調(diào)用。

  Q3.什么是中斷描述符表?什么是門描述符?

  A:

  1)在實地址模式下,CPU將內(nèi)存中從0開始的1KB空間作為一個中斷向量表,表中每個表項占4個字節(jié);但在保護(hù)模式,由4個字節(jié)的表項構(gòu)成的中斷向量表滿足不了要求;因此在保護(hù)模式下,中斷向量表中的表項由8個字節(jié)組成,中斷向量表也改稱為中斷描述符表(IDT);

  2)IDT中的每個表項叫做一個門描述符(gate descriptor)。

  Q4.門描述符有哪些類型?它們有什么不同?

  A:

  門描述符中類型碼占3位,表示門描述符的類型,主要分為以下幾類:

  1)中斷門(interrupt gate):其類型碼為110,包含了一個中斷或異常處理程序所在段的選擇符和段內(nèi)偏移量;

  2)陷阱門(trap gate):其類型碼為111;

  3)系統(tǒng)門(system gate):是Linux內(nèi)核特別設(shè)置的,用來讓用戶態(tài)的進(jìn)程訪問陷阱門。

  系統(tǒng)調(diào)用

  Q1.什么是系統(tǒng)調(diào)用?為什么要引入系統(tǒng)調(diào)用?

  A:

  (1)操作系統(tǒng)為用戶態(tài)的進(jìn)程與硬件設(shè)備(如CPU、磁盤和打印機(jī)等)之間的交互提供了一組接口,這些接口使得程序更具有可移植性,因為不同的操作系統(tǒng)只要所提供的一組接口相同,那么在這些操作系統(tǒng)之上就可以正確地編譯和執(zhí)行相同的程序,這組接口就是所謂的“系統(tǒng)調(diào)用”;

  (2)引入系統(tǒng)調(diào)用的原因有:

  1)這使得編程更加容易;

  2)這極大地提高了系統(tǒng)的安全性;

  3)最重要的一點,這些接口使得操作系統(tǒng)更具有可移植性。

  內(nèi)核中的同步

  Q1.什么是臨界區(qū)?什么是競爭狀態(tài)?什么是同步?

  A:

  1)臨界區(qū)(critical regions)就是訪問和操作共享數(shù)據(jù)的代碼段,多個內(nèi)核任務(wù)并發(fā)訪問同一個資源通常是不安全的;

  2)如果兩個內(nèi)核任務(wù)可能處于同一個臨界區(qū),就是一種錯誤現(xiàn)象;如果確實發(fā)生了這種情況,就稱它為競爭狀態(tài);

  3)避免并發(fā)和防止競爭狀態(tài)稱為同步(synchronization)。

  Q2.簡要介紹一下死鎖及避免死鎖的方法。

  A:

  死鎖包括自死鎖和ABBA死鎖,

  1)產(chǎn)生死鎖有四個原因:互斥使用、不可搶占、請求和保持,以及循環(huán)等待;

  2)避免死鎖的方法有:破壞“不可剝奪”條件、破壞“請求和保持”條件、破壞“循環(huán)等待”條件。

  Q3.內(nèi)核中造成并發(fā)執(zhí)行的原因是什么?

  A:

  “并發(fā)”分為“偽并發(fā)”和“真并發(fā)”兩種,內(nèi)核中造成并發(fā)執(zhí)行的原因有以下幾種:

  1)中斷:它可能隨時打斷當(dāng)前正在執(zhí)行的代碼;

  2)內(nèi)核搶占:內(nèi)核中的任務(wù)可能會被另一個任務(wù)搶占;

  3)睡眠及其與用戶空間的同步:在內(nèi)核執(zhí)行的進(jìn)程可能會睡眠,這就會喚醒調(diào)度程序,調(diào)度一個新的用戶進(jìn)程執(zhí)行;

  4)對稱多處理:兩個或多個處理器可以同時執(zhí)行代碼。

  Q4.給出信號量的定義,并說明down()和up()的含義。

  A:

  1)Linux中的信號量是一種睡眠鎖,它是1968年由Dijkstra提出的,如果一個任務(wù)試圖獲得一個已被持有的信號量,信號量會將其推入等待隊列,然后讓其睡眠;當(dāng)持有信號量的進(jìn)程將信號量釋放后,在等待隊列中的一個任務(wù)將被喚醒,從而可以獲得這個信號量;

  2)信號量支持兩個原子操作P()和V(),前者叫做測試操作,后者叫做增加操作;后來的系統(tǒng)把這兩種操作分別叫做down()和up();

  3)down()操作通過對信號量計數(shù)減1來請求獲得一個信號量;up()操作用來釋放信號量,該操作也被稱作“提升”(upping)信號量,因為它會增加信號量的計數(shù)值。

  文件系統(tǒng)

  Q1.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è)備文件、管道文件和鏈接文件。

  Q2.什么是虛擬文件系統(tǒng)?什么是虛擬文件系統(tǒng)界面?

  A:

  1)將各種不同文件系統(tǒng)的操作和管理納入到一個統(tǒng)一的框架中,使得用戶程序可以通過同一個文件系統(tǒng)界面,也就是同一組系統(tǒng)調(diào)用,對各種不同的文件系統(tǒng)以及文件進(jìn)行操作;用戶程序可以不關(guān)心不同文件系統(tǒng)的實現(xiàn)細(xì)節(jié),而使用系統(tǒng)提供的統(tǒng)一、抽象、虛擬的文件系統(tǒng)界面;這種統(tǒng)一的框架就是所謂的虛擬文件系統(tǒng)轉(zhuǎn)換,一般簡稱虛擬文件系統(tǒng)(VFS);

  2)VFS的對象類型包括:超級塊(superblock)對象、索引節(jié)點(inode)對象、目錄項(dentry)對象和文件(file)對象;

  3)虛擬文件系統(tǒng)界面是虛擬文件系統(tǒng)所提供的抽象界面,它主要由一組標(biāo)準(zhǔn)的、抽象的操作構(gòu)成,這些函數(shù)(操作)以系統(tǒng)調(diào)用的形式供用戶調(diào)用。

  設(shè)備驅(qū)動

  Q1.為什么把設(shè)備分為“塊設(shè)備”和“字符設(shè)備”兩大類?

  A:

  1)Linux將設(shè)備看成文件,具有三方面的含義:第一,每個設(shè)備都對應(yīng)一個文件名,在內(nèi)核中也就對應(yīng)一個索引節(jié)點;第二,對文件操作的系統(tǒng)調(diào)用大都適用于設(shè)備文件;第三,從應(yīng)用程序的角度看,設(shè)備文件的邏輯空間是一個線性空間;對于同一個具體的設(shè)備而言,文件操作和設(shè)備驅(qū)動是同一個事物的不同層次,概念上可以將一個系統(tǒng)劃分為應(yīng)用、文件系統(tǒng)和設(shè)備驅(qū)動三個層次;

  2)Linux將設(shè)備分為兩大類,一類是像磁盤那樣的以塊或扇區(qū)為單位、成塊進(jìn)行輸入/輸出的設(shè)備,稱為塊設(shè)備;另一類是像鍵盤那樣以字符(字節(jié))為單位,逐個字符進(jìn)行輸入/輸出的設(shè)備,稱為字符設(shè)備;文件系統(tǒng)通常都建立在塊設(shè)備上。

  Q2.什么是設(shè)備驅(qū)動程序?

  A:

  Linux中處理和管理硬件控制器的軟件就是設(shè)備驅(qū)動程序。

  Q3.I/O端口一般包括哪些寄存器?各自功能是什么?

  A:

  1)I/O端口包括控制寄存器、狀態(tài)寄存器和數(shù)據(jù)寄存器三大類;

  2)根據(jù)訪問外設(shè)寄存器的不同方式,將CPU分為兩大類:一類是“內(nèi)存映射”(memory-mapped)方式,另一類是“I/O映射”(I/O- mapped)方式。


【Linux操作系統(tǒng)基礎(chǔ)知識】相關(guān)文章:

LINUX操作系統(tǒng)01-22

Linux操作系統(tǒng)的安裝01-23

Linux操作系統(tǒng)的安裝12-04

linux操作系統(tǒng)原理知識01-24

linux操作系統(tǒng)原理知識03-19

Linux操作系統(tǒng)有哪些11-25

常見的Linux操作系統(tǒng)介紹12-04

Linux操作系統(tǒng)的優(yōu)缺點11-27

關(guān)于Linux的基礎(chǔ)知識03-05