- 博客(7)
- 收藏
- 关注
原创 XV6 锁实验
直接用作链表项(这样可以不使用额外空间)连接成一个链表,在分配的时候,将物理页从链表中移除,回收时将物理页放回链表中。在这里无论是分配物理页或释放物理页,都需要修改 freelist 链表。该实验为每个 CPU 分配独立的 freelist,这样多个 CPU 并发分配物理页就不再会互相排斥了,提高了并行性。潜在问题:当CPU1在持有自身锁的时候去偷CPU2的页,此时CPU2也在持有自身锁的时候去CPU1偷页,会造成死锁。kalloc 原本的实现中,使用 freelist 链表,将空闲物理页。
2025-03-19 16:39:53
297
原创 32定时器
计数器溢出频率:CK_CNT_OV = CK_CNT / (ARR + 1) = CK_PSC / (PSC + 1) / (ARR + 1)CK_CNT=72MHZ ARR:自动重装载值PWM:PWM频率: Freq = CK_PSC / (PSC + 1) / (ARR + 1)PWM占空比:Duty = CCR / (ARR + 1)PWM分辨率:Reso = 1 / (ARR + 1)CCR的值可以实时设置,初始值设为0。
2024-07-11 17:14:48
305
原创 外部中断EXTI
EXTI可以监测指定GPIO的电平信号,当其指定的GPIO口产生电平变化时,EXTI将立即向NVIC发出中断申请,经过NVIC裁决后即可中断CPU主程序,使CPU执行EXTI对应的中断程序。
2024-07-10 09:40:29
187
原创 C语言中的操作符
其中,“ / ”包括整型除法和浮点数除法,浮点数除法必须保证至少一个数是小数;取余操作“ % ”计算整除之后的余数,只针对整数,对浮点数不支持。
2024-01-28 23:36:03
788
1
原创 简单三子棋游戏
创建三个文件:1.test.c主函数所在,测试代码逻辑2. game.c存放功能函数,游戏代码实现。功能包括如下:(1)初始化棋盘;(2)打印键盘(3)玩家下棋;(4)电脑下棋;(5)判断输赢;
2024-01-26 19:25:11
365
1
原创 数组名的正确使用和冒泡排序
数组名本质上是数组首元素的地址,接收时需要用指针来接收。但是有两个例外:(1)sizeof(数组名),这里的数组名表示整个数组,计算的是整个数组的大小,单位是字节;(2)&数组名,这里的数组名也表示整个数组,取出的是整个数组的地址。运行结果。
2024-01-26 12:58:15
350
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人