tg-rcore-tutorial 0.4.11

Meta crate bundle for rCore Tutorial workspace - contains all chapters and components
Documentation
# tg-rcore-tutorial Crates 依赖关系图 (ASCII)

## 概述

本文档以 ASCII 图形展示 `tmp1/tg-rcore-tutorial` 目录下各个 crates 之间的依赖关系。

## 分层架构图

```
┌─────────────────────────────────────────────────────────────────────────────────────┐
│                           Layer 3: 内核章节 (Kernel Chapters)                        │
│  ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│  │   ch1   │ │   ch2   │ │   ch3   │ │   ch4   │ │   ch5   │ │   ch6   │ │   ch7   │ │   ch8   │ │
│  │Bare Metal│ │ Batch   │ │Multi-   │ │Virtual  │ │Process  │ │File     │ │IPC &    │ │Concur-  │ │
│  │         │ │ System  │ │program- │ │Memory   │ │Manage-  │ │System   │ │Signal   │ │rency    │ │
│  │         │ │         │ │ming     │ │         │ │ment     │ │         │ │         │ │         │ │
│  └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘ │
└───────┼──────────┼──────────┼──────────┼──────────┼──────────┼──────────┼──────────┼─────────────┘
        │          │          │          │          │          │          │          │
        ▼          ▼          ▼          ▼          ▼          ▼          ▼          ▼
┌─────────────────────────────────────────────────────────────────────────────────────┐
│                           Layer 2: 上层组件                                          │
│  ┌──────────────────────┐                    ┌──────────────────────┐               │
│  │   signal-impl        │                    │        user          │               │
│  │  (Signal 实现)        │                    │   (用户态应用库)      │               │
│  └──────────┬───────────┘                    └──────────┬───────────┘               │
└─────────────┼────────────────────────────────────────────┼───────────────────────────┘
              │                                            │
              ▼                                            ▼
┌─────────────────────────────────────────────────────────────────────────────────────┐
│                           Layer 1: 中间组件                                          │
│  ┌──────────────────────┐  ┌──────────────────────┐  ┌──────────────────────┐       │
│  │       syscall        │  │        signal        │  │        sync          │       │
│  │   (系统调用定义)      │  │   (信号处理)          │  │   (同步原语)          │       │
│  └──────────┬───────────┘  └──────────┬───────────┘  └──────────┬───────────┘       │
└─────────────┼──────────────────────────┼──────────────────────────┼─────────────────┘
              │                          │                          │
              ▼                          ▼                          ▼
┌─────────────────────────────────────────────────────────────────────────────────────┐
│                           Layer 0: 基础组件                                          │
│  ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐            │
│  │   sbi   │ │ linker  │ │ console │ │ kernel- │ │ kernel- │ │ kernel- │            │
│  │ (SBI调用)│ │(链接脚本)│ │ (控制台) │ │ context │ │  alloc  │ │   vm    │            │
│  │         │ │         │ │         │ │(上下文)  │ │(内存分配)│ │(虚拟内存)│            │
│  └─────────┘ └─────────┘ └─────────┘ └─────────┘ └─────────┘ └─────────┘            │
│  ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐                                     │
│  │ easy-fs │ │ signal- │ │  task-  │ │ checker │                                     │
│  │(文件系统)│ │  defs   │ │ manage  │ │ (测试)   │                                     │
│  │         │ │(信号定义)│ │(任务管理)│ │         │                                     │
│  └─────────┘ └─────────┘ └─────────┘ └─────────┘                                     │
└─────────────────────────────────────────────────────────────────────────────────────┘
```

## 详细依赖关系图

