Talk:COMP 3000 Final Exam Study Guide 2012

From Soma-notes
Revision as of 13:23, 13 December 2012 by Cdelahou (talk | contribs) (answered first few questions)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

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)