操作系統結構

操作系統結構

    • 分層法
    • 模塊化
    • 宏內核
    • 微內核
      • 微內核的基本概念
      • 微內核的基本功能
    • 內核

分層法

分層法是將操作系統分為若干層,最底層為硬件,最高層為用戶接口,每層只能調用緊鄰它的底層的功能和服務(單向依賴)

分層法的優點:
1:便于系統的調試和驗證。簡化了系統的設計和實現。第一層可以調試而無需考慮其他部分,因為它只使用了基本硬件。第一層調試完且驗證正確之后,就可以調試第二層,如此向上。如果調試某層出現問題 那么錯誤應就在這一層上,因為它的底層都調試好了,
2:易擴充和易維護。在系統匯總增加、修改或者替換一層中的模塊或整層時,只要不改變相應層間的接口,就不會影響其它層

分層法的問題:
1:合理定義各層比較困難,因為依賴關系固定后,往往就顯得不夠靈活、
2:效率較差。操作系統每執行一個功能,通常要自上而下穿越多層,各層之間都有相應的層間通信機制,這無疑增加了額外的開銷

模塊化

模塊化是將操作系統按功能劃分為若干具有一定獨立性的模塊。每個模塊具有某方面的管理功能,并規定好各模塊間的接口,是各模塊之間能夠通過接口進行通信。還可以進一步將各模塊細分為若干具有一定功能的子模塊,同樣也規定好各模塊之間的接口。這種設計方法被稱為模塊接口法,

在劃分模塊時,如果將模塊劃分的很小,雖然能降低模塊本身的復雜性,但會使得模塊之間的聯系過多,造成系統比較混亂;如果模塊劃分的過大,又會增加模塊內部的復雜性,顯然應在兩者之間權衡。此外,在劃分模塊時,要充分考慮模塊的獨立性問題,因為模塊獨立性越高,各模塊之間的交互越少,系統的結構也就清晰,衡量模塊的獨立性主要有兩個標準:

 內聚性,模塊內部各部分間聯系的緊密程度。內聚性越高,獨立模塊性越好耦合度,模塊間相互聯系和相互影響的程度。耦合度越低,模塊獨立性越好

模塊化的優點:
1:提高了操作系統設計的正確性,可理解性和可維護性
2:增強了操作系統的可適應性,
3:加速了操作系統的開發過程

模塊化的缺點:
1:模塊化的借口規定很難滿足各接口的實際需求
2:各模塊設計者起頭并進,每個決定無法建立在一個已驗證的正確決定的基礎上,因此無法找到一個可靠的決定順序

宏內核

從操作系統是哪個的內核架構來劃分,可分為宏內核和微內核
宏內核,也稱單內核或大內核,是指將系統的主要功能模塊都作為一個緊密聯系的整體運行在核心態,從而為用戶程序提供高性能的系統服務。因為各管理模塊之間共享信息,能有效利用相互之間的有效特性,所以具有無可比擬的性能優勢

微內核

微內核的基本概念

微內核構架,是指將內核中最基本的功能保留在內核,而將那些不需要要核心態執行的功能移到用戶態執行,從而降低內核的設計復雜性。那些移出內核的操作系統代碼根據分層的原則被劃分成若干服務程序,他們的執行相互獨立,交互則都能借助于微內核進行通信

微內核結構將操作系統劃分為兩大部分:微內核和多個服務器。微內核是指將精心設計的、能實現操作系統最基本核心功能的小型內核,通常包含:1) 與硬件處理緊密相關的部分 2)一些較基本的功能 3)客戶和服務器之間的通信。 這些部分只是為構建通用操作系統提供一個重要基礎,這樣就可以確保將內核做的很小

微內核的基本功能

微內核結構通常利用“機制與策略分離”的原理來構造os結構,將機制部分以及硬件緊密相關的部分放入微內核。微內核通常具有如下功能:
1:進程(線程)管理。進程(線程)之間的通信功能是微內核os最基本的功能,此外還有進程的切換。進程的調度以及需要處理機之間的同步功能

2:低級存儲器管理。在微內核中,只配置最基本的低級存儲器管理機制,如用于實現將邏輯地址轉換為物理地址等的頁表機制和地址變換機制,這一部分依賴于硬件的,因此放入微內核。

3:中斷和陷入處理。

微內核的特點
1:擴展性和靈活性
2:可靠性和安全性
3:可移植性
4:分布式計算

