千家信息网

Linux内核和Windows内核的区别是怎样的

发表于:2024-09-21 作者:千家信息网编辑
千家信息网最后更新 2024年09月21日,Linux内核和Windows内核的区别是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Windows 和 Linux 可以说是我
千家信息网最后更新 2024年09月21日Linux内核和Windows内核的区别是怎样的

Linux内核和Windows内核的区别是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

Windows 和 Linux 可以说是我们比较常见的两款操作系统的。

Windows 基本占领了电脑时代的市场,商业上取得了很大成功,但是它并不开源,所以要想接触源码得加入 Windows 的开发团队中。

对于服务器使用的操作系统基本上都是 Linux,而且内核源码也是开源的,任何人都可以下载,并增加自己的改动或功能,Linux 最大的魅力在于,全世界有非常多的技术大佬为它贡献代码。

这两个操作系统各有千秋,不分伯仲。

操作系统核心的东西就是内核,这次我们就来看看,Linux 内核和 Windows 内核有什么区别?

内核

什么是内核呢?

计算机是由各种外部硬件设备组成的,比如内存、cpu、硬盘等,如果每个应用都要和这些硬件设备对接通信协议,那这样太累了。

所以,这个中间人就由内核来负责,让内核作为应用连接硬件设备的桥梁,应用程序只需关心与内核交互,不用关心硬件的细节。

内核

内核有哪些能力呢?

现代操作系统,内核一般会提供 4 个基本能力:

  • 管理进程、线程,决定哪个进程、线程使用 CPU,也就是进程调度的能力;

  • 管理内存,决定内存的分配和回收,也就是内存管理的能力;

  • 管理硬件设备,为进程与硬件设备之间提供通信能力,也就是硬件通信能力;

  • 提供系统调用,如果应用程序要运行更高权限运行的服务,那么就需要有系统调研,它是用户程序与操作系统之间的接口。

内核是怎么工作的?

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

  • 内核空间,这个内存空间只有内核程序可以访问;

  • 用户空间,这个内存空间专门给应用程序使用;

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

因此,当程序使用用户空间时,我们常说该程序在用户态执行,而当程序使内核空间时,程序则在内核态执行。

应用程序如果需要进入内核空间,就需要通过「系统调用」,下面来看看系统调用的过程:

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

Linux 的设计

Linux 的开山始祖是来自一位名叫 Linux Torvalds 的芬兰小伙子,他在 1991 年用 C 语言写出了第一版的 Linux 操作系统,那年他 22 岁。

完成第一版 Linux 后,Linux Torvalds 就在网络上发布了 Linux 内核的源代码,每个人都可以免费下载和使用。

Linux 内核设计的理念主要有这几个点:

  • MutiTask,多任务

  • SMP,对称多处理

  • ELF,可执行文件链接格式

  • Monolithic Kernel,宏内核

MutiTask

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

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

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

  • 对于多核 CPU 时,多个任务可以同时被不同核心的 CPU 同时执行,这被称为并行。

SMP

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

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

ELF

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

ELF 文件格式

ELF 把文件分成了一个个分段,每一个段都有自己的作用,具体每个段的作用这里我就不详细说明了,感兴趣的同学可以去看《程序员的自我修养——链接、装载和库》这本书。

另外,ELF 文件有两种索引,Program header table 中记录了「运行时」所需的段,而 Section header table 记录了二进制文件中各个「段的首地址」。

那 ELF 文件怎么生成的呢?

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

那 ELF 文件是怎么被执行的呢?

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

Monolithic Kernel

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

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

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

分别为宏内核、微内核、混合内核的操作系统结构

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

微内核内核功能少,可移植性高,相比宏内核有一点不好的地方在于,由于驱动程序不在内核中,而且驱动程序一般会频繁调用底层能力的,于是驱动和硬件设备交互就需要频繁切换到内核态,这样会带来性能损耗。华为的鸿蒙操作系统的内核架构就是微内核。

还有一种内核叫混合类型内核,它的架构有点像微内核,内核里面会有一个最小版本的内核,然后其他模块会在这个基础上搭建,然后实现的时候会跟宏内核类似,也就是把整个内核做成一个完整的程序,大部分服务都在内核中,这就像是宏内核的方式包裹着一个微内核。

Windows 设计

当今 Windows 7、Windows 10 使用的内核叫 Windows NT,NT 全称叫 New Technology。

下图是 Windows NT 的结构图片:

Windows NT 的结构

Windows 和 Linux 一样,同样支持 MutiTask 和 SMP,但不同的是,Windows 的内核设计是混合型内核,在上图你可以看到内核中有一个 MicroKernel 模块,这个就是最小版本的内核,而整个内核实现是一个完整的程序,含有非常多模块。

Windows 的可执行文件的格式与 Linux 也不同,所以这两个系统的可执行文件是不可以在对方上运行的。

Windows 的可执行文件格式叫 PE,称为可移植执行文件,扩展名通常是.exe、.dll、.sys等。

PE 的结构你可以从下图中看到,它与 ELF 结构有一点相似。

PE 文件结构

总结

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

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

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

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

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

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

看完上述内容,你们掌握Linux内核和Windows内核的区别是怎样的的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

内核 程序 文件 系统 操作系统 内存 用户 空间 模块 硬件 应用 任务 格式 也就是 能力 设备 服务 驱动 应用程序 结构 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 jsp一般用什么数据库 统一的金融信息数据库 电信极速网络安全监督 信息中心数据库建设意义 亳州oa管理软件开发费用 网络安全技能考核 摩拜软件开发 应用软件开发培训学院 订票软件开发单位 安装数据库为什么要重启电脑 数据抓取服务器 软件开发需要去申请专利吗 甘肃服务器虚拟化部署服务器 软件开发团队需要什么技术人员 数据库技术无限大的字母是什么 湖北服务器电源厂商有哪些 北京二手服务器回收 电脑服务器显示内部错误 429首都网络安全日意义 一致性哈希算法数据库应用 检验科 数据库错误怎么弄 食通天系统数据库备份有什么用 沭阳网络技术市场 通信与网络安全考研科目 c 增加信息到数据库 登录服务器失败请检查防火墙设置 智享互联网科技有限公司 浙江天壹互联网科技发展有限公司 高标准网络安全工作 数据库迁移通知
0