作者| 指導(dǎo)兄弟 編輯器| 吳興齡 產(chǎn)品| CSDN博客 您好,我是指導(dǎo)兄弟! 許多讀者抱怨說,計算機操作系統(tǒng)的知識很復(fù)雜,他們沒有太多的耐心去看它,但是他們經(jīng)常在
作者| 指導(dǎo)兄弟
編輯器| 吳興齡
產(chǎn)品| CSDN博客
您好,我是指導(dǎo)兄弟! 許多讀者抱怨說,計算機操作系統(tǒng)的知識很復(fù)雜,他們沒有太多的耐心去看它,但是他們經(jīng)常在采訪中遇到它。 因此,這里是我分類的操作系統(tǒng)的常見問題解答! 本文總結(jié)了一些與操作系統(tǒng)有關(guān)的重要問題,例如進(jìn)程管理,內(nèi)存管理,虛擬內(nèi)存等。
的形式是通過大多數(shù)面試官和求職者之間的對話發(fā)展起來的。 另外,兄弟指南只在上大學(xué)時才研究操作系統(tǒng),但他基本上忘記閱讀許多相關(guān)書籍和博客來撰寫本文。 如果文章中有任何需要補充和改進(jìn)的地方,可以在評論區(qū)域中指出。 如果您認(rèn)為內(nèi)容不錯,請不要忘記單擊它! 我個人認(rèn)為,很好地學(xué)習(xí)操作系統(tǒng)非常有用。 有關(guān)詳細(xì)信息,請參閱我昨天在地球上分享的一段文章:
只是操作系統(tǒng)某些重要概念的概述。 如果您想深入學(xué)習(xí),建議您如實閱讀。 此外,本文的許多內(nèi)容都引用了現(xiàn)代操作系統(tǒng)的第三版。 非常感謝你。
操作系統(tǒng)基礎(chǔ)
1.1什么是操作系統(tǒng)?
一種A一種A采訪者:讓我們從一個簡單的問題開始! 什么是操作系統(tǒng)?
一種我:讓我通過以下四點向您介紹操作系統(tǒng)!
:內(nèi)核負(fù)責(zé)管理系統(tǒng)的進(jìn)程,內(nèi)存,設(shè)備驅(qū)動程序,文件和網(wǎng)絡(luò)系統(tǒng),這決定了系統(tǒng)的性能和穩(wěn)定性。 它是應(yīng)用程序和硬件之間的橋梁。
內(nèi)核是操作系統(tǒng)背后黑匣子的核心。
擴展全文1.2系統(tǒng)調(diào)用
一種A一種Interviewer:什么是系統(tǒng)調(diào)用? 能不能給我詳細(xì)介紹。
一種Me:在介紹系統(tǒng)調(diào)用之前,讓我們看一下用戶狀態(tài)和系統(tǒng)狀態(tài)。 根據(jù)進(jìn)程訪問資源的特性,我們可以將系統(tǒng)上運行的進(jìn)程分為兩個級別:在
表示用戶狀態(tài)和系統(tǒng)狀態(tài)之后,系統(tǒng)調(diào)用是什么? 我們運行的程序基本上處于用戶狀態(tài)。 如果我們稱操作系統(tǒng)提供的系統(tǒng)狀態(tài)級別子功能怎么辦? 然后,您需要系統(tǒng)調(diào)用!
意味著在我們運行的用戶程序中,與系統(tǒng)狀態(tài)級資源相關(guān)的所有操作(例如文件管理,過程控制,內(nèi)存管理等)必須通過系統(tǒng)調(diào)用模式向操作系統(tǒng)提出服務(wù)請求,并且 由操作系統(tǒng)完成。 這些系統(tǒng)調(diào)用
可以根據(jù)其功能分為以下幾類:
進(jìn)程與線程
2.1進(jìn)程與線程
的區(qū)別A一種A一種A采訪者:好! 哦,我明白了! 然后您再說一遍:進(jìn)程和線程之間的區(qū)別。
一種我:好! 下圖顯示了JAVA存儲區(qū)。 讓我們從JVM的角度討論線程與進(jìn)程之間的關(guān)系! 如果您對JAVA內(nèi)存區(qū)域(運行時數(shù)據(jù)區(qū)域)了解不多,則可以閱讀本文:這可能是關(guān)于JAVA內(nèi)存區(qū)域的最清晰的文章。 從上圖可以看出:一個進(jìn)程可以有多個線程,并且多個線程共享進(jìn)程的堆和方法區(qū)域(JDK1.8元空間),但是每個線程都有自己的程序計數(shù)器,虛擬機堆棧和 本地方法堆棧。
摘要:線程是一個較小的運行單元,分為多個進(jìn)程。 一個進(jìn)程可以在其執(zhí)行期間生成多個線程。 線程和進(jìn)程之間的最大區(qū)別是,每個進(jìn)程基本上是獨立的,而每個線程不一定是獨立的,因為同一進(jìn)程中的線程很可能會相互影響。 線程執(zhí)行的開銷很小,但是不利于資源的管理和保護(hù); 過程是相反的。
2.2進(jìn)程的狀態(tài)是什么A某種A的類型是訪問者:進(jìn)程的狀態(tài)是什么Me:我們通常將進(jìn)程分為五個狀態(tài),這與線程非常相似!
2.3進(jìn)程之間的通信模式
一種A一種A Interviewer:在進(jìn)程之間進(jìn)行通信的常用方法是什么?
一種Me:在流程之間進(jìn)行通信的大約七種常見方法。
的以下摘要部分指的是IPC(進(jìn)程間通信)文章。 建議閱讀,總結(jié)非常好。
2.4線程之間的同步
一種A一種Interviewer:什么是同步線程的方法?
一種Me:線程同步是共享關(guān)鍵資源的兩個或多個線程的并發(fā)執(zhí)行。 線程應(yīng)該同步以避免嚴(yán)重的資源使用沖突。 操作系統(tǒng)一般具有以下三種線程同步方式:
2.5進(jìn)程調(diào)度算法
一種A一種Interviewer:您知道操作系統(tǒng)中進(jìn)程的調(diào)度算法嗎? 嗯! 這是我們在大學(xué)中學(xué)到的非常重要的知識點!
為了確定首先執(zhí)行哪個進(jìn)程以及最后執(zhí)行哪個進(jìn)程以獲得最大的CPU利用率,計算機科學(xué)家定義了一些算法,這些算法為:
優(yōu)先服務(wù)(FCFS)調(diào)度算法:從就緒隊列中,選擇 一個進(jìn)程,該進(jìn)程首先進(jìn)入隊列以為其分配資源,并使其立即執(zhí)行直到完成或發(fā)生事件,然后在被阻塞以放棄CPU時對其進(jìn)行重新調(diào)度。 短作業(yè)優(yōu)先(SJF)調(diào)度算法:從就緒隊列中選擇估計運行時間最短的進(jìn)程來分配資源,使其立即執(zhí)行并繼續(xù)執(zhí)行直到完成或事件發(fā)生,然后在被阻塞并重新調(diào)度時重新調(diào)度 放棄CPU。 時間片輪換調(diào)度算法:時間片輪換調(diào)度是最古老,最簡單,最公平,使用最廣泛的算法,也稱為RR(循環(huán))調(diào)度。 每個進(jìn)程都分配了一個時間段,稱為其時間片,這是允許該進(jìn)程運行的時間。 多級反饋隊列調(diào)度算法:前面幾種過程調(diào)度算法都有一定的局限性。 例如,短進(jìn)程優(yōu)先調(diào)度算法僅考慮短進(jìn)程,而忽略長進(jìn)程。 多級反饋隊列調(diào)度算法不僅可以使高優(yōu)先級的作業(yè)做出響應(yīng),還可以使短的作業(yè)(流程)快速完成。 因此,這是一種更好的進(jìn)程調(diào)度算法,被UNIX操作系統(tǒng)采用。 優(yōu)先級調(diào)度:為每個進(jìn)程分配優(yōu)先級,首先以最高優(yōu)先級執(zhí)行該進(jìn)程,依此類推。 具有相同優(yōu)先級的進(jìn)程以FCFS模式執(zhí)行。 可以根據(jù)內(nèi)存需求,時間需求或任何其他資源需求來確定優(yōu)先級。 操作系統(tǒng)內(nèi)存管理基礎(chǔ)3.1內(nèi)存管理簡介
一種A一種A Interviewer:操作系統(tǒng)內(nèi)存管理的主要目的是什么?
一種:操作系統(tǒng)的內(nèi)存管理主要負(fù)責(zé)內(nèi)存的分配和恢復(fù)(malloc功能:申請內(nèi)存,free功能:釋放內(nèi)存)。 另外,地址轉(zhuǎn)換,即將邏輯地址轉(zhuǎn)換為相應(yīng)的物理地址,也是操作系統(tǒng)內(nèi)存管理的工作。
3.2常見的內(nèi)存管理機制
一種A一種A Interviewer:您了解操作系統(tǒng)的內(nèi)存管理機制嗎? 內(nèi)存管理有哪些方法?
一種我:我在學(xué)習(xí)操作系統(tǒng)時就了解了這一點。
簡單地分為連續(xù)分布管理和不連續(xù)分布管理。 連續(xù)分配管理是指為用戶程序分配連續(xù)的存儲空間,例如塊管理。 類似地,不連續(xù)分配管理允許程序使用分布在離散或不相鄰存儲器中的存儲器,例如頁面管理和段管理。
一種A一種A面試官:好答案! 但是,錯過了非常重要的細(xì)分和頁面管理機制。 段頁面管理機制結(jié)合了段管理和頁面管理的優(yōu)點。 簡而言之,段頁面管理機制是將主存儲器首先劃分為多個段,每個段被劃分為多個頁面,也就是說,段頁面管理機制的段與內(nèi)部段之間的段都是 離散的。
一種我:謝謝! 只是忘記了這一點-
3.3快速表和多級頁面表
一種A一種A訪問者:頁面表管理機制中有兩個非常重要的概念:快速表和多級頁面 表,分別解決了頁表管理中的兩個非常重要的問題。 請給我簡單介紹!
的一種Me:在分頁內(nèi)存管理中,有兩個要點:從
虛擬地址到物理地址的轉(zhuǎn)換應(yīng)該很快。
解決了虛擬地址空間大和頁表大的問題。
快速表
為了解決虛擬地址到物理地址的轉(zhuǎn)換速度,操作系統(tǒng)基于頁表方案引入了快速表來加速虛擬地址到物理地址的轉(zhuǎn)換。 我們可以將塊表理解為一種特殊的緩存,其中的內(nèi)容是頁表的一部分或全部。 作為頁表的高速緩存,它具有與頁表相同的功能,但是可以提高訪問速度。 因為頁表用于地址轉(zhuǎn)換,所以CPU在讀取和寫入內(nèi)存數(shù)據(jù)時訪問主內(nèi)存兩次。 使用快速表,有時您只需要訪問一次高速緩存存儲器和一次訪問主存儲器,這可以加快搜索速度并提高指令的執(zhí)行速度。 在
中使用快速表后的地址轉(zhuǎn)換過程如下:閱讀
后,您會發(fā)現(xiàn)我們在開發(fā)系統(tǒng)(例如Redis)中經(jīng)常使用的快速表和緩存確實是很多想法和經(jīng)典 可以在我們?nèi)粘i_發(fā)中使用的各種工具或框架中找到操作系統(tǒng)中的算法。
多級頁表
引入多級頁表的主要目的是避免一直將所有頁表都放在內(nèi)存中,尤其是那些根本不需要的頁表不必保留在內(nèi)存中。 多級頁表屬于典型的空間時間場景。 有關(guān)詳細(xì)信息,請參閱以下文章
如何為多級頁面表保存內(nèi)存:https://www.polarxiong.com/archives/如何為多級頁面表保存內(nèi)存。html
摘要
為了提高存儲器的空間性能,提出了多級頁表的概念。 但是空間性能是基于時間性能的浪費,因此,為了補充丟失的時間性能,提出了快速表(TLB)的概念。 實際上,快速表和多級頁表都利用了程序的局部性原理,該原理將在后面的虛擬內(nèi)存部分中介紹。
3.4分頁機制和分段機制之間的共同點和差異
一種A一種A采訪者:分頁機制和分段機制之間的異同是什么?
一種I:
公用:
區(qū)別:
3.5邏輯(虛擬)地址和物理地址p
美國國家航空航天局已發(fā)出近10億 Dell的新款Precision 7000系列移 蘇寧中華第一店的“倒退”顯示出 Microsoft Surface go 2已通過En 如何連接裝修工人的訂單接收平臺 這21個應(yīng)用程序是非法的! 您可 YouTube每分鐘產(chǎn)生32000美元的廣 頻頻挖角高管抱怨午夜,魅族的應(yīng) 當(dāng)場推翻原版! AI不承認(rèn)上帝, 數(shù)字基礎(chǔ)共享視頻介紹了VRS可變 北通云企業(yè)照明站,3分鐘發(fā)布一 100智能大廈 新聞:2020年13英寸Macbook Pro 閱讀對最近查詢的回應(yīng):全面推動 餐飲業(yè)的創(chuàng)新,變革和利潤保證 國家緊急響應(yīng)為2級或以下; 特斯 巴菲特:尚未找到感興趣的公司 Apple的新消息專利:重新編輯發(fā) 沒有贏得原始的跑步成績,并且沒 長鑫家用DDR4內(nèi)存芯片/顆粒處理 在原始的win10中搜索其他瀏覽器 巴菲特的Alpha:使用機器學(xué)習(xí)量 圖片預(yù)覽界面中的新增長焦點圖片 巴菲特:麝香做得很棒,但不會投 閱讀:作家座談會于5月6日啟動, 原始IOS 13.5 beta 3帶來了有關(guān) 中國人民銀行:恢復(fù)生產(chǎn)的狀況正 原裝國內(nèi)最差的手機系統(tǒng):華為的 比亞迪與華為合作! 趙長江:特 經(jīng)典gal“ MUV luv”將發(fā)布在Ste