微软拥抱开源,Win10为啥要引入真Linux4.X内核?

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介: “ARM Cortex-A Series Programmer’s Guide for ARMv8-A”:这篇文档接近300页,适合入门学习。

2019 年微软 Build 开发者大会在雷德蒙德召开。继将 Bash shell、原生 OpenSSH、WSL 引入 Windows,以及在微软商店提供 Ubuntu、SUSE Linux 和 Fedora 等发行版,微软又宣布了一个重大的决定 —— 将完整的 Linux 内核引入 Windows 10。

按照微软的说法,到时 Windows 10 将包含内置的完整定制版 Linux 内核,为最新的 WSL 提供更好的支持。Linux 内核版本为 4.19,是一个长期稳定版。随着 WSL2 正式发布,WSL2 用的 Linux 内核也将完全开源。近些年,微软公司来雇佣了很多 Linux contributor,给微软带来了很多业界领先的 Linux 技术,所以才会有去年的 WSL,这样的举动也必将吸引更多的人才加入。

Linux内核是使用最广泛的开源内核,在服务器和智能手机领域处于统治地位,物联网、大数据、云计算和人工智能等热点技术也离不开Linux内核。对于商业公司而言,采用开源的Linux内核可以享受很多好处,比如节约成本,可以利用行业先进的技术,还可以根据自己的需求定制、修改内核。对于个人而言,从Linux内核中可以学习先进的设计方法和编程技术,为内核贡献代码可以证明自己的技术实力。

可是,当我们准备学习Linux内核时,会发现Linux内核的代码庞大而复杂,在没有专业书籍指导的情况下,读懂代码是一件非常困难的事情。如何学Linux内核?小编推荐这本《Linux内核深度解析》,书中剖析的代码基于Linux 4.12版本,同时,它基于ARM64硬件平台,将两者结合。

作为一个优秀的开源系统,Linux在业界有很广泛的应用。从1994年发布1.0正式版本开始,Linux内核一直在发展,代码越来越庞大,参伍以变,错综其数,要想深入掌握它,并不是一件轻松的事情。

本书作者余华兵从事Linux内核开发工作十余年,有着丰富的实践经验,使用过不同的版本和硬件平台,从2.x到4.x,从MIPS、x86到ARM。伴随着研发大楼的华灯,当年初出校门的学子,如今萧萧两鬓生华,成为一个在Linux领域有深厚积累的专家。相信这本书会让你收获满满。

 对于从事应用程序开发的软件工程师,是否有必要学习内核呢?

应用程序通常使用封装好的库,看起来似乎和内核没有关系,但是库是在内核提供的系统调用的基础上做了一层封装。读者如果研究了库函数和内核配合实现库函数提供的功能,那么对软件运行过程的理解将会更深刻,个人的技术水平也将会提升到新的高度—能够设计开发出高质量的应用程序,在软件运行过程中出现问题时可以快速地分析定位。另外,内核代表了软件行业的最高编程技术,这些编程技术也适用于应用程序。是否有必要学习内核呢?答案是肯定的。

 为什么要学Linux4.X? 

早些年数通领域各厂商(包括思科和华为)的操作系统,都是基于传统的嵌入式操作系统(如典型的VxWorks操作系统)开发的。2010年以后,Linux内核在数通厂商中快速生长,迅速成为数通设备网络操作系统的内核。就像基于Linux内核的安卓系统已经成为智能手机领域的领头羊一样,在数通设备领域,Linux内核也大有一统江湖之势。

我们在基于Linux内核开发网络操作系统的过程中遇到的某些技术问题,在Linux内核的演进过程中已经提供了解决方案。Linux 3.11版本ARM架构支持巨型页机制,解决了ARM架构的进程访问大内存的性能问题。Linux 3.14版本引入ZRAM内存压缩技术,用于节省内存空间,这项技术适合在内存容量小的设备上使用。Linux 2.6.29版本引入的squash文件系统和Linux 3.18版本引入的overlay文件系统,在闪存容量小的设备上解决了存储空间不足的问题。squash文件系统可以压缩数据,但是它是一个只读的文件系统,而设备需要一个可写的文件系统,我们在Linux内核找到了解决方案—使用overlay文件系统在squash文件系统上面叠加一个可写的文件系统。这些拿来即用的Linux内核技术,在这本书中都有提及。

近年来Linux发展迅速,公司最早使用的Linux内核是2.6版本,从2011年发布3.0版本开始到2018年年底发布4.20版本,Linux一共发布了41个版本,技术发展日新月异。很多技术虽然有众多的工程师在使用和总结,但仍相对零散,基于Linux 4.x的图书更是少之又少。

 本书特点是什么吗? 