```
                              ┌──────────────────────────────────────────────────────────────────┐
                              │                        内核章节依赖关系                            │
                              └──────────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────────────────────────────────────────────┐
│                                                                                                      │
│    ch1 ─────────────────────────────────────────────────────────────────────────────────────────► sbi│
│                                                                                                      │
│    ch2 ────────────────────────────────────────────────────────────────────────────────────────► sbi  │
│        ├────────────────────────────────────────────────────────────────────────────────────► linker  │
│        ├───────────────────────────────────────────────────────────────────────────────────► console  │
│        ├─────────────────────────────────────────────────────────────────────────────► kernel-context │
│        └──────────────────────────────────────────────────────────────────────────────────► syscall  │
│                                                                                                      │
│    ch3 ────────────────────────────────────────────────────────────────────────────────────────► sbi  │
│        ├────────────────────────────────────────────────────────────────────────────────────► linker  │
│        ├──────────────────────────────────────────────────────────────────────────────────► console  │
│        ├─────────────────────────────────────────────────────────────────────────────► kernel-context │
│        └──────────────────────────────────────────────────────────────────────────────────► syscall  │
│                                                                                                      │
│    ch4 ────────────────────────────────────────────────────────────────────────────────────────► sbi  │
│        ├────────────────────────────────────────────────────────────────────────────────────► linker  │
│        ├──────────────────────────────────────────────────────────────────────────────────► console  │
│        ├─────────────────────────────────────────────────────────────────────────────► kernel-context │
│        ├──────────────────────────────────────────────────────────────────────────────► kernel-alloc  │
│        ├────────────────────────────────────────────────────────────────────────────────► kernel-vm  │
│        └──────────────────────────────────────────────────────────────────────────────────► syscall  │
│                                                                                                      │
│    ch5 ────────────────────────────────────────────────────────────────────────────────────────► sbi  │
│        ├────────────────────────────────────────────────────────────────────────────────────► linker  │
│        ├──────────────────────────────────────────────────────────────────────────────────► console  │
│        ├─────────────────────────────────────────────────────────────────────────────► kernel-context │
│        ├──────────────────────────────────────────────────────────────────────────────► kernel-alloc  │
│        ├────────────────────────────────────────────────────────────────────────────────► kernel-vm  │
│        ├──────────────────────────────────────────────────────────────────────────────────► syscall  │
│        └──────────────────────────────────────────────────────────────────────────────► task-manage  │
│                                                                                                      │
│    ch6 ────────────────────────────────────────────────────────────────────────────────────────► sbi  │
│        ├────────────────────────────────────────────────────────────────────────────────────► linker  │
│        ├──────────────────────────────────────────────────────────────────────────────────► console  │
│        ├─────────────────────────────────────────────────────────────────────────────► kernel-context │
│        ├──────────────────────────────────────────────────────────────────────────────► kernel-alloc  │
│        ├────────────────────────────────────────────────────────────────────────────────► kernel-vm  │
│        ├──────────────────────────────────────────────────────────────────────────────────► syscall  │
│        ├──────────────────────────────────────────────────────────────────────────────────► easy-fs  │
│        └──────────────────────────────────────────────────────────────────────────────► task-manage  │
│                                                                                                      │
│    ch7 ────────────────────────────────────────────────────────────────────────────────────────► sbi  │
│        ├────────────────────────────────────────────────────────────────────────────────────► linker  │
│        ├──────────────────────────────────────────────────────────────────────────────────► console  │
│        ├─────────────────────────────────────────────────────────────────────────────► kernel-context │
│        ├──────────────────────────────────────────────────────────────────────────────► kernel-alloc  │
│        ├────────────────────────────────────────────────────────────────────────────────► kernel-vm  │
│        ├──────────────────────────────────────────────────────────────────────────────────► syscall  │
│        ├──────────────────────────────────────────────────────────────────────────────────► easy-fs  │
│        ├──────────────────────────────────────────────────────────────────────────────► task-manage  │
│        ├────────────────────────────────────────────────────────────────────────────────────► signal  │
│        └──────────────────────────────────────────────────────────────────────────────► signal-impl  │
│                                                                                                      │
│    ch8 ────────────────────────────────────────────────────────────────────────────────────────► sbi  │
│        ├────────────────────────────────────────────────────────────────────────────────────► linker  │
│        ├──────────────────────────────────────────────────────────────────────────────────► console  │
│        ├─────────────────────────────────────────────────────────────────────────────► kernel-context │
│        ├──────────────────────────────────────────────────────────────────────────────► kernel-alloc  │
│        ├────────────────────────────────────────────────────────────────────────────────► kernel-vm  │
│        ├──────────────────────────────────────────────────────────────────────────────────► syscall  │
│        ├──────────────────────────────────────────────────────────────────────────────────► easy-fs  │
│        ├──────────────────────────────────────────────────────────────────────────────► task-manage  │
│        ├────────────────────────────────────────────────────────────────────────────────────► signal  │
│        ├──────────────────────────────────────────────────────────────────────────────► signal-impl  │
│        └──────────────────────────────────────────────────────────────────────────────────────► sync  │
│                                                                                                      │
└─────────────────────────────────────────────────────────────────────────────────────────────────────┘
```

## 组件内部依赖关系图

```
┌─────────────────────────────────────────────────────────────────────────────────────────────────────┐
│                                    组件内部依赖关系                                                   │
└─────────────────────────────────────────────────────────────────────────────────────────────────────┘

     ┌─────────────────┐
     │   signal-defs   │ ◄──────────────────────────────────────────────────────────┐
     └────────┬────────┘                                                            │
              │                                                                      │
              ▼                                                                      │
     ┌─────────────────┐         ┌─────────────────┐                                │
     │     syscall     │ ◄───────│      user       │                                │
     └─────────────────┘         └────────┬────────┘                                │
                                        │                                            │
                                        ▼                                            │
                                 ┌─────────────────┐                                 │
                                 │     console     │                                 │
                                 └─────────────────┘                                 │

     ┌─────────────────┐
     │ kernel-context  │ ◄───────────────────────────────────────────────┐
     └────────┬────────┘                                               │
              │                                                         │
              ▼                                                         │
     ┌─────────────────┐         ┌─────────────────┐                    │
     │     signal      │ ───────►│   signal-defs   │                    │
     └────────┬────────┘         └─────────────────┘                    │
              │                                                         │
              ▼                                                         │
     ┌─────────────────┐                                                │
     │   signal-impl   │ ───────────────────────────────────────────────┘
     └─────────────────┘


     ┌─────────────────┐
     │   task-manage   │ ◄───────────────────────────────────────────────┐
     └─────────────────┘                                                 │
              ▲                                                           │
              │                                                           │
              │                                                           │
     ┌────────┴────────┐                                                  │
     │      sync       │ ─────────────────────────────────────────────────┘
     └─────────────────┘
```

