Segmentation
CS 537 Introduction to Operating Systems
Segmentation
Segmentation is a technique for breaking memory up into logical pieces Each piece is a grouping of related information
data segments for each process code segments for each process data segments for the OS etc.
Like paging, use virtual addresses and use disk to make memory look bigger than it really is Segmentation can be implemented with or without paging
Segmentation
P1 data print function P1 code P2 data P2 code
OS Code
OS data
OS stack
logical address space
Addressing Segments
limit S logical address segment table o base
o < limit no
yes
Physical Address
error
For logical to physical address mapping, a segment table (ST) is used. When a logical address <segment #, d> is generated by the processor, a. Check if (0 <= d <= limit) in ST. b. If O.K., then the physical address is calculated as base + d, and the physical memory is accessed at memory word (base + d). For example, assume the logical address generated is <1, 123> a. Check ST entry for segment 1. The limit for segment 1 is 200. Since 123 < 200, we carry on. b. The physical address is calculated as : 5500 + 123 = 5623, and the memory word 5623 is accessed.
Addressing Segments
Lets first assume no paging in the system User generates logical addresses These addresses consist of a segment number and an offset into the segment Use segment number to index into a table Table contains the physical address of the start of the segment
often called the base address
Add the offset to the base and generate the physical address
before doing this, check the offset against a limit the limit is the size of the segment
Segmentation Hardware
Sounds very similar to paging Big difference segments can be variable in size As with paging, to be effective hardware must be used to translate logical address Most systems provide segment registers If a reference isnt found in one of the segment registers
trap to operating system OS does lookup in segment table and loads new segment descriptor into the register return control to the user and resume
Again, similar to paging
Protection and Sharing
Like page tables, each process usually gets its own segment table Unlike page tables, there usually exists a global segment table for everyone
this, however, is usually used by OS
Access rights for segment are usually included in table entry Multiple processes can share a segment
Protection and Sharing
limit base 0 1000 200 1 3500 9000 LDT limit base 0 500 200 1200 2000
2500
2300 2500 3000 9000
1 9000 20000 GDT limit base 0 1000 200 1 300 2000 LDT
12500
Segmentation Issues
Entire segment is either in memory or on disk Variable sized segments leads to external fragmentation in memory Must find a space big enough to place segment into May need to swap out some segments to bring a new segment in
Segmentation with Paging
Most architectures support segmentation and paging Basic idea,
segments exist in virtual address space base address in segment descriptor table is a virtual address use paging mechanism to translate this virtual address into a physical address
Now an entire segment does not have to be in memory at one time
only the part of the segment that we need will be in memory
Linear Address
The base address gotten from the segment descriptor table is concatenated with the offset This new address is often referred to as a linear address This is the address that is translated by the paging hardware
virtual address from user descriptor offset
limit
base
segment table linear address
PT directory
directory
page
page table
offset
page frame
directory base