9.5 Exercises

  1. 1.

    Modify xv6’s pipe implementation to allow a read and a write to the same pipe to proceed in parallel on different CPUs.

  2. 2.

    Modify xv6’s scheduler() to reduce lock contention when different CPUs are looking for runnable processes at the same time.

  3. 3.

    Eliminate some of the serialization in xv6’s fork().