1. 程式人生 > >1.4.1 大核心和微核心

1.4.1 大核心和微核心

作業系統的體 繫結構是一個開放的問題。作業系統在核心態威應用程式提供公共的服務,那麼作業系統在核心態應該提供什麼服務,怎樣提供服務?有關這個 問題的回答,形成了兩種主要的體系結構:大核心與微核心。

大核心系統將作業系統的主要內容模組都作為一個緊密聯絡的整體執行在核心態,從而為應用提供高效能的系統服務。因為各管理模組之間共享資訊,能有效 利用相互之間的有效特性, 所以具有無可比擬的效能優勢。

但隨著體系結構和應用需求的不斷髮展,需要作業系統提供的服務越來越多,而且介面形式越來越複雜,作業系統的設計模式也急劇增長,作業系統也面臨著“軟體危機”困境。為此,作業系統設計人員試圖按照複雜性、時間常數、抽象級別等因素。將 作業系統核心分為基本程序管理、 虛存、I/O與裝置管理、IPC、檔案系統等幾個層次,繼而定義層次之間的服務結構,提高作業系統核心設計上的模組化。但是由於層次之間的 互動關係錯綜複雜,定義清晰的層次介面非常困難,複雜的互動關係也使得層次之間的界限極其模糊。

為解決作業系統的核心程式碼難以維護的問題,於是提高了微核心的體系結構。它將核心中最基本的功能(如程序管理)保留在核心,而將那些不需要再核心態執行的功能移到使用者態執行,從而降低了核心的設計複雜性。而那些移 除核心的作業系統程式碼根據分層的原則被劃分為若干服務程式,他們的執行相互獨立,互動則都藉助於微核心進行通訊。

微核心有效地分離了核心與服務、服務與服務,使它們之間的介面更加清晰,維護的代價大大降低,各部分可以獨立地優化和演進,從而保證了作業系統的可靠性。

微核心結構的最大問題是效能問題,因為需要頻繁地在核心態和使用者態之間進行切換,作業系統的執行開銷偏大,因此有的作業系統將那些頻繁使用的系統服務又移回了核心, 從而保證系統性能。但是有相當多的實驗資料表明,體系結構不是引起效能下降的主要因素,體系結構帶來的效能提升足以彌補切換開銷帶來的缺陷。為了減少切換開銷,也有人提出將系統服務作為執行庫連結到使用者程式的一種解決方案,這樣的體系結構稱為庫作業系統。

相關推薦

1.4.1 核心核心

作業系統的體 繫結構是一個開放的問題。作業系統在核心態威應用程式提供公共的服務,那麼作業系統在核心態應該提供什麼服務,怎樣提供服務?有關這個 問題的回答,形成了兩種主要的體系結構:大核心與微核心。 大核心系統將作業系統的主要內容模組都作為一個緊密聯絡的整體執行在核心態,從而

作業系統單體核心核心的區別

單體核心:大核心,將OS的全部功能都做進核心中,包括排程、檔案系統、網路、裝置驅動器、儲存管理。比如裝置驅動管理、資源分配、程序間通訊、程序間切換管理、檔案系統、儲存管理、網路等。單體核心是指

用forwhile循環求e的值[e=1+1/1!+1/2!+1/3!+1/4!+1/5!+...+1/n!]

