Linux 0.11内核代码笔记

  主存中顶部分配给ROM BIOS(256KB-2MB),640KB-1MB的空间留作其他用途.包括显示缓冲区,ROM BIOS映射区...
  BIOS启动过程:从内存的oxFFFFFFF0开始,这个地址有一条JMP命令跳到Flash ROM中的BIOS程序中执行,将其中的64KB代码复制到内存oxF0000-ox100000作为ROM BIOS映射区,并从这里开始进入实模式工作.
  CMOS(互补金属氧化物半导体)存储器容量很小,用于存储实时钟信息和系统硬件配置信息.
  as86汇编编译器用以编译引导扇区程序bootsect.s和配置程序setup.s.其它源代码由GNU as汇编和gcc编译.
  处理器的系统寄存器包括标志寄存器,内存管理寄存器(GDTR,IDTR,LDTR,TR),控制寄存器(CR0,CR1,CR2,CR3).
  段寄存器(CS,DS,ES,SS,FS,GS),EIP寄存器中存放段内偏移地址,所以CS:[EIP]表示要执行的代码逻辑地址.
  80x86将逻辑地址根据分段规则转为线性地址,再将线性地址根据分页规则转为物理地址.
  rep表示在CX不为0的情况下,不断循环.
  movw表示移动一个字
  jmpi go,INITSEG 表示间接跳转.
  seg 取段地址
  ah=0x08    int 0x13  表示取磁盘驱动器参数
  .word 0  表示定义值为0的变量
 

总结:ROM BIOS (0x7c00) ->bootsect.S移动到0X90000执行,setup.S移动到0x90200, System模块移动到0x10000 -> setup.S再执行->System模块移动到0x00000->执行head.S

main.c的主要功能:
1.读取head.S执行后的系统配置参数,分配内存空间
2.trap_init()  设置陷阱门
3.blk_dev_init() 块设备初始化
4.chr_dev_init() 字符设备初始化
5.tty_init()  tty初始化
6.time_init()  系统时间初始化
7.sched_init()  进程调度初始化
8.buffer_init()  缓冲区初始化
9.hd_init()    硬盘初始化
10.floppy_init() 软盘初始化
11.sti()  开启中断
12.move_to_user_mode()  转到用户模式
13.fork()  创建进程0,如果创建成功转init()函数
14.init()函数中读取硬盘信息setup(***),打开tty0,创建子进程用以打开rc和sh,再创建子进程以setsid().
总结:main.c的主要工作是:分配内存->初始化->开启中断->转到用户模式(保护模式)->创建进程0,1以读取硬盘信息,打开rc和sh.

//
asm.s的主要功能是:处理硬件中断
C函数地址入栈->中断返回地址与C函数地址交换入栈->寄存器入栈->出错码入栈->


trap.c的主要功能:初始化陷阱门,asm.s中的中断处理在trap.c中,主要是显示出错的位置,寄存器...


system_call.s


总结:system_call.s主要功能是实现系统调用,还包括时钟中断,硬盘中断,软盘中断,并行中断,其它底层...
_syscall0宏调用system_call.s->system_call.s根据中断号到sys.h中的system_call_table数组中找->找到后对应函数在sys.c中
所以添加用户系统调用的步骤应该在sys.c中定义新函数->将新函数声明到sys.h及unstd.h中->system_call.s中修改系统调用的总数(+1)


mktime.c的主要功能是计算从1970.1.1到开机时间所经过的秒数


sched.c 的主要功能是进程调度算法,还有其它的一些程序,如软驱程序,sleep_on... , 根据从就绪状况的进程中,选取signal->count最大的优先,同时重新计数全部的signal->count=signal->count/2+signal->priority

