Linux内核和Windows内核的区别是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
Windows和Linux可以说是我们比较常见的两款操作系统的。
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 上被执行。