本文内容转载自“拉勾教育”的讲义,更多课程信息请关注拉勾教育。本人在学习之余记记笔记,顺便当当搬运工!

目录

Linux内核和Windows系统的内核有什么区别?

什么是内核?

内核的能力

操作系统分层

内核是如何工作的?

Linux的设计

Window设计

总结


Linux内核和Windows系统的内核有什么区别?

Windows和Linux是当今两款最主流的服务器操作系统产品,都拥有广泛的用户和信徒。Windows通过强大的商业运作,驱动了大量优秀人才加盟到它的开发团队中;Linux通过社区产品的魅力吸引着世界上大量的顶级程序员为它贡献源代码、解答问题。两者在服务器市场上竞争激烈,不分伯仲,但也存在互相扶持的关系。

什么是内核?

说到操作系统,就必须说内核。内核是操作系统中应用连接硬件设备的桥梁。执行操作系统核心功能(提供公共服务、协调进程交互、构建虚拟机、管理物理资源)的部分称为操作系统的内核。

从知识结构上来看,操作系统最核心的部分是进程,因为操作系统自己不能提供服务,它要想实现价值,就必须通过安装在系统中的应用程序。而安装好的应用程序,启动后就成了进程,所以说进程处在操作系统知识体系的核心。

了解了以上内容后,我们围绕进程继续梳理,可以发现:

  1. ·进程往往要同时做很多事情,比如浏览器同时要处理网络、又要处理鼠标、还要展示内容,因此有了多线程的概念。
  2. .进程需要执行用的存储空间,比如需要存程序指令、需要堆栈存执行数据,因此需要内存。
  3. .进程需要将一部分数据持久的存储下来,因此需要文件系统。
  4. ·进程需要和外界通信,其中一种途径就是网络。
  5. .开发过程中我们希望进程可以单独部署,于是需要容器。

内核的能力

对于一个现代的操作系统来说,它的内核至少应该提供以下4种基本能力:

  1. .管理进程、线程(决定哪个进程、线程使用CPU);
  2. .管理内存(决定内存用来做什么);
  3. .连接硬件设备(为进程、和设备间提供通信能力);
  4. ·提供系统调用(接收进程发送来的系统调用)。

操作系统分层

从上面4种能力来看操作系统和内核之间的关系,通常可以把操作系统分成3层,最底层的硬件设备抽象、中间的内核和最上层的应用。

内核是如何工作的?

为了帮助你理解什么是内核,请你先思考一个问题:进程和内核的关系,是不是像浏览器请求服务端服务?内核权限非常高,它可以管理进程、可以直接访问所有的内存,因此确实需要和进程之间有一定的隔离。这个隔离用类似请求/响应的模型,非常符合常理。但不同的是在浏览器、服务端模型中,浏览器和服务端是用不同的机器在执行,因此不需要共享一个CPU。但是在进程调用内核的过程中,这里是存在资源共享的。

  1. 比如,一个机器有4个CPU,不可能让内核用一个CPU,其他进程用剩下的CPU。这样太浪费资源了。
  2. 再比如,进程向内核请求100M的内存,内核把100M的数据传回去。这个模型不可行,因为传输太慢了。

所以,这里多数操作系统的设计都遵循一个原则:进程向内核发起一个请求,然后将CPU执行权限让出给内核。内核接手CPU执行权限,然后完成请求,再转让出CPU执行权限给调用进程。

Linux的设计

Linux操作系统第一版是1991年林纳斯托·瓦兹(一个芬兰的小伙子,当时22岁)用C语音写的。写完之后他在网络上发布了Linux内核的源代码。又经过了3年的努力,在1994年发布了完整的核心Version 1.0。

说到Linux内核设计,这里有很多有意思的名词。大多数听起来复杂、专业,但是理解起来其实很简单。

1. Multitask and SMP ( Symmetric multiprocessing)

MultiTask指多任务,Linux是一个多任务的操作系统。多任务就是多个任务可以同时执行,这里的“同时”并不是要求并发,而是在一段时间内可以执行多个任务。当然Linux支持并发。SMP指对称多处理。其实是说Linux 下每个处理器的地位是相等的,内存对多个处理器来说是共享的,每个处理器都可以访问完整的内存和硬件资源。这个特点决定了在Linux上不会存在一个特定的处理器处理用户程序或者内核程序,它们可以被分配到任何一个处理器上执行。

