微內核

Multi tool use在資訊科學中,微内核(英语:Microkernel,μ-kernel),又稱為微核心,是一種內核的設計架構,由一群盡可能將數量最小化的軟體程式組成,它們負責提供、實作一個作業系統所需要的各種機制與功能。這些最基礎的機制,包括了底層位址空間管理,執行緒管理,與行程間通訊(IPC)。
概論
微核心的設計理念,是將系統服務的實作,與系統的基本操作規則區分開來。它實作的方式,是將核心功能模組化,劃分成幾個獨立的行程,各自運行,這些行程被稱為服務(service)。所有的服務行程,都運行在不同的位址空間。只有需要絕對特權的行程,才能在具特權的執行模式下運行,其餘的行程則在使用者空間運行。
這樣的設計,使內核中最核心的功能,設計上變的更簡單。需要特權的行程,只有基本的线程管理,内存管理和进程间通信等,這個部份,由一個簡單的硬體抽象層與關鍵的系統調用組成。其餘的服務行程,則移至使用者空間。
讓服務各自獨立,可以減少系統之間的耦合度,易於實作與除錯,也可增進可移植性。它可以避免單一組件失效,而造成整個系統崩潰,內核只需要重新啟動這個組件,不致於影響其他伺服器的功能,使系統穩定度增加。同時,作業系統也可以視需要,抽換或新增某些服務行程,使功能更有彈性。
因為所有服務行程都各自在不同位址空間運行,因此在微核心架構下,不能像集成式核心一樣直接進行函式調用。在微核心架構下,要建立一個行程間通訊機制,通過訊息傳遞的機制來讓服務行程間相互交換訊息,調用彼此的服務,以及完成同步。採用主從式架構,使得它在分散式系統中有特別的優勢,因為遠端系統與本地行程間,可以採用同一套行程間通訊機制。
但是因為行程間通訊耗費的資源與時間,比簡單的函式呼叫還多;通常又會涉及到核心空間到使用者空間的環境切換(context switch)。這使得訊息傳遞有延遲,以及傳輸量(throughput)受限的問題,因此微核心可能出現效能不佳的問題。
就程式碼數量來看,一般來說,因為功能簡化,微核心使用的程式碼比集成式核心更少,其原始碼通常小於10,000行。例如,MINIX 3的原始碼少於6,000行[1]。更少的程式碼,也代表更少的潛藏程式bug。
微核心列表
微内核结构必然是多线程的,第一代微内核,在内核提供了较多的服务,因此被称为“胖微内核”,它的典型代表是Mach,它既是GNU HURD也是Mac OS X的内核。第二代微内核只提供最基本的OS服务,典型的OS是QNX,QNX在黑莓手机BlackBerry 10系统中被采用。L4微内核系列也是著名的微核心。
變種微核心
包括Windows NT,Mac OS X等,都宣稱採用微核心架構。為了追求效能,他們將需要具備特權的服務組件放進核心空間,違反了微內核的基本設計原則,更為接近整塊性核心的設計方式。這被稱為混合核心。
相關條目
操作系统
|
---|
| 概述 | |
---|
| 内核 |
系统结构 | - Exokernel
- 混合
- 微內核
- 整塊性核心
- 尾闾内核
- 单一内核
|
---|
| 组件 | |
---|
|
---|
| 行程管理 |
概念 | - 上下文交換
- 中斷
- 行程間通訊
- 行程
- 行程控制表
- 实时操作系统
- 线程
- 分時系統
|
---|
| 调度算法 | - 多任务处理
- 固定优先级抢占
- 多级反馈队列
- 抢占式多任务处理
- 循環制
- 短进程优先
|
---|
|
---|
| 記憶體管理和資源保护 | - 总线错误
- 一般保护错误
- 記憶體保護
- 分頁
- 分级保护域
- 記憶體區段錯誤
- 虚拟内存
|
---|
| 存储访问和文件系统
| - 啟動程式
- 碎片整理
- 设备文件
- 文件属性
- Inode
- 日志
- 分区
- 虛擬檔案系統
- 虚拟磁带库
|
---|
| 操作系统列表 | - AmigaOS
- Android
- BeOS
- BSD
- Chrome OS
- CP/M
- DOS
- GNU
- Haiku
- Illumos
- iOS
- Linux
Macintosh
- MINIX
- MorphOS
- MUSIC/SP
- NOS
- NGB TVOS
- OpenVMS
- ORVYL
- OS/2
- OSv
- Pick
- QNX
- ReactOS
- RISC OS
- RSTS/E
- RSX-11
- RT-11
- Solaris
TOPS-10/TOPS-20
- TPF
- tvOS
- UNIX
- Visi On
- VM/CMS
- VS/9
- Microsoft Windows
- Xinu
- z/OS
- watchOS
|
---|
| 其他概念 | 应用程序接口(API)
- 计算机网络
硬件抽象层(HAL)
- Live CD
- Live USB
殼層(OS Shell)
命令行界面(CLI)
图形用户界面(GUI)
- TUI
- VUI
- 预启动执行环境
|
---|
|
^ The MINIX 3 Operating System. minix3.org. (原始内容存档于2012-01-22).
tF7 GLy6jRPQ,QH1NpK5N8P7r2sCQwREJ00ypCG f62gRfl,oZlRfb 3mJ6yNRYklK,HJIuK
Popular posts from this blog
Ramiro Burr's New Blog - to go back: www.ramiroburr.com From Latin rock to reggaeton, boleros to blues,Tex-Mex to Tejano, conjunto to corridos and beyond, Ramiro Burr has it covered. If you have a new CD release, a trivia question or are looking for tour info, post a message here or e-mail Ramiro directly at: musicreporter@gmail.com Top Tejano songwriter Luis Silva dead of heart attack at 64 By Ramiro Burr on October 23, 2008 8:40 AM | Permalink | Comments (12) | TrackBacks (0) UPDATE: Luis Silva Funeral Service details released Visitation 4-9 p.m. Saturday, Rosary service 6 p.m. Saturday at Porter Loring, 1101 McCullough Ave Funeral Service 10:30 a.m. Monday St. Anthony De Padua Catholic Church, Burial Service at Chapel Hills, 7735 Gibbs Sprawl Road. Porter Loring (210) 227-8221 Related New Flash: Irma Laura Lopez: long time record promoter killed in accident NewsFlash: 9:02 a.m. (New comments below) Luis Silva , one of the most well-known ...
1 I having trouble getting my ResourceDictionary.MergedDictionaries to load from app.xaml. My WPF app has a static class with a Main defined and startup object set to it. Within Main I created an instance of App and run it. The override OnStartup fires and the mainwindow.cs InitializeComponent gives the error "Message "Cannot find resource named 'MaterialDesignFloatingActionMiniAccentButton'. If I put the resources in the mainwindow.xaml everything is fine, but I wanted them to load at the app level so I they are not in each page. Any help appreciated. public partial class App protected override void OnStartup(StartupEventArgs e) base.OnStartup(e); var app = new MainWindow(); var context = new MainWindowViewModel(); app.DataContext = context; app.Show(); from the Main.. var app = new App(); app.Run(); app.xaml.. <Application x:Class="GS.Server.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:...
up vote 2 down vote favorite There is a clear pattern that show for two separate subsets (set of columns); If one value is missing in a column, values of other columns in the same subset are missing for any row. Here is a visualization of missing data My tries up until now, I used ycimpute library to learn from other values, and applied Iterforest. I noted, score of Logistic regression is so weak (0.6) and thought Iterforest might not learn enough or anyway, except from outer subset which might not be enough? for example the subset with 11 columns might learn from the other columns but not from within it's members, and the same goes for the subset with four columns. This bar plot show better quantity of missings So of course, dealing with missings is better than dropping rows because It would affect my prediction which does contain the same missings quantity relatively. Any better way to deal with these ? [EDIT] The nullity pattern is confirmed: machine-learning cor...