ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Linux 0.11源码阅读笔记-总结

2022-04-02 16:00:07  阅读:182  来源: 互联网

标签:文件 管理 源码 0.11 内存 Linux 进程 磁盘 inode


总结

Linux 0.11主要包含文件管理和进程管理两个部分。进程管理包括内存管理、进程管理、进程间通信模块。文件管理包含磁盘文件系统,打开文件内存数据。磁盘文件系统包括空闲磁盘块管理,文件数据块的管理,文件元数据的管理,树形结构目录。打开文件内存数据包括文件描述符表、file文件表、inode节点表。

中断过程

  • 每个进程有一个用户栈和一个进程栈,中断调用导致用户栈切换到内核栈,中断返回导致内核栈切换到用户栈
    • INT指令中调调用时,用户态运行状态被保存到内核栈中
    • IRET指令中断返回时,恢复用户态运行状态信息,包括用户栈地址信息
  • 系统调用基于int 80软中断实现,80中断程序根据系统调用号调用相应的函数,如sys_read、sys_write
  • 时间片轮转进程调度基于时钟中断实现,进程时间片用完时,发生时钟中断,中断程序转而运行调度程序
  • 进程调度的实质是运行状态之间的切换,被选中运行的程序,将被选中进程的运行状态信息复制到硬件寄存器中,运行被选中程序

内存管理

  • 分页内存管理包括空闲块的管理、进程基于页表管理已分配的物理内存;分段内存管理通过段表(LDT)管理分段内存信息。
  • 地址翻译经过段号:偏移—>线性地址—>物理地址的二次转换过程,设置好段表(LDTR)和页表(PTBR)信息后,内存管理单元(MMU)自动完成地址翻译过程。

文件管理

磁盘数据结构

  • 磁盘空闲块的管理,可以通过链表、位图、成组链接法等。
  • 文件数据块的管理,通过类似页表的结构维护文件逻辑块到磁盘物理块之间的映射
  • 磁盘文件的管理,通过inode数组维护所有文件信息,inode记录对应的文件信息
  • 树形目录结构,目录数据文件包含子文件名—>子文件inode号的映射关系,从而形成树形目录结构。

打开文件的内存数据结构

  • inode表,记录文件的inode数据,用磁盘上文件inode数据基本一致
  • file表,记录打开文件的信息,维护进程对文件的操作状态,如读写偏移
  • 文件描述符表,记录进程打开的文件集合,表项是文件表的下标索引
  • fork后父子进程文件描述符表相同;不同进程打开同一文件,具有不同的file数据,即拥有不同的读写偏移。

高速缓冲

  • 空闲缓冲区的管理,使用空闲链表
  • 已分配缓冲区的管理,为加快访问速度,使用哈希表,哈希函数的输入是设备号和磁盘块号
  • 脏缓冲块数据的写盘,缓冲块需要重新缓存其它磁盘块的数据时,对于旧的数据,如果具有脏数据(dirt位为1),则写入磁盘

块驱动程序

  • 通过设备表管理块设备,表项记录设备的请求队列地址,处理请求函数地址。
  • 请求队列维护所有对磁盘的读写请求,所有读写请求被放到请求队列中
  • 设备中断处理程序,不断处理请求队列中的读写请求

标签:文件,管理,源码,0.11,内存,Linux,进程,磁盘,inode
来源: https://www.cnblogs.com/lazyfiish/p/16092507.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有