2025年10月17日
摘要:
OS中的上下文切换 上一期我们搞懂了yield-os.c的原理如何,我们理解 玩上下文切换的核心细节之后,我们可以把这些原理迁移到RT-Thread这个更大的操作系统中。 RT-Thread中有两个抽象层, 一个是BSP(Board Support Package), 另一个是libcpu。 负责把
阅读全文
posted @ 2025-10-17 22:56
yuweijie0124
阅读(68)
推荐(0)
2025年10月12日
摘要:
随着处理器主频的越来越高,每次读写一次磁盘要耗费很多个时钟周期来等待磁盘操作的完成,与其傻傻等待,在这等待的过程中我们可以做更多有意义的事情,如当第一个程序需要等待输入输出的时候,切换到第二个程序来运行,第二个程序也等待输入输出的时候就可以切换到第三个程序,以此类推。 这就是多道程序的思想,要实现一
阅读全文
posted @ 2025-10-12 18:46
yuweijie0124
阅读(137)
推荐(0)
2025年10月10日
摘要:
指令执行的踪迹 - itrace 首先写好一个环形缓冲区的代码,把反汇编的字符串存到环形缓冲区中,然后执行完代码在打印出来。 #include <stdio.h> #include <stdlib.h> #include <stdbool.h> #include <string.h> #define
阅读全文
posted @ 2025-10-10 22:21
yuweijie0124
阅读(149)
推荐(0)
2025年10月9日
摘要:
批处理系统 为了让管理员事先准备好一组程序, 让计算机执行完一个程序之后, 就自动执行下一个程序,提出了批处理系统的思想。处理系统的关键, 就是要有一个后台程序, 当一个前台程序执行结束的时候, 后台程序就会自动加载一个新的前台程序来执行,这样的一个后台程序, 其实就是操作系统。 我们希望操作系统和
阅读全文
posted @ 2025-10-09 23:25
yuweijie0124
阅读(106)
推荐(0)
2025年10月7日
摘要:
输入输出是计算机与外界交互的基本手段,只需要向设备发送一些有意义的数字信号,设备就会按照这些信号来工作。设备有自己的专属寄存器(如CPU的通用寄存器),也有自己的功能部件(如CPU的ALU)。以键盘外设为例,键盘有一个把按键的模拟信号转换成扫描码的部件,然后CPU根据扫描码就知道真实世界的用户按下了
阅读全文
posted @ 2025-10-07 16:02
yuweijie0124
阅读(121)
推荐(1)
2025年9月29日
摘要:
目前我们已经跑通了cpu-test和实现了riscv-I型指令所需的42条指令,现在我们已经可以到跑简单程序的地步了,我们也希望运行简单的程序,因此我们需要运行时环境(runtime environment)。 比如现在要结束程序,那我们就要用提前准备好的API如void halt,调用这个halt
阅读全文
posted @ 2025-09-29 13:57
yuweijie0124
阅读(159)
推荐(0)
2025年9月13日
摘要:
前面的内容后面再补,因为近期要C考核了,所以先准备下C考核所需的内容。 RTFSC(2) 整理一条指令在NEMU中的执行结果 从函数中跳转,宏嵌套中慢慢进入最终的代码,人肉gdb一下, 比如在sdb中执行一次si,那么根据cmd_si代码那我们会跳转到cpu_exec()中 static int c
阅读全文
posted @ 2025-09-13 17:03
yuweijie0124
阅读(147)
推荐(1)
2025年9月6日
摘要:
学一生一心的时候我出现了这样的疑问,我试着给出回答。 程序是如何运行的 处理器是如何设计的 RTL代码是如何变成可流片版图的 这三个问题分别对应了计算机系统的三个不同抽象层次:软件层、硬件架构层和物理实现层。 1. 程序是如何运行的 以C语言为例子,你写完一个.c文件后。 编译与链接:经过编译之后成
阅读全文
posted @ 2025-09-06 05:17
yuweijie0124
阅读(394)
推荐(2)
2025年9月4日
摘要:
PA0是配环境和获取源码,教你如何使用一些简单的linux命令和工具,也非常重要,但是本文不赘述。 拿到一个工程首先就是要读源码,比如从main函数一步一步看工程到底在干什么事情。(nemu不是从main开始的,但是不知道这个不耽误你理解nemu,这个在pa3.1有涉及) 那我这里顺便带着大伙读一读
阅读全文
posted @ 2025-09-04 10:55
yuweijie0124
阅读(42)
推荐(0)
2025年9月3日
摘要:
写Verilog最重要的是心中要有电路图(这个是官方说法),我觉得也可以理解为你要能知道你自己写出来的Verilog代码能够综合出什么东西来。 以下部分是必做题: 实验一 选择器 实验二 译码器和编码器 实验三 加法器与ALU 实验六 移位寄存器及桶形移位器 实验七 状态机及键盘输入 前面三个都很简
阅读全文
posted @ 2025-09-03 14:40
yuweijie0124
阅读(65)
推荐(0)