From 18cf24968703cc5a5b9128a04e80f9cf7b707903 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A9ranger?= Date: Wed, 29 Sep 2021 11:55:53 -0400 Subject: [PATCH] Fin OS --- C/tmp.drawio | 28 ---- OS/Images/interrupt.png | Bin 0 -> 33098 bytes OS/Images/kernel_types.png | Bin 0 -> 48121 bytes OS/Images/tmp.drawio | 77 +++++++++ OS/Images/transitions_mode_cpu.png | Bin 0 -> 70815 bytes OS/cours.md | 255 +++++++++++++++++++++++++++++ OS/rappels.md | 3 - 7 files changed, 332 insertions(+), 31 deletions(-) delete mode 100644 C/tmp.drawio create mode 100644 OS/Images/interrupt.png create mode 100644 OS/Images/kernel_types.png create mode 100644 OS/Images/tmp.drawio create mode 100644 OS/Images/transitions_mode_cpu.png create mode 100644 OS/cours.md delete mode 100644 OS/rappels.md diff --git a/C/tmp.drawio b/C/tmp.drawio deleted file mode 100644 index e0f01ea..0000000 --- a/C/tmp.drawio +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/OS/Images/interrupt.png b/OS/Images/interrupt.png new file mode 100644 index 0000000000000000000000000000000000000000..78cd9c7ccf736ed06600ad27d8ae87cf8cacb3e1 GIT binary patch literal 33098 zcmeFZbzGF&zBtSbLyUlwgn)pgfOI!XhoB-Q-6BJ$^kC75lt`*5f`oL#paKd?ca9(; zJv5T<^C0Z)cAtCi`Q3BwIrsD4%|Fhwp0(DubFIhF%bLnWCumM!VPO%eswiB=!ot?V z!h(e0;{qc|8pEqcR(9sLuI3J`0(^E>tbz)x z0s_v0ntBKUFVl<8KHTyy9*X9c?$>}}V1}c)gY}O&m(6Xhx%t7-!%ZB#m0iu9Z(MS+ zvPJ;&th|5B;^!9;|FP2Q){hZ!e!(9DwywwE4tEjY0|&J2e2(_#=R2C_VP|FScC_1% zA$KPygu9*d9|tX+938DK-TyGr+||{|>yOiHoDfGu9zk^m==j4Ta6sGA9P#H-Jv%G+ z8$afX35fo{1)Qy7ZD)Jq81iofJD49&KBC0!hPjoK*N^pwLx+rWb#elhDjv#2-WmZi z@0c$?)+zl5Z-2wz)!Ok0_6y|P9Ba{hfjRK)9(v3oSdAGrrfl4cfWNcMRN~#Ct%(UcL&7LTL4qnTl&BQ zACHibDDduZzyN&9!_NnTI2=#_wFd<8;|bK9-<~d8yV^NeyIZ>+4ca(4x*x&g7Y3Gq z&+<+PC-6P1fFR%DA29Cb?&@T3{kPs&d)v8#IPvrF@d<)JfoBjU07qf*qvzi-0$wWo zh7j=ZD?UHe0%YtV0s?s1 zwMLk`+j;(Rd-EeLxBYD%u-%d706!eO4^``LtJx83PjiIF(WXC;`AJW_ZrHh7Ydf1C zqU!}1I>45n#0q#7#4%?bog9H({u6fp5X7-9feilv&e{BTMLyz?r?soQ^|2@U+uS&Q z%XegCplE=Z0s=?RUccKczu3{(ji2mQ;MmXnBOE;PXg_gKLse4|kkt{ue;FtLBjrCd zk|R3@t?XB$`5%zLZ`}T`Bp`Ieq<=&JVm}D@vjC1w?RS^=KdZ|Bm;nBy?*e>(vWh=D zgn!fo{uu%|3N1egfCu>dA(el-_8%$7ug>HjVy?*F>0kaC%sqBdKXI2;Km-BAiHjD% z4_olZ@c^iRfaCd{=OQj1V1jXI^4xBR>D2{b0>6;6H?ZdDYmOvy2L-s{b#qEIX>cY_r2Rkb(FdMn(Y7HP~ zZgH5IfWh9`$Rny=zqvT2_Nh6za>WV|J&1?|428%aqa&yIR8^w|1S;B#|7UX z+}AIj*r&GI!Z8pudy$K83!=oD4!NOuHKHr)lvEQdsY2o$HUDJYi#A? z;`{fZ|D^0brt~MbD1TY!f0J4M&&H(REb)lH$LZBi>C|sw>gRmwpW+ygx_AFihWStI zejOX1!C{+8^q*yne`wbIF+cvf753k>Op!lZ=3(9a4;bd(+oA$O!;et#d;WV(^^)S% z|2x*gecZhIH&_eEdN5!6$x|Iyi9gkXKMGPXZv3GrJT5W87yo7bsj7SJc;~ra6{cQ{qAUiou#?SDrD;P^P;IG;RjP5;>k{zIvypukbCa-1OijR+=u zRQ&%Oz>Ztf$BD>)t7m_h68*s>f#k*7)z!lpFuz}ltN&9{5&EUez<-=C{FGN53+kUP zl_Q1tgQL87qyj(X8vmyRA|n1rGx;s4`$-^z|5Il2=e&Vc;NsC~!CwM7Ix9Oihku1Y zjuP)bTF8+z`%5540y#E^e}zE)d~^m_h=8y#=U+nk5lD}syP)`ykNQa{$A^jM-P@)srKR{{>G^lt z@3S%@3rRvgbR_QS=i14ZkzuS0w0hXke%F&L7J8Y0f5S@_ROFzS$oaf)4oPvAvq4NZ z?4fJRLXg{8LIMob_>k#tB(<6_u+Jy50U9ZBamR%6Ql~W3ZnWOst<@Tb&jYYES!oLm z*xEF|L3bUnS1Jjg_blvLypRGa(O$HVCH6Y=$YJ5lz3D z7{t5d=^%*nX|0|^|CWS*PkNT6y)P#OeqI%Ywo|jGod*v$>*|K zeQTaZP_lujpoZ8wei3Nhe6vlb`MUA}Z9;92r!925n4Sp&S1}`i+-5hnK*0P4qdz@; zI~%<(dfqoXuOU{35qQg}h(dGRRsRej!8FfdMF?3?tk;v$dIcMIr?cO1uRaff&ugI2 zs>G*h0e)B(e|x?C?0~4%pBURKSPA?tOiXPbo)*#L-@ zrUt$Muu7(b1QLi4u_DwlNDkVs5xL0qAPCl^ghI~@P)cKC-Wo^j%AlX1e1jOUmo?%B z)xU0{l3MFO<@hi;7pySsU`L<#kg~d8W`aNBNn3ei4j)a9dKN?+{fWQ-TQu*EF#7wq zA=p~I)SGVX9Y`SYJY<(rjLsX5VL){nejP9%XxPp|?I7{6OwYMFeT=-KNwAC1Ont@u zsC;!ua}K_D>-t7nIoSgg8H_M3ifASdg>(yC7e$>$Mng=w0uR2g6q%foY7A$4v`>y1 zsq~q+kE(2`cOXiuBl2@b<}s=Gel@}f@p?hg7O3w?Q;09r)cDPqHp#NJEDl%su<{btWR4F0^5JX#(AFs0xng>jar(D4<~QF z<}+Wk0C{Op`?*n5$}2XXTo@QJidLOuL5{P*KiwYh@Fm;kNr;h={Z~I801~b zEoL;4TZ6Wr*op7w*ty*7VWtQAX)aS7wzpF=*QXctugAhz_{gBRTBEpHwqBKpURcvepu8pK^f8JDW?ZmDUWdx_1k%5(XG?HTALiQ=WQCgnJ$@L9txr0X-$U%Do+loJhzr? zn`EQ%lXHa&JY~|nMLW-yExV-jJ}@x|#-@xyXYZgnik8lt zn8%T-%M~()R^&*dj-HeGNpHc&G(;`V;Arq(0eH2)}0F!PyEKdzw_1Fa9mU!nm#3*nxDBZ zWjs9W2Dl?yfWBmSnj@U*aR>v%YmU!bLe-#CLX?E-npVf#gXkb$-_$2s&~4MG zeL=O0X}r)Ft7+P)WwE6-5k?uQPh=AaudjCY;f0SWUR_^a=DeDr9Qx6p)V)zT7r%>1 zzj$6#E^sV0h77Qyclgv&4s6~Mii1^D7c>!r;clA4I9kIF!{LG&UMcE2bsl#)7Zq+9 zi(mHdEb0%mSgd|sT{piTECc@*D85~Ibq#`MV%7Pc74$5q6`Ma=sj2(@o6R|gq6O}o z+(n6XMZ0fpTRc%>R5XU$7ACb&Ol8XB*!aG5c6%R59ta!(@YznVLA!^>aC3vlRP(_1 zKH5%_$c75zn3yA#7Jj>{AA1aHq$he{3b=2NJ0R3s+oUXtFKYCO!ty+0@R=5SCGkVz zv++~DHgEJHe8aET=o)y05vynMOe>G$(D9X5#rM1WXnkw%F0PbL2!eT@HN#|vM??Y+ zx6r^{f3Nf4o;7djXj0IA?tMU=$p$V0?mUtD7k6%t$s`8fs*v(|t9`!ejRo6XmcU|; z)K}bdde@X{*1t9lry1o@mxD?Ip0rCI@Rx~u1Lq}j_rC?cElM1!0-XHcw?1EL2D_UH z-5PLx!!fUX+ti-&O1cOBxAwV?RRcgf;$TL%Xr3Fek8+r9#EJwirS>2Ah$2t8tH=c| zlDyDSm4i+)nqh=aN)Clvg3g}yKXLXbN|33cAXELj$`|tC-`b7IOJx8k7{I&YI$e|m zSVas(XNF{=)ABlfK)5J~>^K30i$Z`6G|7q!(Y(I?8K54fuQ^oPL$}@f74o#8WYkhX zQqYjxaT1Je|E=}NyoPSHq!k_upEBd_Fcb1I>}w#R57A%7^4bpCmX*wg*aMW85l~*D zHyWIkOhEAE3SKRYhf_=CMYQ43vZMWmDv;LzTwclprhL-YaOOTB@qh}gN}bzT9EO1- z{$4U?%KaBoVJxp%Anb2hFL4k;Sv-arC}v`6<-%lD;#wb;6B-a8VX*WujO~9f)f*2^=ara4BSje z4ef0 z0mOLovdoJ}E$nj0ezjw985>9!35*^(!Vr>&@WM0U!_Vv2UQtHj1ThroMQQ;GO!h#I z2yj8d=NP)1nu8=E3%2X(?kR!sUmNTGn%=geW< zhipP+jLHoRfuw__Lkc;V(;XWAqCVyQY_}+q3p##t>>}qm00lYd3+23d>?J&U{9W5A zPX|p9>KyE=UaC!%ruq7eJxUmPU^gl^%YHa{jQh$k-WZP532(23dk%n5AIQChS@d$q zoZq7f*}*(b$Z!X zCnj5NBy_W6WjscRNuVpT)DK#LjrmaM*%5HaDsoV|eSSpFe9kwHGzDdbFLh>%4inLE zqbBX?fex9apH=Nmzw3uebQ4I0b1r;;Bw}*1hQ?d*rzPYelFMnr)RFz#YuG4%Bys+q zr4)`V$GZQ!LZIA&qM>*vl_u9uMHU+qV~r6u8H6iUK##!)uW*FHFS<-(+$?!voH~}TfG25?KV(K0f4Px*AP4Q5x$jwM8 z>F+iCW3YGP1){`F7de59T*d4Suws@*c2NNSl{oKMc?gkIP#5;GaNK9hK4Eo~AwkO? zb2^jVKjZ{tu-Zf|%_T0x=n<6kPv&sbR^F0!ldCnofm&4&v;&QJV5)KJ61LHq3Wwj> zR09LpWFi5wNoa9D+##&fDg1}wX@WM3bi^7tIq;hS@WEbqK7XqnQ~+@if30{Z02+2c z+Wm5R+#GfVx7=_P~w>!P16`k-$a4R~0)z-q{E$zy=?10uX(9AOYq1x3#A_A`$ ziFYsUytpENhz6i(OW3m5Z8&rW^>&7FKP((x1dgV^msMTZe6Or!q(b@pfO~zUWwHEOO&b&5S)V_$zP7FAFJoKD!`ziw zPA5gA*sf+%d>W8E4uJo9p0f+u3{AG4Tz1IFPvlz+XeZ>`*8pD^z5S8?AR ze5s&JSbMZ+dQ`lcNWC7`=6Ty!V}kuEFh^f(b}V|>NR82#{XAELWx;8yK>e=wrmuPe z+0cyWXjEd5f9on0jQ&K5#o}Nw_Lb@Jc#0z5_zlM^L!qsc&-ULd(bDDPp6_y_kda{q z6;cpDEA@#{)zgaBNiNh(V!*`Qg}Pny zf}G@P_$G-=hTMmWo>vX$!SSQmQiPjX7~Ya1{~$53d+pmgueHwkwe6E6Nsw_Yg|7qA zP|~eWv!Sh#vUnqoq39V$RIGZ3w;`IHwbjDvdJP}Rg*7H=z0Z?^ps*!?CPUBZmTQXj z&^CO!cpo)$5T!|W64|Hi1iS9L#(VYjGP$`Y6)!%~X?cp~(2bcW`fLyy?rlo6OY7`_ z=0+ig$Ff^;+AY;O1bx4vilFXwD^%mSb$CWL`D0YrqBw0v(2T9Do%5%qr1Ns`_-FKZ zF`=7TANXRR(t74cNU#D(aI`(=3SS^9^!VJWF8d?{v=}>*kZ83+fxtDPs-61U2-s;` z2z{kRIu(vqps8+%jgHdBn+mqcbSfCD9tTyqsf&8pmLY_cE|qMHm83yC*J#vV9dl~9 zgI8qJD+xXG#ZZRjUX;t&LISQ9m(OibU1gr5=^#j^lIk!Y-Rx1OUv zX;O6-2eekg5IMwf*s5rZr?1*n5vp5#7NfIW>xel;wWjoVZ6IJX3Fm~uO4K+@aF#E2 zA%%;KxdP0raM&V&kEu}YsvUOqap z@!5{um@WuRNR_c|OhKtkTQqz0Yh2js#X@85vcQTeJ~GexC5)$*WuEL?I@XjNW1Pl4C|zOb^1!EOso6SY!#(Y<%+HG}(fl z%3Td``r0Y#dX$3^7J=SY{6%0Wcz{ZW?byF5-RWn79FufCyrm;S@Kv1>yB=$_p-`+$dy1d4>&W=3CVJ08!V)@m7; z8)T?LU3l06#M0|k7erq5>;&z#4nF%-)}ypg?3>1PqZs53H6h@w12jDDJq#1xh&4RM z*FtjjEUJ+mpQWg;aa6tYfa4U9$m`^iU>XPi+6rwF&^!#47S?i&tGC9*SmM!jCYG3cw z{(6ov_~o-XVLNs370Uyl*o}MATRY$0V*Mb-{KH|ta~3wSf_Y!z)f^fe5}!3twKWyG zG42SWcOwl*uIkysl1C?<*Y0oYyzM)*kqhWWIit9pf=f5FO+&q)F-5z^$03DG{~lmi z0&ybjt90mRC}gtzo5zPnd{1sE745f(-($CG!?`#>YH1 zDg9Qk9E&}Ur`ef)q73N!0`DY24Ih^^!IjD$`QB46aud)xl?++v5*9syLSJQe!a$j~ z2YOB$$E+S?N(s;@&JLWDq8EdDUp&Zpi3GLE1nvi`u>Wvz=oOQ+$i5Of36<>A)9?bE z|DzYQSKTy*l0gye=qVC`wy>s#4o49MRh;+CnF=b3l+;C^KP0z<8X$L{$Q2h&fI9vA zWJcZ3yl}q)J??FX-9D5F%Hde7DrTg>0+HP}1$hnw7q|gb0^qwjeku|pu zXUG6biP$U7I9sDP99}-71ToAZ7dr#gyKB9Mjs*?8*!^5mL*1H@AW0gJ0KKDak~RI1 z>%K42bArLgHHp^Y!Z#LrQ0aQ}HIoUBFGIro0MDxB2|3qUDL&>u)M&a+> zjHSAE@Oe$M`PFsSAS$TuVwA-iSu|Dvwv_9d^cfpG|8~M|$D6g1$ijMCPxjY$?mS2c zx~BT27j;(7&!r?+6O}kLJMUNI0JTgnD1a(-IQN!)x~y2896!h9X!2Z`_5&G4I+pdt z?q&RlJ?ZYyGk1F6O`4p8RARKwOPV*69a-yoUfAyxZu$WTtRp2Mfuf%BJe~F7SiE>V zRd;fk*5O-e+3h2gb0pL|zAwnbF3!R%+2f5)deb<6KU}}cE4=4h6~LE}ru8A+3C9R8 z#5d|ZNtxG4`)=|VLOjDILDxN0_lTkg?eH!_JbH`D3bPANx{G#$SAC z_u`nAIk5JzF&UU_hZg!TxvkuYLd7*%yJ2)*x&i$evg`(JvVnVzlXY2CkfrfoR&Qc! z5{(2NuC6$@8EG?O-$e_6P8JGM^H4L3-S-nfFQYC6X+s#eo3&-S?1(w_Y%teOZ}EH@ zrKlirE-&k$i4#dqf#Kp@v{t@grnbL(15JgpR5Gtzm;5X~uzuPx=N?C7>m~k@F;9F% zSGwudhghRjV$cd^AdPy1@*2AEp!*$~quIW@%NFk>c3a`hJtd<9Hg+VbWwCuE*`tTD zvbBgSzDm!^Ugq^#BhARB&AA;&A9YnA!fS>Q!KkWzI;!M!%B@+-sfo6_0*Ehm0oQ@& zMKtE2u>>^d0_E+jjgK3J4_#&_7qUh0Bl}WexSgu;DTGLl@2e0w#1y9Lp5@3+zcrWT z$agEd`yk^adwQ+3VSVet19x>hIqaV})w3Olv{Q zv1No=v6s5~w?Zg~jp)zEzQEV8GZMiuu@<>#W*j)i6tVt@QB|`d^t^X03{anOp3M=W4U%PCsdHrwQm~3` z+}X00UO2FKzUBw^`xnh90t4*7r&bv=OcM6g(@GIF;xs+6MHq)NkZ92ix?R>A zxKSXYU)j)&`#IlWJsP_bG@`SOi;c_YnQQ&4IYqJut77G1Q?F)!AbS)ht1K}*j3xRw_j&n}cM8{5 z--C9%h>jNkp3Fk2#@FRQi+$)idT|8X;{^IOnOtMi%Lc#($}Ua!)z&K!ik z?^{n>xjRib{IXcZrfGQ(r8Au-Dd-Hth%=!T<-VPdu^gu|J5S^}XR6 za!CU2P9^0}C5G?qTv_lLat2pR6w8F52D?J{%6HSCENosZM^T08;h;7EL}Gk=Yob%o zXX+d&0*nhf*Yev({B2-=aj5p-T~_>WG(F3?$9DnR)#V;j@q4R5=PpQ*DUVQuM5rf> z!o@&ndoOcO_>*oCpqZ@KIo!T-l+AMw-8>a~nd#XVE_Isj4v8{6dT5P7;DIc&W@Gxe zaaUi{cd1qj=<<`#j@CPA5!vG?gZ#!P3K{< z5Xmb6*zXMV)$3t??Q5;$ebuah7Tlr%v|ybjAP^lVhe$4>ma_IUOT9z73LNv{8R1lT zz@5u*wFU*X3Lnxm3`ipF6HYejt&34JK=ej59FsK5YL~F7umdtW%UPX26kYe_IK8e3 zoJ!Ot%i&0{0Na}%ZBK)CX1pqCNSG!d)1iYYu@!eC4e+K%uNq#Bx4oSu2yuBatAa+b znkyhaSF0L~hH?8R%)qpkS2p}hs+*g)swFV%ql)nZjKBf7BT2rF9;m=EJ4FC@uIxTX z&9!V~)A!z}vtvhECf}fxawyN^Df_VJ+F*RS!Np$g)M?CwOxn3t$6jviE-I{G)tSC=@@d!ocmhS=YtO#FNQF`2X$_xtlto*r<7&l(?Y3IuxDTqkJ{ui~D*bjI zFd2Wf4`p5}uHuWeEjhZYQM#%P99ye*)h8aPs8|dp0ll5Cty~0u3s734<ZFdzjPJ3koQ1eV7PD_u!T%VOdPDQ zc*{i2FR9+M-KS)vCRVPs?@IZ3Bmmh#t?NPH$2UnY{SfJUR+R@%Pw{=0HcmBJFFnx7 zpn>d(hYq1R;JJ|HO(-#hX(wr_0+s?>3*#q!6f7%?FUJ4+;1OYYL*2XQU7NTQmXDt^ zfE?O;P}(a4oQA2+;%cdy5rvpSyp1Y1vmqXjwHs73#A9D}(7;}x+wq_WICLerS=rLt zT#RH6bi$=kqFv)05v@v>Un${$c@R+WlIb%~IGr;TnMk7p0*Dy=8>uA|A5LHZEs4Pw zO5+z&Y=)kLiMNqx%0U6{b-0GPQD4^0aDUQ{^w=*%X%A5}r1j@WvRj$MlN!;g4Ai_x zj+&l2e1*r`ypjD8shjinp)3V4LSQGQ5cGp-t7;WTX^tNC5D`{?@_ zHKCE>*+6&KY<}PGG*E9?_dgZ-bRS@HyF=FCo{6vYhRYzA5p4l*NUX^u3b+P)ja{Ls z*2#66?pInKDX{HKr(t7q>T20>>Ixj^*!+e|nRU!T>d^6Il|aLpuLI52Tq(WJP687C zFbIOZupG!^>aaAB;pqSJ3rh!{$MDE0WZ{mR(Y8O(9lr#jyHz_D(;JO!mf_iXa`V+s z9Hs~)z??$oMb7GJbF(8KmpIsW!zU%!Al~^S z^6V`c67!aI(?5{`jP^T}FJ-;(YrV>yXXe79`9r%bua}z;a!`P;E_M52B!)G}0YOQ!CtX6e?|eT@7c87SO}|xoU=ZxRg6b%r_ChR=Q%~82F3(w z&$4Dlnk|%eWoPYsEIAe|+D@J!r!JN?#SaNL;T_>G&eq-ZMZcTE9=dkAXLj>Zvo-g< zvTjgnb_AgJL53*fzS`7WBPokT$)#KqPGsV<39J)wCPquB$6UT43XO3Q7Fd$@5WR5V z4-`%GiS};`gBw8WU=sv%hW5eMwM~>HobbJ>j)xx9a%0**Xcgk37h~-YoyHrx-1Z>P zG+B6F!R+JY)mE)&FtS#Hr3va?;7Opr(TG|zQ8s2r0#{)W_OPb;_QH!R6llA=3kq1evW1Yte+hy1bgC3y&B~ugBRH z#w_T5CcaisAvkvu#g3PAK+;3MT0sX5^q5Zo5dUHaxIvN2%gI=x*!$)g+qONPWbZq! zmU%!e*QZsq0$|Q9eMEe6dqC%cs^Tk_2SZqk<(WkJ&jo2e;e9@U0j+@wz+QYSkRu5{ zFRz;PgoOH)tSP0pgmdK+Y6~-;x-;H%B!?IaHi%HGb_5k!i;Lc7+gm1zkd>$^vP+_&HW5~?c=aTJ`1y+(nqkwrLU=xL@ zlO?D2bSuK6X^G^%V1juQcu8jZ&rW13g83@2)wpHkiGcbzWA2Ch@R>_y)hIz3mB z@&LXtO9v>~%t_EhnaS$KF$E|JrJk&BVX>(9gc8e(5xwd4_#;?bUGEmEXBK@E`)u%| zJ&YXhC6tzd9_jjf5NWH47`81PRAtb3bf%Lgl$k$sbjuWKxi;;+vnwtkTLI`CxAxS^k@i(_ z^i$OQ;KDX7@;kjGszL@6;mR|~fs!_a^oP&`gwQ6gCb%4=JUoYS%>9gAuBhB~raK_xGJ7-t-tMxs?0cQ*yqgKvC1-==5r% zszLjjpSoE>p?x)ard*B%GH^Wrf5e}5f$4H|YjWTx1N^>fP00s!okNP6|TC*oNixs)Q>Eo>$JT$x8x{~S=`rs|fJxjk!7R8O9K(=%|@3L_MWo@qoG z2Fc@!)e{;_MPqrvWQ4zH3O%h}N>U7Ai~jZ`&VwEKWX;V$x*wiaM?eRAmlRr&I1M?2r^Sv7G=F-~c9y2F#P!(6 zt_*nlm2`CZgNr@GVR2I~U(qSrc%6XvYIn!#NafuMeapuvXHoP`EzrcQ2B3`O3fa@Sp%9>Nz|5=(q(QZhpJE zA>&wD=ZXqEhE1A;T23a(A+jWNRPFa)G)WeDyZ zE?`PVld{B=H$87>#XE?J1lEZG*9}7BL$}aXurUMOhvTJ=isS(Sh)LHsFG}XPOhR4K zR;u~1lvdL16UXrcGtwa^u_l;zr>67Y@_Tnpu_>Zmt#@>D72XBiSg#4@Ew!w+rULF} zZONcHtK)hMWL@ zx!0c)7+0N0+kj2vs%hL?Zsd3<{V|JE)O+^L_2xWF#QyI5gtE(vt}X^7U?``zpDgTS zB3D*s>0O50+hKkF?FcHV)Owb%M@uI2R$*M^i^K{yS4}rZHsc?QdS8bp6UY1BVhX9c zWDpv52fB*=npXt?>OWJP?P=T4?KwPaLBSy~j;JNz6mujBNy8b*K3C;2Wmml|zbk_( zFL%eVxMk;9D$cdYSz-Gsi|bMBTZwNxqIv7Lr;7Hp@w0zZI{9=WF>ztw(m5eUR=;+_ z_xd?iTp%CH5x%P@fNO?&Zs+)LpoQzq!7uHxT+YtUwWQZAh63#!>f}$J)$crir1vf# z786^oy<6EL@YATUWvX%J?Sj%Bv3*l@atjBYH1_?V=o{!emV#YDJLC+~nkRQ1QU2fL z*ZCt`Wwr)w3}H97iyO2J%k+}d;P3R7#e}?XudwTq+90pNbc_@16DYzIJ^E5$Rr9eP zs$dp~gLXkt2zv;^m?E8xGH5q<3=-JUzBadX)ylNMIB|n;Sni>*ZVego{c8b&%m7_z zwqATm|6IUS1VwlS^SO`)@o>bA&$2crlOe4&c_xQMVRW++o1k9OGX-p8E74ZxUhXHl0*W;kNUoPHvrsX zQzZbK4jf}}Bte{pg9{~_Kv`q@d$b5a<^<(zI`7tMcx8P!!YPY)=nevQCHmZE;>Wn2 zdP)Ao_%#(X4c^j%I6^1jw4{q3xsiemaIp6UMzHCosadL<&77zJ$c5GKAi1DfhO$1ixO50dmf%=bqf? zF_a0HE2dBaws9^=wB0zXvY|{M!9`pj`=xglST$82O2ZobVz5?D6ME^9 z3abPYA7x;`W!06UKxLy`8#fpe?Sv(g%OO9spFIqU^bOpA4{t#`euoVSpIb z9w0z#EVJRiqs%CGdKUWAYUc3aQlyHS*=by)Ke9M}A>nODMOuR8>BRMr!KD}U-h;td5FQ(GcEc1q#=5v?|6IVwxwGWegD zt&RraXDp@xs}@M`cT!77vihTR_ihT@1Nt5p44p#3-02>WJ3X5CMD9#>V@!eb5hEXN zAaGtc4Ru-kAfN$lhXugrMK#tX`+W!}i`>rXis^%CkNXb}X`xgzZjoo31*52UzrS>S zvfddQz%@jV+`)R_olpv^ zvlgk0MMWEwpM0%z^CR2Lb+2^TJ>ayUO%7D{G;O9kWthV`PQ-dannD7pYWL&Vf^F+3UEA0p$#PlXDE@HiwlzPH%@5#g2 z?bl;32Qh$TqwPJn>Stz`EP>Az*tx+p_=Wc>P{ltM zjXA*vE}QiGD8ojrqVN0YX^iS}IBN1<_P*M6;#)@fJ?0EFptjhV0L2DhV=_CMrK2YF z8s7!8_xro!-j(60r` zP?1cVZ>X&4bh?mKoWUT_eJHM`&gYYB7B44VGrztzv`%SvQ|-yQO$kopO#= zFr_#{j3kHh;%Z(mTR9`1mcQqubx(pv*#@_|n-riD-t{ZCIkNTe5J4>`O#tXJ=~i`7 z{1UQ}p{eWblc?50OgY2vrNPe-&u*_~2LWFcXs&5@x{z-Xqa#okP?Aa=y=S9ZNzKX$ zXqf;(G=L2Tjxi~q2m19=W-uHozcwuiO~hS{`ptrYHbwt%C%FWthU*Ios5huyb86*d}GWIK19?OoChX_q=s;yn= zv?CXTV4PSV_)uVOpfOD`gbqd`QQGT1AgV;bvGyNz?Nhp}QCI9iKac+|7DgRCq{tJT z&+c%GZF}FCakl0lxYbh&^3Lr5Yu8$p;SAMk9icZTW)4SU1m?{{Vo0#5IdGv<0=5qi zk-aj8RYSj}k@`YA4}kbWLiFNia_n~OeC(9Wkqa9%=sMJ>xrx*wbTCIk0s3Wkdx?gbHqf{8*DYTrqkbscJbQV! z!yiTVb%4iP!r@j!n;vPyKz|S(B%1R8vr=@^0|)J9IJCos_D2yQ-|tdQ2~0J26Ct`tm&ywYx3eV{PlsznyDW{YhxL6{ z=O;dclj6rGJs9zHZhLhG`KY?SO0jkepG*=jc>Vs@eeU4CiXyYurwxGfwaJjaAqFIn z?e7bfTf^xRQ4e;-b$usZO$ZF<3N&b6{th7-Ml2En%>$e7KH>x~${vOjI(k9cpu3qh z1Azp)C%j)Zber8DQk{lo>&J&Ny!}i-Di>I`yYzJ7@hf++x`bxWg8K=*Vc#Y03GwL7 z>!IKx-^ zwUFKMVG~Ks5C&cbd7JfS;Lq2VdcO3x);_>`RC zl0~&+ibLq?{c)aQhe=Dt+(r89W$zW`+>vCvO^+f9PqRW3uv-tJ7u-qZ6uXl2U7}nV zPD?#Ieia0``^es}%t5qRq*ltf&0^iBUeTJj;^#Aws^;nk6e4H|{NM7XLFjN5 zE(D?J-0LYEXsSiiTI_yV$})fhN2dd`&E+>7k6KVG3bS>y$^WeH|V!P3EXwCJ}+dH zgh~2t#{Qu!Rqd(6jZ9#>BwMFQHhmNyP#BzgrtsQ>AAMCWMLOlfyPKT|+J1X=lC`}`d*V0w z%Q0+ipWf|~PRSyble$BB~=ZWpAI?KC^aPC_#-^5j@w; z4x@M|M-01%Zui3BxyB=DOxfuPeCyVjW<4Cfps&R>ENNr<_}TtoS?xd(xuFAPyx1fO z@8&=q)qx~PWa&fK!keV8o?My0yA?N3Cu*n|dXP4|^in@2oY0eW?IZQOoQqcVHOk`2 zTX|=U&XvhE^;L<*Qd=C*n*>Y9(LW1c zlQYBLr@Q}ll3?ll!jizF1nJdNwj2|zzN(CMTgsuu6ysQF(D~|1meDx-rBbwb2h-ue zbt=lMHv1p7J3=z-%8Z@xCyNqrm{md@N?nBIGGWoaaTCg`w9~q27SGSNo&Jy7JXfkwO=qOPY`&%2qqXn#OIclU3s$Mwh*d3@rVnU4TPL8MQa)U^i4h=fKC$Q* ziV|;=`_xw4yVBb>#P2;z_?$xcqS>fwMvSA-bERC|cdowkm!k6wM0u!A-g{Vn{{G!b zR#D#mYk0W18gu(}cyA_^Z8EXivbf9i&|je|WUv=X>V0>_(KgLOUBAZ50_VJL($kO7 z0{jdM4^G`OK#FS2wbj&YaM znqn~%Iq!N$7PBlLOwO6aEyc6$Z1GF+_PYk&%QOV2oTi)L^QNn51F3u|$WtDfhje)_ z)kUHl%An}N?+9CssT11|tZAPh@Xl3g{bt(R2mO$Hyn^E+TliuHi&LG60;v|M*$ zF3Rw9MTWO98@x9IC@{N}H8D&w@P&oZ9p1wRP|&PqIr6#d&FHz}d85LWIAfew4%)-C zGRTDHsg7@Li|%1M&+zM>zSBijU`Z}I4*4w4c5I8n{MV;57?8c8DJjmslbT z5r?M%_P?a2C9~~?w$jizb~fP7M`uMddl!px*s9ohdRsP|&5wvGhq-i0q;B)n2{MU0<74;h;+@JE^uNe+3>9Di=QKs^Pbw zZVZ&D4}UF;Iv&d|8FaNOJvI-Ay->?2brIK*99VJ$y980c)WCA~`@3h+V^fat3Zkdt zfs33aKo1b7zwO##x8&Elg8RFh6>5l};?l)HMOHo~D0gHl|4ONr2iUn8`*mmaeLofw zD&2jlC-qOssF{%oO;gn0hq8e0qo-M%eq{!5J&BN{p&J4prHDuA!%GBsnp^qEi{-hkhKoCjUH1+8FQ2F1+ zz$vg!(pd&=N-n|0i7X`l=4%v{TCn%(57Jl#nj0-S889-~&G!C8oV1fhJWrlIC3^&g zj0!dap&1g8V=!KTIoxliA>4?h;ud{AthfN})xZhA6*sV9z?`?UG-^69gg z4UaV&%K?EI8(V6?wlUMq*veR1)Z{8VOu$zsYy3Qt*T!>LoX>-ei?hEP$LIZE(7Kr2qcd*~9izu2eGfz@=)uhsN* zun&oY`c7WO!HLW!dnwG51<0=dZ^}-1_m&e-jfTN%fqmoPJ=BTXU+u^L_P&>PR?i^k zutYV!Wxj;H&@}6wbe;8E2>hEW|5`OLfW-MES`+SnDn1Bi7CU*hj_lSzKT+>RLf8VMb7!F z7@N}D;Ul@QOIg?^5GnZ9g{RVrz!z7eaI2=N#Zr#5z{O!e`1`-CLV51*QlSi5(~IM{ zZ!OpJ@?Pj}CUXFZ`GUWd_F?&Il>-P&=GSF4vJAK>c`%Kbt| z-~#QSl%?TIWk4K7zk0T>d*4r>ywp%@I|^sQfR7JGf$O^6+*U%K&^UHs(}evV;(`GmiG!e2h&FQ4$2Pxx`X z`S0|HazJ54k6{G6vi{Eb$Gf+}T6LYt{6|a9j6q>)Hfl5KvemE_B9Si>-Kf1A zX29P7ZvxKThUQd>gOE|mhi8^6myhSo;nV(5qqZt5qmlFY=sn-r62FN7q2$Q){u z`?ovfdJb?S4PL$%5l(?NdaZfncjf6*Qld)R$^%h_W(JE`%@y0WBP&)uYbMWOgU zzJ6iT>u7ziUo$Ii~I6T1sXmf6OLxnKs@CGfWh4rP)XF^DF%^@yqvbTc-tovYv<0NC3mUJY%Y* z{#b+_%^IkDO-OH&$$H!SpYR0WMC*OeVsPHtG1@x~?n=9PGq3e&S6kAMB)Kc1K2St7o!|5gn#^Kqr$4O{J@l702JEXv7s|1gU~G0m9ESka+2Ota+3^3<=AZcdU2@~U>Mzj;9(1yV z46J7T4hDx}o-~8=sv2yXi8Y#)yOE^0;Ity~QtZM1yA^4{jITmLsCWVlK;N1A>wbY6 zU@Tq+I2fSUzjw-{t;UtJN5Xg8MgO^~C!#$7R+RX9eh)umGG zJJM;KZ-0SCUWZojA|;P-xG762>&5UE?Z zD?gd0pfj2pZ8QbDvTs-brkZF(pB002SsOI-F zmo)R~g*q8kZ{jdgTyV8u*nz*l>*W0yAl(N_LO&>gu*yr%-XCd>EaDI2i|8MynP%Eh zC~jtR0Ee?>A-v`&&|CL1((9su*sgZ3fs#(tsX)}de2eC&Xz;Iimu~liP8i#1NLny% z)zrZ##7zD{M9*t2AWBSYUQBzHWZaEi)5;n9C?6EpVcsXGN=d2@ZdhIoNJ%=NF#d5U zVaVzDMmKVXg+7g!C1j85)3&z1__PyhBz2G8>-zQePB&BhMF^F+T$U$=xV1@M84lhfrE^FNnd31+~v>>(Hgg zu6m`H{mlL~jTP<)RjBzsWXE=d~kxL&aC>? zuO`uO+z{8J7aMI$uJdns6#T0XmKeyQ-*@p98Z%`#1`aF;|8;aSM!-Kc9@VweoJWu?MSreq?Uj6_DE*8_rO}Z)k;2+ES Bq^SS^ literal 0 HcmV?d00001 diff --git a/OS/Images/kernel_types.png b/OS/Images/kernel_types.png new file mode 100644 index 0000000000000000000000000000000000000000..ce2c63b4fc6ecd2ad9d70a2181135ec4fbbf78f2 GIT binary patch literal 48121 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/OS/Images/transitions_mode_cpu.png b/OS/Images/transitions_mode_cpu.png new file mode 100644 index 0000000000000000000000000000000000000000..9367454790a096970e7bdb7e1473c3e12a67097a GIT binary patch literal 70815 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 literal 0 HcmV?d00001 diff --git a/OS/cours.md b/OS/cours.md new file mode 100644 index 0000000..592107d --- /dev/null +++ b/OS/cours.md @@ -0,0 +1,255 @@ +# Systèmes d'exploitation + +## Concepts et implémentations appliqués à l'architecture Intelx86 + +Stéphane Duverger, Airbus Group Innovations + +# Introduction + +Ensemble de composants logiciels qui permet de faire le lien entre tous les composants matériels. + +- User programs +- .... +- User interface +- System calls +- IO / +- .... +- Hardware + +## Principaux objectifs d'un OS + +### Offrir des services + +- Gérer le hardware, les I/O +- En temps et en espace +- Exécuter des applications + +### Quelques uns des services + +- **Communication entre applications** + - Systèmes de fichiers + - IPC (inter process communication) +- **Communication extérieure (réseau)** + - Piles protocolaires - OSI + - Drivers wifi, ethernet +- **Couches graphiques** + - gestion du framebuffer + - accélération matérielle 3D +- **Sécurité** + - Isolation + - Limitation + - Gestion d'erreurs + +## Le kernel, ou noyau de l'OS + +Dans un OS, on scinde en général deux mondes, le kernel et le UserLand. On s'intéressera ici quasi exclusivement au Kernel. +Il s'agit du composant majeur et critique de l'OS. Il impose ainsi une architecture des appels systèmes. Il existe trois architecture typiques : + +- Noyau Monolithique +- Micro-Noyau +- Exo-noyau, Hybride + +

