首页 / 知识
关于操作系统:了解Linux或BSD内核内部的最佳方法是什么?
2023-04-13 00:48:00

What's the best way to get to know linux or BSD kernel internals?
我想更好地了解操作系统内部。 流程管理,内存管理之类的东西。 在大学里,我参加了一个操作系统课程,在那里我们使用了Tanenbaum的书。在课堂上,我们在Minix操作系统中实现了设备驱动程序。这很有趣,我们学到了很多东西。 但是要注意的一件事是,如果选择Minix,它是为学习而设计的。它是一个微内核,而Linux和BSD是单片内核,因此您所学的内容可能无法100%转换为能够与Linux或BSD一起使用,但是您仍然可以从中受益匪浅,而不必进行大量处理尽可能多的信息。 附带说明一下,如果您读过《 Just for Fun》,Linus实际上在写Linux之前就在玩Minix,但这还不足以实现他的目的。 作为Linux用户,我想说Linux有一个很棒的社区供人们学习内核。 http://kernelnewbies.org是开始提出问题并了解内核如何工作的好地方。我无法推荐这本书,但是一旦您阅读了kernelnewbies的起始材料,其文献就被很好地记录了下来。 除了已经提到的好书(操作系统设计和实现特别好)之外,还拥有1.x发行版Linux内核,将其加载到VMWare或VirtualBox中并从那里开始玩。 您将需要花费大量时间浏览源代码。为此,请查看http://lxr.linux.no/,它是该源代码的可浏览链接版本,使生活变得更加轻松。对于Linux的第一个版本(0.01),请访问http://lxr.linux.no/linux-old+v0.01/。有趣的地方始于http://lxr.linux.no/linux-old+v0.01/boot/boot.s。随着版本的发展,请查看ChangeLog并深入研究那些已更改的部分,以免您再次阅读整个内容。 掌握了这些概念之后,请看2.0,然后看2.2,以此类推。准备在过程中花很多时间。
我以前出于相同目的推荐购买了这些书,但我从来没有自己研究它们,因此仅将它们作为二手建议。 注意到这里缺少BSD,我认为我应该参与其中:
我自己没有参加任何课程,但我听过Marshall Kirk McKusick在其他场合的演讲,他的确很擅长。 当然,BSD手册页是一种极好的资源,因为与一般的Linux手册页相比,它们在很大程度上得到了维护。以uvm(9)手册页为例,它描述了OpenBSD中的虚拟内存接口。 不太相关,但我还将推荐视频Berkeley软件发行版的历史,因为它很好地介绍了UNIX历史和文化的BSD部分以及从那时起的许多有趣的集锦。 我建议您使用BSD内核! BSD内核的黑客人数少得多,因此随着其发展而变得更加容易。 BSD和Linux内核都具有强大的黑客功能,但有人认为BSD较低的知名度会过滤掉新手。如果每天不对源进行100次更新,则做出设计决策也变得更加容易。 在BSD选择中,我最喜欢的是NetBSD。这可能不是您希望桌面轻松选择的选择,但是由于它非常注重可移植性,因此质量相当不错。我认为这部分说明了一切:
如果您已经工作了足够长的时间,您就会知道NetBSD对于学习良好的编码是很高兴的。虽然专业,您会发现使用Linux的更多机会 无论您采取哪种选择,都开始加入他们的邮件列表,然后按照讨论进行。研究一些补丁,最后尝试自己修复错误。关于书籍,请搜索Diomidis Spinellis的文章和他的书。它并不完全是一本内核书籍,但是有NetBSD示例,可以帮助您处理大型软件。 Linux和Minix很有趣。如果您还想了解现代微内核操作系统的外观,可以查看QNX。完整的文档可在线获得,并且非常容易获得。例如,这本在线书。 似乎没有人提到基于代码的BSD更加整洁和一致。该文档的方式也更好(如上所述)。但是由于您对所选择的任何系统都充满了摆弄-我会选择您经常使用的系统。 接受Mike Stone的建议,然后从Minix开始。那就是Linus所做的!教科书写得非常好,Tannenbaum很好地展示了如何在实际系??统中实现各种功能。 深入研究代码是无可替代的。尝试找到您感兴趣的驱动程序或子系统,并对其进行探索。使用VMware Workstation之类的工具,可以轻松进行所需的任何更改,对VM进行快照并运行修改后的内核。如果内核在启动时出现混乱,谁在乎?只需跳回到快照并解决问题即可。 对于书籍,我强烈推荐Robert Love撰写的Linux Kernel Development。这是一本奇妙的书,书中有很多信息,理智而幽默,……根本不是枯燥的阅读。 我自己还没有尝试过,但是您可以转到Linux From Scratch并开始构建自己的Linux发行版。听起来这会花费很多时间,但会导致您对Linux内核的精髓以及每个部分的工作原理有深入的了解。当然,您可以通过遵循此处的其他任何技巧来补充此学习内容。 当我上大学时,我花了一个学期研究操作系统,作为其中的一部分,我们不得不在Linux中实现基于RAM的文件系统。 这是一种了解Linux内核内部结构并掌握所有组件如何组合的绝佳方法-并且在与标准工具的交互方面也玩得很开心。 |
最新内容
相关内容
python的调用绑定方法和非绑定方法
python的调用绑定方法和非绑定方法,代码,方法,实例,第一,培训,时计,奇数,偶数,参数,定义,在Python中,如果用实例去调用方法,这种限制就被称为PyPython网络编程调用接收数据的三种
Python网络编程调用接收数据的三种方法,数据,代码,基础,通用,通讯,服务,网络,培训,方法,报文,最近在使用python进行网络编程开发一个通用的tc编写一个简单的游戏来学习 Python
编写一个简单的游戏来学习 Python,数字,标准,概念,名称,异常,软件,基础知识,培训,通用,流程,通过编写一个“猜数字”游戏来探索Python(和其他为什么开发人员喜欢在机器学习和人
为什么开发人员喜欢在机器学习和人工智能项目中使用Python?,代码,项目,数据,人工智能,平台,异常,增长,灵活,时间,工具,1.Python是灵活的PythoPython 3.6 中针对文件系统的神奇
Python 3.6 中针对文件系统的神奇方法,数字,代码,数据,标准,信息,培训,首次,工作,文件名,常数,Python3.6首次发布于2016年,尽管它已经发布了很Python 之模块重载的五种方法
Python 之模块重载的五种方法,环境,培训,方法,模块,文件夹,例子,下面,内容,语句,请看,python环境准备新建一个foo文件夹,其下包含一个bar.py文提升Python数据分析能力的方法
提升Python数据分析能力的方法,分析,数据,工具,代码,时间,环境,报告,信息,培训,标准,1.Pandas分析包这个工具的好处是显而易见的。下面的动画学习Python可以做这些工作
学习Python可以做这些工作,网络,数据,工作,网站,技术,培训,行业,发展,人工智能,分析,Python语言非常受欢迎,随着互联网的快速发展,很多不是计算如何迈出Python学习第一步
如何迈出Python学习第一步,时间,美元,亚马逊,代码,培训,工作,在线,教育,工程,租金,出于怀旧的缘故,我想分享我两年前的第一个Python程序。我最Python中字典合并的实现方法
Python中字典合并的实现方法,培训,结果,以上,版本,字典,方法,函数,下面,背景,发现,TableofContents背景Methon1:适用于Python3.5及以上版本呢MPython学习之进程和线程
Python学习之进程和线程,代码,平台,系统,线程,进程,标准,数据,服务,培训,管理,对于操作系统来说,一个任务就是一个进程(Process),比如打开一个学习python的三种方法
学习python的三种方法,项目,代码,公司,时间,工程,培训,中级,初级,资料,第一,Python的用途十分广泛,不同的程序员将其用于不用的领域,不同的程序