![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux0.12
馒头2870
这个作者很懒,什么都没留下…
展开
-
【linux0.12】超级块、缓冲块、i节点等数据结构
因为代码中很多地方都用到了这几种数据结构,所以还是统一的放在一篇文章中把。缓冲头结构struct buffer_head { char * b_data; //指向真正缓冲块的指针 unsigned long b_blocknr; //数据的逻辑块号 unsigned short b_dev; //设备号 unsigned char b_uptodate; //更新标识:数据是否更新(有效),理解为有效更好原创 2020-12-16 16:22:39 · 360 阅读 · 0 评论 -
【linux0.12】i节点操作
TODO原创 2020-12-14 14:08:36 · 353 阅读 · 0 评论 -
【linux0.12】从open系统调用到磁头柱面扇区下篇-----代码讲解
文章目录前言sys_open前置知识代码讲解总结open_namei代码讲解总结dir_namei代码讲解总结get_dir代码讲解其他follow_link总结前言 本文只是讲解打开常规文件(不是块设备文件、字符设备文件等)过程中的主要逻辑,包括目录项的查找,文件名到i节点的映射,i节点的使用,盘块的使用,请求队列的组织与使用,限于篇幅也不会面面俱到的把代码中每个细节都讲到,只讲解其中的骨架代码,一些细节部分如i节点管理与操作,目录项管理与操作等放在单独的文章中讲解,防止主次不分。另外代码中还含有高原创 2020-12-13 16:47:18 · 167 阅读 · 0 评论 -
【linux0.12】盘块位图和i节点位图的管理与操作
TODO原创 2020-12-13 15:41:15 · 607 阅读 · 0 评论 -
【linux0.12】目录项管理与操作
TODO原创 2020-12-13 13:44:25 · 200 阅读 · 0 评论 -
【linux0.12】文件高速缓冲区管理
概述 为什么要有高速缓冲区?直接对磁盘进行IO操作的速度与内存和cpu处理的速度是相比是非常慢的,为了提高系统性能,设立了高速缓冲区。内核访问块设备中的数据,都需要经过高速缓冲区来间接地进行操作。 高速缓冲区对外提供了三个接口,块读取函数bread、块提前预读函数breada和页块读取函数bread_page,页块读取函数一次读取一页内存所能容纳的缓冲区块数(4块)。我们只讲解其中的bread函数,用户只需提供设备号和逻辑块号就可以通过bread来进行操作高速缓冲区,以达到间接操作磁盘的目的。原创 2020-12-10 09:09:49 · 314 阅读 · 0 评论 -
【linux0.12】linux0.11下增加系统调用whoami
系统调用的初始化在系统启动main函数之后,会调用kernel/sched.c中的sched_init,里面对系统调用的初始化就一句set_system_gate(0x80,&system_call);这个0x80就是我们的中断号,而system_call函数则是中断服务程序。set_system_gate是一段宏替换,代码如下1 #define _set_gate(gate_add...原创 2020-04-18 23:25:50 · 625 阅读 · 0 评论 -
【linux0.12】实验楼操作系统原理与实践之实验五:基于内核栈切换的进程切换
简介 早期内核使用intel提供的基于tss切换的机制,这种机制操作十分简单,但是执行速度特别慢,无法充分利用现代cpu的一些指令流水来优化速度。关于tss切换的方式详细可以看实验楼中的描述,和完全剖析这本书。根据老师的实验,要把这种基于tss切换的方式换成现代的基于内核栈切换的方式。 基于堆栈的切换,核心就是要先在切换前保存进程的栈,然后切换到另一个进程的栈,但因原创 2020-06-25 13:18:35 · 451 阅读 · 0 评论 -
【linux0.12】linux0.12中的内存寻址过程
linux0.12是结合了分段和分页两种机制来完成程序的逻辑地址到物理地址的转换,所以地址转换分为两个阶段,第一阶段使用分段基址把逻辑地址转换为线性地址空间,第二阶段使用分页基址把线性地址转换为物理地址。下面举一个具体的例子来讲述一下linux0.11是如何把这两种机制结合使用的。 首先我们要了解,硬件为存放段选择符提供了6个段寄存器:CS、DS、ES、SS、FS、GS,其中CS专门用于代码段的寻址,DS专门用于数据段的寻址、SS专门用于堆栈段的寻址,其余三个寄存器作辅助用。 我们知道,程序运行原创 2020-11-10 22:17:33 · 143 阅读 · 0 评论 -
【linux0.12】从open系统调用到柱面磁头扇区上篇-----原理讲解
上篇只讲原理,较少涉及代码,下篇将从代码层面进行讲解 虽然标题是从系统调用到柱面磁头扇区,但我们知道,操作系统是联系硬件和用户的一个中间层,为用户操作硬件提供了方便和高效,操作系统的任何操作最终都会落实到硬件(这里是磁盘)上,所以我选择了从硬件开始讲起,看操作系统是如何一步一步把磁盘抽象为最终的文件系统的,反过来也就是用户如何通过文件系统来达到操作磁盘的目的。磁盘先来看一下磁盘的物理结构 通过下方的图片,我们可以知道磁盘是由盘面,磁头,磁臂组成的,其他的磁道,扇区,柱面是人为的划分,物理上只原创 2020-11-12 23:52:21 · 318 阅读 · 0 评论