时间:2019-06-12 13:25:31 来源:www.win10xitong.com 作者:win10
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多页,写得很完整,适合当作工具书来查询。
学习内核,关键是要理解数据结构之间的关系和函数移用关系。内核中数据结构之间的关系错综复杂,函数移用层次深,有些函数中的分支非常多,一个函数就可能涉及很多技术,这些所有是初学者学习中的障碍。作者建议读者在学习时抓住关键线索,弄清楚执列流程,刚起初不要过多关注函数的细节。为了方便学习,作者绘制了很多图来描述数据结构之间的关系和函数的执列流程。另外,作者在介绍每种技术时会第一步介绍使用操作方式,从使用操作方式起初学习技术,相信会无误读者理解技术有很大的协助。