+ +

+ +Le KernelLand est la partie ayant le plus de privilèges dans la machine, d'ou le risque d'un user _root_ qui obtient tous les privilèges et peut ainsi pénétrer le Kernel land. + +## Comment marche ```malloc()``` ? + +```malloc``` sert à allouer de la mémoire depuis le Userland. ```malloc``` va récupérer des pages de mémoires au niveau du kernel qu'il va pouvoir agencer comme il le souhaite en fonction des besoins de l'application. +Pour demander de la mémoire au noyau, ```malloc``` utilise un appel système. + +## Objectifs du cours + +**Rappels des principes des OS** + +- Quel que soit leur design/architecture/concepts +- Pas de théorie sur + - Les ordonnanceurs, le temps réel + - La gestion abstraite de la mémoire (LRU...) + - Les architectures de noyaux (monolithic, micro...) + +**Implémentation pour Intelx86** + +**Objectif** + +- Aborder la programmation des OS, en particulier du point de vue CPU + +# Démarrage d'un PC + +Au démarrage du PC, le BIOS prend la main. Composant logiciel embarqué sur la carte mère mappée en mémoire à l'adresse 0xfffffff0 qui est là première chose cherchée par le processeur au démarrage. + +Puis saute en 0xf0000, qui est la BIOS code area. + +**B.I.O.S. - Basic Input Output System** +Responsable de l'initialisation des composants essentiels du système + +- Controleur de RAM +- Table de gestion des interruptions +- Tables ACPI () + +Le BIOS permet de booter sur un device qui peut alors contenir un OS : + +- HDD/SSD +- Disquettes +- USB + +**Cas d'un HDD** + +- Tables de partitions, boot flag +- **Master Boot Record**, premier secteur du disque CHS(0, 0, 0) qui contient l'info initiale de boot +- **Volume Boot Record**, premier secteur d'une partition bootable + +**Boot Sector** + +- Contenu dans 512 octets et se termine par "\x55\xAA" (marqueur de fin) +- Chargé par le BIOS en 0x7c00 +- Permet de charger en mémoire le **Boot Loader**. + +**Boot Loader** + +- A pour bot de charger le noyau de l'OS et simplifier son démarrage (mode protégé...) +- Plus gros qu'un boot-sector, un mini-OS parfois +- Permet la passerelle entre le noyau et le BIOS : + - Détecte les périphs de stockage + - Parcourt le file system + - Récupère les system map (i.e. la taile de la RAM)+ + +Quelques bootloader connus : + +- LILO historique et minimaliste +- u-Boot pour l'embarqué ARM +- GRUB, spécification multi-boot, très courant + +# Modes opératoires + +On diffère plusieurs modes opératoires pour le CPU: + +- Réel + - Mode d'exécution du CPU au démarrage + - BIOS + Boot Loader puis tout début de l'OS puis switch en protégé. +- Virutel 8086 +- System management - SMM + - Mode de privilège absolu, au dessus du kernel. +- Protégé + - Mode usuel de fonctionnement pour l'OS. +- IA32e - x86-64 +- Virtualisé - VMX + +Il est possible de passer d'un mode à l'autre suivant ce schéma : + +