主函數 int class urn log emp art print tracking /*編敲代碼,依據下面公式求e的值。要求用兩種方法計算: 1)for循環。計算前50項 2)while循環,直至最後一項的值小於10-4 e=1+1/1!+1/2!+1/

第四章—執行緒、對稱多處理核心【計算機作業系統】

4.1 表3.5列出了在一個沒有執行緒的作業系統中程序控制塊的基本元素。對於多執行緒系統,這些元素中那些可能屬於執行緒控制塊,那些可能屬於程序控制塊? 這對於不同的系統來說通常是不同的,但一般來說,程序是資源的所有者,而每個執行緒都有它自己的執行狀態。關於表3.5中的每一項的一些結論如

noip初賽整理1.4 & 1.5(軟體系統語言)

計算機軟體系統                                                                          軟體系統                                  系統軟體      

四軸飛行器1.4 姿態解算Matlab實時姿態顯示

MPU6050資料讀取出來後,經過一個星期的努力,姿態解算和在matlab上的實時顯示姿態終於完成了。 1:完成matlab的串列埠,並且實時通過波形顯示資料 2:新增RTT檢視CPU使用率的擴充套件功能,MPU6050讀取資料的優化 3:四元素表示的座標變

演算法9-1:最最小切割問題

最小切割問題 首先介紹什麼是切割。切割就是將一張圖中的頂點分成兩部分A和B。 接下來介紹一下什麼是容量。容量是A區到B區所有的邊權重之和。 最小切割就是求一張圖中使得容量最小的切割方式。 最小切割的應用 最小切割在國家的拆分時會用到。著名的蘇聯解體事件就是

程式設計作業50頁3題 分別使用 do-while for 迴圈計算1+1/2!+1/3!+1/4!...+1/20!

編碼如下  public class text{ public static void main(String args[]){ double i,sum=0,a=1; System.out.println("使用for迴圈計算1+1/2!

第一章 1.4作業系統作業排程程序排程

1.作業系統兩級排程 前言 包括長期排程和短期排程。長期排程是作業排程,以小時為單位,短期排程是程序排程,以毫秒為單位。現代作業系統不產生長期不被排程和經常被排程的程序。程序排程是作業系統對程序就緒佇列的排程。高效能運算機中的任務排程是任務怎樣劃分,哪一個任務安排到哪一個處

核心巨集核心的區別(短小、精悍)

微核心:提供作業系統核心功能的核心的精簡版本,它設計成在很小的記憶體空間內增加移植性,提供模組化設計,以使使用者安裝不同的介面與,如DOS、Workplace OS、Workplace Unix等。IBM、Microsoft等作業系統都採用了這一研究成果的優點。(百度百科)

核心核心

      作業系統核心可能是微核心,也可能是單核心(後者有時稱之為巨集核心Macrokernel)。按照類似封裝的形式,這些術語定義如下:      微核心(Microkernelkernel)――在微核心中,大部分核心都作為單獨的程序在特權狀態下執行,他們通過訊息傳遞進行通訊。在典型情況下,每個概念模組都

Spring Cloud實戰 | 第十篇 :Spring Cloud + Seata 1.4.1 + Nacos1.4.0 整合實現服務架構中逃不掉的話題分散式事務

Seata分散式事務線上體驗地址: [www.youlai.store](http://www.youlai.store) ![](https://i.loli.net/2021/01/14/ACcKBaGte5s7Wy9.png) 本篇完整原始碼地址:https://github.com/hxrui/y

Spark SQL and DataFrame Guide(1.4.1)——之DataFrames

ati been -m displays txt -a 版本 ava form Spark SQL是處理結構化數據的Spark模塊。它提供了DataFrames這樣的編程抽象。同一時候也能夠作為分布式SQL查詢引擎使用。 DataFrames D

偶數求1/2+1/4+...+1/n奇數1/1+1/3+...+1/n

exti blank blog pan targe ava href spa tin 題目:編寫一個函數,輸入n為偶數時,調用函數求1/2+1/4+...+1/n,當輸入n為奇數時,調用函數1/1+1/3+...+1/n Scanner scanner

計算1/1-1/2+1/3-1/4+1/5+……+1/99-1/100的值

看到這個式子首先總結規律: 1.每一項都是分數 2.分子都為1,分母依次遞增至100 3.分母的奇數項為正,偶數項為負 思路: 1.定義一個sum 2.建立一個迴圈,再判斷是否是奇數,如果是奇數往sum上加,否則(偶數)往sum上減 3.列印sum 程式碼如下: #include <s

易學筆記-計算機底層-第1章:計算機系統漫遊/1.4 處理器處理記憶體中的指令/1.4.1 系統的硬體組成

系統的硬體組成 示意圖: 匯流排: 第6章 系統配置與效能評價/6.3 輸入輸出系統/6.3.2 匯流排 概念:電晶體,負責在各個部件間傳遞資訊 被設計成傳遞定長的位元組快,比如4個位元組或者8個位元組,也就是32位或者64位 I

python筆記(1.4-1.5)

1.4 函式的變數區域性變數和全域性變數 Python中的任何變數都有特定的作用域 在函式中定義的變數一般只能在該函式內部使用,這些只能在程式的特定部分使用的變數我們稱之為區域性變數 在一個檔案頂部定義的變數可以供檔案中的任何函式呼叫,這些可以為整個程式所使用的變數稱為全域性變數 glo

C語言——兩種方法計算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值

方法一:首先我們先觀察這個數學式子的規律,可以發現奇數項均為正數,偶數項均為負數。則我們可以利用條件語句if來判斷奇偶,最後分別對奇數項和偶數項求和。 原始碼: #include<stdio.h> #include<stdlib.h> int main() {

pow函式(數學次方)在c語言的用法,兩種編寫方法例項( 計算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值)

關於c語言裡面pow函式,下面借鑑了某位博主的一篇文章: 標頭檔案:#include <math.h> pow() 函式用來求 x 的 y 次冪(次方),x、y及函式值都是double型 ,其原型為:    double pow(double x, double y

計算1/1-1/2+1/3-1/4+1/5······+1/99-1/100的值

#include <stdio.h> #include <stdlib.h> void main() { int i, n; double num = 0.0, sum = 0.0; for (i = 1; i <= 100;i++ ) { if (i%2=