{ "q01": { "type": "blank", "question": "\n

On a typical Unix system, we are presented with two key storage\nabstractions. The first is the (1) ____, which is just a linear\narray of bytes that you can (2) ____ or (3) ____. Associated\nwith each of these is an (4) ____ number, which is its low-level\nname.

\n\n

The second abstraction is the (5) ____, which is a list of pairs\ncontaining the user-readable name of the data, and its associated low-level\nidentifier.

\n" }, "q02": { "type": "order", "question": "\n

Identify the system call you should use to accomplish the\nfollowing tasks:

\n\n

\n

    \n
  1. Create a file.
  2. \n
  3. Load the contents of a file into memory.
  4. \n
  5. Store data in memory to a file.
  6. \n
  7. Move to a particular offset within a file.
  8. \n
  9. Flush data in memory to disk.
  10. \n
\n

\n", "responses": { "fsync": "fsync", "lseek": "lseek", "open": "open", "write": "write", "read": "read" } }, "q03": { "type": "blank", "question": "\n

Identify the key system call you should use to implement the\nfollowing Unix command-line utility:

\n\n

\n

    \n
  1. mkdir: ____
  2. \n
  3. rmdir: ____
  4. \n
  5. touch: ____
  6. \n
  7. stat: ____
  8. \n
  9. chmod: ____
  10. \n\n
  11. cd: ____
  12. \n
  13. mv: ____
  14. \n
  15. rm: ____
  16. \n
  17. ln: ____
  18. \n
  19. kill: ____
  20. \n
\n

\n" } }