Start Header Section -->

MY 449 Final Prep

Justin Budd

Kernel

Under construction

Click here

Threads

Under construction

Click here

Networking

Under construction

Click here

Deadlocks

Under construction

Click here

Jarrett's Study Guide Questions

  • Multi-file development
    • What does and doesn't go in header files
    • What incremental compilation is
    • What build tools are used for
    • If you compile multiple .c files, does the compiler "see" all of them at once?
  • Drivers
    • Mechanism (what something does) vs. policy (how you should make use of it)
      • Form vs. function? Kinda?
    • Blocking vs. nonblocking system calls
    • Polling vs. asynchronous notification
    • What modes the CPU can run in (one has more permissions than the other)
    • The difference between character and block devices
    • Inside the Linux kernel
      • The general arrangement
      • What kinds of limitations there are when writing kernel code
      • How we add/remove extra features to the kernel without recompiling it
    • /dev, /proc, and /sys - what's in them?
    • User-mode drivers: benefits and disadvantages
  • Multiprocessing
    • What it is
    • CPU-bound vs. IO-bound processes
    • Scheduling
      • What it is, at a basic level
      • Collaborative vs. preemptive scheduling: benefits and disadvantages
      • What hardware feature the OS needs to do preemptive scheduling
      • What's a quantum?
    • The lifecycle of a process
      • What blocked processes are
      • What ways a process can terminate
  • Multithreading
    • Rationale for multithreading (why isn't multiprocessing alone good enough)
    • The relationship between threads and processes
    • What threads consist of
    • User vs. kernel threads
    • What hardware threading is
    • How we simulate blocking calls in a collaboratively-scheduled user-threading library
    • The pthread API
      • What the main thread is and why it's special
      • How we create and wait for threads
  • Synchronization
    • What a race condition is, and when it happens
    • What a reentrant function is
    • How threads communicate with one another
    • What atomicity is
      • Who can guarantee atomicity?
    • What a mutex is
      • What operations you can use on a mutex
      • The pattern for using a mutex
      • What they're good for
    • What a condition variable is
      • What operations you can use on a condition variable
      • The pattern(s) for using a condition variable
      • What they're good for
    • What a deadlock is
      • What conditions are necessary for a deadlock to occur
      • How you can avoid them
  • Networking
    • What the OSI model is (don't memorize the layers)
    • What TCP/IP is
    • How requests/responses across the internet work, step-by-step
    • The Berkeley sockets API
      • What a socket is
      • The two kinds of sockets
      • The general idea of how they connect to one another
      • How sockets and multithreading fit together
  • IPC
    • What advantages multiprocessing gives over multithreading
    • What sandboxing is
    • What IPC is
    • How we can do IPC with sockets
    • How we can do IPC with shared memory

Class Questions from Discord

  • @justin add this to the list: user-threading, kernal threading, and hardware threading. Whats the difference in all 3 and what not
  • How we simulate blocking calls in a collaboratively-scheduled user-threading library
  • check if a call blocks and then call a similar unblocking function?
  • So what happens when blocking call? The entire process is blocked! This seems counterproductive! Think of a GUI program with background I/O thread Now the I/O thread stalls it every time it accesses I/O, making GUI unresponsive... We've lost the entire benefit of threading! How can user threads get around this? Which kinds of system calls block? I/O, mostly. so what if... the user threading library intercepted these calls? and then does... what? could switch to another thread... but that I/O call has to be made sometime. We can't get any further without some support from the OS.

  • © 2017
  • Developed by Justin Budd as Budd Web Solutions