程序員必知的 89 個操作系統核心概念

程序員必知的 89 個操作系統核心概念

作者 | cxuan

來源 | Java建設者(ID:javajianshe)

封圖 | 東方IC

1. 操作系統(Operating System,OS):是管理計算機硬件與軟件資源的系統軟件,同時也是計算機系統的內核與基石。操作系統需要處理管理與配置內存、決定系統資源供需的優先次序、控制輸入與輸出設備、操作網絡與管理文件系統等基本事務。操作系統也提供一個讓用戶與系統交互的操作界面。2. shell:它是一個程序,可從鍵盤獲取命令並將其提供給操作系統以執行。在過去,它是類似 Unix 的系統上唯一可用的用戶界面。如今,除了命令行界面(CLI)外,我們還具有圖形用戶界面(GUI)。

程序员必知的 89 个操作系统核心概念

3. GUI (Graphical User Interface):是一種用戶界面,允許用戶通過圖形圖標和音頻指示符與電子設備進行交互。

程序员必知的 89 个操作系统核心概念

4. 內核模式(kernel mode): 通常也被稱為 超級模式(supervisor mode),在內核模式下,正在執行的代碼具有對底層硬件的完整且不受限制的訪問。它可以執行任何 CPU 指令並引用任何內存地址。內核模式通常保留給操作系統的最低級別,最受信任的功能。內核模式下的崩潰是災難性的;他們將停止整個計算機。超級用戶模式是計算機開機時選擇的自動模式。5.

用戶模式(user node):當操作系統運行用戶應用程序(例如處理文本編輯器)時,系統處於用戶模式。當應用程序請求操作系統的幫助或發生中斷或系統調用時,就會發生從用戶模式到內核模式的轉換。在用戶模式下,模式位設置為1。從用戶模式切換到內核模式時,它從1更改為0。6.計算機架構(computer architecture) :在計算機工程中,計算機體系結構是描述計算機系統功能,組織和實現的一組規則和方法。它主要包括指令集、內存管理、I/O 和總線結構。

程序员必知的 89 个操作系统核心概念

7.

SATA(Serial ATA):串行 ATA (Serial Advanced Technology Attachment),它是一種電腦總線,負責主板和大容量存儲設備(如硬盤及光盤驅動器)之間的數據傳輸,主要用於個人電腦。8.複用(multiplexing):也稱為共享,在操作系統中主要指示了時間和空間的管理。對資源進行復用時,不同的程序或用戶輪流使用它。他們中的第一個開始使用資源,然後再使用另一個,依此類推。9. 大型機(mainframes):大型機是一類計算機,通常以其大尺寸,存儲量,處理能力和高度的可靠性而著稱。它們主要由大型組織用於需要大量數據處理的關鍵任務應用程序。10.批處理(batch system): 批處理操作系統的用戶不直接與計算機進行交互。每個用戶都在打孔卡等脫機設備上準備工作,並將其提交給計算機操作員。為了加快處理速度,將具有類似需求的作業一起批處理併成組運行。程序員將程序留給操作員,然後操作員將具有類似要求的程序分批處理。11.OS/360:OS/360,正式稱為IBM System / 360操作系統,是由 IBM 為 1964 年發佈的其當時新的System/360 大型機開發的已停產的批處理操作系統。12.多處理系統(Computer multitasking):是指計算機同時運行多個程序的能力。多任務的一般方法是運行第一個程序的一段代碼,保存工作環境;再運行第二個程序的一段代碼,保存環境;……恢復第一個程序的工作環境,執行第一個程序的下一段代碼。13.
分時系統(Time-sharing):在計算中,分時是通過多程序和多任務同時在許多用戶之間共享計算資源的一種系統14.相容分時系統(Compatible Time-Sharing System):最早的分時操作系統,由美國麻省理工學院計算機中心設計與實作。15.雲計算(cloud computing):雲計算是計算機系統資源(尤其是數據存儲和計算能力)的按需可用性,而無需用戶直接進行主動管理。這個術語通常用於描述 Internet 上可供許多用戶使用的數據中心。如今占主導地位的大型雲通常具有從中央服務器分佈在多個位置的功能。如果與用戶的連接相對較近,則可以將其指定為邊緣服務器。

