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

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

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

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

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

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

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

<强>内核

什么是内核呢?

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

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

癓inux内核和Windows内核的区别是怎样的"

内核

内核有哪些能力呢?

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

<李>

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

<李>

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

<李>

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

<李>

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

内核是怎么工作的吗?

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

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

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

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

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

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

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

内核程序执行在内核态,用户程序执行在用户态。当应用程序使用系统调用时,会产生一个中断。发生中断后, 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 上被执行。

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