【操作系统入门到成神系列 七】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。





相关文章
|
4月前
|
Ubuntu 物联网 Linux
从零安装一个Linux操作系统几种方法,以Ubuntu18.04为例
一切就绪后,我们就可以安装操作系统了。当系统通过优盘引导起来之后,我们就可以看到跟虚拟机中一样的安装向导了。之后,大家按照虚拟机中的顺序安装即可。 好了,今天主要介绍了Ubuntu Server版操作系统的安装过程,关于如何使用该操作系统,及操作系统更深层的原理,还请关注本号及相关圈子。
|
4月前
|
Ubuntu Unix Linux
操作系统的最强入门科普(Unix/Linux篇)
下期文章,小枣君会重点聊聊Windows和macOS那条线。敬请关注! 如果大家觉得文章不错,还请帮忙多多转发!谢谢!
|
4月前
|
监控 Ubuntu Linux
什么Linux,Linux内核及Linux操作系统
上面只是简单的介绍了一下Linux操作系统的几个核心组件,其实Linux的整体架构要复杂的多。单纯从Linux内核的角度,它要管理CPU、内存、网卡、硬盘和输入输出等设备,因此内核本身分为进程调度,内存管理,虚拟文件系统,网络接口等4个核心子系统。
342 0
|
4月前
|
Unix 物联网 Linux
都什么年代了,你还不懂啥是Linux操作系统
至于华为鸿蒙操作系统是不是独树一帜,这个留给各位阅读本文的网友们来讨论
124 0
|
4月前
|
Web App开发 缓存 Rust
|
4月前
|
安全 Linux iOS开发
linux属于什么操作系统
Linux是一种自由和开放源代码的操作系统,具有高度的灵活性和可定制性。与常见的操作系统如Windows和macOS相比,Linux具有自由、安全和稳定等优势。Linux已广泛应用于服务器、桌面电脑、超级计算机和嵌入式设备等领域,并且在未来的发展前景广阔。由于其自由和开放源代码的特性,Linux还促进了计算机技术和社区的发展,为全球的计算机用户提供了更多的选择和可能性。
|
4月前
|
安全 Ubuntu Unix
关于Linux操作系统,你必须要知道的事
我们可以看到无论是Debian还是Buildroot都有各自的特点,为客户提供了更大的选择空间和灵活性,大家可以根据自己的需求选择合适的版本来满足终端用户的体验和功能需求。从平技术将会一直关注更多更安全、灵敏、易于开发的Linux版本,做好适配工作,不断为客户带来“简单开发、方便应用”的使用体验。
|
4月前
|
安全 Ubuntu Linux
如何安装Linux操作系统?
此时,您可以选择重新启动计算机,然后从硬盘上的Linux系统启动。以上是一个大致的安装过程。请注意,不同的Linux发行版可能会在细节上有所差异,因此在进行安装之前,请确保您阅读并理解了相应发行版的安装指南或文档。
|
4月前
|
Ubuntu Linux 开发者
Linux发行版比较:选择适合你的操作系统
在做出选择之前,建议您先在虚拟机或双系统环境中尝试不同的发行版,根据自己的体验和需求做出决策。选择适合自己的Linux发行版是一个个人化和主观的过程,最重要的是找到符合自己需求和喜好的发行版,让您在使用Linux系统时感到舒适和方便。
|
4月前
|
Ubuntu Unix Linux
玩机强化技能,动手安装Ubuntu Linux操作系统
(13)Ubuntu重启过程中,你将在关机画面中看到提示文字“Please remove the installation medium, then press ENTER:”,按下“Enter”键即可重启电脑。

热门文章

最新文章