diff --git "a/source/_posts/2023\345\274\200\346\272\220\346\223\215\344\275\234\347\263\273\347\273\237\350\256\255\347\273\203\350\220\245\347\254\254\344\272\214\351\230\266\346\256\265\346\200\273\347\273\223\346\212\245\345\221\212-\346\261\237\346\230\212.md" "b/source/_posts/2023\345\274\200\346\272\220\346\223\215\344\275\234\347\263\273\347\273\237\350\256\255\347\273\203\350\220\245\347\254\254\344\272\214\351\230\266\346\256\265\346\200\273\347\273\223\346\212\245\345\221\212-\346\261\237\346\230\212.md" index 5477395b7f7..925a3f7901d 100644 --- "a/source/_posts/2023\345\274\200\346\272\220\346\223\215\344\275\234\347\263\273\347\273\237\350\256\255\347\273\203\350\220\245\347\254\254\344\272\214\351\230\266\346\256\265\346\200\273\347\273\223\346\212\245\345\221\212-\346\261\237\346\230\212.md" +++ "b/source/_posts/2023\345\274\200\346\272\220\346\223\215\344\275\234\347\263\273\347\273\237\350\256\255\347\273\203\350\220\245\347\254\254\344\272\214\351\230\266\346\256\265\346\200\273\347\273\223\346\212\245\345\221\212-\346\261\237\346\230\212.md" @@ -25,9 +25,10 @@ tags: - 实现以sv39模式的地址空间管理,页表的管理,虚拟地址到物理地址的转换,在这个实践上花费时间比较多,特别是异常处理时入口地址,返回地址,任务空间的页表地址切换,及程序各个段的映射,按照rcore的实现trap_context是放在应用层地址空间的,基本上可以随意修改,不够安全,准备尝试把trap_context放到内核地址空间 ### 实践5 - 实现了解进程信号的发送接收过程,在内核层触发应用层的回调函数,实际上是一次任务的切换,必须在当前进程调用系统调用后才能触发,了解各种锁通过任务调度的实现,进程间的通信,管道消息的发送接收 -### 实践5 +### 实践6 - 实现通过对接调用easy-fs对文件的读写,块设备驱动采用的是virtio接口,这块比较复杂,待进一步理解 - +### 实践7 +- 尝试启动双核,对任务进行调度,主要涉及到公共资源的加锁,当前任务的结构指针存储到tp寄存器(x4),获取当前进程通过读取tp寄存器实现,trap_context和task_context加入对tp寄存器的保存和加载(针对系统调用和任务调度) ### 总结 - 回顾这个学习实践过程,我认为我对操作系统原理上的理解取得了很大的进步。但我也意识到,还需要不断的继续学习和实践。 - 我希望能够继续深入学习Rust和操作系统开发,参与更多的开源项目,提升我的技能和经验。同时,我也希望能够将我在学习过程中积累的知识和经验分享给更多的人,帮助更多的人一起进步。