程序员必知的 89 个操作系统核心概念

16. UNIX 操作系統:UNIX 操作系統,是一個強大的多用戶、多任務操作系統,支持多種處理器架構,按照操作系統的分類,屬於分時操作系統。17.UNIX System V:是 UNIX 操作系統的一個分支。18.BSD(Berkeley Software Distribution):UNIX 的衍生系統。19.POSIX:可移植操作系統接口,是 IEEE 為要在各種 UNIX 操作系統上運行軟件,而定義API的一系列互相關聯的標準的總稱。20.MINIX:Minix,是一個迷你版本的類 UNIX 操作系統。21.Linux:終於到了大名鼎鼎的 Linux 操作系統了,太強大了,不予以解釋了,大家都懂。22.DOS(Disk Operating System):磁盤操作系統(縮寫為DOS)是可以使用磁盤存儲設備(例如軟盤,硬盤驅動器或光盤)的計算機操作系統。23.MS-DOS(MicroSoft Disk Operating System) :一個由美國微軟公司發展的操作系統,運行在Intel x86個人電腦上。它是DOS操作系統家族中最著名的一個,在Windows 95以前,DOS是IBM PC及兼容機中的最基本配備,而MS-DOS則是個人電腦中最普遍使用的DOS操作系統。

程序员必知的 89 个操作系统核心概念

24. MacOS X,怎能少的了蘋果操作系統?macOS 是蘋果公司推出的基於圖形用戶界面操作系統,為 Macintosh 的主操作系統。

程序员必知的 89 个操作系统核心概念

25. Windows NT(Windows New Technology):是美國微軟公司 1993 年推出的純 32 位操作系統核心。26.Service Pack(SP):是程序的更新、修復和(或)增強的集合,以一個獨立的安裝包的形式發佈。許多公司,如微軟或Autodesk,通常在為某一程序而做的修補程序達到一定數量時,就發佈一個Service Pack。27.數字版權管理

(DRM):他是工具或技術保護措施(TPM)是一組訪問控制技術,用於限制對專有硬件和受版權保護的作品的使用。28.x86:x86是一整套指令集體系結構,由 Intel 最初基於 Intel 8086 微處理器及其 8088 變體開發。採用內存分段作為解決方案,用於處理比普通 16 位地址可以覆蓋的更多內存。32 位是 x86 默認的位數,除此之外,還有一個 x86-64 位,是x86架構的 64 位拓展,向後兼容於 16 位及 32 位的 x86架構。29.FreeBSD:FreeBSD 是一個類 UNIX 的操作系統,也是 FreeBSD 項目的發展成果。30.X Window System:X 窗口系統(X11,或簡稱X)是用於位圖顯示的窗口系統,在類 UNIX 操作系統上很常見。

程序员必知的 89 个操作系统核心概念

31. Gnome:GNOME 是一個完全由自由軟件組成的桌面環境。它的目標操作系統是Linux,但是大部分的 BSD 系統亦支持 GNOME。

程序员必知的 89 个操作系统核心概念

32. 網絡操作系統(network operating systems):網絡操作系統是用於網絡設備(如路由器,交換機或防火牆)的專用操作系統。

程序员必知的 89 个操作系统核心概念

33. 分佈式網絡系統(distributed operating systems):分佈式操作系統是在獨立,網絡,通信和物理上獨立計算節點的集合上的軟件。它們處理由多個CPU服務的作業。每個單獨的節點都擁有全局集合操作系統的特定軟件的一部分。

程序员必知的 89 个操作系统核心概念

34. 程序計數器(Program counter):程序計數器 是一個 CPU 中的寄存器,用於指示計算機在其程序序列中的位置。35.堆棧寄存器(stack pointer):堆棧寄存器是計算機 CPU 中的寄存器,其目的是跟蹤調用堆棧。36.