2. ELF (Executable and Linkable Format)

这个名词翻译过来叫作可执行文件链接格式。这是一种从Unix继承而来的可执行文件的存储格式。我们可以看到ELF中把文件分成了一个个分段(Segment),每个段都有自己的作用。如果想要深入了解这块知识,会涉及部分编译原理的知识。

3. Monolithic Kernel

这个名词翻译过来就是宏内核,宏内核反义词就是Microkernel,微内核的意思。Linux是宏内核架构,这说明Linux的内核是一个完整的可执行程序,且内核用最高权限来运行。宏内核的特点就是有很多程序会打包在内核中,比如,文件系统、驱动、内存管理等。当然这并不是说,每次安装驱动都需要重新编译内核,现在Linux也可以动态加载内核模块。所以哪些模块在内核层,哪些模块在用户层,这是一种系统层的拆分,并不是很强的物理隔离。

与宏内核对应,接下来说说微内核,内核只保留最基本的能力。比如进程调度、虚拟内存、中断。多数应用,甚至包括驱动程序、文件系统,是在用户空间管理的。

在内核层和在用户层有什么区别吗?感觉分层其实差不多。有一个很大的区别,比如说驱动程序是需要频繁调用底层能力的,如果在内核中,性能肯定会好很多。对于微内核设计,驱动在内核外,驱动和硬件设备交互就需要频繁做内核态的切换。当然微内核也有它的好处,比如说微内核体积更小、可移植性更强。不过我认为,随着计算能力、存储技术越来越发达,体积小、安装快已经不能算是一个很大的优势了。现在更重要的是如何有效利用硬件设备的性能。还有一种就是混合类型内核。混合类型的特点就是架构像微内核,内核中会有一个最小版本的内核,其他功能会在这个能力上搭建。但是实现的时候,是用宏内核的方式实现的,就是内核被做成了一个完整的程序,大部分功能都包含在内核中。就是在宏内核之内有抽象出了一个微内核。

Window设计

Windows和Linux的设计有很大程度的相似性。Windows也有内核,它的内核是C/C++写的。准确地说,Windows有两个内核版本。一个是早期的Windows9x内核,早期的Win95,Win98都是这个内核。我们今天用的Windows 7,Windows 10是另一个内核,叫作 Windows NT。NT 指的是New Technology。

Windows 同样支持Multitask和 SMP(对称多处理)。Windows的内核设计属于混合类型。你可以看到内核中有一个 Microkernel模块。而整个内核实现又像宏内核一样,含有的能力非常多,是一个完整的整体。Windows下也有自己的可执行文件格式,这个格式叫作 Portable Executable(PE),也就是可移植执行文件,扩展名通常是.exe、.dl1、.sys等。PE 文件的结构和 ELF 结构有很多相通的地方,下面一张图片帮助更直观地理解。

Windows 还有很多独特的能力,比如Hyper-V虚拟化技术。

总结

内核的基础知识,包括内核的作用、整体架构以及3种内核类型(宏内核、微内核和混合类型内核)。内核很小(微内核)方便移植,因为体积小、安装快;内核大(宏内核),方便优化性能,毕竟内核更了解计算机中的资源。

Linux内核和Windows内核有什么区别?

Windows有两个内核,最新的是NT内核,目前主流的Windows产品都是 NT内核。NT内核和Linux内核非常相似,没有太大的结构化差异。从整体设计上来看,Linux是宏内核,NT内核属于混合型内核。和微内核不同,宏内核和混合类型内核从实现上来看是一个完整的程序。只不过混合类型内核内部也抽象出了微内核的概念,从内核内部看混合型内核的架构更像微内核。另外NT内核和Linux内核还存在着许多其他的差异,比如:Linux内核是一个开源的内核;它们支持的可执行文件格式不同;它们用到的虚拟化技术不同。

