CMSC 412
Midterm #2 (Spring 2004)
Translation Look-aside Buffer. A type of cache that
speeds up translation of virtual to physical locations (each entry covers an
entire page).
A way to represent the set of allocated blocks in a
file using indirect blocks containing pointers to direct blocks that contain
pointers to the actual blocks. Allows random access and space efficient storage of both large and
small files.
The time required to move the disk head over the desired track (or cylinder).
The set of pages in use by the currently running processes. Keeping this set of pages in memory prevents trashing.
Ignores temporal locality
Subject to Bleadly’s anomaly (more page frames can increase number of page faults).
Page tables are arranged by physical page frame and
thus grow in size proportional to physical member in the system not the size of
the virtual address system.
P(countingSemaphore
*sem) {
P(sem->mutex)
if (sem->count > 0)
sem->count—-;
V(sem->mutex)’
else
V(sem->mutex)
P(sem->ready)
}
V(countingSemaphore *sem)
{
P(sem->mutex)
if (sem->count == 0)
V(sem->ready)
else
sem->count++;
V(sem->mutex)
}
1)
read root
inode
2)
read root
chunck (gets inode location of target block)
3)
read files
inode
4)
read indirect
block
5) read data block
Faster recovery (no need to check whole filesystem,
just log)
No windows of corruption/lost data during update
To clear the cached translation for the page being sent to disk, otherwise the hardware could access an invalid location.
The paging file is a normal file in the pfat filesystem and therefore it’s starting block is not likely to be a the first block on the disk.
Page table allocation: use alloc_pageable_page
Page fault handler: update to handle new faulting
location
On page out: clear present bit in page directory
for that page table