A snapshot of my understanding before beginning project 1 (scheduler, memory coordinator)

Project 1 was released last evening at 08:59 PM PST and this morning, I decided to start on the project by reading through the overview and get the lay of the land. For this project, we’ll need to deliver to operating system components: a scheduler and a memory coordinator (not even sure what that means exactly).

So what I’m doing as part of this post is just taking a snapshot of the questions I have and topics I do not understand, topics that I’ll probably understand in much more depth as the project progresses. More often than not, I often dismissive of all the work I put in over the semester and this post is one way to honor the time and commitment.

Overall, this project’s difficulty sits in the right place — not too hard but not too easy. The sweet spot for Deliberate Practice.

Questions I have

  • What algorithm should I implement for my scheduler?
  • What algorithms fit the needs for this project
  • What the heck is a memory coordinator?
  • Why do we have a memory coordinator? What’s it purpose?
  • How do you measure the success of a memory coordinator?
  • How do I use libvrt library?
  • What is QEMU?
  • Where does the scheduler sit in relationship to the operating system?
  • How will I get the hypervisor to invoke my scheduler versus another scheduler?

Project Requirements

  • You need to implement two separate C programs, one for vCPU scheduler (vcpu_scheduler.c) and another for memory coordinator (memory_coordinator.c)


  1. Introduction to QEMU