本书剖析的代码基于Linux 4.12版本,发布于2017年,是Linux内核史上变动较大的版本之一。基于这个版本进行内核代码解析并出版成书,是比较新颖的,既不失通用性,又兼顾4.x版本中引入的不少新技术点。同时,它基于ARM64硬件平台,将两者结合的书,目前还是比较少的。

另外,本书没有过多地介绍操作系统的基础原理,而更多地是以实际代码来解读在Linux内核中是如何实现操作系统的各个子系统的。对于熟悉操作系统基础的读者来说,可以快速地切入到具体代码的理解与实现中。从内核引导和初始化开始,到进程管理、内存管理、中断/异常/系统调用、内核互斥技术和文件系统,本书比较系统地对内核代码进行了深度解析。

Linux内核的知识点相当繁多,很难在一本书中面面俱到,也没有必要。所以,在这本书中,看似不经意间逐层展开的知识点,都是比较基础和常用的。作者以他的实践经历尽量通俗地进行解读,并抓住了其中的重点,可以让读者在实际的开发、调试和维护工作中学以致用。

“行是知之始,知是行之成”,学习Linux内核技术尤其如此。要真正消化理解Linux内核,离不开大量的工程实践。希望本书可以成为你前进路上的好帮手!

 如何读这本书?

本书介绍4.12版本的Linux内核,建议你在阅读本书时到Linux内核的官方网站中下载一份代码,对照代码学习。推荐使用“Source Insight”软件阅读代码。

Linux内核支持多种处理器架构,处理器架构特定的代码放在“arch”目录下。ARM处理器在手机和平板电脑等移动设备上处于统治地位。ARM处理器从ARMv7演进到支持64位的ARMv8,ARM公司重新设计了处理器架构,ARMv8定义了AArch64和AArch32两种执行状态,AArch64是64位架构;AArch32是32位架构,兼容ARMv7。因为ARMv8和ARMv7的差别很大,所以Linux内核把ARMv8和ARMv7当作两种不同的处理器架构,ARMv7架构的代码放在“arch/arm”目录下,ARMv8架构的代码放在“arch/arm64”目录下。人们通常把ARMv8架构的AArch64执行状态称为ARM64架构。本书在介绍Linux内核时选择ARM64处理器架构。

学习本书,需要具备ARM64处理器的基础知识,推荐以下两篇文档,读者可以从ARM公司的网站下载。

(1)“ARM Cortex-A Series Programmer’s Guide for ARMv8-A”:这篇文档接近300页,适合入门学习。

(2)“ARM Architecture Reference Manual ARMv8, for ARMv8-A architecture profile”:这篇文档有6000多页,写得很详细,适合当作工具书来查询。

学习内核,关键是要理解数据结构之间的关系和函数调用关系。内核中数据结构之间的关系错综复杂,函数调用层次深,有些函数中的分支非常多,一个函数就可能涉及很多技术,这些都是初学者学习中的障碍。作者建议读者在学习时抓住主要线索,弄清楚执行流程,刚开始不要过多关注函数的细节。为了方便学习,作者绘制了很多图来描述数据结构之间的关系和函数的执行流程。另外,作者在介绍每种技术时会先介绍使用方法,从使用方法开始学习技术,相信会对读者理解技术有很大的帮助。

全书内容共分为6章。

第1章介绍内核的引导过程,本书选择常用的引导程序U-Boot,读者可以从德国DENX软件工程中心的网站下载U-Boot的代码,对照学习。

第2章介绍内核管理和调度进程的技术原理。

第3章介绍内核管理虚拟内存和物理内存的技术原理。

第4章介绍内核处理异常和中断的技术原理,以及系统调用的实现方式。

第5章介绍内核实现的各种保护临界区的互斥技术。

第6章介绍内核的虚拟文件系统,内核使用虚拟文件系统支持各种不同的文件系统。

书名:《Linux内核深度解析》

作者:余华兵

编辑推荐:  

  • 基于ARM64架构的Linux 4.x内核;
  • 大量图例描述数据结构之间的关系和函数的执行流程;
  • 结合代码分析,以通俗化语言全面剖析Linux内核。

本书基于4.x版本的Linux内核,介绍了Linux内核的若干关键子系统的技术原理。本书主要内容包括内核的引导过程、内核管理和调度进程的技术原理、内核管理虚拟内存和物理内存的技术原理、内核处理异常和中断的技术原理,以及系统调用的实现方式等。此外,本书还详细讲解了内核实现的各种保护临界区的互斥技术,以及内核的文件系统。本书内容丰富,深入浅出,通过大量的图例来描述数据结构之间的关系和函数的执行流程,并结合代码分析,引导读者阅读和理解内核源代码。

- END -

