linux 0.11 内核完全注释V3.0学习笔记(一)

2024-01-22 14:38

本文主要是介绍linux 0.11 内核完全注释V3.0学习笔记(一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

linux 0.11 内核完全注释V3.0学习笔记(一)

第1章 概述

1.1 Linux的诞生和发展

Linux操作系统是UNIX操作系统的一种克隆系统,诞生于1991年10月5日(第一次对外公布时间),Linux操作系统的诞生、发展和成长过程依赖以下5大支柱:UNIX操作系统、MINIX操作系统、GNU计划、POSIX标准和Internet网络。目前Linux内核版本已经开发到4.13.11稳定版本,获取kernel源码可从Linux官方网站下载https://www.kernel.org,通过https://www.kernel.org/pub/linux/kernel/选择相应版本下载,也可通过git获取源码git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git获取源码后可切换到相应版本分支上。

1.1.1 UNIX操作系统

UNIX操作系统是美国贝尔实验室Ken.Thompson和Denis Ritchie在DEC PDP-7小型计算机开发的一个分时操作系统。1969年夏Ken.Thompso在PDP-7使用BCPL(基本组合编程语言)一个月开发出了UNIX操作系统的原型,后经Denis Ritchie于1972年用移植性很强的C语言改写,使得UNIX系统在院校得到了推广。

1.1.2 MINIX操作系统

MINIX是一种基于微内核架构的类UNIX计算机操作系统,由Andrew S. Tanenbaum发明。MINIX最初发布于1987年,开放全部源代码给大学教学和研究工作。同时提供了用C语言和汇编语言编写的系统源代码。

1.1.3 GNU计划

GNU计划和自由软件基金会FSF(the Free Software Foundation)是由Richard M.Stallman于1984年一手创办的,旨在开发一个类UNIX并且是自由软件的完整操作系统。GNU是“GNU’s Not UNIX”的递归缩写。到90年代初,GNU项目已经开发初许多高质量的免费代码。其中包括有名的emacs编辑系统、bash shell程序、gcc系列编辑程序、gdb调试程序等,这些软件为Linux操作系统的开发创造了一个合适的环境。

1.1.4 POSIX标准

POSIX表示可移植操作系统接口(Portable Operating System Interface of UNIX,缩写为 POSIX )POSIX标准定义了操作系统应该为应用程序提供的接口标准,是IEEE为要在各种UNIX操作系统上运行的软件而定义的一系列API标准的总称,其正式称呼为IEEE 1003,而国际标准名称为ISO/IEC 9945。
POSIX标准意在期望获得源代码级别的软件可移植性。换句话说,为一个POSIX兼容的操作系统编写的程序,应该可以在任何其它的POSIX操作系统(即使是来自另一个厂商)上编译执行。
1991~1993年间,POSIX标准的制定正处在最后投票敲定的时候,也是Linux刚刚起步的时候,这个UNIX标准为Linux提供了极为重要的信息,使得Linux能够在标准的指导下进行开发,并能与绝大UNIX操作系统兼容。在最初的Linux内核源代码中(0.01版、0.11版)就已经为Linux系统与POSIX标准的兼容做好了准备工作。

1.1.5 Linux操作系统的诞生

这里写图片描述

1.1.6 Linux操作系统版本的变迁

这里写图片描述

1.1.7 Linux名称的由来

Linux操作系统刚开始并没有称作Linux,Linus给他的操作系统取名FREAX,怪诞的、怪物、异想天开的意思。在他将新的操作系统放到ftp.funet.fi服务器上时,管理员Ari Lemke很不喜欢这个名称,他认为是Linus的操作系统就取谐音Linux作为操作系统的目录吧,于是这个名称就这个流传下来。

1.1.8 早期Linux系统开发的主要贡献者

Thedore Ts’o(Ted Ts’o):Linux操作系统刚刚问世,怀着极大的热情为linux的发展提供了maillist,linux 0.10版添加了虚拟盘驱动程序ramdisk.c和内核内存分配程序kmalloc.c,最大贡献之一是提出并实现了ext2文件系统,该文件系统现已成为Linux文件系统标准,后面又推出了ext3文件系统,该系统大大提高了文件系统的稳定性和访问效率。
Alan Cox:Linux系统上TCP/IP网络代码的最早使用人之一,2001年负责维护linux内核2.4.x的代码。
Michael K.johnson:著名的linux文档计划的发起者之一。
Linux如今飞速发展,有着众多高手做出极大的贡献,具体名单可在Linux内核中的CREDITS文件查看,按字母列出了做出贡献的名单列表。

1.2 内容综述

Linux-0.11版本在1991年12月8日发布,发布时包含以下文件:
bootimgage.Z –具有美国键盘代码的压缩启动映像文件;
bootimgage是引导启动image文件,其中主要包含磁盘引导扇区代码,操作系统加载程序和内核执行代码。
rootimage.Z –用于向内核提供最基本支持的根文件系统,其中包括配置文件和命令执行程序。
as86.tar.Z –16位汇编链接程序软件包。
linux-0.11.tar.Z –linux 0.11内核源代码。
INSTALL-0.11 –linux 0.11系统简单安装说明文档。
Linux 0.11内核源代码结构列表如下:
这里写图片描述
本书各个章节介绍:
- 第2章:基于传统微机系统组成框图,主要介绍Linux内核运行之上的IBM PC/AT386微机的组成部分和介绍各大组成部分的功能和相互联系。
- 第3章:介绍Linux内核使用的编程语言、主要是阅读linux0.11源码所需的汇编语言和GNU C语言中的内嵌扩展知识。
- 第4章:80X86 CPU的体系结构以及保护模式下编程基础知识,主要包括:80X86基础知识、保护模式内存管理、中断和异常处理、任务管理及一个简单的内核示例。
- 第5章:内核体系结构及中断机制、系统调用和进程控制、堆栈等。
- 第6章:引导启动程序BOOTSECT.s、SETUP.s、HEAD.s。
- 第7章:初始化程序 main.c 。
- 第8章:kernel目录中所有程序,最重要部分进程调度函数schedule()、sleep()和有关系统调用程序。
- 第9章:kernel/blk_drv/目录下块设备驱动程序(磁盘、软盘)。
- 第10章:kernel/char_drv/目录下字符设备驱动程序(串行、键盘、显示器)
- 第11章:kernel/math/目录下数学协处理器仿真程序。
- 第12章:fs/文件系统程序,可参考书籍Andrew S.Tanenbaum。 《操作系统设计与实现》有关MINIX文件系统章节。
- 第13章:内存管理程序。
- 第14章:所有头文件的详细说明。
- 第15章:lib下所有文件。
- 第16章:tools/build.c,仅用于将内核的 磁盘引导程序块和其他主要内核模块连接成一个完整的内核映像。
- 第17章:实验环境和使用方法。

Linus开发linux主要参考3本书籍
- M.J.Bach 《UNIX操作系统设计》该书描述了UNIX System V内核的工作原理和数据结构
- John H Crawford 《Programming the 80386》是讲解80X86下保护模式编程方法的好书
- Andrew S.Tanenbaum 《操作系统设计与实现》使用了该书中描述的MINIX文件系统1.0版本

这篇关于linux 0.11 内核完全注释V3.0学习笔记(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/633271

相关文章

Linux之systemV共享内存方式

《Linux之systemV共享内存方式》:本文主要介绍Linux之systemV共享内存方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、工作原理二、系统调用接口1、申请共享内存(一)key的获取(二)共享内存的申请2、将共享内存段连接到进程地址空间3、将

快速修复一个Panic的Linux内核的技巧

《快速修复一个Panic的Linux内核的技巧》Linux系统中运行了不当的mkinitcpio操作导致内核文件不能正常工作,重启的时候,内核启动中止于Panic状态,该怎么解决这个问题呢?下面我们就... 感谢China编程(www.chinasem.cn)网友 鸢一雨音 的投稿写这篇文章是有原因的。为了配置完

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

Linux命令之firewalld的用法

《Linux命令之firewalld的用法》:本文主要介绍Linux命令之firewalld的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux命令之firewalld1、程序包2、启动firewalld3、配置文件4、firewalld规则定义的九大

Linux之计划任务和调度命令at/cron详解

《Linux之计划任务和调度命令at/cron详解》:本文主要介绍Linux之计划任务和调度命令at/cron的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux计划任务和调度命令at/cron一、计划任务二、命令{at}介绍三、命令语法及功能 :at

Linux下如何使用C++获取硬件信息

《Linux下如何使用C++获取硬件信息》这篇文章主要为大家详细介绍了如何使用C++实现获取CPU,主板,磁盘,BIOS信息等硬件信息,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录方法获取CPU信息:读取"/proc/cpuinfo"文件获取磁盘信息:读取"/proc/diskstats"文

Linux内核参数配置与验证详细指南

《Linux内核参数配置与验证详细指南》在Linux系统运维和性能优化中,内核参数(sysctl)的配置至关重要,本文主要来聊聊如何配置与验证这些Linux内核参数,希望对大家有一定的帮助... 目录1. 引言2. 内核参数的作用3. 如何设置内核参数3.1 临时设置(重启失效)3.2 永久设置(重启仍生效

IDEA自动生成注释模板的配置教程

《IDEA自动生成注释模板的配置教程》本文介绍了如何在IntelliJIDEA中配置类和方法的注释模板,包括自动生成项目名称、包名、日期和时间等内容,以及如何定制参数和返回值的注释格式,需要的朋友可以... 目录项目场景配置方法类注释模板定义类开头的注释步骤类注释效果方法注释模板定义方法开头的注释步骤方法注

kali linux 无法登录root的问题及解决方法

《kalilinux无法登录root的问题及解决方法》:本文主要介绍kalilinux无法登录root的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录kali linux 无法登录root1、问题描述1.1、本地登录root1.2、ssh远程登录root2、

Linux ls命令操作详解

《Linuxls命令操作详解》通过ls命令,我们可以查看指定目录下的文件和子目录,并结合不同的选项获取详细的文件信息,如权限、大小、修改时间等,:本文主要介绍Linuxls命令详解,需要的朋友可... 目录1. 命令简介2. 命令的基本语法和用法2.1 语法格式2.2 使用示例2.2.1 列出当前目录下的文