COMP 3000 Final Exam Study Guide 2012

From Soma-notes
Revision as of 17:07, 30 November 2012 by Soma (talk | contribs) (→‎Concepts)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Basic details

The final exam has 33 questions worth a total of 42 points, on four pages. 15 multiple choice questions, one yes/no, 12 true or false, four short answer, and one multi-part short answer. The test is only a page longer than the midterm and so it shouldn't take you much longer than it it. However, you will have 120 minutes to take it.

While many of the questions are based on questions from the midterm, most of these questions have been changed in some way. Read carefully and consider all options, particularly with the multiple choice questions. Simple pattern matching is a bad strategy!

Concepts

You should be familiar with the following concepts and how they interconnect:

  • Processes, threads (particularly in terms of execution contexts and address spaces)
  • What code is in the kernel and what isn't
  • Supervisor versus user mode
  • 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)