程序狀態字(Program Status Word): 它是由操作系統維護的8個字節(或64位)長的數據的集合。它跟蹤系統的當前狀態。37.流水線(Pipeline): 在計算世界中,管道是一組串聯連接的數據處理元素,其中一個元素的輸出是下一個元素的輸入。流水線的元素通常以並行或按時間分割的方式執行。通常在元素之間插入一定數量的緩衝區存儲。

程序员必知的 89 个操作系统核心概念

38. 超標量(superscalar):超標量 CPU 架構是指在一顆處理器內核中實行了指令級併發的一類併發運算。這種技術能夠在相同的CPU主頻下實現更高的 CPU 流量。39.

系統調用(system call): 指運行在用戶空間的程序向操作系統內核請求需要更高權限運行的服務。系統調用提供用戶程序與操作系統之間的接口。大多數系統交互式操作需求在內核態運行。如設備 IO 操作或者進程間通信。40.多線程(multithreading):是指從軟件或者硬件上實現多個線程併發執行的技術。具有多線程能力的計算機因為有硬件支持而能夠在同一時間執行多個線程,進而提升整體處理性能。41.CPU 核心(core):它是 CPU 的大腦,它接收指令,並執行計算或運算以滿足這些指令。一個 CPU 可以有多個內核。42.圖形處理器(Graphics Processing Unit):又稱顯示核心、視覺處理器、顯示芯片或繪圖芯片;它是一種專門在個人電腦、工作站、遊戲機和一些移動設備(如平板電腦、智能手機等)上運行繪圖運算工作的微處理器。43.存儲體系結構:頂層的存儲器速度最高,但是容量最小,成本非常高,層級結構越向下,其訪問效率越慢,容量越大,但是造價也就越便宜。

程序员必知的 89 个操作系统核心概念

44. 高速緩存行(cache lines):其實就是把高速緩存分割成了固定大小的塊,其大小是以突發讀或者突發寫週期的大小為基礎的。45.緩存命中(cache hit):當應用程序或軟件請求數據時,會首先發生緩存命中。首先,中央處理單元(CPU)在其最近的內存位置(通常是主緩存)中查找數據。如果在緩存中找到請求的數據,則將其視為緩存命中。

程序员必知的 89 个操作系统核心概念

46. L1 cache:一級緩存是 CPU 芯片中內置的存儲庫。L1緩存也稱為主緩存,是計算機中最快的內存,並且最接近處理器。47.

L2 cache: 二級緩存存儲庫,內置在 CPU 芯片中,包裝在同一模塊中,或者建在主板上。L2 高速緩存提供給 L1 高速緩存,後者提供給處理器。L2 內存比 L1 內存慢。48.L3 cache: 三級緩存內置在主板上或CPU模塊內的存儲庫。L3 高速緩存為 L2 高速緩存提供數據,其內存通常比 L2 內存慢,但比主內存快。L3 高速緩存提供給 L2 高速緩存,後者又提供給 L1 高速緩存,後者又提供給處理器。49.RAM(Random Access Memory):隨機存取存儲器,也叫主存,是與 CPU 直接交換數據的內部存儲器。它可以隨時讀寫,而且速度很快,通常作為操作系統或其他正在運行中的程序的臨時數據存儲介質。RAM工作時可以隨時從任何一個指定的地址寫入(存入)或讀出(取出)信息。它與 ROM 的最大區別是數據的易失性,即一旦斷電所存儲的數據將隨之丟失。RAM 在計算機和數字系統中用來暫時存儲程序、數據和中間結果。50.ROM(Read Only Memory):只讀存儲器是一種半導體存儲器,其特性是一旦存儲數據就無法改變或刪除,且內容不會因為電源關閉而消失。在電子或電腦系統中,通常用以存儲不需經常變更的程序或數據。51.EEPROM(Electrically Erasable PROM):電可擦除可編程只讀存儲器,是一種可以通過電子方式多次複寫的半導體存儲設備。52.
閃存(flash memory):是一種電子式可清除程序化只讀存儲器的形式,允許在操作中被多次擦或寫的存儲器。這種科技主要用於一般性數據存儲,以及在電腦與其他數字產品間交換傳輸數據,如儲存卡與U盤。53.SSD(Solid State Disks):固態硬盤,是一種主要以閃存作為永久性存儲器的電腦存儲設備。54.虛擬地址(virtual memory):虛擬內存是計算機系統內存管理的一種機制。它使得應用程序認為它擁有連續可用的內存(一個連續完整的地址空間),而實際上,它通常是被分隔成多個物理內存碎片,還有部分暫時存儲在外部磁盤存儲器上,在需要時進行數據交換。與沒有使用虛擬內存技術的系統相比,使用這種技術的系統使得大型程序的編寫變得更容易,對真正的物理內存(例如RAM)的使用也更有效率。55.MMU(Memory Management Unit):內存管理單元,有時稱作分頁內存管理單元。它是一種負責處理中央處理器(CPU)的內存訪問請求的計算機硬件。它的功能包括虛擬地址到物理地址的轉換(即虛擬內存管理)、內存保護、中央處理器高速緩存的控制等。