相关文章
|
12天前
|
人工智能 分布式计算 大数据
Linux操作系统:开源力量的崛起与影响###
一场技术革命的火种,如何燎原? 本文将带您深入探索Linux操作系统的诞生背景、核心特性及其对现代科技世界的深远影响。从1991年芬兰学生Linus Torvalds的一个小众项目,到如今成为支撑全球无数服务器、超级计算机及物联网设备的基石,Linux的发展既是一部技术创新史,也是开源文化胜利的见证。通过剖析其设计哲学、安全性、灵活性等关键优势,结合实例展示Linux在云计算、大数据处理等领域的广泛应用,本文旨在揭示Linux为何能在众多操作系统中脱颖而出,以及它如何塑造了我们今天的数字生活。 ###
|
10天前
|
安全 Linux 编译器
探索Linux内核的奥秘:从零构建操作系统####
本文旨在通过深入浅出的方式,带领读者踏上一段从零开始构建简化版Linux操作系统的旅程。我们将避开复杂的技术细节,以通俗易懂的语言,逐步揭开Linux内核的神秘面纱,探讨其工作原理、核心组件及如何通过实践加深理解。这既是一次对操作系统原理的深刻洞察,也是一场激发创新思维与实践能力的冒险。 ####
|
3天前
|
边缘计算 人工智能 运维
Linux操作系统:开源力量的崛起与影响###
一场技术革命的回顾 回溯至1991年,当Linus Torvalds宣布Linux操作系统的诞生时,世界或许并未意识到这一举措将如何深刻地改变技术领域的面貌。本文旨在探讨Linux操作系统的发展历程、核心特性、以及它如何引领了一场开源运动,重塑了软件行业的生态。从最初的个人爱好项目成长为全球最广泛采用的服务器操作系统之一,Linux的故事是技术创新与社区精神共同推动下的辉煌篇章。 ###
|
3天前
|
缓存 Linux
揭秘Linux内核:探索CPU拓扑结构
【10月更文挑战第26天】
16 1
|
3天前
|
缓存 运维 Linux
深入探索Linux内核:CPU拓扑结构探测
【10月更文挑战第18天】在现代计算机系统中,CPU的拓扑结构对性能优化和资源管理至关重要。了解CPU的核心、线程、NUMA节点等信息,可以帮助开发者和系统管理员更好地调优应用程序和系统配置。本文将深入探讨如何在Linux内核中探测CPU拓扑结构,介绍相关工具和方法。
8 0
|
13天前
|
网络协议 Linux 调度
深入探索Linux操作系统的心脏:内核与系统调用####
本文旨在揭开Linux操作系统中最为核心的部分——内核与系统调用的神秘面纱,通过生动形象的语言和比喻,让读者仿佛踏上了一段奇妙的旅程,从宏观到微观,逐步深入了解这两个关键组件如何协同工作,支撑起整个操作系统的运行。不同于传统的技术解析,本文将以故事化的方式,带领读者领略Linux内核的精妙设计与系统调用的魅力所在,即便是对技术细节不甚了解的读者也能轻松享受这次知识之旅。 ####
|
9天前
|
缓存 算法 安全
深入理解Linux操作系统的心脏:内核与系统调用####
【10月更文挑战第20天】 本文将带你探索Linux操作系统的核心——其强大的内核和高效的系统调用机制。通过深入浅出的解释,我们将揭示这些技术是如何协同工作以支撑起整个系统的运行,同时也会触及一些常见的误解和背后的哲学思想。无论你是开发者、系统管理员还是普通用户,了解这些基础知识都将有助于你更好地利用Linux的强大功能。 ####
18 1
|
10天前
|
关系型数据库 MySQL Linux
基于阿里云服务器Linux系统安装Docker完整图文教程(附部署开源项目)
基于阿里云服务器Linux系统安装Docker完整图文教程(附部署开源项目)
105 2
|
10天前
|
缓存 编解码 监控
深入探索Linux内核调度机制的奥秘###
【10月更文挑战第19天】 本文旨在以通俗易懂的语言,深入浅出地剖析Linux操作系统内核中的进程调度机制,揭示其背后的设计哲学与实现策略。我们将从基础概念入手,逐步揭开Linux调度策略的神秘面纱,探讨其如何高效、公平地管理系统资源,以及这些机制对系统性能和用户体验的影响。通过本文,您将获得关于Linux调度机制的全新视角,理解其在日常计算中扮演的关键角色。 ###
34 1
|
12天前
|
运维 安全 Linux
Linux中传输文件文件夹的10个scp命令
【10月更文挑战第18天】本文详细介绍了10种利用scp命令在Linux系统中进行文件传输的方法,涵盖基础文件传输、使用密钥认证、复制整个目录、从远程主机复制文件、同时传输多个文件和目录、保持文件权限、跨多台远程主机传输、指定端口及显示传输进度等场景,旨在帮助用户在不同情况下高效安全地完成文件传输任务。
100 5