【操作系统】Linux内核和Windows系统的内核有什么区别?相关推荐

  1. 当前服务器系统内核版本是多少,linux下如何查看系统和内核版本

    linux下如何查看系统和内核版本 (2011-04-11 17:35:16) 标签: linux version 杂谈 1. 查看内核版本命令: 1) [root@q1test01 ~]# cat ...

  2. linux系统与window区别,linux系统和windows系统的区别是什么?

    linux系统和windows系统的区别 1.内核不同 Linux操作系统使用Linux内核,Windows操作系统使用NT内核:Linux内核代码开源,NT内核代码闭源,也就是说任何人都可以拿着Li ...

  3. 【爱找茬】linux系统和windows系统,你找到了几处不同?

    什么是linux系统 Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户.多任务.支持多线程和多CPU的操作系统.它能运行主要的UNIX工具软件.应用程序和 ...

  4. Linux系统和windows系统mysql5.7.32的下载

    linux系统和windows系统开源社区版mysql下载方法前4步相同,不同的是最后一步. 1. 2. 3. 4. 5.linux系统 6.window系统 http://www.taodudu.c ...

  5. 笔记本电脑linux系统下载,荣耀笔记本Linux版安装Windows系统,电脑小白必学的一招!...

    荣耀笔记本Linux版安装Windows系统,电脑小白必学的一招! 2019-11-13 11:02:23 1点赞 11收藏 0评论 看到Linux系统的笔记本,相信懂行的小伙伴已经猜到了.没错,今天 ...

  6. Linux系统和windows系统ssh命令

    Linux系统和windows系统下的ssh命令 ssh命令介绍 ssh连接原理 ssh工作机制 ssh加密技术 windows下如何使用ssh命令 windows10自带OpenSSH window ...

  7. 获取Windows 系统的内核变量

    关键字:PsLoadedModuleList.PsActiveProcessHead.NtSystemDebugControl         PsNtosImageBase.KdVersionBlo ...

  8. Linux系统和Windows系统的区别

    操作系统界有三大巨头,他们分别是苹果操作系统.Linux操作系统.Windows操作系统,深入追究下来,他们有同一个祖宗,叫Unix. 而Linux操作系统和Windows操作系统身为三大操作系统巨头 ...

  9. 如何实现Linux系统和Windows系统双系统

    如果你最终决定从Windows 10切换到CentOS 7,这是一个很酷的决定. 您可能已尝试将CentOS 7作为虚拟机运行,或者您可能已使用CentOS 7 Live CD进行了尝试,现在,您已准 ...

最新文章

  1. 李飞飞确认将离职!谷歌云AI总帅换人,卡耐基·梅隆老教授接棒
  2. 粒子物理标准模型错了?电子“表哥”磁性超出理论预计,物理学家找到未知粒子存在证据...
  3. linux timeline
  4. 致远协同软件手机版让移动办公不再是梦想
  5. PHP store session with couchbase
  6. 关于C/C++中的几个关键字(C基础)
  7. python爬取知乎文章_selenium+python+BeautifulSoup爬取知乎文章信息
  8. javashop B2C开源电商系统源代码
  9. 超强功能WebSSH安装,解决Web远程SSH终端
  10. 我国街景地图向何处去
  11. java正则表达式控制半角字符串输入
  12. 深入理解安卓Activity
  13. 如何快速制作微信朋友圈方图?
  14. wish新卖家如何运营好账号?
  15. Linux 网卡配置
  16. vm安装中标麒麟v7.0
  17. trans系列平移距离模型
  18. 竞拍秒购电商系统开发需求和功能架构分析
  19. RedisSystemException:WRONGTYPE Operation against a key holding the wrong kind of value
  20. Maya 凹凸贴图与置换贴图

热门文章

  1. speedoffice(Excel)如何让图片随单元格大小改变?
  2. Python:实现scoring functions评分函数算法(附完整源码)
  3. Git冲突:Your local changes would be overwritten by merge. Commit, stash or revert them to proceed.
  4. 核密度聚类(一)核函数、核密度估计、核密度聚类
  5. 从智能合约的演进看 Move 的架构设计
  6. 海胆状聚苯乙烯与α-氧化铁复合结构微球/聚苯乙烯/氧化石墨烯/CNTs复合微球研究方式
  7. uoj#750-[UNR #6]小火车【二分,折半,鸽笼原理】
  8. 如何进阶Java之道?首先得知道层层递进的四种软件架构
  9. WIFI无线传输,图传。视频提节
  10. Pytorch入门实战 | 第P2周:彩色图片识别