You are on page 1of 12

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 P2 code

print
function
P2 data
P1 code

OS Code OS data OS stack

logical address space


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
Addressing Segments

limit base
S o

logical address

segment table

yes Physical Address


o < limit +

no

error
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 200


0 1000 200 1200
1 3500 9000
2000
LDT limit base
2300
0 500 2500 2500
1 9000 20000 3000

GDT 9000
limit base
0 1000 200
1 300 2000
12500
LDT
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 directory page offset


page frame
PT directory page table

directory base

You might also like