微內核結構的主要問題是性能問題,因為需要頻繁地在核心態和用戶態之間進行切換,操作系統的執行開銷較大。為了改善運行效率,可以將那些頻繁使用的系統服務移回內核,從而保證系統性能

內核

不同于虛擬機克隆真實機器,另一種策略是對機器分區,給每個用戶整個資源的一個子集。在底層中,一種稱為外核的程序在內核態中運行。它的任務是為虛擬機分配資源。

外核機制的優點是減少了映射層

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

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

相關文章

如何通過CSS選擇器選擇一個元素的子元素?如何選擇第一個子元素和最后一個子元素?

聚沙成塔每天進步一點點 ? 專欄簡介? 選擇一個元素的子元素? 選擇第一個子元素和最后一個子元素? 注意事項? 寫在最后 ? 專欄簡介 前端入門之旅:探索Web開發的奇妙世界 記得點擊上方或者右側鏈接訂閱本專欄哦 幾何帶你啟航前端之旅 歡迎來到前端入門之旅&…

線程池,以及線程池的實現以及面試常問的問題,工廠模式,常見的鎖策略(面試常考,要了解,不行就背)

一、💛 線程池的基本介紹 內存池,進程池,連接池,常量池,這些池子概念上都是一樣的~~ 如果我們需要頻繁的創建銷毀線程,此時創建銷毀的成本就不能忽視了,因此就可以使用線…

Java中使用instanceof判斷對象類型

記錄&#xff1a;470 場景&#xff1a;Java中使用instanceof判斷對象類型。例如在解析JSON字符串轉換為指定類型時&#xff0c;先判斷類型&#xff0c;再定向轉換。在List<Object>中遍歷Object時&#xff0c;先判斷類型&#xff0c;再定向轉換。 版本&#xff1a;JDK 1…

Redis系列(一):深入了解Redis數據類型和底層數據結構

Redis有以下幾種常用的數據類型&#xff1a; redis數據是如何組織的 為了實現從鍵到值的快速訪問&#xff0c;Redis 使用了一個哈希表來保存所有鍵值對。 Redis全局哈希表&#xff08;Global Hash Table&#xff09;是指在Redis數據庫內部用于存儲所有鍵值對的主要數據結構。…

安卓13不再支持PPTP怎么辦?新的連接解決方案分享

隨著Android 13的發布&#xff0c;我們迎來了一個令人興奮的新品時刻。然而&#xff0c;對于一些用戶而言&#xff0c;這也意味著必須面對一個重要的問題&#xff1a;Android 13不再支持PPTP協議。如果你是一個習慣使用PPTP協議來連接換地址的用戶&#xff0c;那么你可能需要重…

C++ 泛型編程:函數模板

文章目錄 前言一、什么是泛型編程二、函數模板三、函數模板的使用四、多參數函數模板五&#xff0c;示例代碼&#xff1a;總結 前言 當需要編寫通用的代碼以處理不同類型的數據時&#xff0c;C 中的函數模板是一個很有用的工具。函數模板允許我們編寫一個通用的函數定義&#…

Vue day02 Computed和Watch

1.事件綁定 可以用 v-on 指令監聽DOM 事件&#xff0c;并在觸發時運行一些 JavaScript 代碼。v-on 還可以接收一個需要調用的方法名稱。 <button v-on:click"handler">good</button> methods: { handler: function (event) { if (event) { alert(event.t…

接口測試之Jmeter+Ant+Jenkins接口自動化測試平臺

平臺簡介 一個完整的接口自動化測試平臺需要支持接口的自動執行&#xff0c;自動生成測試報告&#xff0c;以及持續集成。Jmeter支持接口的測試&#xff0c;Ant支持自動構建&#xff0c;而Jenkins支持持續集成&#xff0c;所以三者組合在一起可以構成一個功能完善的接口自動化…

BOLT- 識別和優化熱門的基本塊

在BOLT中&#xff0c;識別和優化熱門的基本塊之所以關鍵&#xff0c;是因為BOLT的主要目標是優化程序以更好地利用硬件特性&#xff0c;特別是指令緩存&#xff08;ICache&#xff09;。以下是BOLT如何識別和優化熱門基本塊的流程&#xff1a; 收集性能數據: BOLT開始的時候并不…

idea - 刷新 Git 分支數據 / 命令刷新 Git 分支數據