程序员必知的 89 个操作系统核心概念

56. context switch:上下文切換,又稱環境切換。是一個存儲和重建 CPU 狀態的機制。要交換 CPU 上的進程時,必需先行存儲當前進程的狀態,然後再將進程狀態讀回 CPU 中。57.驅動程序(device driver):設備驅動程序,簡稱驅動程序(driver),是一個允許高級別電腦軟件與硬件交互的程序,這種程序創建了一個硬件與硬件,或硬件與軟件溝通的接口,經由主板上的總線或其它溝通子系統與硬件形成連接的機制,這樣使得硬件設備上的數據交換成為可能。

程序员必知的 89 个操作系统核心概念

58.

忙等(busy waiting):在軟件工程中,忙碌等待也稱自旋,是一種以進程反覆檢查一個條件是否為真的條件,這種機制可能為檢查鍵盤輸入或某個鎖是否可用。59.中斷(Interrupt):通常,在接收到來自外圍硬件(相對於中央處理器和內存)的異步信號,或來自軟件的同步信號之後,處理器將會進行相應的硬件/軟件處理。發出這樣的信號稱為進行中斷請求(interrupt request,IRQ)。硬件中斷導致處理器通過一個運行信息切換(context switch)來保存執行狀態(以程序計數器和程序狀態字等寄存器信息為主);軟件中斷則通常作為 CPU 指令集中的一個指令,以可編程的方式直接指示這種運行信息切換,並將處理導向一段中斷處理代碼。中斷在計算機多任務處理,尤其是即時系統中尤為有用。60.中斷向量(interrupt vector):中斷向量位於中斷向量表中。中斷向量表(IVT)是將中斷處理程序列表與中斷向量表中的中斷請求列表相關聯的數據結構。中斷向量表的每個條目(稱為中斷向量)都是中斷處理程序的地址。

程序员必知的 89 个操作系统核心概念

61. DMA(Direct Memory Access):直接內存訪問,直接內存訪問是計算機科學中的一種內存訪問技術。它允許某些電腦內部的硬件子系統(電腦外設),可以獨立地直接讀寫系統內存,而不需中央處理器(CPU)介入處理 。62.總線(Bus):總線(Bus)是指計算機組件間規範化的交換數據的方式,即以一種通用的方式為各組件提供數據傳送和控制邏輯。63.PCIe(Peripheral Component Interconnect Express):官方簡稱PCIe,是計算機總線的一個重要分支,它沿用現有的PCI編程概念及信號標準,並且構建了更加高速的串行通信系統標準。64.DMI(Direct Media Interface):直接媒體接口,是英特爾專用的總線,用於電腦主板上南橋芯片和北橋芯片之間的連接。65.USB(Universal Serial Bus):是連接計算機系統與外部設備的一種串口總線標準,也是一種輸入輸出接口的技術規範,被廣泛地應用於個人電腦和移動設備等信息通訊產品,並擴展至攝影器材、數字電視(機頂盒)、遊戲機等其它相關領域。66.BIOS(Basic Input Output System):是在通電引導階段運行硬件初始化,以及為操作系統提供運行時服務的固件。它是開機時運行的第一個軟件。

