操作系统与naos
文章平均质量分 82
围绕进程、页表、设备与管道阅读操作系统源码,区分代码推导、教学模型和真实运行结果。
咔_
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
0.操作系统接口
从同一个原初文件描述符通过一系列fork和dup调用产生的文件描述符都共享同一个文件偏移,而其他情况下产生的文件描述符就不是这样的了,即使它们打开的都是同一个文件。管道右端可能也是一个带有管道的指令,如a|b|c,它fork两个新进程(一个b,一个,c),因此,shell可能要创建一个进程树。它的实现在第7850行。在这段代码的结尾,绑定在文件描述符1的文件有数据“hello world”,父进程的write会从子进程write结束的地方继续写(因为wait,父进程只在子进程结束之后才运行write)。原创 2025-06-07 21:37:33 · 655 阅读 · 0 评论 -
第二章:页表
kvmmap(kernel/vm.c:118)调用mappages(kernel.vm.c:149),它将指定范围的虚拟地址映射到一段物理地址.它将范围内地址分割成页(忽略页数),每次映射一页的起始地址.杜宇每个要映射的虚拟地址(页的起始地址),mapages调用walk找到该地址的最后一级PTE的地址.然后,它配置PTE,使其保持相关的物理页号,所需的权限(PTE_W,PTE_X,PTE_R),以及来标记PTE为有效(kernel/vm.c:161).这些对kfree的调用给了他一些内存管理.原创 2025-06-09 21:40:21 · 1108 阅读 · 0 评论 -
1.操作系统组织
每个进程都有一个执行线程(简称线程),执行进程的指令.一个线程可以被暂停,然后再恢复.为了再进程之间透明地切换,内核会暂停当前运行的线程,并恢复另一个进程的线程.线程的大部分状态(局部变量,函数调用返回地址)都存储在线程的栈中.每个线程有两个栈:用户栈和内核栈(p->kstack).当进程在执行用户指令时,只有它的用户栈在被使用,而它的内核栈是空的.当进程进入内核时(因为系统调用或中断),内核代码在进程的内核栈上交替执行;例如,即使进程的数量多于硬件cpu的数量,操作系统也必须保证所有的进程都有机会执行。原创 2025-06-09 18:12:17 · 540 阅读 · 0 评论 -
naos-riscv (dev.c)源码分析(devtmpfs)
这里是devtmpfs在vfs里面的文件系统id(fsid)。空实现,因为devtmpfs不需要维护inode引用计数,维护open状态,也不需要私有上下文。这里是把假/dev移到真实/dev上。(就是当前系统还不支持。3、把用户程序对/dev/xxx的操作-》转发到真正的device driver。这里是todo,输入设备通常不支持写,这里只是为了让用户写的时候不会死掉。devtmps = 存在于内存里的/dev文件系统 + 设备转发器。2、/dev下的“文件“既可以是普通内存文件,也可以是设备的代理。原创 2025-12-03 11:08:40 · 565 阅读 · 0 评论 -
naos-riscv源码分析:block.h如何把字节请求交给块设备驱动
保留原来的块设备头文件截图,结合历史实现解释字节偏移、LBA、扇区数与回调之间的关系,并推演一个跨扇区读取请求。原创 2025-11-28 12:17:43 · 232 阅读 · 0 评论 -
naos-riscv源码分析:device.h如何把设备注册、查找与读写串起来
从原来的设备结构截图出发,对照历史实现梳理注册、设备号、私有数据与函数指针分发,并解释它与 block.h 的区别。原创 2025-11-28 18:24:18 · 239 阅读 · 0 评论 -
naos的device.c源码:设备注册、子类型查找与驱动回调转发
保留13张原截图,用对应历史源码核对type与subtype、设备号、私有指针和错误返回,并明确宿主桩测试与内核运行的边界。原创 2025-11-28 14:33:15 · 376 阅读 · 0 评论 -
naos-riscv(block.c)源码分析
这里是快速读(完全对齐的读,offset % block_size==0.说明起始点是0、512、1024类似这样的,也就是起点对齐。把非0的条目视作有效。buffer->partition_entry_lba(指表明分区表的起始LBA(通常是2或更大))这里是按照128个条目来进行read。这里是读取偏移512字节处的结构,目的是读取GPT header,GPT header在LBA1(第一个扇区)。卸载块设备(这里的ptr是块设备驱动的私有数据指针)。这里是块设备的ioctl(输入输出控制)接口。原创 2025-11-23 23:11:46 · 529 阅读 · 0 评论
分享