内核

核心(英语:Kernel,又称内核)在计算机科学中是一个用来管理软体发出的资料I/O(输入与输出)要求的电脑程式,将这些要求转译为资料处理的指令并交由中央处理器(CPU)及电脑中其他电子元件进行处理,是现代作业系统中最基本的部分。它是为众多应用程式提供对电脑硬体的安全存取的一部分软体,这种存取是有限的,并由核心决定一个程式在什么时候对某部分硬体操作多长时间。直接对硬体操作是非常复杂的。所以核心通常提供一种硬体抽象的方法,来完成这些操作。有了这个,通过行程间通讯机制及系统呼叫,应用行程可间接控制所需的硬体资源(特别是处理器及IO装置)。
严格地说,核心并不是电脑系统中必要的组成部分。有些程式可以直接地被调入电脑中执行;这样的设计,说明了设计者不希望提供任何硬体抽象和作业系统的支援;它常见于早期电脑系统的设计中。但随着电脑技术的发展,最终,一些辅助性程式,例如程式载入器和除错器,被设计到机器核心当中,或者写入在唯读记忆体里。这些变化发生时,作业系统核心的概念就渐渐明晰起来了。
分类
核心在设计上可以概分为宏核心与微核心两大架构。在宏核心与微核心之间,进行妥协的设计,这称为混合核心,但是混合核心能否被列为第三大架构,目前仍然有争议。另外与微核心相似,有一种极端的设计方式,称为外核心,仍还在研究阶段,没有任何一个流行的作业系统采用了这种设计。
单核心

单核心结构在硬体之上,定义了一个高阶的抽象介面,应用一组原语(或者叫系统呼叫(System call))来实现作业系统的功能,例如行程管理,档案系统,和储存管理等等,这些功能由多个执行在核心态的模组来完成。
尽管每一个模组都是单独地服务这些操作,核心代码是高度整合的,而且难以编写正确。因为所有的模组都在同一个核心空间上执行,一个很小的bug都会使整个系统崩溃。然而,如果开发顺利,单核心结构就可以从执行效率上得到好处。
很多现代的单核心结构核心,如Linux和FreeBSD核心,能够在执行时将模组调入执行,这就可以使扩充核心的功能变得更简单,也可以使核心的核心部分变得更简洁。
单核心结构的例子:
微核心

微核心结构由一个非常简单的硬体抽象层和一组比较关键的原语或系统呼叫组成;这些原语,仅仅包括了建立一个系统必需的几个部分;如执行绪管理,位址空间和行程间通讯等。
微核的目标是将系统服务的实现和系统的基本操作规则分离开来。例如,行程的输入/输出锁定服务可以由执行在微核之外的一个服务组件来提供。这些非常模组化的使用者态伺服器用于完成作业系统中比较进阶的操作,这样的设计使核心中最核心的部分的设计更简单。一个服务组件的失效并不会导致整个系统的崩溃,核心需要做的,仅仅是重新启动这个组件,而不必影响其它的部分。
微核心将许多OS服务放入分离的行程,如档案系统,装置驱动程式,而行程通过讯息传递呼叫OS服务。微核心结构必然是多执行绪的,第一代微核心,在核心提供了较多的服务,因此被称为'胖微核心',它的典型代表是Mach,它是Mac OS X的核心,可以说,蒸蒸日上。第二代微核心只提供最基本的OS服务,典型的OS是QNX,QNX在黑莓手机BlackBerry 10系统中被采用。
微核心结构的例子:
单核心与微核心的比较
单核心结构是非常有吸引力的一种设计,由于在同一个位址空间上实现所有复杂的低阶作业系统控制代码的效率会比在不同位址空间上实现更高些。
20世纪90年代初,单核心结构被认为是过时的。把Linux设计成为单核心结构而不是微核心,引起了无数的争议(参见塔能鲍姆-林纳斯辩论)。
现在,单核结构正倾向于设计不容易出错,所以它的发展会比微核心结构更迅速些。两个阵营中都有成功的案例。微核经常被用于机器人和医疗器械的嵌入式设计中,因为它的系统的关键部分都处在相互分开的,被保护的储存空间中。这对於单核设计来说是不可能的,就算它采用了执行时载入模组的方式。
尽管Mach是众所周知的多用途的微核心,人们还是开发了除此之外的几个微核心。L3是一个演示性的核心,只是为了证明微核心设计并不总是低执行速度。它的后续版本L4,甚至可以将Linux核心作为它的一个行程,执行在单独的位址空间。
QNX是一个从20世纪80年代,就开始设计的微核心系统。它比Mach更接近微核心的理念。它可以被用于一些特殊的领域;在这些情况下,由于软体错误,导致系统失效是不允许的。例如太空梭上的机械手,还有研磨望远镜镜片的机器,一点点失误就会导致上千美元的损失。
很多人相信,由于Mach不能够解决一些提出微核心理论时针对的问题,所以微核心技术毫无用处。Mach的爱好者表明这是非常狭隘的观点,但遗憾的是似乎所有人都开始接受这种观点。
混合核心

