"!$#%&'#)( *"( +, /. Stallings, Luku 11.111.4 KJI S2004 / Tiina Niklander, kalvot uvo Häkkinen 7 1 021 * +3! 4 57698;:=<>@? I/Olaitteiden luokittelua, siirtonopeuksia Siirrännän perustekniikat Siirrännän kehittyminen 4 B"CEDGFH<I:9:HJK>@L 4 MONL;PQ:9L;:=>@RS<I:H:HJTJU?;VIVI?<>@? mm. hierarkia 4 WXN<IYINIJUL;:HV>3: Lohkopuskurit KJI S2004 / Tiina Niklander, kalvot uvo Häkkinen 10 2 KJI I S2004 / Tiina Niklander, kalvot uvo Häkkinen 10 1
. "!$#%&'#)( *"( +,. + ( 1 *" * 1 1 & & * KJI S2004 / Tiina Niklander, kalvot uvo Häkkinen 10 3. + 11 ( 1 ( + 11 "( + 4 :98>3LQ8<I:=>@8>T>@??:IPQ: <8;V YL;VI8I8;V 6HN8>@>@R R<<RPQNLIL<<R 4 >T>F! RS>3NI69L<>3N < näyttö, näppäimistö, hiiri, kirjoitin,... sensori, skanneri, kamera, mikrofoni... 4 W <!"?S>@R;6H698;VIVIN< levy, nauha, CDROM... 4 :98#IL;V<I:H:HJK>@L modeemi, verkkokortit,... 4 $ JTL% RVL#&I8;N';8<<R#(L#) R;N<>@R;J*&8I8<<R#( <I:H:HJK>@L Y<:HY';:=<<?#(>3:98IL;VS8<I:=>T>@?;PQ:=<8<<?+ R :HJ,8>3:H69R;V>38;:I8;V.IR;6H6H:HVIVR< <R KJI S2004 / Tiina Niklander, kalvot uvo Häkkinen 10 4 KJI I S2004 / Tiina Niklander, kalvot uvo Häkkinen 10 2
021 11 &; ( * 11 (teoreettisia) Kuva 11.1 KJI S2004 / Tiina Niklander, kalvot uvo Häkkinen 10 5 021 11 && &X (& *( 11 11 4 NL;JUR KW JUL ;JTR;PQPS8 CPU tutkii toistuvasti ohjaimen statusrekisteristä onko siirto valmis (busywait) 4 $ &?<INL;JUR V>38;JTJTN#&>TF ;JT: 8;V CPU antaa siirtotehtävän ohjaimelle ja jatkaa suorittamalla muita prosesseja ohjain keskeyttää, kun siirto valmis CPU siirtää ohjaimen ja muistin välillä 4 B"CEDGFH<I:9:HJK>@L KB:HJU8 > C 8;PSL;J D I8<< DMohjain osaa siirtää muistin ja laitteen välillä keskeytys vasta, kun koko siirto valmis KJI S2004 / Tiina Niklander, kalvot uvo Häkkinen 10 6 KJI I S2004 / Tiina Niklander, kalvot uvo Häkkinen 10 3
N! R 021 11 && &X ( 11,, 11 ( "!#!$!%&'()+*,$../'$ 0 $ JT:H6H6H:HV8;V F L#) R;:HVSL#) R;R >@?S>@R;: N<8IR;P &RIR69R;:=>@8>@>@R#(<INL;JUR CPU (=KJ) tarkkailee koko ajan statusrekisteriä Laitteen yksityiskohdat eivät enää KJ:n murheena 1 ) R;:HVSL#&#&I:H:;Y? >T>@?;PS?I?;VQYI8<IY8 > <>@? CPU (=KJ) ei odottele aktivisesti siirron valmistumista 2 ) R;:HVSL#&#&I:H:<I:9:HJK>@?;PS?;?;V.&8 JT:H6H698 <RIR;YIYR43B"CED CPU (=KJ) vain käynnistää siirron ja tarkistaa onnistumisen Lue KJ = laiteajuri KJI S2004 / Tiina Niklander, kalvot uvo Häkkinen 10 8 KJI I S2004 / Tiina Niklander, kalvot uvo Häkkinen 10 4
. 021 11 && &X ( 11,, 11 ( $ JT:H6H6H:HV8;V F &IJUL<8<<L;JT: QB"CED oma käskykanta suorittaa keskusmuistissa olevaa I/Oohjelmaa CPU (=KJ) voi määritellä siirräntätehtävät monipuolisesti keskeytys, kun kaikki tehty $ JT:H6H6H:HV8;V F &IJUL<8<<L;JT: L;PSRPQNI:=<>3: B"CED ei käytä CPUväylää I/Oohjelmansa suorittamiseen esim. näytönohjaimella oma prosessori ja muistia 4 57Y<I:=> : <IYL#';R>"<I:9:HJTJU8>T> 6=>@?Q69R;:=>T>@8;:=<>@L;6H698 tehokas toteutus KJI S2004 / Tiina Niklander, kalvot uvo Häkkinen 10 9 "!$#%&'#)( *"( +,. 1 & ( (, & ( ** KJI S2004 / Tiina Niklander, kalvot uvo Häkkinen 10 10 KJI I S2004 / Tiina Niklander, kalvot uvo Häkkinen 10 5
** 11 11 &; 4 ) R;:HVSL<RIRS<I:H:HJK>@?I?: <L;VQPS?I?;JT?;V >3:98>@LIR <INL;JTRIR;VQ69R;:=>T>@8;8;V RY8<IYIN<IPQNI:=<>3:HV?;6H:H6H69? Keskeytys vasta, kun koko siirto valmis 4? >T>@?I?PQNI:=<>3:H:HV :H:=>@R>@8<<R &IJUL<8< <L;JT:? 69?I? 4 :H6&R;:H6HN? 69?;V R;JURIR;PQ:=<8<>@R ajoitus s.e. ei häiritse CPU MEM siirtoja CPU tarvitsee väylää käskynoudossa, operandien noudossa ja tuloksen talletuksessa välimuistin käyttö vähentää väylän käyttöä 4 MONL;P? 69?;V R;JUR N<S69R;:=>@8>@L;:HPQ:HV>@L#( 8;:IR;:8;N>@RY8<IYI8 > <>@? KJI S2004 / Tiina Niklander, kalvot uvo Häkkinen 10 11 $# 11 * Kuva 11.3 KJI S2004 / Tiina Niklander, kalvot uvo Häkkinen 10 12 KJI I S2004 / Tiina Niklander, kalvot uvo Häkkinen 10 6
## 11,, ( && ( ( Kuva 11.1 KJI S2004 / Tiina Niklander, kalvot uvo Häkkinen 10 13 4? VIVI:=<> < 4 R% NIJT: YI8;JK>@LIL B"CEDGF L#) R;:HPS8;6H698 suunta: read vai write mitä I/Olaitetta siirto koskee (jos useita) laiteosoite: esim. levypinta, ura, sektori montako tavua siirretään keskusmuistialueen alkuosoite "!$#&%'()+*,.0/1#3245)67 #&58#+9 ## 9 #+:&89+;& <,5++;+=+&5>!$?@$%B?&C!$#&D##&'E)B#"!$&F!$?&G9;,9?? integroimalla DMohjaimen suoraan laiteohjaimeen kytkemällä I/Olaitteet omaan väyläänsä, jolloin niiden välinen siirto ilman CPUväylän käyttöä KJI S2004 / Tiina Niklander, kalvot uvo Häkkinen 10 14 KJI I S2004 / Tiina Niklander, kalvot uvo Häkkinen 10 7
#&8832 #&8+#!$#+ @ G9 ;&)+;&C!$?@ %B?& 1&G 2 #&E8+;+8&99 ;&%B;; 'C@! +(%B#&) ;&G 2 #&'(;, 8#&99+# 8+?@5?;&#"5++;+9+&5!$?@ %B?? KJI S2004 / Tiina Niklander, kalvot uvo Häkkinen 10 15 %$ && (' )*)*+ ;&+ #&! )D+;,"D++;+9+&5>!$?F@ %B?? 8;+899 ;&%%B;+=+##&E%B#&) ;,G 2 #&'(;&E8+#,9=+# 1&G 2 #&(&G 2 #&#"@ G9?( #&&9+;#&'#"+#&#E%B#&) ;+5:# KJI S2004 / Tiina Niklander, kalvot uvo Häkkinen 10 16 KJI I S2004 / Tiina Niklander, kalvot uvo Häkkinen 10 8
( +*& + +? " +&D#( %B#&)5 ;;&%) #( &)+;&%%B; "5++;+9+&5!$?@ %B?? 8+?@5?'(?+ ei häiritse CPU:ta ;&% " %B##32 ;&9 #&# KJI S2004 / Tiina Niklander, kalvot uvo Häkkinen 10 17 +*&($ $ + ),$ +$ %$ ) + +),$ + KJI S2004 / Tiina Niklander, kalvot uvo Häkkinen 10 18 KJI I S2004 / Tiina Niklander, kalvot uvo Häkkinen 10 9
%$ )) + +),$ + 5D?&+? 2?& 2 ;+9 ;&%'(?&5#"%%B&&8+#,%B# 5D?&+?E&G;&)+%B#&)5 ;&%%B;E;&5)5?&EG #+9 #!$;&5D#5:# < 2 # 8+;+89'E)9:!?&%)B &GE/1;+' %B;!=@ 96 5D?&+?E;& "F@ @ 8++8+##& < C!$#&G &)9+# prosessin odoteltava siirräntää,b#32 &(#&9B+9 # <!$&9+&5)5:## +:9+#&8#&+# 'E) #,"&D++;+9+;32 # @! +. ;&8+;&'(?(! 9:9 2 # G+;&)5!#&G9: #&G;&95:##(B5D?&9:?? KJI S2004 / Tiina Niklander, kalvot uvo Häkkinen 10 19 %$ )) + +),$ + +;!9@FB (?& 8+;& ;&G+9 ;+5 #!$# 8+,G; puskurointi siirrä kerralla enemmän (levylohko) lohkopuskurit (block cache) eli levyvälimuisti (disk cache) ennaltanouto tdsto käsitellään yleensä peräkkäisjärjestyksessä pyyntöjen uudelleenjärjestely minimoi hakuvarren siirrot pyynnöt jonottavat ajurin jonossa KJI S2004 / Tiina Niklander, kalvot uvo Häkkinen 10 20 KJI I S2004 / Tiina Niklander, kalvot uvo Häkkinen 10 10
%$ )) + +),$ + 5D?&&+?&:+ ;&+:9 @ G;,'E8#&)+;+9: kaikille laitteille samanlainen liitäntä prosessien sekä KJ:n ylimpien tasojen suuntaan myös laitteita käsitellään tdstojärjestelmän kautta (laitetdstot)!$;&%%89+;&e8+?@5,c@ G;&'E&8+#&)+;+ "+;&D#&#+:B+8+#&8%%B; %B#&)5 ;&%%B; open(), close(), read(), write(), lock(), unlock()... kaikki eivät mielekkäitä kaikille laitteille,5#!$#+ @ 89) @ 8+&G#+ #&%B;&'E'E%%B;( #+9&%%B; loogisen nimen liittäminen fyysiseen laitteeseen tdsto vs. kirjoitin välitasoilla esim. puskurointi ja tiedonsiirron protokollat alimpana varsinaiset laiteajurit ohjaavat laiteohjaimen avulla laitetta KJI S2004 / Tiina Niklander, kalvot uvo Häkkinen 10 21 + + + &;& / %B#&) ;&5 " "'E#+, 6 prosessi käyttää esim. tdston loogista nimeä tdston rakenne = jono peräkkäisiä tavuja operaatiot: open(), close(), read(), write(),?&%) #++&%%B# 'E' "98D&9:@ ' loogisen I/O:n ja fyysisen I/O:n yksiköt erilaisia lue tavu vs. siirrä levylohko tarkista käyttöoikeudet lohkonumero levypinta, ura, sektori pyyntöjen järjestely (hakuvarren siirtojen minimointi) @9@++;& siirrä hakuvartta, DM... KJI S2004 / Tiina Niklander, kalvot uvo Häkkinen 10 22 KJI I S2004 / Tiina Niklander, kalvot uvo Häkkinen 10 11
Palvelupyynnöt Laiteriippumaton taso tdstojärjestelmä puskurointi Laiteriippuva taso laiteajurit jonotus, järjestys keskeytyskäsittely Laitteisto siirto, DM keskeytys Tan01 Kuva 5165 KJI S2004 / Tiina Niklander, kalvot uvo Häkkinen 10 24 KJI I S2004 / Tiina Niklander, kalvot uvo Häkkinen 10 12
!"#%$'& (" %$'& (&! (" & )&+*,%$" siirtoa käynnistettäessä siirron päättyessä (keskeytys!).")&+*,%$ laitteen tunnistus, device id tilatietoa, kenelle laite varattu mitä ajuria käyttää mitä ajurin funktiota (handler) kutsuttava missäkin tilanteessa / open(), read(), write(), close(), keskeytys jono pyynnöistä parametreineen / mm. linkki pyynnön tehneen prosessin PCB:hen KJI S2004 / Tiina Niklander, kalvot uvo Häkkinen 10 25 00 213 4 65 7 98 ;:=< 9 > >? 28 @ B 2 KJI S2004 / Tiina Niklander, kalvot uvo Häkkinen 10 26 KJI I S2004 / Tiina Niklander, kalvot uvo Häkkinen 10 13
28 @ B 2 *, Prosessi odottaa Blockedtilassa siirron valmistumista lue, jonne siirretään oltava silti muistissa." )" &("( Levyt, nauhat kirjanpito vapaasta / varatusta tilasta lohkoittain siirto laitteen ja muistin välillä lohko kerrallaan hajakäsittely mahdollista (nauha?) *&" &(( pääteyhteys, kirjoitin, hiiri, tiedonsiirtolinja,... tiedon käsittely tavu kerrallaan vain peräkkäiskäsittely KJI S2004 / Tiina Niklander, kalvot uvo Häkkinen 10 27 @ 28 B 2 4!&" ( """ (!&" Prosessin muistialuetta ei voi heittovaihtaa (lukittava!) " ) " *!"!()")"(" ) )) ( """" " $ " )"%$ $" KJI S2004 / Tiina Niklander, kalvot uvo Häkkinen 10 28 KJI I S2004 / Tiina Niklander, kalvot uvo Häkkinen 10 14
28 28 @ 7$( "! ( (&)& ( " 7$!(!&" && &7$( KJI S2004 / Tiina Niklander, kalvot uvo Häkkinen 10 29 28 28 @ ; B(("("& KJ voi täyttää puskurin etukäteen koska peräkkäiskäsittely yleisintä * " ) $ &, prosessin kirjoittama data kootaan puskuriin laitteelle vasta, kun puskuri täysi, tai kun prosessi sulkee laitteen (viim. lohko voi olla vajaa) """ ( *, " *, )")("( siirräntä käyttää aina KJ:n aluetta 4") )""! *&" &"( ) ""( KJI S2004 / Tiina Niklander, kalvot uvo Häkkinen 10 30 KJI I S2004 / Tiina Niklander, kalvot uvo Häkkinen 10 15
00 283 8 28 2 &( """") "!"" "&")& " *,! " 7$(&)"!"( &(! 7$() $&)& """"+*,"!&)& 6&""%$ B&)& B)&&%$ () ("( KJI S2004 / Tiina Niklander, kalvot uvo Häkkinen 10 31?? 28 @ 213 4 65 " &""%$( $)&&%$(("& "" "" &((" %$ &"!()&()" ( &)& () " *, " "+*, )) " KJI S2004 / Tiina Niklander, kalvot uvo Häkkinen 10 32 KJI I S2004 / Tiina Niklander, kalvot uvo Häkkinen 10 16
9 28 (block cache) "(! * * & (disk cache) ( " &)& *, )%$ *, ( jos viitattu lohko muistissa, ei noutoa levyltä jokainen prosessin I/Opyyntö ei aiheuta levytoimintoa "" " ) " * ( ) ) ()""" ohjelma lukee / kirjoittaa tavuja ajuri lukee / kirjoittaa lohkoja (esim. 1024 B) KJ ylläpitää luku / kirjoituspositiota )" && tdstoa käydään läpi yl. peräkkäisjärjestyksessä, joten seuraava viite tulee tn. samaan lohkoon B(("("& kun tdsto avataan, ens. lohko heti lohkopuskuriin seuraavan nouto, kun edellinen käsitelty (tai ennakoiden) KJI S2004 / Tiina Niklander, kalvot uvo Häkkinen 10 33 > 9 @ 28 Tan01 627 laite#, lohko#, linkkejä, Modified, Free! " tunnussolmussa viite varsinaiseen puskuriin #$&%' ( ( )*"+, (! avaimena laite#, lohko# KJI S2004 / Tiina Niklander, kalvot uvo Häkkinen 10 34 KJI I S2004 / Tiina Niklander, kalvot uvo Häkkinen 10 17
?? 8 ;: #< B&)& "! %$ "" &(!(! && "" *, $)& 4!"#(!" )")""&)& ((" TLB: mikä alkio korvataan? Välimuisti: mikä muistilohko korvataan? Virtuaalimuisti: mikä sivutila / segmentti korvataan? Levypuskuri: mikä levylohko korvataan? """ *,&& &(& "! ) $!)"( )&" "("))"(" KJI S2004 / Tiina Niklander, kalvot uvo Häkkinen 10 35 00 ; 28198!1 < < 128 ( " ( "#( "("&") 4 (( (" &)()" (! %$ 4 (( ( "& &)"( ) )((" +" )" ) ()"((""&)& " *! "%$ ) )"&)& KJI S2004 / Tiina Niklander, kalvot uvo Häkkinen 10 36 KJI I S2004 / Tiina Niklander, kalvot uvo Häkkinen 10 18