摘要: mit6.828笔记 - lab5(下)- Spawn and Shell Spawning Process 有了文件系统了,我们终于可以方便地读取磁盘中的文件了。到目前为止,我们创建进程的方法一直都是在编译内核的时候将程序链接到数据段,在 i386_init 通过 ENV_CREATE 宏创建。 现在我们应该考虑通过文件系统直接将用户程序从硬盘中读取出来,spawn 就是 阅读全文
posted @ 2024-05-27 16:07 toso 阅读(52) 评论(0) 推荐(0) 编辑
摘要: mit6.828笔记 - lab4 Part C:抢占式多任务和进程间通信(IPC) Part C:抢占式多任务和进程间通信(IPC lab4到目前为止,我们能够启动多个CPU,让多个CPU同时处理多个进程。实现了中断处理,并且实现了用户级页面故障机制以及写时复制fork。 但是,我们的进程调度不是抢占式的,现在每个进程只有在发生中断的时候,才会被调度(调用shed_yeild),这 阅读全文
posted @ 2024-05-20 20:29 toso 阅读(107) 评论(0) 推荐(0) 编辑
摘要: mit6.828笔记 - lab4 Part B:写时复制Fork Part B Copy-on-Write Fork Unix 提供 fork() 系统调用作为主要的进程创建基元。fork()系统调用复制调用进程(父进程)的地址空间,创建一个新进程(子进程)。 不过,在调用 fork() 之后,子进程往往会立即调用 exec(),用新程序替换子进程的内存。例如,s 阅读全文
posted @ 2024-05-20 16:47 toso 阅读(78) 评论(0) 推荐(0) 编辑
摘要: mit6.828笔记 - lab3 Part B:页面故障、断点异常和系统调用 Part B 页面故障、断点异常和系统调用 虽然说,我们故事的主线是让JOS能够加载、并运行 user/hello.c 编译出来的镜像文件。 虽然说,经过Part A最后几节,我们初步实现了异常处理的基础设施。 但是对于操作系统来说,还远远不够,比如说那个 trap_dispatch 还没完成。 所 阅读全文
posted @ 2024-05-15 17:26 toso 阅读(92) 评论(0) 推荐(0) 编辑
摘要: mit6.828笔记 - lab3 Part A:用户进程和异常处理 简单回顾 在开始 lab3 的学习之前,我们先简单回顾下 到目前为止,我们的内核能做了什么: lab1中,我们学习了 PC启动的过程,看到BIOS将我们编写的boot loader 载入内存,然后通过bootloader 将内核载入内存。同时,使用了一个写死的临时页表(entry_pgdir)完成了 阅读全文
posted @ 2024-05-15 17:24 toso 阅读(190) 评论(0) 推荐(0) 编辑
摘要: mit6.828 - lab2笔记 lab2的实验手册带着我们学习操作系统是如何处理内存管理的。lab2将内存管理划分为 物理内存管理、页表管理、内核地址空间划分三个部分。 lab2的学习目标:重点学习内存管理的相关知识,包括内存布局、页表结构、页映射 lab2的学习任务:完成内存管理的相关代码 在lab2中,完全可以跟着实验手册的节 阅读全文
posted @ 2024-05-07 19:43 toso 阅读(371) 评论(0) 推荐(0) 编辑
摘要: mit6.828 - lab1笔记 1. PC启动 打开两个窗口,在第一个窗口中 make qemu-gdb,会启动内核,但在执行第一个指令之前停下; 在第二个窗口中make gdb,实时观察第一个窗口中的执行过程。 从这里可以观察到: IBM PC 在物理地址 0x000ffff0 开始执行, 位于为 ROM BIOS 保留的 64 阅读全文
posted @ 2024-05-07 19:31 toso 阅读(121) 评论(0) 推荐(0) 编辑
摘要: mit6.828笔记 - lab5(上)- 文件系统 文件系统结构 unix的文件系统相关知识 unix将可用的磁盘空间划分为两种主要类型的区域:inode区域和数据区域。 unix为每个文件分配一个inode,其中保存文件的关键元数据,如文件的stat属性和指向文件数据块的指针。 数据区域中的空间会被分成大小相同的数据块(就像内存管理中的分页)。数据 阅读全文
posted @ 2024-01-10 09:25 toso 阅读(106) 评论(0) 推荐(0) 编辑
摘要: mit6.828笔记 - lab4 Part A:多处理器支持和协同多任务处理 到目前为止,lab3是我们的内核能够按顺序完成env_create创建的进程。但是还不能做到多进程同时执行。lab4中我们将实现多进程的调度和进程间通信。 为了不迷失方向,我们来看一下与 lab4 合并后 kern/init.c : i386_init() 有什么变化: void i386_init 阅读全文
posted @ 2023-12-08 10:47 toso 阅读(147) 评论(0) 推荐(0) 编辑
摘要: jarvisoj_level2 查看保护措施: canary没有,很好。 栈可执行,这题也可以在栈上写shellcode。 PIE都没开,从IDA看到的地址就是实际加载的地址了。 IDA 静态分析 vulnerable_function 里面 read 读了 0x100 字节,但是 buf 只有 0 阅读全文
posted @ 2023-11-29 11:28 toso 阅读(21) 评论(0) 推荐(0) 编辑