混合核心的设计理念来自微核心,只不过它让一些微核结构执行在使用者空间的代码执行在核心空间,这样让核心的执行效率更高些。这是一种妥协做法,微软视窗就是一个典型的例子。另外还有XNU,执行在苹果Mac OS X上的核心,也是一个混合核心。林纳斯·托瓦兹认为混合核心这种分类只是一种市场行销手法,因为它的架构实作与运作方式接近于宏核心。
混合核心的例子:
- 自Windows NT之后所有基于NT技术的微软视窗作业系统
- Mac OS X(使用Mach核心来实作)
- BeOS核心
- DragonFly BSD
- ReactOS核心
- XNU(使用Mach核心)
外核心
外核心系统,也被称为纵向结构作业系统,是一种比较极端的设计方法。
它的设计理念是让使用者程式的设计者来决定硬体介面的设计。外核心本身非常的小,它通常只负责系统保护和系统资源复用相关的服务。
传统的核心设计(包括单核和微核)都对硬体作了抽象,把硬体资源或装置驱动程式都隐藏在硬体抽象层下。比方说,在这些系统中,如果分配一段物理储存,应用程式并不知道它的实际位置。
而外核的目标就是让应用程式直接请求一块特定的物理空间,一块特定的磁碟块等等。系统本身只保证被请求的资源当前是空闲的,应用程式就允许直接存取它。既然外核系统只提供了比较低阶的硬体操作,而没有像其他系统一样提供进阶的硬体抽象,那么就需要增加额外的执行库支援。这些执行库执行在外核之上,给使用者程式提供了完整的功能。
理论上,这种设计可以让各种作业系统执行在一个外核之上,如Windows和Unix。并且设计人员可以根据执行效率调整系统的各部分功能。
现在,外核设计还停留在研究阶段,没有任何一个商业系统采用了这种设计。几种概念上的作业系统正在被开发,如剑桥大学的Nemesis,格拉斯哥大学的Citrix系统和瑞士电脑科学院的一套系统。麻省理工学院也在进行着这类研究。
参考文献
参见
|
#
- 360 OS
- 86-DOS
- A/UX
- A20总线
- AOKP
- AliOS
- AlmaLinux
- Alpine Linux
- AmigaOS
- AmigaOS 4
- Android
- Android 12
- Android 13
- Android Donut
- Android Eclair
- Android Froyo
- Android Gingerbread
- Android Nougat
- Android-x86
- Antergos
- AntiX
- Arch Hurd
- Arch Linux
- ArchBang
- Arm (企業)
- Astra Linux
- Aurora (引擎)
- BIOS中斷呼叫
- BPF
- BackTrack
- Bada
- BeOS R5
- BlackArch Linux
- BlackBerry 10
- BlackBerry OS
- BlackBerry PlayBook OS
- Bodhi Linux
- BootX
- CBL-Mariner
- CP/M
- Calculate Linux
- CentOS
- Chakra GNU/Linux
- ChibiOS/RT
- ChromeOS
- Chromium OS
- Classic Mac OS
- Classic環境
- Clear Linux OS
- ClearOS
- ColorOS
- Commodore OS
- Container Linux
- CrDroid
- CrunchBang Linux
- CyanogenMod
- D-Bus
- DMA攻击
- DSLinux
- Damn Small Linux
- Darwin (操作系统)
- Debian
- Debian GNU/Hurd
- Debian GNU/kFreeBSD
- Debian sarge
- Debian woody
- DesktopBSD
- Devuan
- DragonFly BSD
- EComStation
- EMUI
- EasyPeasy
- Edubuntu
- Elementary OS
- Emmabuntüs
- EndeavourOS
- EulerOS
- Exokernel
- Ext4
- Ezgo
- FUSE
- Familiar Linux
- Feature OS
- Fedora (作業系統)
- Fermi Linux
- Fire OS
- Firefox OS
- Fiwix
- FlashGot
- Fluxbuntu
- Flyme
- Fork (系统调用)
- FreeDOS
- FreeRTOS
- Funtoo Linux
- Funtouch OS
- GNU
- GNU GRUB
- GNU Hurd
- GNU Mach
- GNU計劃
- GNewSense
- GOS
- Gentoo Linux
- GhostBSD
- GoboLinux
- Gobuntu
- Google Fuchsia
- Grml
- HP-UX
- Haiku
- Hyperbola GNU/Linux-libre
- IBM AIX
- IBM PC DOS
- INTEGRITY (操作系统)
- IOS
- IOS 10
- IOS 11
- IOS 12
- IOS 13
- IOS 14
- IOS 15
- IOS 16
- IOS 4
- IOS 5
- IOS 6
- IOS 7
- IOS 8
- IOS 9
- IPadOS
- IPadOS 14
- IPadOS 15
- IPadOS 16
- IPhone OS 1
- IPhone OS 2
- IPhone OS 3
- IPodLinux
- IRIX
- Ifconfig
- Illumos
- Inferno (网站服务)
- Iproute2
- JX
- Jslinux
- KDE neon
- KaiOS
- Kali Linux
- Kali NetHunter
- KasperskyOS
- Kdump
- Kernfs (Linux)
- Kexec
- Kill (命令)
- Knoppix
- KolibriOS
- Korora
- Kqueue
- Ksplice
- Kubuntu
- LEDE
- LiMux
- Linaro
- LineageOS
- Linpus Linux
- Linspire
- Linux
- Linux From Scratch
- Linux Lite
- Linux Mint
- Linux-libre
- LinuxBBQ
- Linux兼容内核
- Linux内核版本历史
- Linux发行版
- Linux启动进程
- Loongnix
- Lubuntu
- M0n0wall
- MEPIS
- MINIX
- MIUI
- MS-DOS 6.22
- MSDOS.SYS
- MX Linux
- Mac OS 8
- Mac OS 9
- Mac OS X Leopard
- Mac OS X Lion
- Mac OS X Panther
- Mac OS X Server 1.0
- Mac OS X Snow Leopard
- Mac OS X Tiger
- Mac OS X v10.0
- Mac OS X v10.1
- Mac OS X v10.2
- Mac OS X公開測試版
- Mac Pro
- MacOS
- MacOS Big Sur
- MacOS Catalina
- MacOS High Sierra
- MacOS Mojave
- MacOS Monterey
- MacOS Server
- MacOS Sierra
- MacOS Ventura
- Maemo
- Mageia
- Magnussoft ZETA
- Mandriva Linux
- Manjaro Linux
- Maple
- MeeGo
- MenuetOS
- Mer
- Microsoft Windows
- MidnightBSD
- Mobilinux
- Moblin
- MuLinux
- Multics
- NOI Linux
- NeXTSTEP
- NetWare
- Nexenta OS
- Nouveau
- Nova (作業系統)
- Nucleus RTOS
- NuttX
- OPNsense
- OPhone
- OS X El Capitan
- OS X Mavericks
- OS X Mountain Lion
- OS X Yosemite
- OS/2
- OmniROM
- Open client
- OpenELEC
- OpenIndiana
- OpenMandriva Lx
- OpenMediaVault
- OpenSUSE
- OpenServer
- OpenSolaris
- OpenWrt
- Openmoko Linux
- Oracle Linux
- Origin OS
- PCLinuxOS
- PPSSPP
- Parabola GNU/Linux-libre
- Paranoid Android (软件)
- Parrot OS
- Parted Magic
- Pentoo
- Peppermint Linux OS
- Phoenix OS
- PixelExperience
- PlayStation 3系统软件
- PlayStation 4系统软件
- PlayStation Vita系统软件
- PostmarketOS
- Procfs
- Protothreads
- Proxmox VE
- Puppy Linux
- QUIC
- Qomo Linux
- Qt Extended
- Qt Extended Improved
- Qubes OS
- RAM disk
- RIOT (作業系統)
- RT-Thread
- Raptor Lake
- Raspberry Pi OS
- Readahead
- Red Hat Enterprise Linux
- Red Hat Linux
- Redox
- Remix OS
- Replicant
- Revolution For DS
- Rhapsody
- Rocky Linux
- Rootkit
- Rosetta
- SUSE Linux Enterprise
- Sabayon Linux
- Sailfish OS
- Scientific Linux
- Singularity
- Skolelinux
- SkyOS
- Slackware
- Slax
- SliTaz
- SmartOS
- Smartisan OS
- Solus
- Splashtop
- Stackless Python
- StartOS
- SteamOS
- SunOS
- Syllable Desktop
- Symbian
- Sync (Unix)
- System 1
- System.map
- TRON
- Tails (操作系统)
- Tcpdump
- TeX Live
- TempleOS
- Tencent Messenger
- ThreadX
- Time (Unix)
- Tiny Core Linux
- TinyOS
- Tizen
- TockOS
- Trisquel
- TrueOS
- TurboLinux
- Tuxera
- TvOS
- U-lite
- UNetbootin
- Ubuntu
- Ubuntu Budgie
- Ubuntu GNOME
- Ubuntu MATE
- Ubuntu Netbook Edition
- Ubuntu Studio
- Ubuntu TV
- Ubuntu Touch
- Ubuntu for Android
- Unix信号
- Unix守護進程列表
- VMware ESXi
- VnStat
- Void Linux
- VxD
- VxWorks
- Wear OS
- WebOS
- Windows 1.0
- Windows 10
- Windows 10 行動裝置版
- Windows 11
- Windows 2.0
- Windows 2000
- Windows 7
- Windows 8
- Windows 8.1
- Windows 95
- Windows 98
- Windows 9x
- Windows CE 5.0
- Windows Embedded Automotive 7
- Windows Embedded CE 6.0
- Windows Embedded Compact
- Windows Embedded Compact 7
- Windows Embedded Industry
- Windows Essential Business Server
- Windows Home Server
- Windows IoT
- Windows Me
- Windows Mobile
- Windows NT
- Windows NT 3.1
- Windows NT 3.5
- Windows NT 3.51
- Windows NT 4.0
- Windows NT 6.2
- Windows NT体系结构
- Windows Neptune
- Windows Odyssey
- Windows Phone
- Windows Phone 8
- Windows Phone 8.1
- Windows Phone版本历史
- Windows RT
- Windows Server 2003
- Windows Server 2008
- Windows Server 2008 R2
- Windows Server 2012
- Windows Server 2016
- Windows Server 2019
- Windows Server 2022
- Windows Vista
- Windows XP
- Windows XP Professional x64 Edition
- Windows預先安裝環境
- WoW64
- X86-64
- Xandros
- Xenix
- Xubuntu
- Xv6
- X視窗系統
- Yellow Dog Linux
- Z/OS
- Zephyr (操作系统)
- ZevenOS
- Zorin OS
- ΜClinux
- 一般保护错误
- 三星Knox
- 中国操作系统
- 中标麒麟
- 代码签名
- 任务状态段
- 优麒麟
- 会话管理子系统
- 位址空間配置隨機載入
- 作業系統層虛擬化
- 使用者空間
- 倚天中文系統
- 入侵预防系统
- 內核函數
- 兼容层
- 内存泄漏
- 内核补丁保护
- 内核错误
- 写入
- 分区类型
- 分布式操作系统
- 刷机
- 動態裝載
- 哲学家就餐问题
- 啟動程式
- 图形执行管理器
- 圖形處理器
- 地球中微子
- 地球空洞说
- 地磁场
- 埃格斯特朗套件
- 堆疊溢位
- 塔能鮑姆-托瓦茲辯論
- 多工即時執行系統
- 子进程
- 安全注意键
- 实时操作系统
- 專有設備驅動程序
- 就地执行
- 开源操作系统比较
- 强制访问控制
- 微軟作業系統列表
- 性能监视器
- 手册页
- 搜狗高速瀏覽器
- 整塊性核心
- 文件描述符
- 文件系统层次结构标准
- 无嘀嗒内核
- 无畏契约
- 时间片
- 显示模式设定
- 木卫三
- 本地过程调用
- 树莓派
- 核
- 核心
- 格利泽581b
- 極樂世界 (電影)
- 殼層
- 深度操作系统
- 混合核心
- 用户ID
- 盘古越狱
- 監督程式
- 硬體抽象層
- 科能
- 第二代程式語言
- 紅旗Linux
- 紅星作業系統
- 纖程
- 线程
- 终端 (macOS)
- 统一操作系统
- 行程控制表
- 计算机集群
- 诺基亚Asha平台
- 诺基亚X软件平台
- 貝爾實驗室九號計畫
- 超微内核
- 轻量级进程
- 进程ID
- 铁
- 银河麒麟
- 链表
- 長期支援
- 風暴殭屍網路
- 魔趣
- 鸿蒙 (操作系统)
- 龙芯中科