The need of memory segmentation is explained below:
- The BIU (Bus Interfacing Unit) contains four special purpose registers called as segment registers. These are Code Segment (CS) register, Stack Segment (SS) register, Extra Segment (ES) register and Data Segment (DS) register.
- All these are 16 bit registers.
- The number of address lines in 8086 is 20. So the 8086 BIU will send out a 20 bit address in order to access one of the 1,048,576 or 1MB memory locations.
- But it is interesting to note that the 8086 does not work the whole 1MB memory at any given time. However it works with only four 64 KB segments within the whole 1 MB memory.
- The four segment registers actually contain the upper 16 bits of the starting addresses of the four memory segments of 64 KB each with which the 8086 is working at that instant of time.
- A segment is a logical unit of memory that may be up to 64 kilo bytes long.
- Each segment is made up of memory contiguous memory locations. It is independent, separately addressable unit.
- Starting addresses will always be changing. They are not fixed.
- Figure shows one of the possible ways to position the four 64 KB segments within the 1 MB memory space of 8086.
- There is no restriction on the locations of these segments in the memory. These segments can be separate from each other or they can overlap.
- In the users program there can be many segments but 8086 can deal with only four of them at any given time because it has only four segment registers.
- Whenever the segment orientation is to be changed, the base addresses have to be changed and load the upper 16 bits into the corresponding segment registers.
- Segment registers are very useful for large programming tasks that require isolation of program code from the data code or isolation of module data from the stack information etc.
- Segmentation builds relocatable and re-entrant programs easily. In many cases the task of relocating a program simply requires moving the program code and then adjusting the code segment register to point to the base of the new code area.
Advantages of memory segmentation:
- Segmentation provides a powerful memory management mechanism.
- It allows programmers to partition their programs into modules that operate independently of one another.
- Segments allow two processes to easily share data.
- It allows to extend the address ability of a processor i.e. segmentation allows the use of 16 bit registers to give an addressing capability of 1 MB. Without segmentation, it would require 20 bit registers.
- Segmentation makes it possible to separate the memory areas for stack, code and data.
- It is possible to increase the memory size of code data or stack segments beyond 64 KB by allotting more than one segment for each area.
Please log in to add an answer.