IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: 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,也就是进程调度的能?。
  • 管理内存,决定内存的分配和回收,也就是内存管理的能?。
  • 管理硬件设备,为进程与硬件设备之间提供通信能?,也就是硬件通信能?。
  • 提供系统调用,如果应用程序 需要运行更高权限任务的服务,那么就需要系统调用,系统调用是 用户程序与操作系统之间的接口

问题:内核是怎么工作的?

内核有很高的权限,可以控制 cpu、内存、硬盘等硬件;而应用程序的权限很小。因此,大多数操作系统 将内存分为两个区域:

  • 内核空间:这个内存空间?只有内核程序可以访问
  • 用户空间:这个内存空间?专门给应用程序使用

用户空间的代码只能访问一个 局部的内存空间;内核空间的代码可以访问 所有的内存空间。因此,当程序使用 用户空间时,程序在用户态执行;当程序使用 内核空间时,程序在内核态执行。

应用程序进入内核空间 需要通过系统调用。过程如下图:

内核程序执行在 内核态,用户程序执行在 用户态。过程:

  1. 当应用程序执行 系统调用时,会产生?个中断;
  2. 发生中断后, CPU会中断 当前正在执行的用户程序,转而跳转到 中断处理程序,也就是开始执行 内核程序;
  3. 内核程序执行完后,主动触发中断,将CPU执行权限 交还给用户程序,从而回到用户态 继续工作。

2. Linux 的设计

Linux内核设计的理念 主要有以下几点:

  • MutiTask,多任务
  • SMP,对称多处理
  • ELF,可执行文件链接格式
  • Monolithic Kernel,宏内核

(1)?MutiTask:

MutiTask 的意思是多任务,代表着 Linux是?个多任务的操作系统。

多任务意味着 可以有多个任务同时执行,这里的"同时"可以是 并发或并

  • 单核CPU:可以让每个任务 执行一小段时间 (时间片),时间到 就切换到另?个任务执行。从宏观角度看,?段时间内执行了多个任务,这被称为并发
  • 多核CPU:多个任务可以同时被 不同核心的CPU 同时执行,这被称为并行

(2) SMP:

SMP 的意思是对称多处理,代表着 每个CPU的地位是相等的,对资源的使用权限 也是相同的,多个CPU共享同?个内存,每个CPU都可以 访问完整的内存和硬件资源。

这个特点决定了?Linux操作系统不会有 某个CPU单独服务应用程序或内核程序,而是每个程序都可以被分配到 任意一个CPU上被执行
?

(3) ELF:

ELF 的意思是可执行文件链接格式,它是Linux操作系统中 可执行文件的存储格式。ELF的结构如下图:

ELF 将文件分成?个个分段,每?个段都有自己的作用。具体每个段的作用 可以去看《程序员的自我修养——链接、装载和库》这本书。
ELF文件有两种索引:

  • Program header table?中记录了?运行时所需的段
  • Section headertable?中记录了?进制文件中 各个段的首地址

问题:ELF文件 是如何生成的?

编写的代码首先通过?编译器?编译成汇编代码;接着通过?汇编器?汇编成目标代码,也就是目标?件;最后通过?链接器?将多个目标文件以及调用的各种函数库 链接起来,形成?个可执行文件,也就是ELF文件。

问题:ELF文件 是如何被执行的?
执行ELF文件时,通过?装载器?将ELF文件装载到 内存中,CPU读取 内存中的指令和数据,于是程序就被执行起来了。
?

(4) Monolithic Kernel:

Monolithic Kernel 的意思是宏内核,Linux内核架构 就是宏内核,意味着 Linux的内核是?个完整的可执行程序,且拥有最高的权限。

宏内核的特征:系统内核中的所有模块?(比如 进程调度、内存管理、文件系统、设备驱动等),都运行在内核态

但是,Linux也实现了 动态加载内核模块的功能。例如:大部分设备驱动是以 可加载模块的形式 存在的,与内核中的其它模块 解藕,使得驱动开发和驱动加载 更为方便、灵活。

与宏内核相对的是?微内核微内核架构的内核 只保留了最基本的功能?(如 进程调度、虚拟机内存、中断等),将一些应用放入到 用户空间?(如 驱动程序、文件系统等)。这样 服务与服务之间是隔离的,单个服务出现故障或者完全攻击 也不会导致整个操作系统挂掉,从而提高了 操作系统的稳定性和可靠性

  • 微内核的优点:灵活性高 易扩展、可靠性强、可移植性高。
  • 微内核的缺点:由于驱动程序 不在内核中,而且驱动程序?般会 频繁调用底层,于是驱动程序和硬件设备交互 就需要频繁切换到内核态,因此会带来性能损耗。(华为的鸿蒙操作系统的内核架构 就是微内核)

还有?种内核叫混合类型内核。它的架构 与微内核类似,内核中有?个 最小版本的内核,其他模块在这个内核的基础上搭建;最后的实现 与宏内核类似,即 将整个内核做成一个 完整的程序,大部分服务都在内核中,就像是 以宏内核的方式 包裹着?个微内核。

3. Windows 的设计

Windows 7、Windows 10 使用的内核是?Windows NT(NT全称为 New Technology)
Windows NT 的结构如下图:

Windows和Linux都同样支持 MutiTask 和 SMP,但Window的内核设计 是混合型内核。从上图中可以看到,内核中有?个 MicroKernel模块,这就是最小版本的内核,而整个内核实现 是?个完整的程序,其中包含了大量的模块。

Windows的可执行文件的格式 与Linux不同,所以这两个系统的可执行文件 无法在对方上运行。Windows的可执行文件格式 叫PE,也称为可移植执行文件,扩展名通常是?.exe 、 .dll 、 .sys?等。

PE的结构 与ELF的结构 有?点相似。PE的结构如下图:

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-08-29 09:44:38  更:2021-08-29 09:47:33 
 
开发: 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-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码