{
"q01": {
"type": "multiple",
"question": "\n\nWhich are the following are reasons why the base and bounds method of\nimplementing virtual memory is insufficient for a modern operating system\n(choose all that apply)?\n\n\n",
"responses": {
"complicated": "It is too complicated.",
"slow": "It is too slow and inefficient.",
"waste": "It is too wasteful.",
"hardware": "It requires special hardware support.",
"space": "It requires the address space to fit in physical memory.",
"transparent": "It is not transparent to the application."
}
},
"q02": {
"type": "blank",
"question": "\n\n \nRather than loading the whole address space as a single block in memory,\n____ divides the address space into independent ____ and loads each\nindividual block into memory, where each region has its own separate ____\nand ____ registers. Whenever an illegal access occurs, the hardware traps\ninto the OS, and the application is presented with the dreaded ____ error.\n \nOne quirk with the stack segment (as compared to the heap, data, and code)\nis that it grows in the ____ direction. To handle this, the hardware must\nkeep track of this direction. Likewise, to enable ____ the code segment\nbetween processes, the hardware must also store ____ which record whether\nor not the segment can be read or written to.\n Once again, the operating system must keep track of this information for\neach process and then save and restore it during a ____. Additionally it\nmust use a ____ management algorithm to minimize ____ (ie. developing many\nlittle holes of free space between each segment). Given the following 16-bit virtual address: 1000 0010 0000 1010 Because page tables are so large, they must be stored in physical\nmemory and the OS must tell the hardware where the page table is via the\n____. This means that there is an extra memory lookup for each virtual\naddress translation. To speed this up, we can use a ____, which is a part\nof the MMU that ____ or stores virtual-to-physical address translations.\n \n\nWith this address-translation cache, the hardware first checks if the cache\ncontains the translation information. If so then, we have a ____ and can\nuse this information right away. Otherwise, we have a ____, and must\nreference the page table directly and then update the cache. This\noptimization works because most programs exhibit some form of ____ (that is\nwe are likely to access memory near previous references) and ____ (that is\nwe are likely to access previously memory references).\n\n\n \n
\n\nField \n Segment \n Base \n Bounds \n \n \n \n \n 00 \n Code \n 32K \n 2K \n \n \n 01 \n Data \n 34K \n 2K \n \n \n 10 \n Heap \n 36K \n 2K \n \n \n \n11 \n Stack \n 28K \n 2K \n \n
\n"
},
"q04": {
"type": "blank",
"question": "\n\nIn segmentation, we chopped up memory into variabled-sized pieces.\nUnfortunately, this made our space fragmented over time. An alternative\napproach is the idea of ____, which uses fixed-sized units called ____.\nEach of these fixed-sized units is mapped to a corresponding ____ in\nphysical memory. These mappings are stored in a per-process data structure\ncalled a ____.\n\n\n"
},
"q05": {
"type": "blank",
"question": "\n\nBased on the page table described in section 18.1 and the virtual address,\n36, answer the following questions:\n\n\n\n\n
\n"
},
"q06": {
"type": "blank",
"question": "\n\nTo organize a page table, we can simply use an array or ____, which\nconsists of a series of ____ that contain information such as:\n\n\n
\n\n\n"
},
"q07": {
"type": "blank",
"question": "\n\n