There are currently, 219 guest(s) and 1 member(s) that are online.
You are an Anonymous user. You can register for free by clicking here
If you were to implement a system using the above theoretical model then
it would work, but not particularly efficiently.
Both operating system and processor designers try hard to extract more
performance from the system.
Apart from making the processors, memory and so on faster the best
approach is to maintain caches of useful information and data that
make some operations faster.
Linux uses a number of memory management related caches:
- Buffer Cache
The buffer cache contains data buffers that are used by the
block device drivers.
These buffers are of fixed sizes (for
example 512 bytes) and contain blocks of information that have
either been read from a block device or are being written to
A block device is one that can only be accessed by reading and
writing fixed sized blocks of data.
All hard disks are block devices.
The buffer cache is indexed via the device identifier and
the desired block number and is used to quickly find a block
of data. Block devices are only ever accessed via the buffer
cache. If data can be found in the buffer cache then it does not
need to be read from the physical block device, for example a
hard disk, and access to it is much faster.
- Page Cache
This is used to speed up access to images and
data on disk.
It is used to cache the logical contents of a file a page at a time and
is accessed via the file and offset within the file.
As pages are read into memory from disk, they are cached in the
- Swap Cache
Only modified (or dirty) pages are saved in the swap
So long as these pages are not modified after they
have been written to the swap file then the next time the
page is swapped out there is no
need to write it to the swap file as the page is already in
the swap file.
Instead the page can simply be discarded.
In a heavily swapping system this saves many unnecessary and
costly disk operations.
- Hardware Caches
One commonly implemented hardware cache is in the processor; a cache of Page
In this case, the processor does not always read the page table directly
but instead caches translations for pages as it needs them.
These are the Translation Look-aside Buffers and contain cached copies of the
page table entries from one or more processes in the system.
When the reference to the virtual address is made, the processor will attempt
to find a matching TLB entry.
If it finds one, it can directly translate the virtual address into a
physical one and perform the correct operation on the data.
If the processor cannot find a matching TLB entry then it must get the
operating system to help.
It does this by signalling the operating system that
a TLB miss has occurred.
A system specific mechanism is used to deliver that exception to the
operating system code that can fix things up.
The operating system generates a new TLB entry for the address
When the exception has been cleared, the processor will make another attempt
to translate the virtual address. This time it will work because there
is now a valid entry in the TLB for that address.
The drawback of using caches, hardware or otherwise, is that in order
to save effort Linux must use more time and space maintaining these
caches and, if the caches become corrupted, the system will crash.
Copyright 1996-1999 by David Rusling. Licensed under GNU General Public License (Used with permission of the author). See here for details. All rights reserved. || |
|Don't have an account yet? You can create one. As a registered user you have some advantages like theme manager, comments configuration and post comments with your name.|
|Tell a Friend About Us|