+ +

+ +## Rappels ASM x86 + +**Registres généraux** + +- Multi-usages : [r,e]ax, [r,e]bx, [r,e]cx, [r,e]dx, [r,e]si, [r,e]di +- Pour la pile : [r,e]sp, [r,e]bp + +**En 64bits r8-r15** + +- Selon le mode d'exécution (16/32/64) et/ou l'usage de préfixe + - ax = 16 bits, eax = 32 bits, rax 64 bits. + +**Registres de segments - sélecteurs** + +```x86asm +cs, ss, ds, es, fs, gs +``` + +**Registre systèmes** +Inaccessibles depuis le UserLand + +```x86asm +controle : cr0, cr2, cr3, cr4 +segmentation : gdtr, idtr, ltr, tr +model specific : MSRs +``` + +Les **registres de controle** permettent d'activer des fonctionnalités du CPU, dont le passage de mode réel à mode protégé (```cr0.pe```) et d'activer la pagination (```cr0.pg, cr3```). + +## Le Mode réel + +### Gestion des interruptions en Mode Réel + +Il s'agit du mode initial du CPU qui permet une interraction facile avec le BIOS. Il se base sur un mode d'exécution 16 bits avec un adressage de 20 bits. Dans ce mode de fonctionnement, il n'y a aucune notion de privilèges, donc pas de protection. + +Premiers x86 : 8086,80186,80286 qui permettent des modes pseudos protégés non désactivables + +Des segments de 64k + +```x86asm +mov ax, 0x1234 +mov [ax], 0xdead +``` + +- Registre d'offset sur 16bits => $2^{16} =$ 64 kb +- Bus d'afressage sur 20 bits => $2^{20}$ = 1Mb +- Usage des registres de segments +- Calcul du CPU pour trouver une adresse : $addr = selecteur_{registre}*16 + offset$ + +Si on essaye + +Les adresses mémoires que l'on manipule dans les architectures x86 sont en fait des offset relatifs au début des segments. + +### Gestion des interruptions en Mode Réel + +Les périphériques génèrent des interruptions. Ces signaux sont interprétés par le PIC, ou APIC _le controleur d'interruption (avancé)_ qui les signale au CPU un index donné. Le CPU consulte par la suite la table des vecteurs d'interruptions située en 0 (IVT). + +Chacune des entrée fait 32 bits : 16 bits d'offset, et 16 bits de segment. Cette TVI est limitée à 256 entrées. + +

