FIT1047 Lecture Notes - Lecture 7: Virtualization, Memory Protection, Master Sergeant

65 views9 pages
!" (Operating+System)
=+a+piece/collection+ of+s/w+(program)s+that+manages+the+resources+in+a+comp,+and+
provide+a+convenient+interface+btwn+app+programs+and+h/w
Provides+a+#$%$#&'(&)*+,-).,/'0 btwn+h/w+and+s/w
**+impt+concept+abstraction:+hiding+complicated,+diverse,+low-level+
concepts+(i.e.+complex+code)+behind+a+simple+but+consistent+and+well-
documented+interface
Lies+below+app+code+and+above+BIOS/UEFI+&+h/w
App+code+uses+well-defined+interfaces+in+OS+to+access+things+like+
network/graphics+h/w
§
App+programmer+can+just+call+a+function+in+OS+to+send+msg+to+
another+comp+via+Internet,+w/o+needing+to+know+how your+comp+
is+connected+to+Internet
§
1'-$&(20.,/'0)#/,3&(provided+by+OS+kernel)
Manage+multiple+processes running+in+parallel
Manage+memory used+by+processes
Provide+file+system access,+network access,+and+I/O+resource access
All+other+functionality+is+provided+as+app+code+that+is+pre-installed+when+
OS+installed
History
Libraries+of+code+for+similar+tasks+allowed+programmers+to+use+the+
output+functionality+of+a+computer+without+knowing+exactly+how+to+talk+
to+h/w
W/+computers+that+could+support+multi-programming,+innovation+of+
task-switching was+born
Each+program+is+allowed+to+run+for+a+certain+amount+of+time+
before+the+CPU+switches+to+next+program
§
UNIX+line+deployed+on+mainframe+computers+that+could+be+used+by+>1+
user,+running+many+progs+simultaneously,+w/+reasonable+protection+
against+malicious+&+buggy+code
Mac+OS+and+Linux+both+closely+related+to+UNIX+(internal+
structure),+while+Windows+is+less+so
§
Program+VS+process
4-'5-)6
=+code+you+write+-sequence+of+instructions+(and+possibly+data)+
Released+as+app
§
4-'.$++
=+an+instance+of+a+program+currently+being+executed+by+the+computer
On+many+user+devices
§
There+could+be+multiple+processes+executing+the+same+program
(eg.+some+web+browsers+start+a+process+for+each+open+window)
7*+,-).,/'0
For+users
Provides+consistent+UI
§
Manages+multiple+running+apps+simultaneously
§
Provides+some+level+of+protection+against+malicious+&+buggy+code
§
For+programmers
Provides+programming+interface+that+enables+easy+access+to+h/w+
and+I/O+devices
§
Manages+system+resources+(eg.+memory,+storage,+network)
§
W/o+the+many+levels+of+abstraction,+interfaces+and+layers+built+on+top+of+
each+other,+would+be+impossible+to+master+the+complexcity+of+a+
modern+computer+system
Achieved+through+virtualisation
8/-,2)#/+),/'0
=+provides+a+virtual+form+of+each+physical+resource+to+each+process
Physical+resource+egs+(CPU,+memory,+ext+storage,+network,+other+I/O+
devices)
=+aims+to+run+multiple+processes+"simultaneously",+such+that+indiv+processes+
don't+(need+to)+know+they're+running+in+parallel+ with+any+other+process
Done+by:
Switching+between+processes several+times+per+second
§
If+OS+kernel+switches+quickly+and+often+btwn+processes,+
concurrency+illusion+for+both+user+(eg.+BGM+while+scrolling+
webpage)+and+programmer+(looks+like+exclusive+access+to+CPU)
§
A+prog+shouldn't+have+to+depend+on+what+other+progs+are+running
§
OS+can+provide+9/##2+/'09 that+each+process+has:
CPU+completely+to+itself+(as+if+no+other+processes+running)
§
Large,+contiguous+(sequential)+memory+just+for+itself
§
Exclusive+access+to+system+resources+(no+need+to+share+w/+other+
processes)
§
Pros
Scarce+physical+resources+are+shared among+multiple+processes,+
because+OS+makes+it+look+as+it+the+process+has+all+the+resources+to+
itself+[analogy+of+3+ppl+sharing+1+car+within+1+day+no+problem,+
cause+all+use+at+different+times)
§
OS+isolates+process against+each+other,+preventing+them+frm+
accessing+each+others'+resources+(eg.+memory,+files+on+disk)+
[analogy+of+3+ppl's+own+stuff+always+on+glove+compartment+for+
them,+fuel+level+always+how+they+left+it,+etc]
Also+known+as+VM+(Virtual+Memory)
§
1:)##$05$+&;&+'#2,/'0+
Shldn't+realise+it's+NOT+running+continuously1.
(i.e.+programmer+shouldn't+have+to+take+into+account+other+
processes+that+might+be+running+at+the+same+time+as+his+code)
Mechanism
Classifies+each+process+as+being+in+1+of+3+states+based+
on+how+they+are+scheduled/de-scheduled
Ready:+ready+for+execution+but+not+currently+
being+executed+by+CPU
Running:+code+for+process+being+executed+on+
CPU
Blocked:+since+I/O+request+from+running+
process+can+take+a+while+(eg.+opening+a+file+
from+external+storage),+OS+takes+advantage+of+
opportunity+to+put+the+process+into+this+state+
until+I/O+is+finished.
Goes+back+to+ready+once+done.
®
Process+switching
Since+interrupt+handler+is+part+of+OS,+when+
restoring+process+context+frm+memory,+can+
simply+decide+to+restore+a+diff+process+context
Easy+because+OS+keeps+process+contexts+stored+
in+memory for+all+processes+currently+in+
ready/blocked+state,+so+interrupt+handler+can+
choose+the+process+context of+a+'ready'+
process,+then+return+to+user+space+app+that+
called+it
®
Challenges
4$-('-6)0.$
Shouldn't+create+a+huge+overhead,+and+most+of+
the+CPU+time+shld+be+spent+running,+not+
managing,+processes
®
1'0,-'#
OS+must+stay+in+control in+order+to+enable+fair+
scheduling+of+processes,+and+offer+a+certain+
level+of+protection against+malicious+&+buggy+
code
®
Solution+is+<=> ?</6/,$@&=/-$.,&>A$.2,/'0B
=+each+process+allowed+to+run+directly+on+CPU+w/+support+
frm+h/w+in+order+to+achieve+gd+perf
CPUs+have+diff+'C$-),/'0&6'@$+ enabling+the+OS+to+
limit+what+an+app+prog+can+do
Impt+to+distinguish+for+security,+because+OS+can+
enforce+file+system+access+control
®
Kernel+mode User+mode
General Reserved+for+
lowest-level,+most+
trusted+OS+functions
Code+must+
delegate+to+system+
APIs+to+access
Access+
for+exec+
code
Executing+code+has+
complete,+
unrestricted+access+
to+the+underlying+
h/w
Executing+code+
can't+directly+
access+h/w+or+
reference+memory,+
only+a+subset+of+
instrucs+
**+many+severe+
restrictions+placed+
on+app+progs
Crashes Crashes+in+kernel+
mode+catastrophic,+
PC+will+halt
Since+there+is+
protection+in+this+
isolation,+crashes+
always+recoverable
Switches+to+this+
mode+to+execute+
interrupt+handler+
(part+of+OS)+
whenever+an+
interrupt+happens
Typically+I/O+ops &+
certain+memory+
blocks+not+allowed
w/o+I/O+access,+process+can't+do+"privileged+ops" like+
file+I/O,+access+network+interface+to+send/receive+
msgs,+comm+w/+other+processes,+allocate+memory,+
draw+any+chars+on+screen
OS+provides+system+calls (like+subroutines)+
which+are+special+CPU+instrucs+that+expose+OS+
functionality+to+user+mode+processes
To+implement,+add+an+instruc+that+causes+a+
special+interrupt+(s/w+interrupt)+causing+
process+to+change+frm+user+to+kernel+mode
System+call+handler+table (a+contiguous+block+of+
memory+where+each+loc+contains+a+subroutine+
address+that+performs+1+particular+function)+set+
up+to+let+app+code+in+user+mode+tell+OS+what+
kinds+of+"privileged+ops"+it+wants+to+perform
When+process+makes+system+call+number+(for+
eg.+n):
Save+process+context+in+memory
}
Switch+CPU+to+kernel+mode+(context+
switch)
}
Jump+to+call+handler+n+and+exec
}
Restore+process+context+(context+switch)
}
Switch+CPU+to+user+mode
}
Return+to+calling+process
}
®
Timesharing
®
=+needed+in+case+1+process+never+executes+any+
system+calls/no+interrupts+happen+frm+I/O+devices
1''C$-),/%$
=+all+processes+cooperate+w/+OS+and+make+
system+calls+at+random+intervals,+otherwise+
some+processes+might+"starve"+(not+get+
scheduled+at+all)
**+OS+gets+control+of+EVERY+syscall
}
Easy+to+implement
}
Buggy+&+malicious+processes+could+make+
entire+system+unusable
}
4-$D$6C,/%$
=+guarantees+that+process+will+be+pre-empted+
at+the+latest+when+the+timer+"fires",+if+it+doesn't+
make+any+syscalls+before+that
OS+will+be+able+to+kill+buggy+&+malicious+
processes,+since+**+OS+regains+control+of+
system+several+times+per+second+**
}
Timer+interrupt+set+up+by+OS
Timer+implemented+in+h/w
"Fires"/generates+a+timer+interrupt+
every+10ms+(for+eg)
Interrupt+switches+process+to+
kernel+mode,+calls+interrupt+
handler+in+OS+which+can+then+
switch+processes+like+in+coop+
timesharing
w
}
Each+process+shld+get+fair+share+of+overall+CPU+time
Policies
4-'.$++D+.:$@2#/05
®
=+OS+decides+how+long+each+process+gets+to+use+the+
CPU+before+it+switches+to+a+different+process,+and+
which+process+to+switch+to+next
E).,'-+ to+consider+when+making+policy
Finish+each+process+as+quickly+as+possible+
(trying+to+achieve+optimal+turnaround+time =+
time+btwn+process+being+ready+for+first+time+&+
it's+completion)
Allocate+same+amount+of+CPU+time+to+each+
process+in+a+given+time+interval
Basically+being+fair+to+all+ processes+(eg.+if+
10+processes,+each+gets+0.1+CPU+time+on+
avg)
}
®
Examples
First-come+first-served &+shortest+job+first
**+assumes+perfect+knowledge+abt+time
Typically+no+idea+how+long+a+single+
process+will+take+to+finish
Some+processes+(eg+task+bar)+will+
never+finish,+since+that's+the+nature+
of+its+design
OS+also+needs+to+pre-empt+process+
and+switch+to+others+for+illusion+of+
concurrency+
}
Round-robin+scheduling
Splits+each+process+into+short+time+slices
The+shorter+the+time+slice,+the+
fairer+the+schedule
If+too+short,+noticeable+overhead+
due+to+time+for+OS+to+switch+
processes
"Fire"+time+interrupt
Execute+interrupt+handler
Context+switch+to+new+
process
}
Variant+of+this+now+implemented+in+
modern+OSs
}
Pros
Fair+schedule+-during+time+interval,+
all+processes+get+roughly+equal+
access+to+CPU
}
Cons
Importance+of+processes+may+vary+
(eg.+video+player+VS+lengthy+
computation+in+background)
}
®
2.
8F ?8/-,2)#&F$6'-3B
Since+progs+in+user+mode+run+on+CPU+directly
Goals
Protect+a+process'+memory against+access+frm+other+processes,+or+just+
malicious+&+buggy+processes
Make+programming+easier
Programmer+doesn't+need+to+know+exactly+how+the+memory+on+
the+target+computer+is+organised+(eg.+installed+RAM+size,+address+
@+which+prog+will+be+loaded+into+RAM)
§
Enable+processes+to+use+more+memory than+is+physically+installed+as+
RAM+by+using+ext+storage+(eg.+hard+disks)+as+temporary+memory
Leave+processes+unawarethat+they+have+to+share+memory with+others
Address+space =+addresses+that+can+be+used+by+a+process
In+MARIE,+since+addresses+are+12+bits+wide,+address+space+is+000+to+FFF
OS+creates 9/##2+/'09 that+each+process+has+its+own+address+space,+and+
prevents+any+process+frm+accessing+another+process'+address+space
Approaches:+single+program+&+multiprogramming
Cons
No+idea+where+a+program+will+start+in+memory+when+you+
write+it.+Symbolic+labels+get+replaced+by+fixed,+concrete+
addresses+as+soon+as+your+program+is+assembled+in+
machine+code
Enable+programming+as+if+code+is+loaded+@+address+
0,+then+have+a+mechanism+that+translates+those+
virtual+addresses+to+physical+ones when+code+is+
loaded/exec
®
No+way+of+preventing+process+B/C+from+reading/writing+
memory+area that+has+been+set+up+for+process+A
Could+lead+to+process+A+crashing,+or+access+to+
sensitive+data
®
§
8/-,2)#&)@@-$++$+ (i.e.+the+abstraction+of+VM)
=+each+process+thinks+its+addresses+start+at+0,+but+they+actually+map+to+diff+
physical+memory+locations
Operated+on+by+instrucs,+then+translated+into+physical+addresses+by+OS+
and+h/w
To+implement:
Use+base+register+B,+which+has+to+contain+the+address+at+which+
the+code+for+the+currently+running+process+starts+in+memory
§
Any+instruction+that+accesses+memory+must+now+always+add+
value+in+B+to+the+address+being+used (Load B ==> Load B+
100),+so+now+CPU+takes+into+account+base+register+B+when+exec+
instrucs
If+code+is+loaded+into+RAM+starting+at+address+A000,+when+
OS+schedules+process+A,+it+needs+to+set+B = A000 before+
jumping+to+first+instruc
§
F$6'-3&C-',$.,/'0
=+ensures+each+process+only+accesses+its+own+memory
If+not+done,+(eg)+A00+105 = B05
Use+bounds+register,+which+has+to+contain+highest+address+that+the+
current+process+is+allowed+to+access
CPU+will+check,+for+each+memory+access,+if+address+is+btwn+base+&+
bounds+registers
If+not+within+addresses+stored+at+registers,+interrupt+generated,+causing+
a+context+switch+and+giving+OS+a+chance+to+kill+process
In+real+world…
G$)#/+,/.)##3,+simple+process+above+wouldn't+work
Need+to+allocate+a+fixed+block+of+physical+RAM+to+each+process,+
but+often+OS+can't+know+yet+how+much+RAM+a+particular+process+
will+need+when+it's+loaded
§
Instead,+use+C)5$@&8F&+3+,$6
Memory+allocated+in+smaller+chunks+"pages",+OS+keeps+list+(not+
single+block)+of+them+for+each+process
§
OS
free
Page+1+process+A
Page+1+process+B
free
Page+2+process+B
Page+2+process+A
Page+1+process+C
free
Process+can:
Request+a+block+of+memory+to+use+from+OS
Address+from+existing+page+already+associated
®
New+page+for+process+if+existing+alrdy+full
®
§
MMU (Memory+Management+Units)+=+h/w+circuits+performing+
"paging"
§
Pros
Pages+for+a+single+process+don't+all+have+to+form+a+
contiguous+(sequential)+region+of+physical+memory
Page+of+VM+doesn't+have+to+exist+in+physical+RAM -->+solves+
problem+of+not+enough+RAM,+because+of+page+"swaps"
Eg+if+process+hasn't+used+a+certain+page+for+a+while,+
OS+could+decide+to+store+contents+of+that+page+to+ext+
storage+(hard+disk),+and+reuse+the+memory+for+other+
processes
®
As+soon+as+original+process+tries+to+access+that+pg+
again,+MMU+will+cause+an+interrupt+(process+is+trying+
to+read+from+a+page+that+doesn't+exist),+giving+OS+a+
chance+to+load+the+page+back+from+hard+disk+
(probably+in+exchange+for+another+page+that+hasn't+
been+used+in+a+while)
®
Good+as+long+as+page+"swaps"+from+memory+to+hard+disk+
and+back+are+not+too+frequent
If+computer+is+unresponsive,+it+means+an+indiv+
process+requests+so+much+memory+that+OS+does+
nothing+but+page+"swaps"
®
§
Week$7
Thursday,+7+June+2018
23:00
Unlock document

This preview shows pages 1-3 of the document.
Unlock all 9 pages and 3 million more documents.

Already have an account? Log in
!" (Operating+System)
=+a+piece/collection+ of+s/w+(program)s+that+manages+the+resources+in+a+comp,+and+
provide+a+convenient+interface+btwn+app+programs+and+h/w
Provides+a+#$%$#&'(&)*+,-).,/'0 btwn+h/w+and+s/w
**+impt+concept+abstraction:+hiding+complicated,+diverse,+low-level+
concepts+(i.e.+complex+code)+behind+a+simple+but+consistent+and+well-
documented+interface
Lies+below+app+code+and+above+BIOS/UEFI+&+h/w
App+code+uses+well-defined+interfaces+in+OS+to+access+things+like+
network/graphics+h/w
§
App+programmer+can+just+call+a+function+in+OS+to+send+msg+to+
another+comp+via+Internet,+w/o+needing+to+know+how your+comp+
is+connected+to+Internet
§
1'-$&(20.,/'0)#/,3&(provided+by+OS+kernel)
Manage+multiple+processes running+in+parallel
Manage+memory used+by+processes
Provide+file+system access,+network access,+and+I/O+resource access
All+other+functionality+is+provided+as+app+code+that+is+pre-installed+when+
OS+installed
History
Libraries+of+code+for+similar+tasks+allowed+programmers+to+use+the+
output+functionality+of+a+computer+without+knowing+exactly+how+to+talk+
to+h/w
W/+computers+that+could+support+multi-programming,+innovation+of+
task-switching was+born
Each+program+is+allowed+to+run+for+a+certain+amount+of+time+
before+the+CPU+switches+to+next+program
§
UNIX+line+deployed+on+mainframe+computers+that+could+be+used+by+>1+
user,+running+many+progs+simultaneously,+w/+reasonable+protection+
against+malicious+&+buggy+code
Mac+OS+and+Linux+both+closely+related+to+UNIX+(internal+
structure),+while+Windows+is+less+so
§
Program+VS+process
4-'5-)6
=+code+you+write+-sequence+of+instructions+(and+possibly+data)+
Released+as+app
§
4-'.$++
=+an+instance+of+a+program+currently+being+executed+by+the+computer
On+many+user+devices
§
There+could+be+multiple+processes+executing+the+same+program
(eg.+some+web+browsers+start+a+process+for+each+open+window)
7*+,-).,/'0
For+users
Provides+consistent+UI
§
Manages+multiple+running+apps+simultaneously
§
Provides+some+level+of+protection+against+malicious+&+buggy+code
§
For+programmers
Provides+programming+interface+that+enables+easy+access+to+h/w+
and+I/O+devices
§
Manages+system+resources+(eg.+memory,+storage,+network)
§
W/o+the+many+levels+of+abstraction,+interfaces+and+layers+built+on+top+of+
each+other,+would+be+impossible+to+master+the+complexcity+of+a+
modern+computer+system
Achieved+through+virtualisation
8/-,2)#/+),/'0
=+provides+a+virtual+form+of+each+physical+resource+to+each+process
Physical+resource+egs+(CPU,+memory,+ext+storage,+network,+other+I/O+
devices)
=+aims+to+run+multiple+processes+"simultaneously",+such+that+indiv+processes+
don't+(need+to)+know+they're+running+in+parallel+ with+any+other+process
Done+by:
Switching+between+processes several+times+per+second
§
If+OS+kernel+switches+quickly+and+often+btwn+processes,+
concurrency+illusion+for+both+user+(eg.+BGM+while+scrolling+
webpage)+and+programmer+(looks+like+exclusive+access+to+CPU)
§
A+prog+shouldn't+have+to+depend+on+what+other+progs+are+running
§
OS+can+provide+9/##2+/'09 that+each+process+has:
CPU+completely+to+itself+(as+if+no+other+processes+running)
§
Large,+contiguous+(sequential)+memory+just+for+itself
§
Exclusive+access+to+system+resources+(no+need+to+share+w/+other+
processes)
§
Pros
Scarce+physical+resources+are+shared among+multiple+processes,+
because+OS+makes+it+look+as+it+the+process+has+all+the+resources+to+
itself+[analogy+of+3+ppl+sharing+1+car+within+1+day+no+problem,+
cause+all+use+at+different+times)
§
OS+isolates+process against+each+other,+preventing+them+frm+
accessing+each+others'+resources+(eg.+memory,+files+on+disk)+
[analogy+of+3+ppl's+own+stuff+always+on+glove+compartment+for+
them,+fuel+level+always+how+they+left+it,+etc]
Also+known+as+VM+(Virtual+Memory)
§
1:)##$05$+&;&+'#2,/'0+
Shldn't+realise+it's+NOT+running+continuously1.
(i.e.+programmer+shouldn't+have+to+take+into+account+other+
processes+that+might+be+running+at+the+same+time+as+his+code)
Mechanism
Classifies+each+process+as+being+in+1+of+3+states+based+
on+how+they+are+scheduled/de-scheduled
Ready:+ready+for+execution+but+not+currently+
being+executed+by+CPU
Running:+code+for+process+being+executed+on+
CPU
Blocked:+since+I/O+request+from+running+
process+can+take+a+while+(eg.+opening+a+file+
from+external+storage),+OS+takes+advantage+of+
opportunity+to+put+the+process+into+this+state+
until+I/O+is+finished.
Goes+back+to+ready+once+done.
®
Process+switching
Since+interrupt+handler+is+part+of+OS,+when+
restoring+process+context+frm+memory,+can+
simply+decide+to+restore+a+diff+process+context
Easy+because+OS+keeps+process+contexts+stored+
in+memory for+all+processes+currently+in+
ready/blocked+state,+so+interrupt+handler+can+
choose+the+process+context of+a+'ready'+
process,+then+return+to+user+space+app+that+
called+it
®
Challenges
4$-('-6)0.$
Shouldn't+create+a+huge+overhead,+and+most+of+
the+CPU+time+shld+be+spent+running,+not+
managing,+processes
®
1'0,-'#
OS+must+stay+in+control in+order+to+enable+fair+
scheduling+of+processes,+and+offer+a+certain+
level+of+protection against+malicious+&+buggy+
code
®
Solution+is+<=> ?</6/,$@&=/-$.,&>A$.2,/'0B
=+each+process+allowed+to+run+directly+on+CPU+w/+support+
frm+h/w+in+order+to+achieve+gd+perf
CPUs+have+diff+'C$-),/'0&6'@$+ enabling+the+OS+to+
limit+what+an+app+prog+can+do
Impt+to+distinguish+for+security,+because+OS+can+
enforce+file+system+access+control
®
Kernel+mode User+mode
General Reserved+for+
lowest-level,+most+
trusted+OS+functions
Code+must+
delegate+to+system+
APIs+to+access
Access+
for+exec+
code
Executing+code+has+
complete,+
unrestricted+access+
to+the+underlying+
h/w
Executing+code+
can't+directly+
access+h/w+or+
reference+memory,+
only+a+subset+of+
instrucs+
**+many+severe+
restrictions+placed+
on+app+progs
Crashes Crashes+in+kernel+
mode+catastrophic,+
PC+will+halt
Since+there+is+
protection+in+this+
isolation,+crashes+
always+recoverable
Switches+to+this+
mode+to+execute+
interrupt+handler+
(part+of+OS)+
whenever+an+
interrupt+happens
Typically+I/O+ops &+
certain+memory+
blocks+not+allowed
w/o+I/O+access,+process+can't+do+"privileged+ops" like+
file+I/O,+access+network+interface+to+send/receive+
msgs,+comm+w/+other+processes,+allocate+memory,+
draw+any+chars+on+screen
OS+provides+system+calls (like+subroutines)+
which+are+special+CPU+instrucs+that+expose+OS+
functionality+to+user+mode+processes
To+implement,+add+an+instruc+that+causes+a+
special+interrupt+(s/w+interrupt)+causing+
process+to+change+frm+user+to+kernel+mode
System+call+handler+table (a+contiguous+block+of+
memory+where+each+loc+contains+a+subroutine+
address+that+performs+1+particular+function)+set+
up+to+let+app+code+in+user+mode+tell+OS+what+
kinds+of+"privileged+ops"+it+wants+to+perform
When+process+makes+system+call+number+(for+
eg.+n):
Save+process+context+in+memory
}
Switch+CPU+to+kernel+mode+(context+
switch)
}
Jump+to+call+handler+n+and+exec
}
Restore+process+context+(context+switch)
}
Switch+CPU+to+user+mode
}
Return+to+calling+process
}
®
Timesharing
®
=+needed+in+case+1+process+never+executes+any+
system+calls/no+interrupts+happen+frm+I/O+devices
1''C$-),/%$
=+all+processes+cooperate+w/+OS+and+make+
system+calls+at+random+intervals,+otherwise+
some+processes+might+"starve"+(not+get+
scheduled+at+all)
**+OS+gets+control+of+EVERY+syscall
}
Easy+to+implement
}
Buggy+&+malicious+processes+could+make+
entire+system+unusable
}
4-$D$6C,/%$
=+guarantees+that+process+will+be+pre-empted+
at+the+latest+when+the+timer+"fires",+if+it+doesn't+
make+any+syscalls+before+that
OS+will+be+able+to+kill+buggy+&+malicious+
processes,+since+**+OS+regains+control+of+
system+several+times+per+second+**
}
Timer+interrupt+set+up+by+OS
Timer+implemented+in+h/w
"Fires"/generates+a+timer+interrupt+
every+10ms+(for+eg)
Interrupt+switches+process+to+
kernel+mode,+calls+interrupt+
handler+in+OS+which+can+then+
switch+processes+like+in+coop+
timesharing
w
}
Each+process+shld+get+fair+share+of+overall+CPU+time
Policies
4-'.$++D+.:$@2#/05
®
=+OS+decides+how+long+each+process+gets+to+use+the+
CPU+before+it+switches+to+a+different+process,+and+
which+process+to+switch+to+next
E).,'-+ to+consider+when+making+policy
Finish+each+process+as+quickly+as+possible+
(trying+to+achieve+optimal+turnaround+time =+
time+btwn+process+being+ready+for+first+time+&+
it's+completion)
Allocate+same+amount+of+CPU+time+to+each+
process+in+a+given+time+interval
Basically+being+fair+to+all+ processes+(eg.+if+
10+processes,+each+gets+0.1+CPU+time+on+
avg)
}
®
Examples
First-come+first-served &+shortest+job+first
**+assumes+perfect+knowledge+abt+time
Typically+no+idea+how+long+a+single+
process+will+take+to+finish
Some+processes+(eg+task+bar)+will+
never+finish,+since+that's+the+nature+
of+its+design
OS+also+needs+to+pre-empt+process+
and+switch+to+others+for+illusion+of+
concurrency+
}
Round-robin+scheduling
Splits+each+process+into+short+time+slices
The+shorter+the+time+slice,+the+
fairer+the+schedule
If+too+short,+noticeable+overhead+
due+to+time+for+OS+to+switch+
processes
"Fire"+time+interrupt
Execute+interrupt+handler
Context+switch+to+new+
process
}
Variant+of+this+now+implemented+in+
modern+OSs
}
Pros
Fair+schedule+-during+time+interval,+
all+processes+get+roughly+equal+
access+to+CPU
}
Cons
Importance+of+processes+may+vary+
(eg.+video+player+VS+lengthy+
computation+in+background)
}
®
2.
8F ?8/-,2)#&F$6'-3B
Since+progs+in+user+mode+run+on+CPU+directly
Goals
Protect+a+process'+memory against+access+frm+other+processes,+or+just+
malicious+&+buggy+processes
Make+programming+easier
Programmer+doesn't+need+to+know+exactly+how+the+memory+on+
the+target+computer+is+organised+(eg.+installed+RAM+size,+address+
@+which+prog+will+be+loaded+into+RAM)
§
Enable+processes+to+use+more+memory than+is+physically+installed+as+
RAM+by+using+ext+storage+(eg.+hard+disks)+as+temporary+memory
Leave+processes+unawarethat+they+have+to+share+memory with+others
Address+space =+addresses+that+can+be+used+by+a+process
In+MARIE,+since+addresses+are+12+bits+wide,+address+space+is+000+to+FFF
OS+creates 9/##2+/'09 that+each+process+has+its+own+address+space,+and+
prevents+any+process+frm+accessing+another+process'+address+space
Approaches:+single+program+&+multiprogramming
Cons
No+idea+where+a+program+will+start+in+memory+when+you+
write+it.+Symbolic+labels+get+replaced+by+fixed,+concrete+
addresses+as+soon+as+your+program+is+assembled+in+
machine+code
Enable+programming+as+if+code+is+loaded+@+address+
0,+then+have+a+mechanism+that+translates+those+
virtual+addresses+to+physical+ones when+code+is+
loaded/exec
®
No+way+of+preventing+process+B/C+from+reading/writing+
memory+area that+has+been+set+up+for+process+A
Could+lead+to+process+A+crashing,+or+access+to+
sensitive+data
®
§
8/-,2)#&)@@-$++$+ (i.e.+the+abstraction+of+VM)
=+each+process+thinks+its+addresses+start+at+0,+but+they+actually+map+to+diff+
physical+memory+locations
Operated+on+by+instrucs,+then+translated+into+physical+addresses+by+OS+
and+h/w
To+implement:
Use+base+register+B,+which+has+to+contain+the+address+at+which+
the+code+for+the+currently+running+process+starts+in+memory
§
Any+instruction+that+accesses+memory+must+now+always+add+
value+in+B+to+the+address+being+used (Load B ==> Load B+
100),+so+now+CPU+takes+into+account+base+register+B+when+exec+
instrucs
If+code+is+loaded+into+RAM+starting+at+address+A000,+when+
OS+schedules+process+A,+it+needs+to+set+B = A000 before+
jumping+to+first+instruc
§
F$6'-3&C-',$.,/'0
=+ensures+each+process+only+accesses+its+own+memory
If+not+done,+(eg)+A00+105 = B05
Use+bounds+register,+which+has+to+contain+highest+address+that+the+
current+process+is+allowed+to+access
CPU+will+check,+for+each+memory+access,+if+address+is+btwn+base+&+
bounds+registers
If+not+within+addresses+stored+at+registers,+interrupt+generated,+causing+
a+context+switch+and+giving+OS+a+chance+to+kill+process
In+real+world…
G$)#/+,/.)##3,+simple+process+above+wouldn't+work
Need+to+allocate+a+fixed+block+of+physical+RAM+to+each+process,+
but+often+OS+can't+know+yet+how+much+RAM+a+particular+process+
will+need+when+it's+loaded
§
Instead,+use+C)5$@&8F&+3+,$6
Memory+allocated+in+smaller+chunks+"pages",+OS+keeps+list+(not+
single+block)+of+them+for+each+process
§
OS
free
Page+1+process+A
Page+1+process+B
free
Page+2+process+B
Page+2+process+A
Page+1+process+C
free
Process+can:
Request+a+block+of+memory+to+use+from+OS
Address+from+existing+page+already+associated
®
New+page+for+process+if+existing+alrdy+full
®
§
MMU (Memory+Management+Units)+=+h/w+circuits+performing+
"paging"
§
Pros
Pages+for+a+single+process+don't+all+have+to+form+a+
contiguous+(sequential)+region+of+physical+memory
Page+of+VM+doesn't+have+to+exist+in+physical+RAM -->+solves+
problem+of+not+enough+RAM,+because+of+page+"swaps"
Eg+if+process+hasn't+used+a+certain+page+for+a+while,+
OS+could+decide+to+store+contents+of+that+page+to+ext+
storage+(hard+disk),+and+reuse+the+memory+for+other+
processes
®
As+soon+as+original+process+tries+to+access+that+pg+
again,+MMU+will+cause+an+interrupt+(process+is+trying+
to+read+from+a+page+that+doesn't+exist),+giving+OS+a+
chance+to+load+the+page+back+from+hard+disk+
(probably+in+exchange+for+another+page+that+hasn't+
been+used+in+a+while)
®
Good+as+long+as+page+"swaps"+from+memory+to+hard+disk+
and+back+are+not+too+frequent
If+computer+is+unresponsive,+it+means+an+indiv+
process+requests+so+much+memory+that+OS+does+
nothing+but+page+"swaps"
®
§
Week$7
Thursday,+7+June+2018 23:00
Unlock document

This preview shows pages 1-3 of the document.
Unlock all 9 pages and 3 million more documents.

Already have an account? Log in
!" (Operating+System)
=+a+piece/collection+ of+s/w+(program)s+that+manages+the+resources+in+a+comp,+and+
provide+a+convenient+interface+btwn+app+programs+and+h/w
Provides+a+#$%$#&'(&)*+,-).,/'0 btwn+h/w+and+s/w
**+impt+concept+abstraction:+hiding+complicated,+diverse,+low-level+
concepts+(i.e.+complex+code)+behind+a+simple+but+consistent+and+well-
documented+interface
Lies+below+app+code+and+above+BIOS/UEFI+&+h/w
App+code+uses+well-defined+interfaces+in+OS+to+access+things+like+
network/graphics+h/w
§
App+programmer+can+just+call+a+function+in+OS+to+send+msg+to+
another+comp+via+Internet,+w/o+needing+to+know+how your+comp+
is+connected+to+Internet
§
1'-$&(20.,/'0)#/,3&(provided+by+OS+kernel)
Manage+multiple+processes running+in+parallel
Manage+memory used+by+processes
Provide+file+system access,+network access,+and+I/O+resource access
All+other+functionality+is+provided+as+app+code+that+is+pre-installed+when+
OS+installed
History
Libraries+of+code+for+similar+tasks+allowed+programmers+to+use+the+
output+functionality+of+a+computer+without+knowing+exactly+how+to+talk+
to+h/w
W/+computers+that+could+support+multi-programming,+innovation+of+
task-switching was+born
Each+program+is+allowed+to+run+for+a+certain+amount+of+time+
before+the+CPU+switches+to+next+program
§
UNIX+line+deployed+on+mainframe+computers+that+could+be+used+by+>1+
user,+running+many+progs+simultaneously,+w/+reasonable+protection+
against+malicious+&+buggy+code
Mac+OS+and+Linux+both+closely+related+to+UNIX+(internal+
structure),+while+Windows+is+less+so
§
Program+VS+process
4-'5-)6
=+code+you+write+-sequence+of+instructions+(and+possibly+data)+
Released+as+app
§
4-'.$++
=+an+instance+of+a+program+currently+being+executed+by+the+computer
On+many+user+devices
§
There+could+be+multiple+processes+executing+the+same+program
(eg.+some+web+browsers+start+a+process+for+each+open+window)
7*+,-).,/'0
For+users
Provides+consistent+UI
§
Manages+multiple+running+apps+simultaneously
§
Provides+some+level+of+protection+against+malicious+&+buggy+code
§
For+programmers
Provides+programming+interface+that+enables+easy+access+to+h/w+
and+I/O+devices
§
Manages+system+resources+(eg.+memory,+storage,+network)
§
W/o+the+many+levels+of+abstraction,+interfaces+and+layers+built+on+top+of+
each+other,+would+be+impossible+to+master+the+complexcity+of+a+
modern+computer+system
Achieved+through+virtualisation
8/-,2)#/+),/'0
=+provides+a+virtual+form+of+each+physical+resource+to+each+process
Physical+resource+egs+(CPU,+memory,+ext+storage,+network,+other+I/O+
devices)
=+aims+to+run+multiple+processes+"simultaneously",+such+that+indiv+processes+
don't+(need+to)+know+they're+running+in+parallel+ with+any+other+process
Done+by:
Switching+between+processes several+times+per+second
§
If+OS+kernel+switches+quickly+and+often+btwn+processes,+
concurrency+illusion+for+both+user+(eg.+BGM+while+scrolling+
webpage)+and+programmer+(looks+like+exclusive+access+to+CPU)
§
A+prog+shouldn't+have+to+depend+on+what+other+progs+are+running
§
OS+can+provide+9/##2+/'09 that+each+process+has:
CPU+completely+to+itself+(as+if+no+other+processes+running)
§
Large,+contiguous+(sequential)+memory+just+for+itself
§
Exclusive+access+to+system+resources+(no+need+to+share+w/+other+
processes)
§
Pros
Scarce+physical+resources+are+shared among+multiple+processes,+
because+OS+makes+it+look+as+it+the+process+has+all+the+resources+to+
itself+[analogy+of+3+ppl+sharing+1+car+within+1+day+no+problem,+
cause+all+use+at+different+times)
§
OS+isolates+process against+each+other,+preventing+them+frm+
accessing+each+others'+resources+(eg.+memory,+files+on+disk)+
[analogy+of+3+ppl's+own+stuff+always+on+glove+compartment+for+
them,+fuel+level+always+how+they+left+it,+etc]
Also+known+as+VM+(Virtual+Memory)
§
1:)##$05$+&;&+'#2,/'0+
Shldn't+realise+it's+NOT+running+continuously
1.
(i.e.+programmer+shouldn't+have+to+take+into+account+other+
processes+that+might+be+running+at+the+same+time+as+his+code)
Mechanism
Classifies+each+process+as+being+in+1+of+3+states+based+
on+how+they+are+scheduled/de-scheduled
Ready:+ready+for+execution+but+not+currently+
being+executed+by+CPU
Running:+code+for+process+being+executed+on+
CPU
Blocked:+since+I/O+request+from+running+
process+can+take+a+while+(eg.+opening+a+file+
from+external+storage),+OS+takes+advantage+of+
opportunity+to+put+the+process+into+this+state+
until+I/O+is+finished.
Goes+back+to+ready+once+done.
®
Process+switching
Since+interrupt+handler+is+part+of+OS,+when+
restoring+process+context+frm+memory,+can+
simply+decide+to+restore+a+diff+process+context
Easy+because+OS+keeps+process+contexts+stored+
in+memory for+all+processes+currently+in+
ready/blocked+state,+so+interrupt+handler+can+
choose+the+process+context of+a+'ready'+
process,+then+return+to+user+space+app+that+
called+it
®
Challenges
4$-('-6)0.$
Shouldn't+create+a+huge+overhead,+and+most+of+
the+CPU+time+shld+be+spent+running,+not+
managing,+processes
®
1'0,-'#
OS+must+stay+in+control in+order+to+enable+fair+
scheduling+of+processes,+and+offer+a+certain+
level+of+protection against+malicious+&+buggy+
code
®
Solution+is+<=> ?</6/,$@&=/-$.,&>A$.2,/'0B
=+each+process+allowed+to+run+directly+on+CPU+w/+support+
frm+h/w+in+order+to+achieve+gd+perf
CPUs+have+diff+'C$-),/'0&6'@$+ enabling+the+OS+to+
limit+what+an+app+prog+can+do
Impt+to+distinguish+for+security,+because+OS+can+
enforce+file+system+access+control
®
Kernel+mode User+mode
General Reserved+for+
lowest-level,+most+
trusted+OS+functions
Code+must+
delegate+to+system+
APIs+to+access
Access+
for+exec+
code
Executing+code+has+
complete,+
unrestricted+access+
to+the+underlying+
h/w
Executing+code+
can't+directly+
access+h/w+or+
reference+memory,+
only+a+subset+of+
instrucs+
**+many+severe+
restrictions+placed+
on+app+progs
Crashes Crashes+in+kernel+
mode+catastrophic,+
PC+will+halt
Since+there+is+
protection+in+this+
isolation,+crashes+
always+recoverable
Switches+to+this+
mode+to+execute+
interrupt+handler+
(part+of+OS)+
whenever+an+
interrupt+happens
Typically+I/O+ops &+
certain+memory+
blocks+not+allowed
w/o+I/O+access,+process+can't+do+"privileged+ops" like+
file+I/O,+access+network+interface+to+send/receive+
msgs,+comm+w/+other+processes,+allocate+memory,+
draw+any+chars+on+screen
OS+provides+system+calls (like+subroutines)+
which+are+special+CPU+instrucs+that+expose+OS+
functionality+to+user+mode+processes
To+implement,+add+an+instruc+that+causes+a+
special+interrupt+(s/w+interrupt)+causing+
process+to+change+frm+user+to+kernel+mode
System+call+handler+table (a+contiguous+block+of+
memory+where+each+loc+contains+a+subroutine+
address+that+performs+1+particular+function)+set+
up+to+let+app+code+in+user+mode+tell+OS+what+
kinds+of+"privileged+ops"+it+wants+to+perform
When+process+makes+system+call+number+(for+
eg.+n):
Save+process+context+in+memory
}
Switch+CPU+to+kernel+mode+(context+
switch)
}
Jump+to+call+handler+n+and+exec
}
Restore+process+context+(context+switch)
}
Switch+CPU+to+user+mode
}
Return+to+calling+process
}
®
Timesharing
®
=+needed+in+case+1+process+never+executes+any+
system+calls/no+interrupts+happen+frm+I/O+devices
1''C$-),/%$
=+all+processes+cooperate+w/+OS+and+make+
system+calls+at+random+intervals,+otherwise+
some+processes+might+"starve"+(not+get+
scheduled+at+all)
**+OS+gets+control+of+EVERY+syscall
}
Easy+to+implement
}
Buggy+&+malicious+processes+could+make+
entire+system+unusable
}
4-$D$6C,/%$
=+guarantees+that+process+will+be+pre-empted+
at+the+latest+when+the+timer+"fires",+if+it+doesn't+
make+any+syscalls+before+that
OS+will+be+able+to+kill+buggy+&+malicious+
processes,+since+**+OS+regains+control+of+
system+several+times+per+second+**
}
Timer+interrupt+set+up+by+OS
Timer+implemented+in+h/w
"Fires"/generates+a+timer+interrupt+
every+10ms+(for+eg)
Interrupt+switches+process+to+
kernel+mode,+calls+interrupt+
handler+in+OS+which+can+then+
switch+processes+like+in+coop+
timesharing
w
}
Each+process+shld+get+fair+share+of+overall+CPU+time
Policies
4-'.$++D+.:$@2#/05
®
=+OS+decides+how+long+each+process+gets+to+use+the+
CPU+before+it+switches+to+a+different+process,+and+
which+process+to+switch+to+next
E).,'-+ to+consider+when+making+policy
Finish+each+process+as+quickly+as+possible+
(trying+to+achieve+optimal+turnaround+time =+
time+btwn+process+being+ready+for+first+time+&+
it's+completion)
Allocate+same+amount+of+CPU+time+to+each+
process+in+a+given+time+interval
Basically+being+fair+to+all+ processes+(eg.+if+
10+processes,+each+gets+0.1+CPU+time+on+
avg)
}
®
Examples
First-come+first-served &+shortest+job+first
**+assumes+perfect+knowledge+abt+time
Typically+no+idea+how+long+a+single+
process+will+take+to+finish
Some+processes+(eg+task+bar)+will+
never+finish,+since+that's+the+nature+
of+its+design
OS+also+needs+to+pre-empt+process+
and+switch+to+others+for+illusion+of+
concurrency+
}
Round-robin+scheduling
Splits+each+process+into+short+time+slices
The+shorter+the+time+slice,+the+
fairer+the+schedule
If+too+short,+noticeable+overhead+
due+to+time+for+OS+to+switch+
processes
"Fire"+time+interrupt
Execute+interrupt+handler
Context+switch+to+new+
process
}
Variant+of+this+now+implemented+in+
modern+OSs
}
Pros
Fair+schedule+-during+time+interval,+
all+processes+get+roughly+equal+
access+to+CPU
}
Cons
Importance+of+processes+may+vary+
(eg.+video+player+VS+lengthy+
computation+in+background)
}
®
2.
8F ?8/-,2)#&F$6'-3B
Since+progs+in+user+mode+run+on+CPU+directly
Goals
Protect+a+process'+memory against+access+frm+other+processes,+or+just+
malicious+&+buggy+processes
Make+programming+easier
Programmer+doesn't+need+to+know+exactly+how+the+memory+on+
the+target+computer+is+organised+(eg.+installed+RAM+size,+address+
@+which+prog+will+be+loaded+into+RAM)
§
Enable+processes+to+use+more+memory than+is+physically+installed+as+
RAM+by+using+ext+storage+(eg.+hard+disks)+as+temporary+memory
Leave+processes+unawarethat+they+have+to+share+memory with+others
Address+space =+addresses+that+can+be+used+by+a+process
In+MARIE,+since+addresses+are+12+bits+wide,+address+space+is+000+to+FFF
OS+creates 9/##2+/'09 that+each+process+has+its+own+address+space,+and+
prevents+any+process+frm+accessing+another+process'+address+space
Approaches:+single+program+&+multiprogramming
Cons
No+idea+where+a+program+will+start+in+memory+when+you+
write+it.+Symbolic+labels+get+replaced+by+fixed,+concrete+
addresses+as+soon+as+your+program+is+assembled+in+
machine+code
Enable+programming+as+if+code+is+loaded+@+address+
0,+then+have+a+mechanism+that+translates+those+
virtual+addresses+to+physical+ones when+code+is+
loaded/exec
®
No+way+of+preventing+process+B/C+from+reading/writing+
memory+area that+has+been+set+up+for+process+A
Could+lead+to+process+A+crashing,+or+access+to+
sensitive+data
®
§
8/-,2)#&)@@-$++$+ (i.e.+the+abstraction+of+VM)
=+each+process+thinks+its+addresses+start+at+0,+but+they+actually+map+to+diff+
physical+memory+locations
Operated+on+by+instrucs,+then+translated+into+physical+addresses+by+OS+
and+h/w
To+implement:
Use+base+register+B,+which+has+to+contain+the+address+at+which+
the+code+for+the+currently+running+process+starts+in+memory
§
Any+instruction+that+accesses+memory+must+now+always+add+
value+in+B+to+the+address+being+used (Load B ==> Load B+
100),+so+now+CPU+takes+into+account+base+register+B+when+exec+
instrucs
If+code+is+loaded+into+RAM+starting+at+address+A000,+when+
OS+schedules+process+A,+it+needs+to+set+B = A000 before+
jumping+to+first+instruc
§
F$6'-3&C-',$.,/'0
=+ensures+each+process+only+accesses+its+own+memory
If+not+done,+(eg)+A00+105 = B05
Use+bounds+register,+which+has+to+contain+highest+address+that+the+
current+process+is+allowed+to+access
CPU+will+check,+for+each+memory+access,+if+address+is+btwn+base+&+
bounds+registers
If+not+within+addresses+stored+at+registers,+interrupt+generated,+causing+
a+context+switch+and+giving+OS+a+chance+to+kill+process
In+real+world…
G$)#/+,/.)##3,+simple+process+above+wouldn't+work
Need+to+allocate+a+fixed+block+of+physical+RAM+to+each+process,+
but+often+OS+can't+know+yet+how+much+RAM+a+particular+process+
will+need+when+it's+loaded
§
Instead,+use+C)5$@&8F&+3+,$6
Memory+allocated+in+smaller+chunks+"pages",+OS+keeps+list+(not+
single+block)+of+them+for+each+process
§
OS
free
Page+1+process+A
Page+1+process+B
free
Page+2+process+B
Page+2+process+A
Page+1+process+C
free
Process+can:
Request+a+block+of+memory+to+use+from+OS
Address+from+existing+page+already+associated
®
New+page+for+process+if+existing+alrdy+full
®
§
MMU (Memory+Management+Units)+=+h/w+circuits+performing+
"paging"
§
Pros
Pages+for+a+single+process+don't+all+have+to+form+a+
contiguous+(sequential)+region+of+physical+memory
Page+of+VM+doesn't+have+to+exist+in+physical+RAM -->+solves+
problem+of+not+enough+RAM,+because+of+page+"swaps"
Eg+if+process+hasn't+used+a+certain+page+for+a+while,+
OS+could+decide+to+store+contents+of+that+page+to+ext+
storage+(hard+disk),+and+reuse+the+memory+for+other+
processes
®
As+soon+as+original+process+tries+to+access+that+pg+
again,+MMU+will+cause+an+interrupt+(process+is+trying+
to+read+from+a+page+that+doesn't+exist),+giving+OS+a+
chance+to+load+the+page+back+from+hard+disk+
(probably+in+exchange+for+another+page+that+hasn't+
been+used+in+a+while)
®
Good+as+long+as+page+"swaps"+from+memory+to+hard+disk+
and+back+are+not+too+frequent
If+computer+is+unresponsive,+it+means+an+indiv+
process+requests+so+much+memory+that+OS+does+
nothing+but+page+"swaps"
®
§
Week$7
Thursday,+7+June+2018 23:00
Unlock document

This preview shows pages 1-3 of the document.
Unlock all 9 pages and 3 million more documents.

Already have an account? Log in

Document Summary

= a piece/collection of s/w (program)s that manages the resources in a comp, and provide a convenient interface btwn app programs and h/w. Provides a level of abstraction btwn h/w and s/w. ** impt concept abstraction: hiding complicated, diverse, low-level concepts (i. e. complex code) behind a simple but consistent and well- documented interface. Lies below app code and above bios/uefi & h/w. App code uses well-defined interfaces in os to access things like network/graphics h/w. App programmer can just call a function in os to send msg to another comp via internet, w/o needing to know how your comp is connected to internet. Provide file system access, network access, and i/o resource access. All other functionality is provided as app code that is pre-installed when. Libraries of code for similar tasks allowed programmers to use the output functionality of a computer without knowing exactly how to talk to h/w. W/ computers that could support multi-programming, innovation of task-switching was born.

Get access

Grade+20% off
$8 USD/m$10 USD/m
Billed $96 USD annually
Grade+
Homework Help
Study Guides
Textbook Solutions
Class Notes
Textbook Notes
Booster Class
40 Verified Answers
Class+
$8 USD/m
Billed $96 USD annually
Class+
Homework Help
Study Guides
Textbook Solutions
Class Notes
Textbook Notes
Booster Class
30 Verified Answers

Related Documents