## 章节演进依赖图

```
┌─────────────────────────────────────────────────────────────────────────────────────────────────────┐
│                                    章节功能演进与依赖增加                                             │
└─────────────────────────────────────────────────────────────────────────────────────────────────────┘

  ch1: Bare Metal
  └── sbi

  ch2: Batch System
  └── ch1 + linker + console + kernel-context + syscall

  ch3: Multiprogramming
  └── ch2 (相同依赖)

  ch4: Virtual Memory
  └── ch3 + kernel-alloc + kernel-vm

  ch5: Process Management
  └── ch4 + task-manage

  ch6: File System
  └── ch5 + easy-fs + virtio-drivers

  ch7: IPC & Signal
  └── ch6 + signal + signal-impl

  ch8: Concurrency
  └── ch7 + sync

┌─────────────────────────────────────────────────────────────────────────────────────────────────────┐
│                                         依赖累积图                                                   │
└─────────────────────────────────────────────────────────────────────────────────────────────────────┘

  ch1  ████████
       sbi

  ch2  ████████████████████████████████████████
       sbi, linker, console, kernel-context, syscall

  ch3  ████████████████████████████████████████
       (与 ch2 相同)

  ch4  ████████████████████████████████████████████████████████████████████████
       sbi, linker, console, kernel-context, syscall, kernel-alloc, kernel-vm

  ch5  ████████████████████████████████████████████████████████████████████████████████████████████████
       sbi, linker, console, kernel-context, syscall, kernel-alloc, kernel-vm, task-manage

  ch6  ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████
       sbi, linker, console, kernel-context, syscall, kernel-alloc, kernel-vm, task-manage, easy-fs

  ch7  ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████
       sbi, linker, console, kernel-context, syscall, kernel-alloc, kernel-vm, task-manage, easy-fs, signal, signal-impl

  ch8  ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████
       sbi, linker, console, kernel-context, syscall, kernel-alloc, kernel-vm, task-manage, easy-fs, signal, signal-impl, sync
```

## 依赖统计表

```
┌─────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ Crate 名称                    │ 内部依赖数量 │ 内部依赖列表                                           │
├─────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ tg-rcore-tutorial-sbi         │      0      │ (无)                                                   │
│ tg-rcore-tutorial-linker      │      0      │ (无)                                                   │
│ tg-rcore-tutorial-console     │      0      │ (无)                                                   │
│ tg-rcore-tutorial-kernel-ctx  │      0      │ (无)                                                   │
│ tg-rcore-tutorial-kernel-alloc│      0      │ (无)                                                   │
│ tg-rcore-tutorial-kernel-vm   │      0      │ (无)                                                   │
│ tg-rcore-tutorial-easy-fs     │      0      │ (无)                                                   │
│ tg-rcore-tutorial-signal-defs │      0      │ (无)                                                   │
│ tg-rcore-tutorial-task-manage │      0      │ (无)                                                   │
│ tg-rcore-tutorial-checker     │      0      │ (无)                                                   │
├─────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ tg-rcore-tutorial-syscall     │      1      │ signal-defs                                            │
│ tg-rcore-tutorial-signal      │      2      │ kernel-context, signal-defs                            │
│ tg-rcore-tutorial-sync        │      1      │ task-manage                                            │
├─────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ tg-rcore-tutorial-signal-impl │      2      │ kernel-context, signal                                 │
│ tg-rcore-tutorial-user        │      2      │ console, syscall                                       │
├─────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ tg-rcore-tutorial-ch1         │      1      │ sbi                                                    │
│ tg-rcore-tutorial-ch2         │      5      │ sbi, linker, console, kernel-context, syscall          │
│ tg-rcore-tutorial-ch3         │      5      │ sbi, linker, console, kernel-context, syscall          │
│ tg-rcore-tutorial-ch4         │      7      │ sbi, linker, console, kernel-context, syscall,         │
│                               │             │ kernel-alloc, kernel-vm                                │
│ tg-rcore-tutorial-ch5         │      8      │ sbi, linker, console, kernel-context, syscall,         │
│                               │             │ kernel-alloc, kernel-vm, task-manage                   │
│ tg-rcore-tutorial-ch6         │      9      │ sbi, linker, console, kernel-context, syscall,         │
│                               │             │ kernel-alloc, kernel-vm, task-manage, easy-fs          │
│ tg-rcore-tutorial-ch7         │     11      │ sbi, linker, console, kernel-context, syscall,         │
│                               │             │ kernel-alloc, kernel-vm, task-manage, easy-fs,         │
│                               │             │ signal, signal-impl                                    │
│ tg-rcore-tutorial-ch8         │     12      │ sbi, linker, console, kernel-context, syscall,         │
│                               │             │ kernel-alloc, kernel-vm, task-manage, easy-fs,         │
│                               │             │ signal, signal-impl, sync                              │
└─────────────────────────────────────────────────────────────────────────────────────────────────────┘
```