linux-0.11操作系统实验
时间: 2023-06-05 12:47:31 浏览: 128
对于“linux-0.11操作系统实验”,需要具备对Linux操作系统的基本了解,了解其文件系统、进程管理、内存管理、输入输出等基本概念及其实现方式。要求实际操作,使用源代码进行调试和修改,进一步加深对Linux操作系统的理解和认识。同时需要掌握C语言编程基础,了解汇编语言。通过实践,提高解决问题和分析问题的能力。
相关问题
linux-0.11源码 同济大学中文注释版
linux-0.11源码是Linux操作系统的一个历史版本,其诞生于20世纪90年代初期,并成为了开源社区的一项里程碑式成果。
同济大学中文注释版是在linux-0.11源码基础上,加入了许多中文注释,方便国内用户更好地了解源代码的含义和实现。
通过学习linux-0.11源码,我们可以了解到Linux操作系统的基本组成部分,包括内核、进程管理、文件系统、网络协议等。同时,这也是学习操作系统底层编程的一个非常好的入手点。
同济大学中文注释版还强调了代码中的一些具有代表性的实现方法,这些方法蕴含着Linux操作系统设计的智慧和经验,对于想要深入学习操作系统内幕的人来说,也具有极大的参考价值。
总之,学习Linux-0.11源码同济大学中文注释版,不仅可以提高我们的代码阅读和分析能力,还能够为我们开启一扇了解操作系统内幕的窗户。
linux内核 Linux-0.11版本 boot/head.s中 _main如何标识main.c文件中的main函数的内存地址并实现跳转?
在Linux-0.11版本的boot/head.s文件中,可以看到如下代码段:
```
/* Switch to PM (Protected Mode) */
mov ax,#INITSEG /* set up kernel DS */
mov ds,ax
mov es,ax
mov ax,#0x0000 /* set up kernel ES (not used anyway) */
mov ss,ax /* set up stack segment */
mov sp,#0x9000 /* set up stack pointer (just beyond bss) */
call _main /* call the main bootup routine */
jmp . /* just in case _main returns */
```
这段代码中,通过 `call _main` 调用 C 语言代码中的 `main` 函数。由于 `main` 函数的地址在链接时是不确定的,因此在编译链接时会生成一个符号表,该符号表中会记录 `main` 函数的内存地址。
在这段代码中,通过 `_main` 符号来调用 C 语言代码中的 `main` 函数。实际上,这个 `_main` 符号是由链接器在链接时生成的,它对应的就是 `main` 函数的内存地址。由于 `call` 指令是按照相对地址进行调用的,因此这个相对地址就是 `_main` 符号和 `main` 函数之间的偏移量,这个偏移量会在链接时被计算出来并嵌入到可执行文件中。
因此,在运行时,执行 `call _main` 会跳转到 `main` 函数所在的内存地址,并开始执行 C 语言代码。