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().