批處理系統
1.單道批處理系統
- 單道批處理系統是成批地處理作用,并且始終只有一道作業在內存中的系統。
- 優點:提高系統資源的利用率和系統吞吐量。
- 缺點:系統中的資源得不到充分利用。
2.多道批處理系統
- 引入多道程序設計技術,是為了進一步提高系統資源的利用率和系統吞吐量。
- 優點:系統資源利用率高,系統吞吐量大。
- 缺點:平均周轉時間長,無交互能力。
分時系統
- 分時系統是指在一臺主機上連續若干個配有顯示器和鍵盤的終端,并由此組成的系統。
- 分時系統允許若干個用戶同時通自己的終端以交互方式使用主機,共享主機中的資源。
分時系統的特性:
1.多路性:系統按分時原則為每個用戶服務,宏觀上若干個用戶是同時工作的,微觀上每個作業輪流執行一個時間片。
2.獨立性:每個用戶都是獨立操作的,互不干擾。
3.及時性:用戶的請求能在很短的時間內獲得響應。
4.交互性:用戶可以通過自己的終端與系統進行交互。
實時系統
- 實時系統是指能夠及時響應外部事件的請求,在規定時間內完成相應的處理,并且控制所有實時任務協調一致地運行的系統。
- 實時系統的特征是將時間作為關鍵參數,具有多路性、獨立性、及時性、交互性、可靠性。
- 常見的實時系統有工業控制系統、武器控制系統、信息查詢系統、多媒體系統、嵌入式系統。
微機操作系統
- 微機操作系統是指配置在微型機上的操作系統。分為單用戶單任務操作系統、單用戶多任務操作系統、多用戶多任務操作系統。
網絡操作系統
- 網絡操作系統是指在計算機網絡環境下,管理和控制網絡資源,實現數據通信,共享網絡資源,為用戶提供與網絡資源之間接口的一組軟件和規程的集合。
- 由于現代操作系統通常具有上網功能,所以如今一般不再特指某個操作系統為網絡操作系統。
微內核結構的操作系統
微內核操作系統的主要特點:
- 足夠小的內核
- 基于客戶/服務器模式
- 利用“機制與策略分離”的原理,將控制放在操作系統的微內核中
- 采用面向對象技術
優點 :可擴展性高、可靠性高、可移植性強、支持分布式系統、采用面向對象技術、提高了系統性能、減少了開發系統的開銷。
操作系統的基本特征
1.并發性:并發性是指兩個或多個時間在同一時間間隔內發生。
2.共享性:共享性是指內存中并發執行的若干個進程共享系統中的各種系統。
3.虛擬性:虛擬是將一個物理實體變為若干個邏輯上的對應物。
4.異步性:異步性是指在多道程序環境下,每個進程何時進行、何時暫停未知,并以不可預知的速度向前推進。
- 并發性和共享性是多用戶多任務操作系統的兩個基本特征。
- 因為操作系統具有并發性,所以能極大地提高系統資源利用率并增大系統的吞吐量。
并發性和并行性的區別
- 并發性:兩個或多個事件在同一時間間隔發生。
- 并行性:兩個或多個事件在同一時刻發生。
操作系統的主要功能
操作系統的主要功能有:
處理機管理功能、存儲器管理功能、設備管理功能、文件管理功能、操作系統與用戶之間的接口、現代操作系統的新功能。
- ?處理機管理:?對進程進行管理、包括進程控制、進程同步、進程通信、調度(包括作業調度、進程調度等)。對于引入了線程的操作系統,處理機管理也包含對線程進行管理。
- 存儲器管理:包括內存分配與回收、內存保護、地址映射、內存擴充等。存儲器管理功能可以為多道程序提供良好的運行環境,提高存儲器的利用率,減少內存碎片,便于用戶使用,從邏輯上擴充內存。
- 設備管理:包括緩沖管理、設備分配、設備處理、虛擬設備等。設備管理功能可以完成用戶進程的I/O請求,提高I/O速度,提高CPU與I/O設備的利用率,讓用戶更方便地使用I/O設備。
- 文件管理:包括文件存儲空間管理、目錄管理、文件讀/寫管理、文件共享、文件保護等。文件管理功能可以方便用戶管理用戶文件和系統文件,并提供了有效的存取控制功能,保證了文件的安全性。
- 操作系統與用戶之間的接口:操作系統向用戶提供了“操作系統與用戶之間的接口”,接口分為用戶接口和程序接口兩種類型。操作系統由于用戶之間的接口便于用戶使用操作子系統。
裸機應用編程
1.什么是裸機?
- 無軟件的計算機硬件系統。
2.什么是裸機應用編程?
- 編寫語言:直接使用CPU指令集。
- 開發環境:基于硬件電路上的硬件接口。
3.所有臺式機,CPU一樣嗎?
- 臺式計算機和手機的CPU就不同。
- 即使家用電器里面都有不同的CPU。
4.不同類型CPU,指令集一樣嗎?
- 指令集一樣,就不能叫不同類型CPU,即使同類型,也會有變化。
5.為什么計算機CPU不做成一樣?
- 技術發展的差異:半導體技術水平導致制造過程的差異。
- 應用發展的需求:成本控制和電路設計,例如家用電器、早期的手機。
裸機上機器語言編程
- 裸機編程最早基于指令集結構(Instruction Set Architecture, ISA)編寫應用程序,即機器語言源程序。
- 提問:上面兩種機器語言代碼為什么不同,有哪些不同?這樣的編程你有什么感覺?
- x-86指令長度可變,而MIPS定長,數據好像一樣,但字節順序顛倒。能不能讓編程更輕松?
兩種機器語言代碼不同的原因及不同點
根本原因:X86 與 MIPS 屬于不同的指令集架構(ISA),ISA 定義了指令格式、操作碼、寄存器使用等底層規則,導致機器語言代碼的編碼規則不同。
具體不同點:
- 指令長度:X86 指令長度可變(如不同指令碼字節數不同),MIPS 指令定長(通常為 4 字節)。
- 字節順序:存在大端 / 小端存儲差異,如數據相同但字節順序顛倒。
- 指令編碼規則:兩者操作碼、尋址方式的機器碼表示不同,反映了各自架構的硬件設計邏輯。
編程感受:直接使用機器語言編程繁瑣易錯,需記憶復雜的二進制 / 十六進制編碼,開發效率低,代碼可讀性、可維護性差。
讓編程更輕松的方法
可通過抽象層簡化編程:
- 使用匯編語言:用助記符(如 ADD、MOV)替代機器碼,降低記憶成本,再通過匯編器轉換為機器語言。
- 高級編程語言:利用 C、Python 等高級語言,通過編譯器 / 解釋器將代碼轉換為機器語言,程序員無需關注底層細節,聚焦邏輯實現,提升開發效率。
?裸機上匯編語言編程
- 裸機編程基于匯編語言格式編寫應用程序,即匯編語言源程序代碼,即匯編程序自動轉換匯編指令成機器指令代碼。
- 通過機器語言與匯編語言代碼相比,其語言符號易于理解指令功能,而且匯編數據以10進制和字符為主,而機器語言以16進制編碼為主,CPU不一樣指令也不一樣,可能字節順序不同。
- 能否通過C語言源程序追蹤發現邏輯編程中的指令處理的信息?
借助 C 語言源程序追蹤邏輯編程中的指令處理信息:
- 編譯生成匯編代碼:使用編譯工具(如
gcc -S
)將 C 語言源程序編譯為匯編語言代碼。匯編代碼中會直接呈現底層指令(如mov
、add
、jmp
等),清晰展示指令處理邏輯,包括寄存器操作、內存訪問、運算指令等裸機編程層面的指令處理細節。- 反匯編可執行文件:將 C 語言編譯生成的可執行文件(機器碼),通過反匯編工具(如
objdump -d
)還原為匯編代碼。反匯編結果會暴露機器碼對應的指令處理信息,包括指令類型、操作數、執行順序等,從而追蹤到底層指令處理邏輯。盡管 C 語言源程序本身未直接書寫指令,但通過編譯生成的匯編代碼或反匯編可執行文件,能夠間接追蹤到指令處理的具體信息,建立高級語言與底層指令處理的關聯。
裸機編程特性
-
問:如果換 CPU,CPU 指令集變了,基于 CPU 指令集的程序還能用?
答:通常無法直接使用。程序執行依賴特定 CPU 指令集的操作支持,指令集變更后,原程序失去運行基礎。 -
問:如果接口硬件(類型、規模)擴充,包含原硬件接口程序能選擇使用?
答:若擴充的硬件接口仍保留原接口,原程序可選擇繼續使用;若完全替換原接口,程序需重新適配新接口才能用。 -
問:如果硬件設計未變但應用功能添加,以前的程序還可選擇使用?
答:若原程序不依賴新增功能,可繼續使用;若程序邏輯與新增功能有關聯或依賴,則需修改調整后才能用。 -
問:如果基于 CPU 指令集編寫的程序,在哪調試?怎么調試?CPU 變了怎么辦?
答:需在專門的開發板或開發設備上調試。若 CPU 變更,需更換適配新 CPU 的開發板 / 設備,重新搭建調試環境。 -
問:程序設計要考慮哪些?
答:需考慮:滿足應用業務功能需求;CPU 指令集提供的操作能力;CPU 寄存器數量限制;硬件中斷支持機制;內存單元布局;外部設備接口類型、規模及操作邏輯。
?操作系統上編程:算法語言編程
- 軟件層抽象隱藏硬件接口,算法語言語句抽象為虛擬CPU指令,不與具體的CPU指令集、內存和外部硬件接口對應。
- 算法語言源程序代碼通過一種自動化的工具,即編譯程序翻譯成為針對一種CPU可識別的CPU指令集的匯編語言符號,再轉換為二進制編碼的機器語言指令格式。
OS 上應用編程問題
-
算法設計:
- 無需重點關注編碼、類型、字節順序、運算溢出及精度等限制,也可不細究運算和存貯訪問次數對程序效率的影響。
- 依據問題特性選擇迭代或遞歸算法,部分算法可能突破 OS 極限。
-
語句組織:
- 忽略命名唯一性(全局 / 局部變量、函數)、語句編譯或解釋后機器指令的差異對程序運行效率的影響。
- 未注意相同運算因參與類型不同,可能導致機器指令實現功能錯誤。
-
運行訪問:
- 變量按類型和大小分配字節,地址連續編址,需先分配后訪問,避免使用失效、超量或跨區地址,防止污染函數地址或返回地址,引發程序失控、效率低等問題。
- 中斷處理可能插入語句(機器指令組)中,引發主程序運行狀態保護問題。
?