diff --git "a/\345\206\205\346\240\270\346\217\217\350\277\260.md" "b/\345\206\205\346\240\270\346\217\217\350\277\260.md" index 93e5e28b7e69ec8c1cb6cda5b12d3fb89872edc6..bf5f55632c8daac0e7a75dacb87b00bd4c1e3050 100644 --- "a/\345\206\205\346\240\270\346\217\217\350\277\260.md" +++ "b/\345\206\205\346\240\270\346\217\217\350\277\260.md" @@ -441,7 +441,7 @@ printf.cæ–‡ä»¶å®žçŽ°äº†åŸºæœ¬çš„æ ¼å¼åŒ–è¾“å‡ºåŠŸèƒ½ï¼Œæ”¯æŒæ•´æ•°ã€æŒ‡é’ˆå’Œ 5. 设置 `panicked` æ ‡å¿—ä¸º `1`,冻结其他CPUçš„UART输出。 6. è¿›å…¥æ— é™å¾ªçŽ¯ï¼Œåœæ¢ç³»ç»Ÿã€‚ -#### 5. `backtrace` 函数 +### 5. `backtrace` 函数 - **功能**:打å°å½“å‰è°ƒç”¨æ ˆçš„返回地å€ï¼Œç”¨äºŽè°ƒè¯•。 - **傿•°**ï¼šæ— - **实现æ¥éª¤**: @@ -449,3 +449,89 @@ printf.cæ–‡ä»¶å®žçŽ°äº†åŸºæœ¬çš„æ ¼å¼åŒ–è¾“å‡ºåŠŸèƒ½ï¼Œæ”¯æŒæ•´æ•°ã€æŒ‡é’ˆå’Œ 2. è®¡ç®—æ ˆåº•åœ°å€ `bottom`。 3. æ‰“å° `"backtrace:\n"`。 4. è¿ä»£æ ˆå¸§ï¼Œæ‰“å°æ¯ä¸ªè¿”回地å€ï¼Œå¹¶æ›´æ–° `fp` 指å‘ä¸Šä¸€ä¸ªæ ˆå¸§ã€‚ + +## proc.c- 进程管ç†çš„æ ¸å¿ƒå®žçް: + + - 负责进程的创建ã€è°ƒåº¦å’Œé”€æ¯ + - 管ç†è¿›ç¨‹è¡¨(proc数组)å’ŒCPU状æ€(cpus数组) + - 实现forkã€exitã€waitç‰è¿›ç¨‹ç›¸å…³ç³»ç»Ÿè°ƒç”¨ + - 包å«è¿›ç¨‹ä¸Šä¸‹æ–‡åˆ‡æ¢çš„代ç + + +## trap.c- 䏿–和异常处ç†: + + - 处ç†ç”¨æˆ·ç©ºé—´çš„䏿–ã€å¼‚常和系统调用 + - å®žçŽ°ä¸æ–处ç†ç¨‹åºçš„åˆå§‹åŒ– + - 管ç†è®¡æ—¶å™¨ä¸æ– + - 处ç†è®¾å¤‡ä¸æ– + + +## string.c- å—ç¬¦ä¸²å’Œå†…å˜æ“作函数: + + - æä¾›å†…å˜æ“作函数: memsetã€memcpyã€memmove + - å—符串æ“作函数: strncpyã€strlenã€strcmpç‰ + - 包å«å®½å—符和普通å—符之间的转æ¢å‡½æ•° + + +## spinlock.c- 自旋é”实现: + + - å®žçŽ°äº’æ–¥è‡ªæ—‹é”æœºåˆ¶ + - æä¾›é”的获å–(acquire)和释放(release)æ“作 + - åŒ…å«æ»é”检测功能 + - 管ç†ä¸æ–使能/ç¦ç”¨çŠ¶æ€ + + + +## syscall.c- 系统调用处ç†: + + - å®žçŽ°ç³»ç»Ÿè°ƒç”¨åˆ†å‘æœºåˆ¶ + - 处ç†å‚æ•°ä¼ é€’å’Œè¿”å›žå€¼ + - 包å«ç³»ç»Ÿè°ƒç”¨è¡¨å’Œåç§°æ˜ å°„ + - 实现系统调用追踪功能 + + +## `swtch.s` - 上下文切æ¢: + +- 实现进程上下文切æ¢çš„æ±‡ç¼–代ç +- ä¿å˜å’Œæ¢å¤å¯„å˜å™¨çŠ¶æ€ +- 切æ¢å†…æ ¸æ ˆ +- 用于进程调度 + + +## `vm.c` - 虚拟内å˜ç®¡ç†: + +- å®žçŽ°å†…æ ¸é¡µè¡¨çš„åˆ›å»ºå’Œç®¡ç† +- 处ç†å†…å˜æ˜ 射和地å€è½¬æ¢ +- 包å«è®¾å¤‡å†…å˜æ˜ å°„(如UARTã€VIRTIO设备) +- è´Ÿè´£ç”¨æˆ·ç©ºé—´å’Œå†…æ ¸ç©ºé—´çš„å†…å˜éš”离 + + +## `uart.c` - 串å£é©±åЍ: + +- 实现16550a UART控制器的底层驱动 +- 管ç†ä¸²å£çš„输入输出缓冲 +- 处ç†ä¸²å£ä¸æ– +- æä¾›æŽ§åˆ¶å°è¾“å…¥è¾“å‡ºæŽ¥å£ + +## `timer.c` - 定时器管ç†: + +- 实现系统定时器功能 +- ç®¡ç†æ—¶é’Ÿä¸æ– +- 维护系统ticks计数 +- æä¾›ç¡çœ 和超时功能 + + +## `sdcard.c` å’Œ `spi.c` - å˜å‚¨è®¾å¤‡é©±åЍ: + +- SDå¡é€šä¿¡å议实现 +- SPI总线控制器驱动 +- æä¾›å—è®¾å¤‡è¯»å†™æŽ¥å£ +- 实现DMAä¼ è¾“åŠŸèƒ½ + + +## `sleeplock.c` - ç¡çœ é”实现: + +- æä¾›å¯ä»¥ä¼‘çœ çš„äº’æ–¥é”æœºåˆ¶ +- 与自旋é”é…åˆä½¿ç”¨ +- 支æŒè¿›ç¨‹é˜»å¡žç‰å¾… +- 用于I/Oæ“作ç‰é•¿æ—¶é—´ç‰å¾…场景