0% found this document useful (0 votes)
35 views

Operating Systems: Simple/Basic Segmentation

The document discusses segmentation in operating systems. Segmentation divides a program into logical units called segments, such as code, data, and stacks. Each segment can be placed anywhere in memory. Segmentation provides natural boundaries for protection and sharing of memory. It supports the programmer's view of a program as distinct segments. Segment tables map logical segment addresses to physical addresses.

Uploaded by

Anisha Meena
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
35 views

Operating Systems: Simple/Basic Segmentation

The document discusses segmentation in operating systems. Segmentation divides a program into logical units called segments, such as code, data, and stacks. Each segment can be placed anywhere in memory. Segmentation provides natural boundaries for protection and sharing of memory. It supports the programmer's view of a program as distinct segments. Segment tables map logical segment addresses to physical addresses.

Uploaded by

Anisha Meena
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 29

Operating Systems

Simple/Basic
Segmentation

A. Frank - P. Weisberg
Real Memory Management
• Background
• Memory Management Requirements
• Fixed/Static Partitioning
• Variable/Dynamic Partitioning
• Simple/Basic Paging
• Simple/Basic Segmentation
• Segmentation with Paging

2 A. Frank - P. Weisberg
Simple/Basic Segmentation
• 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
3 Frank - P. Weisberg
User’s View of a Program

4 A. Frank - P. Weisberg
Example of Segmentation Need

• 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.
5 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 non-


equal 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

4
1

3 2
4

user space physical memory space

9 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):
– the hardware also compares the offset d with the length l of
that segment to determine if the address is valid.
13 A. Frank - P. Weisberg
Logical-to-Physical Address Translation in segmentation

14 A. Frank - P. Weisberg
Segmentation Architecture
• 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.
15 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 fixed-


size.
• 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

You might also like