程序员必知的 89 个操作系统核心概念

67. 硬實時系統(hard real-time system):硬實時性意味著你必須絕對在每個截止日期前完成任務。很少有系統有此要求。例如核系統,一些醫療應用(例如起搏器),大量國防應用,航空電子設備等。68.軟實時系統(soft real-time system):軟實時系統可能會錯過某些截止日期,但是如果錯過太多,最終性能將下降。一個很好的例子是計算機中的聲音系統。69.進程(Process):程序本身只是指令、數據及其組織形式的描述,進程才是程序(那些指令和數據)的真正運行實例。若進程有可能與同一個程序相關係,且每個進程皆可以同步(循序)或異步的方式獨立運行。70.

地址空間(address space):地址空間是內存中可供程序或進程使用的有效地址範圍。也就是說,它是程序或進程可以訪問的內存。存儲器可以是物理的也可以是虛擬的,用於執行指令和存儲數據。71.進程表(process table):進程表是操作系統維護的數據結構,該表中的每個條目(通常稱為上下文塊)均包含有關進程的信息,例如進程名稱和狀態,優先級,寄存器以及它可能正在等待的信號燈。72.命令行界面(command-line interpreter):是在圖形用戶界面得到普及之前使用最為廣泛的用戶界面,它通常不支持鼠標,用戶通過鍵盤輸入指令,計算機接收到指令後,予以執行。

程序员必知的 89 个操作系统核心概念

73. 進程間通信(interprocess communication):指至少兩個進程或線程間傳送數據或信號的一些技術或方法。

74. 超級用戶(superuser):也被稱為管理員帳戶,在計算機操作系統領域中指一種用於進行系統管理的特殊用戶,其在系統中的實際名稱也因系統而異,如 root、administrator 與supervisor。75.目錄(directory): 在計算機或相關設備中,一個目錄或文件夾就是一個裝有數字文件系統的虛擬容器。在它裡面保存著一組文件和其它一些目錄。76.路徑(path name):路徑是一種電腦文件或目錄的名稱的通用表現形式,它指向文件系統上的一個唯一位置。77.根目錄(root directory):根目錄指的就是計算機系統中的頂層目錄,比如 Windows 中的 C 盤和 D 盤,Linux 中的 /。78.工作目錄(Working directory):它是一個計算機用語。用戶在操作系統內所在的目錄,用戶可在此目錄之下,用相對文件名訪問文件。79.文件描述符(file descriptor):文件描述符是計算機科學中的一個術語,是一個用於表述指向文件的引用的抽象化概念。80.inode

:索引節點的縮寫,索引節點是 UNIX 系統中包含的信息,其中包含有關每個文件的詳細信息,例如節點,所有者,文件,文件位置等。81.共享庫(shared library):共享庫是一個包含目標代碼的文件,執行過程中多個 a.out 文件可能會同時使用該目標代碼。82.DLLs(Dynamic-Link Libraries):動態鏈接庫,它是微軟公司在操作系統中實現共享函數庫概念的一種實現方式。這些庫函數的擴展名是 .DLL、.OCX(包含ActiveX控制的庫)或者.DRV(舊式的系統驅動程序)。83.客戶端(clients):客戶端是訪問服務器提供的服務的計算機硬件或軟件。84.服務端(servers):在計算中,服務器是為其他程序或設備提供功能的計算機程序或設備,稱為服務端85.主從架構(client-server):主從式架構也稱客戶端/服務器架構、C/S 架構,是一種網絡架構,它把客戶端與服務器區分開來。每一個客戶端軟件的實例都可以向一個服務器或應用程序服務器發出請求。有很多不同類型的服務器,例如文件服務器、遊戲服務器等。

