13.07.2015 Views

iAPX 286 Operating System Writers Guide 1983

iAPX 286 Operating System Writers Guide 1983

iAPX 286 Operating System Writers Guide 1983

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

REAL MEMORY MANAGEMENTADVANCED MEMORY MANAGEMENTIn actual applications, the memory-management module may need to deal with such topics as• Different kinds of memory. The ALLOCATE procedure needs a parameter to specify (for example)slow versus fast memory, and each type of memory needs its own free-space list.• Multiprocessing. When multiple processors share some, but not all, of the available memory, thememory management module must know what memory addresses each processor can access.ALLOCATE must provide memory that is accessible to the processor that is running the callingtask. You need to partition memory into areas so that all the addresses in a given area satisfy acommon accessibility constraint. (The criteria for partitioning may also include memory types asmentioned previously.) Each area needs its own free-space list.• Dynamic deletion of memory. When a memory parity error occurs, the need for continued systemoperation may require deleting the affected block of memory from the available-space lists, so thatit cannot cause more trouble.• Fixed-location segments. Often certain addresses of memory have specific uses, for example, videorefresh buffers, and communication blocks for intelligent peripheral controllers. The memory managermust be aware of these areas and not use them for other purposes. Its interfaces must include themeans for a task to request a specific special-purpose area.• Compaction. It can happen that no single free memory space is large enough to satisfy anALLOCATE request, even though there is enough total free memory. Some memory-managementsubsystems call on a compaction algorithm in such cases. Whether implementation of a compactionalgorithm is worthwhile depends primarily on the pattern of memory usage in a given application.In many applications, this situation arises only when memory is nearly full anyway; compaction inthis case merely delays the inevitable by an insignificant time. If you do implement compaction,you may choose to associate with each allocated segment a pointer that helps the compactionalgorithm find the descriptors for that segment. With a memory-management scheme such as thatexemplified here, the boundary tags are the most convenient container for descriptor pointers. Withdescriptor pointers in place, the compaction algorithm need only follow the available-space lists todiscover all the opportunities for compaction.3-10 121960-001

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!