Simple/Basic Segmentation

Download Report

Transcript Simple/Basic Segmentation

Operating Systems
Simple/Basic
Segmentation
A. Frank - P. Weisberg
Real Memory Management
•
•
•
•
•
•
•
2
Background
Memory Management Requirements
Fixed/Static Partitioning
Variable/Dynamic Partitioning
Simple/Basic Paging
Simple/Basic Segmentation
Segmentation with Paging
A. Frank - P. Weisberg
Simple/Basic Segmentation
3
• Paging division is arbitrary; no natural/logical
boundaries for protection/sharing.
• Segmentation supports user’s view of a
program.
• A program is a collection of segments –
logical units – such as:
main program, subprogram, class
procedure, function,
object, method,
local variables, global variables,
common block,
stack, symbolA.table,
arrays
Frank - P. Weisberg
User’s View of a Program
4
A. Frank - P. Weisberg
Example of Segmentation Need
•
5
A compiler has many tables that are built up
as compilation proceeds, possibly including:
1. The source text being saved for the printed listing
(on batch systems).
2. The symbol table – the names and attributes of
variables.
3. The table containing integer, floating-point
constants used.
4. The parse tree, the syntactic analysis of the program.
5. The stack used for procedure calls within the
compiler.
A. Frank - P. Weisberg
One-dimensional address space
In a one-dimensional address space with growing tables, one table
may bump into another.
6
A. Frank - P. Weisberg
Segmentation Solution
Segmentation allows each table to grow or shrink
independently of the other tables.
7
A. Frank - P. Weisberg
Dynamics of Simple Segmentation (1)
• Each program is subdivided into blocks of nonequal size called segments.
• When a process gets loaded into main memory,
its different segments can be located anywhere.
• Each segment is fully packed with
instructions/data; no internal fragmentation.
• There is external fragmentation; it is reduced
when using small segments.
8
A. Frank - P. Weisberg
Logical view of simple segmentation
1
4
1
2
3
2
4
3
user space
9
physical memory space
A. Frank - P. Weisberg
Dynamics of Simple Segmentation (2)
• In contrast with paging, segmentation is visible
to the programmer:
– provided as a convenience to organize logically
programs (example: data in one segment, code in
another segment).
– must be aware of segment size limit.
• The OS maintains a segment table for each
process. Each entry contains:
– the starting physical addresses of that segment.
– the length of that segment (for protection).
10
A. Frank - P. Weisberg
Example of Segmentation
11
A. Frank - P. Weisberg
Logical address in segmentation
12
A. Frank - P. Weisberg
Logical address used in segmentation
• When a process enters the Running state, a dedicated
register gets loaded with the starting address of the
process’s segment table.
• Presented with a logical address (segment number,
offset) = (s, d), the CPU indexes (with s) the segment
table to obtain the starting physical address b and the
length l of that segment.
• The physical address is obtained by adding d to b (in
contrast with paging):
13
– the hardware also compares the offset d with the length l of
that segment to determine if the address is valid.
A. Frank - P. Weisberg
Logical-to-Physical Address Translation in segmentation
14
A. Frank - P. Weisberg
Segmentation Architecture
15
• Logical address consists of a two tuple:
<segment-number, offset>,
• Segment table – maps two-dimensional physical addresses;
each table entry has:
– base – contains the starting physical address where the
segments reside in memory.
– limit – specifies the length of the segment.
• Segment-table base register (STBR) points to the segment
table’s location in memory.
• Segment-table length register (STLR) indicates number of
segments used by a program; segment-number s is legal
if s < STLR.
A. Frank - P. Weisberg
Address Translation Architecture
16
A. Frank - P. Weisberg
Protection in Segmentation
• Protection – with each entry in segment table
associate:
– validation bit = 0  illegal segment
– read/write/execute privileges
• Protection bits associated with segments;
code sharing occurs at segment level.
• Since segments vary in length, memory
allocation is a dynamic storage-allocation
problem.
17
A. Frank - P. Weisberg
Sharing in Segmentation Systems
• Segments are shared when entries in the
segment tables of 2 different processes point to
the same physical locations.
• Example: the same code of a text editor can be
shared by many users:
– Only one copy is kept in main memory.
• But each user would still need to have its own
private data segment.
18
A. Frank - P. Weisberg
Shared Segments Example
19
Simple segmentation/paging comparison (1)
• Segmentation is visible to the programmer
whereas paging is transparent.
• Naturally supports protection/sharing.
• Segmentation can be viewed as commodity
offered to the programmer to logically organize
a program into segments while using different
kinds of protection (example: execute-only for
code but read-write for data).
20
A. Frank - P. Weisberg
21
A. Frank - P. Weisberg
Simple segmentation/paging comparison (2)
• Segments are variable-size; Pages are fixedsize.
• Segmentation requires more complicated
hardware for address translation than paging.
• Segmentation suffers from external
fragmentation. Paging only yields a small
internal fragmentation.
• Maybe combine Segmentation and Paging?
22
A. Frank - P. Weisberg
Example: MULTICS
• The MULTICS system solved problems of
external fragmentation and lengthy search
times by paging the segments.
• Solution differs from pure segmentation in that
the segment-table entry contains not the base
address of the segment, but rather the base
address of a page table for this segment.
• Example in the next slide.
23
A. Frank - P. Weisberg
MULTICS Address Translation Scheme
24
A. Frank - P. Weisberg
Example: The Intel Pentium
• Supports both segmentation and
segmentation with paging.
• CPU generates logical address
– Given to segmentation unit which produces
linear addresses.
– Linear address given to paging unit:
• Which generates physical address in main
memory.
• Paging units form equivalent of MMU.
25
A. Frank - P. Weisberg
Logical to Physical Address Translation
26
A. Frank - P. Weisberg
Intel Pentium Segmentation
27
A. Frank - P. Weisberg
Pentium Paging Architecture
28
A. Frank - P. Weisberg
Three-level Paging in Linux
29
A. Frank - P. Weisberg