Linux系统概要总结

本文详细梳理了Linux 0.11系统,涵盖了硬件基础、内存管理、进程管理、中断处理和文件系统等方面。重点讨论了内存的虚拟地址、线性地址和物理地址的转换,以及进程的系统调用、堆栈管理和任务切换。同时,介绍了中断处理机制,尤其是系统调用中断int 80的使用。最后,概述了文件系统的结构和交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这篇文章概要地把整个LINUX系统(0.11)串起来。部分图片来自于《Linux内核完全注释》一书,版权归原作者所有。另,以下总结,纯属个人观点,并不一定是对的,欢迎指正。

 

零. 总括

   image

  LINUX 系统总的来说分为几部分管理,即内存,进程,文件系统,中断,进程通信,网络接口

 

一. 硬件

image

Linux 0.11是基于80386系统芯片的。所以寄存器信息如下

http://blog.youkuaiyun.com/yunsongice/archive/2010/10/04/5921873.aspx

 

个人觉得,对操作系统理解,首先要清楚我们有什么样的硬件,这些硬件提供什么样的功能。

CPU:取指令(CS+IP。根据设置,可能运行于实模式,即物理=CS*16+IP。也可能是保护模式,即CS里可能是段描述符,需要进行虚->线性的转换。另外,当开启了分页机制时,还需要线性->物理的转换) + 执行指令(当CS或IP值有变化时,通过上面所说的步骤,取到正确的指令,并执行)

 

二. 内存管理

    1. 三个重要概念

     虚拟地址:CS+IP中的就是虚拟地址(这样说未必很准确,不过可以让我们有个概念)

    线性地址: 开启段保护后,CS中存入的是描述符,由段描述符得到段基址,加上偏移,得到线性地址。

    物理地址: 真正的内存地址。当没有开启分页时,线性地址就是物理地址。当开启分页时,分割为4K一页,采用二级目录形式(传说中这样比较省空间,因为二级目录是可以动态分配的)。由于线性到物理的映射是由所有任务共有(采用同样的映射方法),所以段映射时得到的线性地址不可以重合(理论上,但其实有的会故意重合)。

   2. 映射

   涉及到GDT,LDT, CR3等等。

image

GDT指向全局描述符表,为所有任务共有。其中,内核数据段,代码段的描述符放在里面 + TSS + 任务的LDT表

LDT指向局部表,每个任务有自己的LDT。

个人觉得GDT和LDT映射出来的线性空间是不重叠的。

image

    上图描述了三种地址的关系

3. 线性内存的分配

image 

image

前16M用于内核,包括内核所有代码、内核段表(GDT,IDT,TSS)、页目录表和内核二级页表、内核局部数据及临时堆栈。而且其线性地址与物理地址应是一一对应的。这样GDTR指向的就是GDT的地址了。

4. 物理内存的分配

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值