【操作系统入门到成神系列 七】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的迁移。
相关文章
|
11天前
|
自然语言处理 运维 前端开发
OS Copilot-操作系统智能助手-新手小白入门必选~
作为一名安卓开发工程师,我日常专注于前端和移动端开发。然而,在项目推进中偶尔需要部署服务端,这对不熟悉Linux的我来说颇具挑战。每次用命令行工具操作时,常需频繁查阅命令及参数,效率低下。 幸运的是,我发现了阿里云推出的OS Copilot智能助手。它通过自然语言问答功能,让命令行操作变得轻松流畅,帮助我快速定位并解决问题,显著提升了工作效率。安装简单,配置便捷,支持单命令模式和命令行模式,极大简化了Linux操作,成为我得力的开发利器。 总结而言,OS Copilot让我这个Linux小白也能高效处理服务端任务,操作体验焕然一新,是不可多得的智能助手。
|
5天前
|
缓存 安全 Linux
Linux系统查看操作系统版本信息、CPU信息、模块信息
在Linux系统中,常用命令可帮助用户查看操作系统版本、CPU信息和模块信息
52 23
|
11天前
|
弹性计算 自然语言处理 Ubuntu
OS Copilot-操作系统智能助手-Linux新手小白的福音
OS Copilot是由阿里云推出的操作系统智能助手,专为Linux新手设计,支持自然语言问答、辅助命令执行等功能,极大提升了Linux系统的使用效率。用户只需通过简单的命令或自然语言描述问题,OS Copilot即可快速提供解决方案并执行相应操作。例如,查询磁盘使用量等常见任务变得轻松快捷。此外,它还支持从文件读取复杂任务定义,进一步简化了操作流程。虽然在某些模式下可能存在小问题,但总体上大大节省了学习和操作时间,提高了工作效率。
79 2
OS Copilot-操作系统智能助手-Linux新手小白的福音
|
3天前
|
弹性计算 运维 Ubuntu
os-copilot在Alibaba Cloud Linux镜像下的安装与功能测试
我顺利使用了OS Copilot的 -t -f 功能,我的疑惑是在换行的时候就直接进行提问了,每次只能写一个问题,没法连续换行更有逻辑的输入问题。 我认为 -t 管道 功能有用 ,能解决环境问题的连续性操作。 我认为 -f 管道 功能有用 ,可以单独创建可连续性提问的task问题。 我认为 | 对文件直接理解在新的服务器理解有很大的帮助。 此外,我还有建议 可以在非 co 的环境下也能进行连续性的提问。
42 7
|
4天前
|
存储 运维 安全
深入解析操作系统控制台:阿里云Alibaba Cloud Linux(Alinux)的运维利器
本文将详细介绍阿里云的Alibaba Cloud Linux操作系统控制台的功能和优势。
26 5
|
6天前
|
安全 Linux 测试技术
Intel Linux 内核测试套件-LKVS介绍 | 龙蜥大讲堂104期
《Intel Linux内核测试套件-LKVS介绍》(龙蜥大讲堂104期)主要介绍了LKVS的定义、使用方法、测试范围、典型案例及其优势。LKVS是轻量级、低耦合且高代码覆盖率的测试工具,涵盖20多个硬件和内核属性,已开源并集成到多个社区CICD系统中。课程详细讲解了如何使用LKVS进行CPU、电源管理和安全特性(如TDX、CET)的测试,并展示了其在实际应用中的价值。
|
5天前
|
安全 大数据 Linux
云上体验最佳的服务器操作系统 - Alibaba Cloud Linux | 飞天技术沙龙-CentOS 迁移替换专场
本次方案的主题是云上体验最佳的服务器操作系统 - Alibaba Cloud Linux ,从 Alibaba Cloud Linux 的产生背景、产品优势以及云上用户使用它享受的技术红利等方面详细进行了介绍。同时,通过国内某社交平台、某快递企业、某手机客户大数据业务 3 大案例,成功助力客户实现弹性扩容能力提升、性能提升、降本增效。 1. 背景介绍 2. 产品介绍 3. 案例分享
|
19天前
|
Ubuntu Linux 开发者
Ubuntu20.04搭建嵌入式linux网络加载内核、设备树和根文件系统
使用上述U-Boot命令配置并启动嵌入式设备。如果配置正确,设备将通过TFTP加载内核和设备树,并通过NFS挂载根文件系统。
68 15
|
1月前
|
算法 Linux
深入探索Linux内核的内存管理机制
本文旨在为读者提供对Linux操作系统内核中内存管理机制的深入理解。通过探讨Linux内核如何高效地分配、回收和优化内存资源,我们揭示了这一复杂系统背后的原理及其对系统性能的影响。不同于常规的摘要,本文将直接进入主题,不包含背景信息或研究目的等标准部分,而是专注于技术细节和实际操作。
|
1月前
|
存储 缓存 网络协议
Linux操作系统的内核优化与性能调优####
本文深入探讨了Linux操作系统内核的优化策略与性能调优方法,旨在为系统管理员和高级用户提供一套实用的指南。通过分析内核参数调整、文件系统选择、内存管理及网络配置等关键方面,本文揭示了如何有效提升Linux系统的稳定性和运行效率。不同于常规摘要仅概述内容的做法,本摘要直接指出文章的核心价值——提供具体可行的优化措施,助力读者实现系统性能的飞跃。 ####

热门文章

最新文章