【操作系统入门到成神系列 七】Linux 内核 VS Window 内核

简介: 【操作系统入门到成神系列 七】Linux 内核 VS Window 内核

一、引言

本文参考 小林coding 的《图解操作系统》,也是我十分喜欢的一个公众号博主,为他打 call

老读者知道我之前再写 Kafka 的博文,为什么突然开始写操作系统的呢?

原因在于:

当我看到 Kafka 服务端的一些 IO 操作时,,我发现我看不懂了,了解之后发现这里 Netty 的概念。


当我尝试了解 IO 时,我发现一些内存、磁盘的交换,搞的我焦头烂额,于是,想静下心来从头开始。


当我把 小林coding 的 《图解操作系统》看完之后,我发现对操作系统的理解更上一层楼。


用一段话,作为今天的开场白:

  • 读书的根本目的,未必是解决现实问题,它更像一场心灵的抚慰。
  • 一个喜欢读书的人,可能不会记得自己读过哪些书。
  • 但是那些看过的故事、收获的感悟、浸染过的气质,
  • 就像一颗种子,会在你的身体里慢慢发芽长大,不断提升你的认知,打开你的视野。

二、内核

什么是内核呢?

我们平常组装过主机的人都知道,主机一般会有:内存、磁盘、CPU、显卡、主板 这些重要硬件构成

但有个疑问,我们的应用(QQ、微信、网页游戏)怎么与这些硬件沟通呢?

如果每一个应用都能与硬件构成联系的话,那么这样我们的系统也太累了,还些许复杂

于是,提出了一个中间人的概念:应用访问中间人,中间人去访问硬件,中间人被我们称之:内核


现代的操作系统中,我们的内核通常会提供 4 个基本能力:

  • 内存管理:决定我们内存的分配和回收
  • 进程管理:决定那个线程、进程使用 CPU,也就是进程调度的能力
  • 硬件设备管理:为进程和硬件提供通信能力
  • 提供系统调用:应用程序运行更高权限的服务,需要系统调用

内核具有很高的权限,可以控制 CPU、内存、硬盘等硬件,而应用程序具有的权限很小,绝大多数系统将内存分为了两个区域:

  • 用户态:这个内存空间专门为应用使用
  • 内核态:这个内存空间只有内核可以访问

用户空间的代码只能访问一个局部的内存空间,而内核空间的代码可以访问所有的内存空间。

当我们程序使用用户空间时,这个程序在 用户态 运行,当程序使用内核空间时,程序在 内核态 运行

用户态转变为内核态需要通过系统调用:

当应用程序执行系统调用时,会产生一个中断。发生中断后,CPU 会停止当前正在运行的用户程序,转而跳转到中断执行程序,开始执行内核程序。内核处理完之后,主动触发中断,把 CPU 执行权限交回给用户程序,回到用户态继续工作。


PS:这里对中断不熟悉的小伙伴,可以看上一篇关于中断描述的文章

三、Linux 的设计

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

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

1. MutuTask

Linux 是一个多任务的操作系统

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

  • 对于单核 CPU 来说,可以让每个任务执行一小段时间,时间到就切换到下一个任务。从宏观角度来看,一段时间内执行了多个任务,被称为并发
  • 对于多核 CPU 来说,多个任务可以同时被不同核心的 CPU 同时执行,被称为并行

2. SMP

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

3. ELF



LF 的生成:

ELF 的执行:

通过 装载器 把 ELF 文件装载到内存中,CPU 读取内存中的指令和数据,于是程序就被执行起来了

4. Monolithic Kernel

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

宏内核的特征是系统内核的所有模块,比如进程调度、内存管理、文件系统、设备驱动等,都运行在内核态。430cc72be777f80ce0226afd47f93ed5.png

四、Window 设计

当今 Windows 7、Windows 10 使用的内核叫 Windows NT。

Window 和 Linux 一样,同样支持 MutiTask 和 SMP

Window 可执行文件与 Linux 也不同,Window 可执行文件被称为:PE,称为:可移植执行文件,结构如下:


五、总结

对于内核的架构一般有这三种类型:


宏内核,包含多个模块,整个内核像一个完整的程序;

微内核,有一个最小版本的内核,一些模块和服务则由用户态管理;

混合内核,是宏内核和微内核的结合体,内核中抽象出了微内核的概念,也就是内核中会有一个小型的内核,其他模块就在这个基础上搭建,整个内核是个完整的程序;

Linux 的内核设计是采用了宏内核,Window 的内核设计则是采用了混合内核。


这两个操作系统的可执行文件格式也不一样, Linux 可执行文件格式叫作 ELF,Windows 可执行文件格式叫作 PE。





