Given the following information:
The logical address (L.A.) is 32 bits. The physical address (P.A.) is 20 bits. The page size (P.S.) is 2048 bytes (2 KB). What is the maximum number of entries in the page table?
To calculate the number of entries in a page table, divide the total logical address space by the page size to get the number of pages. The number of entries is equal to the number of pages.
\( 2^{10} \)
\( 2^{12} \)
\( 2^{20} \)
\( 2^{22} \)
Step 1: Understanding the Address Breakdown
- The logical address space is 32 bits, meaning the total addressable space is \( 2^{32} \) bytes.
- The physical address space is 20 bits, meaning the total addressable space in physical memory is \( 2^{20} \) bytes.
Step 2: Page Size Calculation
- The page size is 2048 bytes, which is \( 2^{11} \) bytes.
Step 3: Number of Pages in the Logical Address Space
- The number of pages in the logical address space is: \[ \frac{2^{32}}{2^{11}} = 2^{21} \]
Step 4: Number of Frames in the Physical Address Space
- The number of frames in the physical address space is: \[ \frac{2^{20}}{2^{11}} = 2^{9} \]
Step 5: Number of Entries in the Page Table - The number of entries in the page table is equal to the number of pages in the logical address space, which is \( 2^{21} \).
Thus, the correct answer is (B).
Consider the following code:
main() {
int x = 126, y = 105;
{
if (x > y)
x = x - y;
else
y = y - x;
}
while (x != y)
printf("%d", x);
}
Consider the following code:
int a;
int arr[] = {30, 50, 10};
int *ptr = arr[10] + 1;
a = *ptr;
(*ptr)++;
ptr = ptr + 1;
printf("%d", a + arr[1] + *ptr);
Consider the following code:
int a;
int arr[] = {30, 50, 10};
int *ptr = arr[10] + 1;
a = *ptr;
(*ptr)++;
ptr = ptr + 1;
printf("%d", a + arr[1] + *ptr);
Consider the following hierarchical cache system with the following access times:
\[ \begin{array}{|c|c|c|} \hline \textbf{Cache Level} & \textbf{Hit Rate} & \textbf{Access Time} \\ \hline L1 & 90\% & 1 \text{ ns} \\ L2 & 80\% & 10 \text{ ns} \\ L3 & 100\% & 100 \text{ ns} \\ \hline \end{array} \]Find \( T_{avg} \) for hierarchical or simultaneous access.
What is the output of the following C code?
void foo(int *p, int x) {
*p = x;
}
void main() {
int *z;
int a = 20, b = 25;
z = a; // Incorrect: Should be z = a;
foo(z, b);
printf("%d", a);
}
Issue: The statement z = a; is invalid because a is an integer, and z is a pointer.