xV6 OS 调试
1.xV6之进程
struct proc{ uint sz; // Size of process memory (bytes) pde_t* pgdir; // Page table char *kstack; // Bottom of kernel stack for this process enum procstate state; // Process state volatile int pid; // Process ID struct proc *parent; // Parent process struct trapframe *tf; // Trap frame for current syscall struct context *context; // swrch() here to run process void *chan; // If non-zero, sleeping on chan int killed; // If non-zero, have been killed struct file *ofile[NOFILE]; // Open files struct inode *cwd; // Current directory char name[16]; // Process name (debugging) };
Code: File descriptors
Code: Pipes
Code: File system
Code: entry page table
Code: Creating an address space
Code: Physical memory allocator
Code: Process creation
Code: Running a process
Code: exec
----------------------------------------
Chapter 2
Code: The first system call
Code: Assembly trap handlers
Code: C trap handler
Code: System calls
Code: Interrupts
Code: Disk driver
---------------------------------------
Chapter 3
Code: Locks
Code: Using Locks
---------------------------------------
Chapter 4
Code: Context switching
Code: Scheduling
Code: Sleep and wakeup
Code: Pipes
Code: Wait and exit
Code: Buffer cache
Code: logging
Code: Block allocator
Code: Inodes
Code: Inode contents
Code: directory layer
Code: Path names
Code: System calls
Code: Assembly bootstrap
Code: C bootstrap