suppose decimal

advertisement
David Kingston
Due: 4/18/2002
CS3100 Homework #11
Chapter 12, Exercises 1, 3, 4, 6, 7, 8b, 8c, 14
1
1. Why are the page size, the number of pages in the virtual address space, and the
number of page frames in the physical address space all a power of 2 in binary machines?
In binary machines, you are dealing with bits. Each bit can have one of two values. It is
either set or unset. It is either zero or one. At the hardware level, this may be represented
as the presence of voltage or the absence of voltage. The voltage is on or off. If we have
one bit, we have 2^1 or 2 possible values that can be represented. If we have two bits, we
have 2^2 or 4 possible values that can be represented. If we have three bits, we have 2^3
or 8 possible values. And this continues as we add bits.
As mentioned above, at the hardware level we are dealing with bits that are represented
by the presence or absence of voltage. By keeping the page size, the number of pages in
the virtual address space and the number of page frames in the physical address space all
a power of 2, we can use the entire address space without having gaps or wasted address
space. For example, a page size of 1K is 1024 bytes (bytes 0 to 1023). Log 2 (1024) = 10
bits. If we make the page size 1000 bytes (bytes 0 to 999), Log 2 (1000) = 9.96578 bits.
However, you cannot have a partial bit; therefore, you need 10 bits to represent a page
size of 1000 bytes. Note that because this is binary, we still have the capability of
representing 1024 bytes even if the page size is only 1000 bytes. In this case, the bit
sequences that represent bytes 1000 to 1023 are invalid. This is wasted address space.
The binary machine has the capability of referencing them, but because we only go to
1000 bytes instead of 1024 bytes it creates gaps in the address space that point to invalid
byte numbers.
Therefore, because of the nature of binary machines, it makes the most sense to have the
page size and the different address spaces be a power of two.
(YH) It is also more efficient to map the virtual address to the physical address.
3. Suppose the page size in a computing environment is 1KB. What is the page number
and the offset for the following:
3.a. 899 (a decimal number)
page # = 899 / 1024 = page 0
offset = 899 mod 1024 = offset 899
3.b. 23456 (a decimal number)
page # = 23456 / 1024 = page 22
offset = 23456 mod 1024 = offset 928
3.c. 0x3F244 (a hexadecimal number)
1024 decimal = 400 hexadecimal
page # = 0x3F244 / 0x400 = page 0xFC
David Kingston
Due: 4/18/2002
CS3100 Homework #11
Chapter 12, Exercises 1, 3, 4, 6, 7, 8b, 8c, 14
2
offset = 0x3F244 mod 0x400 = offset 0x244
3.d. 0x0017C (a hexadecimal number)
1024 decimal = 400 hexadecimal
page # = 0x0017C / 0x400 = page 0
offset = 0x0017C mod 0x400 = offset 0x17C
4. Contemporary computers often have more than 100MB of physical memory. Suppose
the page size is 2KB. How many entries would an associative memory need in order to
implement a page table for the memory?
100 x 1024 x 1024 / (2 x 1024) = 51200 pages = 50 K pages
We need 50 K entries in the table (1 for each page).
6. What factors could influence the size of the virtual address space in a modern
computer system? In your answer consider the memory mapping unit, compiler
technology, and instruction format.
To answer this question, we must consider the following information. A program address
is relative to the program and start at address 0. The CPU relocation register contains the
starting virtual address of where the program is located in virtual memory. The program
address is added to the relocation register contents to get the virtual address of the
instruction being executed. This is sent to the Memory Management Unit (MMU). The
MMU divides the virtual address up into two parts. The higher bits represent the memory
page. The lower bits represent the offset on the page. The higher bits of the virtual
address are looked up in the page translation table in the MMU to determine the physical
memory page. The offset is then added to the physical memory address to get the
physical memory address of the instruction being executed.
Having given the above short analysis of what is taking place; I believe the most
important factor in determining the virtual address space of a modern computer system is
the hardware architecture of the computer. This includes considering the size in bits of
the CPU registers, the communication channel between the CPU and the MMU, the CPU
instruction addresses, etc. The hardware architecture determines the maximum address
that the computer is capable of handling. For example, if the computer is a 32 bit
computer it can handle a virtual address space of 2^32 (or 4GB). If the computer
architecture is 64 bits, it can handle a virtual address space of 2^64 (or 17,179,869,184
GB). The MMU then maps the virtual address to the physical address.
As far as compiler technology is concerned, it will assume that the program addresses
start at zero and that programs have the entire virtual address space available to them. I
believe the compiler would mainly be concerned about not hitting the upper limit of the
address space.
David Kingston
Due: 4/18/2002
CS3100 Homework #11
Chapter 12, Exercises 1, 3, 4, 6, 7, 8b, 8c, 14
3
(YH) Instruction format works with instruction registers. Instructions such as load and
save may have different format for different virtual address space.
Other factors that determine the virtual address space include cost and complexity of the
architecture.
7. What factors could influence the size of the physical address space in a modern
computer system (consider various parts of the hardware).
The computer architecture determines the maximum physical address space. For
example, a 32 bit architecture can have up to 2^32 bytes (or 4GB) of physical address
space. This is assuming the MMU is capable of handling a physical address space equal
to the virtual address space. (Note that when the physical address space is equal to the
virtual address space, there is no need for the virtual address space to be different than the
physical address space.)
The computer chip technology determines how many bits a single chip can hold. The
physical size of the memory card determines the number of chips a single card can hold.
The number of memory slots available determines the number of memory cards the
computer can hold. All of these things influence the size of the physical address space in
a modern computer system.
Other considerations include cost and complexity.
8. Suppose w = 2 3 4 3 2 4 3 2 4 5 6 7 5 6 7 4 5 6 7 2 1 is a page reference stream.
8.b. Given a page frame allocation of 3 and assuming the primary memory is initially
unloaded, how many page faults will the given reference stream incur under LRU (leased
recently used)?
Frame 2 3 4 3
0
*2 2 2 2
1
*3 3 3
2
*4 4
2
2
3
4
4
2
3
4
3
2
3
4
2
2
3
4
4
2
3
4
5
2
*5
4
6
*6
5
4
7
6
5
*7
5
6
5
7
6
6
5
7
7
6
5
7
4
6
*4
7
5
*5
4
7
6
5
4
*6
7
5
*7
6
2
*2
7
6
1
2
7
*1
This will have 12 page faults.
8.c. Given a page frame allocation of 3 and assuming the primary memory is initially
unloaded, how many page faults will the given reference stream incur under FIFO (firstin-first-out)?
Frame 2 3 4 3
0
*2 2 2 2
1
*3 3 3
2
*4 4
2
2
3
4
4
2
3
4
3
2
3
4
This will have 12 page faults.
2
2
3
4
4
2
3
4
5
*5
3
4
6
5
*6
4
7
5
6
*7
5
5
6
7
6
5
6
7
7
5
6
7
4
*4
6
7
5
4
*5
7
6
4
5
*6
7
*7
5
6
2
7
*2
6
1
7
2
*1
David Kingston
Due: 4/18/2002
CS3100 Homework #11
Chapter 12, Exercises 1, 3, 4, 6, 7, 8b, 8c, 14
4
14. In a paging system, page boundaries are transparent to the programmer. Explain how
a loop might cause thrashing in a static allocation paging system when the memory
allocation is too small.
A static paging algorithm allocates a fixed number of page frames to a process when it is
created. It is possible for a loop to contain instructions that require the program to get a
new page of instructions multiple times in a loop. For example, there may be function
calls in the loop that are located in different memory pages. To execute these functions,
the required text pages must be moved into primary memory. If the memory allocation is
too small, it is conceivable that each function call could require moving a different page
into primary memory from virtual memory. As the loop starts again, the page with the
first function called could have been paged out. It must be paged in again. This could
continue with each iteration of the loop. This is one example of how a loop might result
in thrashing if the memory allocation is too small.
Download