一、idea - 刷新 Git 分支數據 idea 找到 fetch 選項&#xff0c;重新獲取分支數據 二、命令刷新 Git 分支數據 git fetch參考鏈接 1. 遠程Gitlab新建的分支在IDEA里不顯示

jxls導出問題

![請添加圖片描述](https://img-blog.csdnimg.cn/bc74c4207818491c93b75e19b3333451.png 為什么最后導出的文件還是按原樣導出啊&#xff0c;沒有填充數據 ![在這里插入圖片描述](https://img-blog.csdnimg.cn/d4500b9a98c042f6b64a5d0650071303.png

qt多線程使用方式

有5個方式&#xff1a;可以參考這個博客&#xff1a;Qt 中開啟線程的五種方式_qt 線程_lucky-billy的博客-CSDN博客 注&#xff1a;為了實現更加靈活的線程管理&#xff08;因為這5種都有一些不方便之處&#xff1a;QThread需要子類化且不能傳參&#xff0c;moveToThread不能傳…

【leetcode】459. 重復的子字符串(easy)

給定一個非空的字符串 s &#xff0c;檢查是否可以通過由它的一個子串重復多次構成。 示例 1: 輸入: s “abab” 輸出: true 解釋: 可由子串 “ab” 重復兩次構成。 示例 2: 輸入: s “aba” 輸出: false 示例 3: 輸入: s “abcabcabcabc” 輸出: true 解釋: 可由子串 “ab…

ChatGPT等人工智能編寫文章的內容今后將成為常態

BuzzFeed股價上漲200%可能標志著“轉向人工智能”媒體趨勢的開始。 周四&#xff0c;一份內部備忘錄被華爾街日報透露BuzzFeed正計劃使用ChatGPT聊天機器人-風格文本合成技術來自OpenAI&#xff0c;用于創建個性化盤問和將來可能的其他內容。消息傳出后&#xff0c;BuzzFeed的…

ubuntu 20.04 RK3568網絡的優先級設置

1、背景 硬件使用RK3568 CPU&#xff0c;操作系統采用ubuntu 20.04 Lxqt桌面的版本。硬件上具有一個有線以太網卡&#xff0c;一個wifi網卡&#xff0c;一個5G網卡。由于操作系統默認的網絡優先級為有線網卡的最高&#xff0c;5G網卡次之。在一個業務應用中需要5G網卡的連接外…

文本三劍客之grep命令和awk命令 1.0 版本

grep awk 1.grep命令1.1 基本格式1.2 常用選項 2.awk命令2.1 awk工作原理2.2 awk命令格式2.3 awk常用內置變量 1.grep命令 1.1 基本格式 grep [選項]… 查找條件 目標文件1.2 常用選項 選項功能 -m [ x ]匹配x次 后停止,x為具體數字-v取反 -i忽略字符大小寫 -n顯示匹配的 …

Dynamic CRM開發 - 實體介紹

實體簡介 在CRM中,實體(Entity)是數據的基本載體,也是構建業務邏輯網絡的基礎節點。 實體可以理解為數據庫中的一張表(實體中的字段對應數據庫表的字段),比如創建一個實體存儲客戶信息,創建一個實體存儲產品信息,產品實體里可以創建一個查找類型的字段(類似表的外鍵)…

【Express.js】集成RabbitMQ

集成RabbitMQ 本節我們介紹在 express.js 中集成 rabbitmq. RabbitMQ 是一個消息隊列中間件&#xff0c;常用于請求削峰&#xff0c;事務的隊列處理&#xff0c;事件訂閱機制的實現等。 準備工作 創建一個 express.js 項目&#xff08;本文基于evp-express-cli&#xff09;…

【三維編輯】Seal-3D:基于NeRF的交互式像素級編輯

文章目錄 摘要一、引言二、方法2.1.基于nerf的編輯問題概述2.2.編輯指導生成2.3.即時預覽的兩階段學生訓練 三、實驗四、代碼總結 項目主頁: https://windingwind.github.io/seal-3d/ 代碼&#xff1a;https://github.com/windingwind/seal-3d/ 論文: https://arxiv.org/pdf/23…

創建一個Spring Boot項目

安裝所需軟件&#xff1a;首先確保你的計算機上已經安裝了Java JDK和Maven構建工具。你可以從官方網站下載并按照說明進行安裝。 創建一個新的Spring Boot項目&#xff1a;在命令行或終端中使用Maven命令創建一個新的Spring Boot項目。執行以下命令&#xff1a;mvn archetype:…