| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> 操作系统——(1) Linux内核 vs Windows内核 -> 正文阅读 |
|
[系统运维]操作系统——(1) Linux内核 vs Windows内核 |
1. 内核计算机是由各种外部硬件设备组成的,如果每个应用都要和 这些硬件设备 对接通信协议,那编写应用程序的工作 将会非常繁杂。因此,内核以中间人的身份 作为应用连接硬件设备的桥梁,应用程序只需关心与内核交互,而无需关心硬件的细节。 现代操作系统中,内核?般会提供 4个基本能力:
问题:内核是怎么工作的? 内核有很高的权限,可以控制 cpu、内存、硬盘等硬件;而应用程序的权限很小。因此,大多数操作系统 将内存分为两个区域:
用户空间的代码只能访问一个 局部的内存空间;内核空间的代码可以访问 所有的内存空间。因此,当程序使用 用户空间时,程序在用户态执行;当程序使用 内核空间时,程序在内核态执行。 应用程序进入内核空间 需要通过系统调用。过程如下图: 内核程序执行在 内核态,用户程序执行在 用户态。过程:
2. Linux 的设计Linux内核设计的理念 主要有以下几点:
(1)?MutiTask: MutiTask 的意思是多任务,代表着 Linux是?个多任务的操作系统。 多任务意味着 可以有多个任务同时执行,这里的"同时"可以是 并发或并行:
(2) SMP: SMP 的意思是对称多处理,代表着 每个CPU的地位是相等的,对资源的使用权限 也是相同的,多个CPU共享同?个内存,每个CPU都可以 访问完整的内存和硬件资源。 这个特点决定了?Linux操作系统不会有 某个CPU单独服务应用程序或内核程序,而是每个程序都可以被分配到 任意一个CPU上被执行。 (3) ELF: ELF 的意思是可执行文件链接格式,它是Linux操作系统中 可执行文件的存储格式。ELF的结构如下图: ELF 将文件分成?个个分段,每?个段都有自己的作用。具体每个段的作用 可以去看《程序员的自我修养——链接、装载和库》这本书。
问题:ELF文件 是如何生成的? 编写的代码首先通过?编译器?编译成汇编代码;接着通过?汇编器?汇编成目标代码,也就是目标?件;最后通过?链接器?将多个目标文件以及调用的各种函数库 链接起来,形成?个可执行文件,也就是ELF文件。 问题:ELF文件 是如何被执行的? (4) Monolithic Kernel: Monolithic Kernel 的意思是宏内核,Linux内核架构 就是宏内核,意味着 Linux的内核是?个完整的可执行程序,且拥有最高的权限。 宏内核的特征:系统内核中的所有模块?(比如 进程调度、内存管理、文件系统、设备驱动等),都运行在内核态。 但是,Linux也实现了 动态加载内核模块的功能。例如:大部分设备驱动是以 可加载模块的形式 存在的,与内核中的其它模块 解藕,使得驱动开发和驱动加载 更为方便、灵活。 与宏内核相对的是?微内核。微内核架构的内核 只保留了最基本的功能?(如 进程调度、虚拟机内存、中断等),而将一些应用放入到 用户空间?(如 驱动程序、文件系统等)。这样 服务与服务之间是隔离的,单个服务出现故障或者完全攻击 也不会导致整个操作系统挂掉,从而提高了 操作系统的稳定性和可靠性。
还有?种内核叫混合类型内核。它的架构 与微内核类似,内核中有?个 最小版本的内核,其他模块在这个内核的基础上搭建;最后的实现 与宏内核类似,即 将整个内核做成一个 完整的程序,大部分服务都在内核中,就像是 以宏内核的方式 包裹着?个微内核。 3. Windows 的设计Windows 7、Windows 10 使用的内核是?Windows NT(NT全称为 New Technology) Windows和Linux都同样支持 MutiTask 和 SMP,但Window的内核设计 是混合型内核。从上图中可以看到,内核中有?个 MicroKernel模块,这就是最小版本的内核,而整个内核实现 是?个完整的程序,其中包含了大量的模块。 Windows的可执行文件的格式 与Linux不同,所以这两个系统的可执行文件 无法在对方上运行。Windows的可执行文件格式 叫PE,也称为可移植执行文件,扩展名通常是?.exe 、 .dll 、 .sys?等。 PE的结构 与ELF的结构 有?点相似。PE的结构如下图: |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 11:59:29- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |