摘要: title: Atomic Variable & Memory Order date: 2022-10-04 21:26:37 tags: - "原子变量" - "并发" - "内存序模型" 这一篇文章, 我们浅谈一下原子变量以及内存序模型. 有什么问题欢迎留言指出, 我们可以一起讨论. Atomi 阅读全文
posted @ 2024-01-29 00:13 RiversJin 阅读(41) 评论(0) 推荐(0)
摘要: Arm内存模型 在SMP,弱内存序的系统中, 为了实现多核间的同步,通常硬件需要实现两类硬件特性 互斥访问 2. 内存屏障 通过互斥访问, 可以实现核心间的同步; 通过内存屏障, 确保核心在解锁前对于内存的访问操作使得其他核心可见. 比如, 存在两个核心, 分别是Core0和Core1, Core0 阅读全文
posted @ 2024-01-29 00:11 RiversJin 阅读(211) 评论(0) 推荐(0)
摘要: 有关本篇文章的代码,我已经上传至代码库的"enableMMU"分支 代码库地址 RiversJin/ToyOS: A simple SMP OS on ARMv8 在Aarch64架构中,MMU不但控制着地址翻译,还管理着内存的缓存,分享策略.在没有启动MMU时,数据缓存失效,指令缓存有效. 参考这 阅读全文
posted @ 2024-01-29 00:08 RiversJin 阅读(312) 评论(0) 推荐(0)
摘要: 接上一章节,我们来看看这个项目的代码,就从启动时的执行顺序开始吧 首先是entry.S 然后是main.c entry.S 我们之前提到了,某些版本的qemu在启动时CPU的异常等级与真实的树莓派不一致,所以这里有一个判断的过程.如果你对这个感兴趣,可以跟着执行过程看,我写的注释也还算详细,或者,只 阅读全文
posted @ 2024-01-29 00:02 RiversJin 阅读(116) 评论(0) 推荐(0)
摘要: 有关这个hello,world的代码,我已经上传至代码库的helloworld分支 代码库地址: iversJin/ToyOS: A simple SMP OS on ARMv8a (github.com) 这一部分,我想分为3个部分来说,可能有点啰嗦,嘿嘿您可以跳着看,我这人比较话多 😛 树莓派 阅读全文
posted @ 2024-01-28 23:59 RiversJin 阅读(164) 评论(0) 推荐(0)
摘要: 首先,我们需要一个Linux环境(在这里是Ubuntu 20.04),一个编译器,一个模拟器QEMU(毕竟直接调试芯片运行非常困难不是),一个支持ARMv8架构的GDB调试器. 我们会使用一个Docker配置环境,我会贴出来一个Dockerfile,但是还是希望有兴趣的同学可以听我唠叨一下环境配置过 阅读全文
posted @ 2024-01-28 23:50 RiversJin 阅读(92) 评论(0) 推荐(0)
摘要: 轮子哥曾经说程序员的三大浪漫:操作系统,编译原理,计算机图形学. 我已经写过了玩具级别的编译器,基于光追的玩具渲染器,那么接下来就只有操作系统没试过了. 所以,在毕业设计上,我选择了在ARMv8实现一个支持多核心的操作系统. 我们的最终目标,是实现一个可以在树莓派3b上启动的操作系统内核. 会参考很 阅读全文
posted @ 2024-01-28 23:42 RiversJin 阅读(141) 评论(0) 推荐(0)