Segmentation and Paging in Operating Systems, Summaries of Computer Architecture and Organization

An overview of segmentation and paging techniques used by operating systems to manage memory allocation and protection. It covers segment tables, base and bound registers, access permissions, and the advantages and disadvantages of each approach. It also discusses the concept of Copy on Write (COW) and its role in eliminating external fragmentation.

Typology: Summaries

2021/2022

Uploaded on 09/27/2022

pratic
pratic 🇬🇧

5

(4)

216 documents

1 / 46

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
Segment Table
Use s bits to index to the appropriate row of the
segment table!
Segments can be shared by different processes!
use protection bits to determine if shared Read only
(maintaining isolation) or Read/Write (if shared, no isolation)!
processes can share code segment while keeping data private
Base
Bound (Max 4k)
32K
2K
34K
3K
28K
3K
Access
Read/Execute
Read/Write
Read/Write
Code
Heap
Stack
36
00
01
10
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e

Partial preview of the text

Download Segmentation and Paging in Operating Systems and more Summaries Computer Architecture and Organization in PDF only on Docsity!

Segment Table

Use s bits to index to the appropriate row of the

segment table

Segments can be shared by different processes

use protection bits to determine if shared Read only

(maintaining isolation) or Read/Write (if shared, no isolation)

processes can share code segment while keeping data private
Base Bound (Max 4k)
32K 2K
34K 3K
28K 3K
Access
Read/Execute
Read/Write
Read/Write
Code
Heap
Stack

00 01 10

Implementing Segmentation

CPU

512 40K

yes
no
Memory
exception
Logical
addresses
Physical
addresses
Bound Base

40K MAXsys 40K 512 R/X

STBR

o

Segment table generalizes Base & Bound Segment Table Base Register 37

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^ s
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^ s

Base Bound Access

Revisiting fork() pid = fork(); if (pid==0) exec(B); else wait(&status); Process 13 Program A pid ? pid = fork(); if (pid==0) exec(B); else wait(&status); Process 13 Program A pid PC 14 pid = fork(); if (pid==0) exec(B); else wait(&status); Process 14 Program A pid PC 0 main() { … exit(3); } PC pid 0 Process 14 Program B PC

main() { … exit(3); } PC Process 14 Program B Revisiting fork() pid = fork(); if (pid==0) exec(B); else wait(&status); Process 13 Program A pid ? pid = fork(); if (pid==0) exec(B); else wait(&status); Process 13 Program A pid PC 14 Status 3 PC

Revisiting fork():

Segments to the Rescue

Instead of copying entire address space, copy just segment table (the VA->PA mapping) Base Bound Access 32K 2K RX 34K 3K RW 28K 3K RW Code Heap Stack

Parent

Base Bound Access 32K 2K RX 34K 3K RW 28K 3K RW Code Heap Stack

Child

but change all writeable segments to Read only

Revisiting fork():

Segments to the Rescue

Instead of copying entire address space, copy just segment table (the VA->PA mapping) Base Bound Access 32K 2K RX 34K 3K R 28K 3K R Code Heap Stack

Parent

Base Bound Access 32K 2K RX 34K 3K R 28K 3K R Code Heap Stack

Child

Segments in VA spaces of parent and child point to same locations in physical memory but change all writeable segments to Read only

Managing Free space

Many segments, different processes,

different sizes

OS tracks free memory blocks (“holes”)

Initially, one big hole

Many strategies to fit segment into free

memory (think “assigning classrooms

to courses”)

First Fit: first big-enough hole Next Fit: Like First Fit, but starting from where you left off Best Fit: smallest big-enough hole Worst Fit: largest big-enough hole OS

External Fragmentation

Over time, memory can become full

of small holes

Hard to fit more segments

Hard to expand existing ones

Compaction

Relocate segments to coalesce holes

OS

External Fragmentation

Over time, memory can become full

of small holes

Hard to fit more segments

Hard to expand existing ones

Compaction

Relocate segments to coalesce holes

OS

Copying eats up a lot of CPU time!

if 4 bytes in 10ns, 8 GB in 20s!

But what if a segment wants to grow?

Eliminating External

Fragmentation: Swapping

Preempt processes and reclaim their memory Move images of suspended processes to backing store Ready Running Waiting Suspended Semaphores/condition queues Ready queue Suspended queue

OS
p 1
p 2

swap out swap in

Virtual address

Interpret VA as comprised of two components

page: which page?

offset: which byte within that page?

32 bits

Virtual address

} o (12 bits) } p (20 bits)

Interpret VA as comprised of two components

page: which page?

no. of bits specifies no. of pages are in the VA space

offset: which byte within that page?

Virtual address

} }

To access a byte

extract page number

map that page number into a frame

number using a page table

Note: not all pages may be mapped

to frames

extract offset

access byte at offset in frame

8 4 0 6 1 2

Page Table

0 1 2 3 4 220 -

........... p (20 bits) o (12 bits)

Basic Paging

CPU

PTBR

o
p
p
f

f

o

Physical Memory

Page Table
f
The Page Table
lives in memory
at the physical address
stored in the Page Table
Base Register
PTBR value saved/restored
in PCB on context switch
Frame