本文介绍了一种使用了RAII技术的自旋锁,配合Rust的生命周期及所有权机制,能够在减少代码量的同时,很好的解决自旋锁的“忘记放锁”、“双重释放”、“未加锁就访问”的并发安全问题。并且这种自旋锁能够支持编译期的检查,任何不符合以上安全要求的代码,将无法通过编译。
一个在关键路径上面隐藏了11个月的BUG:DragonOS进程切换查错
前言的前面 DragonOS是一个从0开始研发内核及用户态环境的,独立自主的,面向服务器领域的开源操作系统,提 …
Rust将new出来的对象赋予static生命周期
今天在用Rust写DragonOS的signal机制时候,遇到了这么一个问题:我需要在fork的时候为进程动态 …
简单实现posix中规定的memcmp函数
简介 memcmp函数的功能非常简单,传入两个指针s1和s2,以及要比较的字节大小n,比较这两块内存的值的差异 …
高效的无锁引用计数结构:lockref
lockref lockref是将自旋锁与引用计数变量融合在连续、对齐的8字节内的一种技术。 lockre …
C语言实现编译期断言
编译期断言是一种对编译期能计算出来的常量的值进行断言,从而避免代码中引入一些不合理的值。 实现原理 编译期断言 …
DragonOS中的READ_ONCE()宏和WRITE_ONCE()宏
DragonOS中实现了与Linux相似的READ_ONCE()宏以及WRITE_ONCE()宏,主要目的在于 …
USB:根据制造商id及产品id获取产品名
相信很多人都有一个疑问,就是:电脑是怎么知道插入电脑的usb设备的产品名的?其中一种方法就是,根据usb设备的 …
在DragonOS中,使蜂鸣器发声
很简单,代码如下: 转载请注明来源:https://longjin666.cn/?p=1537
关于进程的Sleep,你所不知道的事情
关于进程sleep的两种实现方式,我称之为:中断型sleep和spin/rdtsc型sleep。 本视频介绍了 …