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