Talk:COMP 3000 Final Exam Study Guide 2012
There's what I would put down. There may be mistakes...
Concepts
- Processes, threads (particularly in terms of execution contexts and address spaces)
Processes are execution environments with a minimum of one running thread. They all have their own virtual memory address spaces. A process can have many threads.
- What code is in the kernel and what isn't
The kernel boots before anything, so it can't rely on any userland libraries like the C std library. The kernel re-implements much functionality found in said library (printf vs printk).
- Supervisor versus user mode
These are CPU modes. Supervisor allows unrestricted access to the system. Only kernel code (with a few exceptions).
User mode only grants access to the system via system calls.
See CPU Modes
- virtualization basics: what is a VM, what does machine look like inside a VM
- Signals (SIGTERM, SIGKILL, SIGSTOP, SIGCONT, SIGCHLD, SIGSEGV, etc.)
- signal handling: what can be handled, who calls them, how do they work?
- Major system calls: fork, execve, open, close, read, write, lseek, mmap
- The process hierarchy and zombie processes
- Files, directories, inodes, sparse files
- file permissions: users, groups, others, rwx, where are they stored?
- Basic file-level concurrency, flock
- Ubuntu/Debian alternatives system
- Basic package management on Ubuntu: apt-get, dpkg
- Basic package development: dpkg-dev, dpkg-buildpackage, fakeroot
- filesystem administration: mkfs, fsck, mount, /etc/fstab
- block versus character devices and how they are used
- upstart and init
- init and process hierarchy
- upstart versus System V init scripts
- upstart scripts, basic structure, purpose, common options
- SysV init scripts, basic structure and purpose
- device drivers
- environment variables and command line arguments: how they are passed, how are they stored and accessed
- static versus dynamic linking
- basics of how dynamic linking is implemented (strace-level view)
- strace and ltrace
- Kernel: proc filesystem basics, structure of kernel, relation to C library
- netcat: basic usage
- PATH environment variable and the shell
- basic command line I/O redirection: <, >>, >, |
- shell commands: if, while, for, touch, test (with common tests), echo
- built-in versus external shell commands (and relationship to processes)