Install and configure the xv6 operating system, QEMU emulator, and development tools. Build, boot, and explore the xv6 environment, becoming familiar with the shell, file system, and basic Unix commands.
Understand how an operating system boots, from machine startup to kernel initialization. Study the xv6 architecture, kernel organization, privilege modes, and the transition from bootloader to the first user process.
Learn how the shell commands like ls, rm work. A thorough understanding of the concept of process creation process creation using fork(), program execution with exec(), process termination, and parent-child relationships and interprocess communication. Explore system calls and how they work.
Learn how operating systems create and manage processes. Explore process states, process tables, registers, context switching, file and memory.
Study the interaction between user applications and the kernel through system calls. Understand trap handling, interrupt processing, exception management, and the complete execution path of a system call from user space to kernel space.
Examine process scheduling, context switching, timer interrupts, and scheduling policies. Understand synchronization mechanisms including locks, spinlocks, and techniques for preventing race conditions in concurrent systems.
Understand virtual memory, address spaces, page tables, kernel memory allocation, and memory protection. Explore how xv6 allocates, maps, and manages memory for user processes and the kernel.
Study the design of the xv6 file system including files, directories, inodes, file descriptors, pathname resolution, and file operations. Understand how operating systems organize and manage persistent storage. Learn how journaling and logging improve file system consistency and crash recovery. Explore xv6's logging mechanism and understand how transactions maintain file system integrity.
Learn how input output is handled.Concepts of DMA, tty buffer and wayland connection is introduced.
Understand how the operating system communicates with storage devices through device drivers. Study disk I/O, block management, buffering, and the VirtIO disk driver used by xv6.
Apply operating system concepts by extending xv6. Implement new system calls, add custom shell commands, modify kernel components, and explore enhancements to the scheduler and file system.