转载于:https://www.cnblogs.com/fishert/archive/2008/05/04/1181946.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《Linux 0.11内核完全解析》是一本介绍Linux 0.11内核的书籍,内容详尽地解析了Linux 0.11内核的设计和实现原理。 首先,书籍介绍了Linux 0.11内核的历史背景和发展过程。Linux 0.11内核Linux早期版本中的一种,由于其简洁、高效的设计而受到广泛关注。 接着,书籍着重解析了Linux 0.11内核的架构和核心组件。包括内存管理、进程管理、文件系统等模块,为读者提供了详尽的API和数据结构说明,使读者可以深入理解内核的运作原理。 此外,书籍还详细介绍了Linux 0.11内核的系统调用和设备驱动。系统调用是用户程序与内核之间的接口,书籍列举了Linux 0.11内核支持的各种系统调用,并给出了具体的调用过程和参数传递方式。设备驱动则涉及与硬件设备的交互,书籍对Linux 0.11内核中常见的设备驱动进行了解析和实例讲解。 最后,书籍还介绍了Linux 0.11内核的调试和性能优化技巧。通过学习这些技巧,读者可以更好地理解内核的运行机制,并能够在实际项目中进行问题排查和性能优化。 《Linux 0.11内核完全解析》全面而深入地解析了Linux 0.11内核的各个方面,适合对操作系统内核开发有兴趣的读者阅读。阅读本书后,读者将对Linux 0.11内核有更深入的理解,并能够应用这些知识进行内核开发和调试工作。 ### 回答2: 《Linux 0.11内核完全解析》是一本详细介绍Linux 0.11内核的书籍。Linux 0.11Linux操作系统的早期版本,具有重要的历史和技术价值。这本书对Linux 0.11内核的设计思想、代码结构、系统调用、进程管理、内存管理、文件系统、设备驱动等方面进行了全面深入的讲解和解析。 首先,这本书对Linux 0.11内核的设计思想进行了详细的介绍。它解析了Linux 0.11内核的设计理念,包括分层结构、模块化设计、中断处理、进程管理等方面。通过解析设计思想,读者可以了解到Linux 0.11内核的基本原理和设计哲学。 其次,这本书还深入解析了Linux 0.11内核代码结构。它逐行解读了内核的关键代码,包括启动代码、中断处理程序、进程管理代码等。通过阅读和理解内核代码,读者可以了解到Linux 0.11内核的运行机制和内部实现。 此外,这本书还对Linux 0.11内核的系统调用、进程管理、内存管理、文件系统、设备驱动等方面进行了详细的解析。它介绍了系统调用的处理过程、进程管理的算法、内存管理的策略、文件系统的结构和操作、设备驱动的注册和使用等。通过全面解析这些关键功能,读者可以深入了解到Linux 0.11内核的核心功能和实现细节。 总之,《Linux 0.11内核完全解析》是一本全面深入解析Linux 0.11内核的书籍。通过阅读这本书,读者可以了解到Linux 0.11内核的设计思想、代码结构、系统调用、进程管理、内存管理、文件系统、设备驱动等方面的内容。这对于理解早期Linux的发展历程、了解操作系统的原理和学习内核开发都具有重要的参考价值。 ### 回答3: 《Linux 0.11内核完全解析》是一本关于分析Linux 0.11内核的书籍。该书主要分析了Linux 0.11内核的结构、原理和实现细节。 首先,书籍详细介绍了Linux 0.11内核的组成结构。它由一个基本的多任务、分时操作系统构成,包括进程管理、内存管理、文件系统、设备驱动等基本模块。书中对这些模块的实现细节进行了解析,帮助读者理解Linux内核的整体结构。 其次,书中深入分析了Linux 0.11内核的原理。它详细讲解了Linux内核的各个部分是如何协作的,包括进程调度、内存管理、文件系统访问等。通过深入理解Linux内核的原理,读者可以更好地理解操作系统的工作原理,并能够在需要时进行相应的调整和优化。 最后,书中还介绍了Linux 0.11内核的实现细节。它深入解析了内核代码,讲解了内核代码中的关键部分和数据结构。通过对内核代码的深入分析,读者不仅可以了解Linux内核的具体实现方式,还可以学习到一些编程技巧和设计原则。 综上所述,《Linux 0.11内核完全解析》这本书详细介绍了Linux 0.11内核的结构、原理和实现细节,是一本帮助读者深入了解和学习Linux内核的重要参考书籍。通过阅读该书,读者可以提升对操作系统的理解和编程能力,进一步掌握和应用Linux内核的相关知识。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值