相关实践学习
CentOS 7迁移Anolis OS 7
龙蜥操作系统Anolis OS的体验。Anolis OS 7生态上和依赖管理上保持跟CentOS 7.x兼容,一键式迁移脚本centos2anolis.py。本文为您介绍如何通过AOMS迁移工具实现CentOS 7.x到Anolis OS 7的迁移。
相关文章
|
6天前
|
算法 Linux 调度
深入理解Linux操作系统的进程管理
本文旨在探讨Linux操作系统中的进程管理机制,包括进程的创建、执行、调度和终止等环节。通过对Linux内核中相关模块的分析,揭示其高效的进程管理策略,为开发者提供优化程序性能和资源利用率的参考。
25 1
|
7天前
|
安全 Linux 开发者
探索操作系统的心脏:内核与用户空间的交互
在数字世界的每一次点击和命令背后,隐藏着一个复杂而精妙的操作系统世界。本文将带你走进这个世界的核心,揭示内核与用户空间的神秘交互。通过深入浅出的解释和直观的代码示例,我们将一起理解操作系统如何协调硬件资源,管理进程和内存,以及提供文件系统服务。无论你是编程新手还是资深开发者,这篇文章都将为你打开一扇通往操作系统深层原理的大门。让我们一起开始这段旅程,探索那些支撑我们日常数字生活的技术基石吧!
19 6
|
7天前
|
安全 Linux 数据安全/隐私保护
深入Linux操作系统:文件系统和权限管理
在数字世界的海洋中,操作系统是连接用户与硬件的桥梁,而Linux作为其中的佼佼者,其文件系统和权限管理则是这座桥梁上不可或缺的结构。本文将带你探索Linux的文件系统结构,理解文件权限的重要性,并通过实际案例揭示如何有效地管理和控制这些权限。我们将一起航行在Linux的命令行海洋中,解锁文件系统的奥秘,并学习如何保护你的数据免受不必要的访问。
|
8天前
|
搜索推荐 Linux
深入理解Linux操作系统的启动过程
本文旨在揭示Linux操作系统从开机到完全启动的神秘面纱,通过逐步解析BIOS、引导加载程序、内核初始化等关键步骤,帮助读者建立对Linux启动流程的清晰认识。我们将探讨如何自定义和优化这一过程,以实现更高效、更稳定的系统运行。
|
6天前
|
存储 缓存 网络协议
Linux操作系统的内核优化与性能调优####
本文深入探讨了Linux操作系统内核的优化策略与性能调优方法,旨在为系统管理员和高级用户提供一套实用的指南。通过分析内核参数调整、文件系统选择、内存管理及网络配置等关键方面,本文揭示了如何有效提升Linux系统的稳定性和运行效率。不同于常规摘要仅概述内容的做法,本摘要直接指出文章的核心价值——提供具体可行的优化措施,助力读者实现系统性能的飞跃。 ####
|
7天前
|
缓存 监控 网络协议
Linux操作系统的内核优化与实践####
本文旨在探讨Linux操作系统内核的优化策略与实际应用案例,深入分析内核参数调优、编译选项配置及实时性能监控的方法。通过具体实例讲解如何根据不同应用场景调整内核设置,以提升系统性能和稳定性,为系统管理员和技术爱好者提供实用的优化指南。 ####
|
9天前
|
运维 监控 Linux
Linux操作系统的守护进程与服务管理深度剖析####
本文作为一篇技术性文章,旨在深入探讨Linux操作系统中守护进程与服务管理的机制、工具及实践策略。不同于传统的摘要概述,本文将以“守护进程的生命周期”为核心线索,串联起Linux服务管理的各个方面,从守护进程的定义与特性出发,逐步深入到Systemd的工作原理、服务单元文件编写、服务状态管理以及故障排查技巧,为读者呈现一幅Linux服务管理的全景图。 ####
|
8天前
|
C语言
探索操作系统的心脏:内核与用户空间的交互
本文将深入操作系统的核心,揭示其内部结构与运作原理。我们将通过浅显易懂的方式,探讨操作系统的两个主要组成部分:内核和用户空间。文章旨在帮助读者理解这两者之间的界限以及它们如何协同工作来管理计算机资源。我们还将介绍系统调用的概念,并展示一个简单的代码示例,以便读者更好地理解这一过程。
|
24天前
|
算法 Linux 调度
深入理解Linux内核调度器:从基础到优化####
本文旨在通过剖析Linux操作系统的心脏——内核调度器,为读者揭开其高效管理CPU资源的神秘面纱。不同于传统的摘要概述,本文将直接以一段精简代码片段作为引子,展示一个简化版的任务调度逻辑,随后逐步深入,详细探讨Linux内核调度器的工作原理、关键数据结构、调度算法演变以及性能调优策略,旨在为开发者与系统管理员提供一份实用的技术指南。 ####
64 4
|
7天前
|
监控 算法 Linux
Linux内核锁机制深度剖析与实践优化####
本文作为一篇技术性文章,深入探讨了Linux操作系统内核中锁机制的工作原理、类型及其在并发控制中的应用,旨在为开发者提供关于如何有效利用这些工具来提升系统性能和稳定性的见解。不同于常规摘要的概述性质,本文将直接通过具体案例分析,展示在不同场景下选择合适的锁策略对于解决竞争条件、死锁问题的重要性,以及如何根据实际需求调整锁的粒度以达到最佳效果,为读者呈现一份实用性强的实践指南。 ####

热门文章

最新文章