+ +

+ +Ce Mode réel montre rapidement ses limites + +## Les Modes exotiques + +### Virtual 8086 + +- Permet l'émulation hardware du mode réel depuis le mode protégé. + - Accès aux interruptions du mode réel + - Interception des I/Os + - Gestion de la mémoire < 1Mb laissée à l'OS + +_Un exemple : DosBox_ + +### System Management Mode + +- Mode le plus privilégié +- Utilisé par les firmware - BIOS +- Configuré au boot +- accessible via une System Management Interrupt +- Généralement difficilement accessible + +### VMX + +- Gestiond e la virtualisation matérielle +- 2 Modes d'exécution + - ```vmx-root``` pour l'hyperviseur + - ```vmx-nonroot```, pour lamachine virtuelle +- Permet de filtrer la plupart des événements systèmes + - instructions sensibles + - interruptions/exceptions + - la gestion de la mémoire + - accès aux périphériques +- Proposer une vision contrôlée de la machine + +## Le Mode Protégé + +# Segmentation + +# Niveaux de privilèges + +# Interruptions et Exceptions + +# Pagination + +# Composants d'un OS + +# Conclusions diff --git a/OS/rappels.md b/OS/rappels.md deleted file mode 100644 index b955239..0000000 --- a/OS/rappels.md +++ /dev/null @@ -1,3 +0,0 @@ -# Systèmes d'exploitation -## Concepts et implémentations appliqués à l'architecture Intelx86 -Stéphane Duverger, Airbus Group Innovations