A4 Spring 2022 Webinar Series
2. Introduction to Operating Systems
Host By Angold Wang 03/04/2022
1. Introduction
2. Virtual Memory
3. xv6
1. entry
kernel/entry.s * set up a stack
so that xv6 can run C code * The stack on
RISC-V grows down, entry code set %sp to be
stack0 + 4096
2. start
kernel/start.c * Still in
machine mode * Init the clock hardware *
Sets the return address to main by writing
main’s address into the reigiter
mepc
3. main
kernel/main.c * Initial several
devices and subsystems (page table…) * creates the
first process by calling userinit.
4. userinit
kernel/proc.c * execute a small
program written in RISC-V assembly, make the first system call in xv6
(exec('/init');) * the
initcode located in user/initcode.S loads the
number for the exec system call, SYS_EXEC into
register a7, then calls ecall to re-enter the
kernel.
5. init
user/init.c * The initial
user-process * open the file descriptor *
fork a child process to execute shell