程序员必知的 89 个操作系统核心概念

86. 虛擬機(Virtual Machines):在計算機科學中的體系結構裡,是指一種特殊的軟件,可以在計算機平臺和終端用戶之間創建一種環境,而終端用戶則是基於虛擬機這個軟件所創建的環境來操作其它軟件。

程序员必知的 89 个操作系统核心概念

87. Java 虛擬機(Java virtual Machines):Java虛擬機有自己完善的硬體架構,如處理器、堆棧、寄存器等,還具有相應的指令系統。JVM屏蔽了與具體操作系統平臺相關的信息,使得Java程序只需生成在Java虛擬機上運行的目標代碼(字節碼),就可以在多種平臺上不加修改地運行。88.

目標文件(object file):目標文件是包含目標代碼的文件,這意味著通常無法直接執行的可重定位格式的機器代碼。目標文件有多種格式,相同的目標代碼可以打包在不同的目標文件中。目標文件也可以像共享庫一樣工作。89.C preprocessor:C 預處理器是 C 語言、C++ 語言的預處理器。用於在編譯器處理程序之前預掃描源代碼,完成頭文件的包含, 宏擴展, 條件編譯, 行控制等操作。

文章參考:

https://blog.csdn.net/zhangjg_blog/article/details/20380971

https://www.techopedia.com/definition/4763/address-space

https://en.wikipedia.org/wiki/Direct_Media_Interface

https://en.wikipedia.org/wiki/Bus_(computing)

https://en.wikipedia.org/wiki/Interrupt_vector_table

https://en.wikipedia.org/wiki/Busy_waiting

https://en.wikipedia.org/wiki/Context_switch

https://en.wikipedia.org/wiki/Read-only_memory

https://www.techopedia.com/definition/6306/cache-hit

https://zhuanlan.zhihu.com/p/37749443

https://en.wikipedia.org/wiki/Pipeline_(computing)

https://en.wikipedia.org/wiki/Stack_register

https://en.wikipedia.org/wiki/Distributed_operating_system

https://en.wikipedia.org/wiki/Time-sharing

https://zh.wikipedia.org/wiki/UNIX

https://zh.wikipedia.org/wiki/UNIX_System_V

https://en.wikipedia.org/wiki/Network_operating_system

https://zh.wikipedia.org/zh/X86-64

https://zh.wikipedia.org/zh/X86

https://en.wikipedia.org/wiki/Cloud_computing

https://www.techopedia.com/definition/24356/mainframe

https://zh.wikipedia.org/wiki/SATA

https://blog.codinghorror.com/understanding-user-and-kernel-mode/

https://en.wikipedia.org/wiki/Protection_ring

作為“百萬人學AI”的重要組成部分,2020 AIProCon 開發者萬人大會將於6月26日通過線上直播形式,讓開發者們一站式學習瞭解當下 AI 的前沿技術研究、核心技術與應用以及企業案例的實踐經驗,同時還可以在線參加精彩多樣的開發者沙龍與編程項目。參與前瞻系列活動、在線直播互動,不僅可以與上萬名開發者們一起交流,還有機會贏取直播專屬好禮,與技術大咖連麥。

評論區留言入選,可獲得價值299元的「2020 AI開發者萬人大會」在線直播門票一張。 快來動動手指,寫下你想說的話吧!

程序员必知的 89 个操作系统核心概念

☞微軟為一人收購一公司?破解索尼程序、寫黑客小說,看他彪悍的程序人生!

☞中國無人機“老炮兒”回憶錄

☞4 年 46 個版本,一文讀懂 Spring Cloud 發展歷史

☞京東商城背後的AI技術能力揭秘 - 基於關鍵詞自動生成摘要

☞互聯網之父確診新冠,一代傳奇:任谷歌副總裁、NASA 訪問科學家

☞從未如此簡單:10分鐘帶你逆襲Kafka!

☞無代碼時代來臨,程序員如何保住飯碗?


分享到:


相關文章: