From f9285acaee4f3144cf6343da0f850e86b9695d11 Mon Sep 17 00:00:00 2001 From: CyC2018 <1029579233@qq.com> Date: Sat, 9 Jun 2018 17:00:56 +0800 Subject: [PATCH] auto commit --- notes/计算机操作系统.md | 54 ++++++++++-------- pics/271ce08f-c124-475f-b490-be44fedc6d2e.png | Bin 0 -> 16384 bytes pics/4e2485e4-34bd-4967-9f02-0c093b797aaa.png | Bin 0 -> 18432 bytes 3 files changed, 30 insertions(+), 24 deletions(-) create mode 100644 pics/271ce08f-c124-475f-b490-be44fedc6d2e.png create mode 100644 pics/4e2485e4-34bd-4967-9f02-0c093b797aaa.png diff --git a/notes/计算机操作系统.md b/notes/计算机操作系统.md index 59584ad3..b3c8c685 100644 --- a/notes/计算机操作系统.md +++ b/notes/计算机操作系统.md @@ -26,8 +26,8 @@ * [磁盘调度算法](#磁盘调度算法) * [六、链接](#六链接) * [编译系统](#编译系统) - * [目标文件](#目标文件) * [静态链接](#静态链接) + * [目标文件](#目标文件) * [动态链接](#动态链接) * [参考资料](#参考资料) @@ -800,37 +800,43 @@ FIFO 算法可能会把经常使用的页面置换出去,为了避免这一问 ## 磁盘调度算法 -当多个进程同时请求访问磁盘时,需要进行磁盘调度来控制对磁盘的访问。 +读写一个磁盘块的时间的影响因素有: -磁盘调度的主要目标是使磁盘的平均寻道时间最少。 +- 旋转时间(主轴旋转磁盘,使得磁头移动到适当的扇区上) +- 寻道时间(制动手臂移动,使得磁头移动到适当的磁道上) +- 实际的数据传输时间 + +其中,寻道时间最长,因此磁盘调度的主要目标是使磁盘的平均寻道时间最短。 ### 1. 先来先服务 > FCFS, First Come First Served -根据进程请求访问磁盘的先后次序来进行调度。优点是公平和简单,缺点也很明显,因为未对寻道做任何优化,使平均寻道时间可能较长。 +按照磁盘请求的顺序进行调度。 + +优点是公平和简单。缺点也很明显,因为未对寻道做任何优化,使平均寻道时间可能较长。 ### 2. 最短寻道时间优先 > SSTF, Shortest Seek Time First -要求访问的磁道与当前磁头所在磁道距离最近的优先进行调度。这种算法并不能保证平均寻道时间最短,但是比 FCFS 好很多。 +优先调度与当前磁头所在磁道距离最近的磁道。 -### 3. 扫描算法 +虽然平均寻道时间比较低,但是不够公平。如果新到达的磁道请求比一个在等待的磁道请求近,那么在等待的磁道请求会一直等待下去,也就是出现饥饿现象。具体来说,两边的磁道请求更容易出现饥饿现象。 + +

+ +### 3. 电梯算法 > SCAN -SSTF 会出现饥饿现象。考虑以下情况,新进程请求访问的磁道与磁头所在磁道的距离总是比一个在等待的进程来的近,那么等待的进程会一直等待下去。 +电梯总是保持一个方向运行,直到该方向没有请求为止,然后改变运行方向。 -SCAN 算法在 SSTF 算法之上考虑了磁头的移动方向,要求所请求访问的磁道在磁头当前移动方向上才能够得到调度。因为考虑了移动方向,那么一个进程请求访问的磁道一定会得到调度。 +电梯算法(扫描算法)和电梯的运行过程类似,总是按一个方向来进行磁盘调度,直到该方向上没有未完成的磁盘请求,然后改变方向。 -当一个磁头自里向外移动时,移到最外侧会改变移动方向为自外向里,这种移动的规律类似于电梯的运行,因此又常称 SCAN 算法为电梯调度算法。 +因为考虑了移动方向,因此所有的磁盘请求都会被满足,解决了 SSTF 的饥饿问题。 -### 4. 循环扫描算法 - -> CSCAN - -CSCAN 对 SCAN 进行了改动,要求磁头始终沿着一个方向移动。 +

# 六、链接 @@ -860,24 +866,24 @@ gcc -o hello hello.c - 预处理阶段:处理以 # 开头的预处理命令; - 编译阶段:翻译成汇编文件; -- 汇编阶段:将汇编文件翻译成可重定向目标文件,它是二进制的; +- 汇编阶段:将汇编文件翻译成可重定向目标文件; - 链接阶段:将可重定向目标文件和 printf.o 等单独预编译好的目标文件进行合并,得到最终的可执行目标文件。 -## 目标文件 - -- 可执行目标文件:可以直接在内存中执行; -- 可重定向目标文件:可与其它可重定向目标文件在链接阶段合并,创建一个可执行目标文件; -- 共享目标文件:可以在运行时被动态加载进内存并链接; - ## 静态链接 静态连接器以一组可重定向目标文件为输入,生成一个完全链接的可执行目标文件作为输出。链接器主要完成以下两个任务: - 符号解析:每个符号对应于一个函数、一个全局变量或一个静态变量,符号解析的目的是将每个符号引用与一个符号定义关联起来。 -- 重定位:编译器和汇编器生成从地址 0 开始的代码和数据节,链接器通过把每个符号定义与一个内存位置关联起来,从而重定位这些节,然后修改所有对这些符号的引用,使得它们指向这个内存位置。 +- 重定位:链接器通过把每个符号定义与一个内存位置关联起来,然后修改所有对这些符号的引用,使得它们指向这个内存位置。

+## 目标文件 + +- 可执行目标文件:可以直接在内存中执行; +- 可重定向目标文件:可与其它可重定向目标文件在链接阶段合并,创建一个可执行目标文件; +- 共享目标文件:这是一种特殊的可重定向目标文件,可以在加载或者运行时被动态加载进内存并链接; + ## 动态链接 静态库有以下两个问题: @@ -887,8 +893,8 @@ gcc -o hello hello.c 共享库是为了解决静态库的这两个问题而设计的,在 Linux 系统中通常用 .so 后缀来表示,Windows 系统上它们被称为 DLL。它具有以下特点: -- 在给定的文件系统中一个库只有一个 .so 文件,所有引用该库的可执行目标文件都共享这个文件,它不会被复制到引用它的可执行文件中; -- 在内存中,一个共享库的 .text 节的一个副本可以被不同的正在运行的进程共享。 +- 在给定的文件系统中一个库只有一个文件,所有引用该库的可执行目标文件都共享这个文件,它不会被复制到引用它的可执行文件中; +- 在内存中,一个共享库的 .text 节(已编译程序的机器代码)的一个副本可以被不同的正在运行的进程共享。

diff --git a/pics/271ce08f-c124-475f-b490-be44fedc6d2e.png b/pics/271ce08f-c124-475f-b490-be44fedc6d2e.png new file mode 100644 index 0000000000000000000000000000000000000000..8de6367b8b6b041cb1f5cbccfe5be8b7dea48417 GIT binary patch literal 16384 zcmeHu2T+sS)@Uq<$^lUn6cF?%Md>0SAVfhydha##9w8K|L8_>L0@6FuyOhwYh(PFs zmV^LGkdCy_Lf#iV_uO;ud2jB#H?Pc_`I%w9eEZvb?X_3iYp=C-n5wcY^?AngAP|UJ z?%5M{5a<*P1Ueyo_6*SSu1Mzyc$|Q#%SwSt`j{7hm($jdl^%mY<&ji}5DMV^-1BF8 zzzCXl^8blWXr2WK^w2==$z#nI#w*xJ56$hyHPV_%09TP-QOBj$SAGT*?}xJ*)2pWR znY?ITS3Mr!o%Yh-LMzlroF~Rki-o`(My7Ue>B)YpRYdt0mXEz?%0cAZM})dwE47e| zDY~UP@cdQq<$&ABr2|hDD;4(W6#nRCMad*j$O6)S729ec?%;shxUKoG!H zI{p;!@W1*y@&xdF^xH)|x%o!OSpabmh*mmCl>B^kvyGYj{7eg>AwSJt@l%qY0#E*T z5BJv<&GAKz6_`!kMY&O1RbR2HDOCQjS)y)f6c-|hX1}_sj*TkREdQu%6uo-ctPTg@ z;ct5jd7}ItkzZuUsB~@&6LcFbwDGyLS`J?grM_t(8iCWPr_2+gYxVGyS+{Tll!zqPe3V`96$-i#Eg zp)f}G$ls0t|JbVOg+TgcjUlNmk8nFoj;jX-5y7FKM$%B5Jt=h_du_`{VOK8Xm$(%P zlZlqTbr$xhNRb|ox9^JT&@VF!bZ@NG;prvi@f6b65?3`H=O6X?WkFVF^PPzM+hWBg zKTeLf*`XSbxZJjgY`0@l#@^$@_4%P0+S(+=@Gg3t16v6%!gk3{?>=8~XG|ZA%qst= zV^ZkF!yex)m+Mjq9YTNqeYCcZ!z~N#w_WX?;%wm3ZYTx~rYJjfyv15DQyp}->1Tr% z@0s@JCHv(cM<>o=bF{b7XZ}f$goj9q44x&6H=_n$3!Mh#2y>NfhIXo*l0Sx6y;bHg zeWp(WjZ~H*k|&Q57&=D4Gd}4#sfM#HIhyfdCaz)QW3@J}_)5ak&rjiG$>Fyq6C>sU zl6pIDuhnvOo@eBB6)Dn=a6hj$Tj~1Rs67vvW~Rzyj@+?~S6DFYR5tn+fJvcdT{N?b zt8DnoWa{1gBAG{{tak;V??>;$@7395%cTs?>;p!^=p7YnO1Z{tW%pw#`)y^ni{%Yr#dlZsYqf;z7Jm#MOMCkFKgPQn`!?@G z^;3*TzI!=3NeJ9T$}zZp+N5wazKG#J^z!vag9|r5JG+fe6$hbXns)|CGl zO|rBbGGP2Z8%x&ADL^qT?LO8U_ssW>ZR|URe-vTX-gr-~PkN@_xIkT9Y_Q#fFErC@ ztP6Amy04#v(6n&M%m6>lg83=Qatvs*_E}gZd&wX|>C!rHUh~0r^5mvg?Y^1>&eLppvVQuYzy#Gw zNJWKQNodl>WV%&B3q0P5CIL7KK8-(xH>Aa1Dlq({`@v%@@8(`e6t&R)PSjpO9wyTQ zw>M~{aZ0Qvw>vm5SYMAQD8z1}0VA3x5UcHQgE!G~3})=9JO8@0ej>_vd2$=B1}>xED{sIG_3@X(=vyc1f*nNa9~0GU~m(fapard=O7e!yUff6!f07d17)Vgjm;UQGr#pRzm-=4 z7U>8#TsgHcn}riu^KyK~a*e56d@O&mv__KqFl@5lu-oA@2-M$6!usk|E*xJ#}CCl6vhcVXTFY(}wIwo}uePq|Au++%IjK z5eq@J?^DnC`cC;^bS|x%9bY;rw7^QCJ24p{cc2`yP2MSk z0eOY-o`sFs!9K_6ZX&E(juy+YikNl>CWOZUQDw;6fBrJy4@8~Vq zugBVX6&er|E;i1#V_xkWz<-=HzZJ6xH5!ZPshLdA9ojnIxwL-@h#&q-#W_Rcx zj3^Yq2UaPqTX~nQrj>svwWsNL<0i`QB<2e)Iubb?^{yLoS+_1GO{$Y3_V0--r_$p8 zuxcv-`tAa;1FH0X!|NeCw-jas@gIxC?k@vP}VX0CpY*Y@xuO zGYeR0QCTvb9{v2!)-EQWfP;fK;Q)+Rx7wIhbNtrV+r^$wKf-eXO`oYDG@Kf14Vw|} zW2=2WfE(ps0}#z}acg0?Al~CcUm7@V;v~@efZU3d!N=R31FWk`kZAf_y>}J%^8gH5 zF!^oba?b}YCpnc`0P#l+0FCYuFctlFCJG9_CZYf)g1I->3TbI2l#)j=0Q=WMer#tX zYya`Q4{jh&3~=!^Cp(c*z0k(&zm=C9-Uqk`Hza{&4lUP-*87o3@$*sqsdqbl;%gsu zs>zc*1pJGS6OH)0c%u(Z1hV6F2vFzUc3>#$=*v@-_e=l~E!Mzndi3A_u}V-H;CWe0 zTvkZ3v(?}QI!ucI6FNIs^wCQLZ~i!7#xLb)y74OVcCyX{nEBK0r<`;20b1+=d#dTl zdK`v~>>gPQB>^prPe&kh>>Vw-D0wWgK|$SuG1|qUE?dz^uVwdR-j{?B~|)!Z(xa_W`L%Ku{K_4Y;(Qg}SAG^)xj(q!9ISO?{yt;4OxBO(WX#>r&xTR~jgCE`!-@I9SipkAtV{aHCC6Cm` z1e*wh$KzuS$X|U+{~XVa_!I1}@w!fAuy5;(N6x}1Ue}SqG?B-bV;28}emvg17WF6C zzo2D4vYjat&!sx@AF(?I`&YEGN*ILN3}0rJ{3q;wE&4BLU3F{ByNEx3+3nBO{SUDF z8__!RmYxx=B}yn$?E0LX>N}cGBL-jnwqaV|6dEFXtXQCGWsGvqbNh zJjuFz*>7ZxQN(kIMza(~8o=+5l%sAaTv3>>hnEhe2A*0K|AO=*Aw93#PUTTJdC#UY zxY}?cD6O8HT8Ugbb3lMTEDp4my@!@nD!S&@nDDbPH91v;PpMe=scPzV8;%H+6Hy?1>Sdo#lgG7u8V4(d;x+Di$B5G#cyF zr}Lz|eJHmJ4p#5(zSY0q^)9T=>R4QyhrFa&^JZAY1)7bSqGazUPsI=I0Uk(hV@=6; zcErn{0B#mUnC~^Qt$>0ezAzpJ)#jYeN#z>w$TVHdP|9x!dG^0_ful5TGoZ<} zesUk%NZr$Y9mo?EQtlTl+b0rah1NCAo;JV zq`0tuHIU%h7fN*rki`!RCpmA4d9N=Z>6X{F!KC&6ELc(?hrz4A%FricyGN7+&G6Lt zv4(tbgW1><3XX*Y-;J0`xbosMYb6I!3SL-E>c{=~u*G~Z{S=JRB=hAuzy=M}cL8od zP5)JU6QXto4~}uTNXEf79`*?qD@)+o{wMu^x@>}v;YobVzb_vBNl!kL{*-uY z?VHTtQc1&w1E5ot%RxlFHW$W{4F4GbKd!jT{Dt1%nTC@kk(rjNPiEQ|2(Puk3AD%S zB_+iXqM+K?ueBOCO^s80y`q6syAaa^SKj&E3GK1rdGxYp6fjxueM+r)4Wc{OKl!Zv zn*oSvifn4`he`T~lGSK0q;|P$fJeW62b|5fbGS5#Q_=lhnAVM?I3o1RbZU(Cc%Cpa z&i2-sa8t#Nto98@r^d%s!`WZZ$=h_`4#Tw#Oh}8YBMAsi=aTln`5L8a5%$(~2BUWP z2ud~!-|WD?F3VF7w&5dtNaH>BQowpFkgZ1pdn6>|@5`=?oFXsV@DF) z@kTWig{zj3NE3DLrxLq=|K~aSzbrj^OuY0~uV( z!-YaoX!d7K650!iN9h!4v}d#q5;qj}$qM=1TSCxQiKRVY@89>RJ4UR&aIzIsJtluJ znf$$zLqj6&7Z=wrvavQyIhqs+g-g`MPcXl#gR?It9&c%#>t3RK=^qTL)@;^YQis-a zOKk%kOLtQfY0`QeSTz!l63Rs~vXcy4?|Tbuy^~aOazSIMe6^yz_~`egSOLmxHm05{ z?K0Q>4R`QsWBYUK$X+o2ZHjCnbjduif;cUIv~I1_akIe4sr2=F&@rKWEDnRR|Dv$J z703BzG$<29So^#)esdbXwj-infD@VTW&d8w?>;2iFx(<*P!|8Za!5qAjY77P?0M4t+a9ayyDClA^N(bVDvmeX2jx@mBB~uw>IlbA zYBA-aJDzE=q7^u>b&bk_FmAaz6n@vbKYQ8D;G3i~vrvZB$hOs2f|r#Pz=6!aaUg*x zxql?tzxTX6vxK4Qo)IYf#s3MvpnJt*r!n;o0w=oor(^NUU-|#gF$m|^NzeOtr|KWO zAmEMt>lW~*J(dA>#h}`gPmTU`%KlCE{$~3Ap|=8nT--ul;rw^n{mpIp@A`U)9)I;4 zee9ZkM;?2W$G+s`?Lr@6}!G7aQ3+#iKOl-bqZAt^AhHQT1(Y)S{1%ej(yI zserEi=^@+qP{eyD6kk&5Ys>A$i0|2P{PSTkygO`FpL*1_M9!%K6 zub56WpPkNj@v72`1YvgYXa~~i)o4uTlX(;nABpH%nQU0f|Jk2X=fzgv{B=3>nu2c* z!QHQi*vL21O_?^r1#Kw7?{{vku&s{YE}-jf?l zdGJ+scH<)c@ZG-QiV&iXVav_#!DZ%GF(EXK>30b--qOAGjMKi=TYZ&p5QELNM5D^Y8M4m>*62(qCj^Zo5GseOaW%3=44BqgpCZ@u66|%~ zl{@`13$4YAlEHa(&GIz_VE*;K#-M661@9Mt2`t6!=wR8<2ebcj(K@9EvBRg417^XF8c^2Zm zie4XbgbO3Ls5Cjbqi4lrRg`W%`%zL2hRU?bZNBlDVp|A29U=V{=lQ&7NW)VGgGNSH zwKS$;)0UY$qN2nSM~JK6Em|Wd@4uS}N#NXyuPOCRjY0nS+NV{A52H!xabUV)sQkXx zHDI$m>dtPwMVdy1r>8=J+6fGy@`btzq}DWS{GV* z54P9!qlwb>p7_)I@%WXd(hAv?DtMuMWWQ(Q1z5Y0+v`kvjO^!Chj^$zf^fG@VzUEjmA2 z968FZKwS^l*HG2XPY=+3rBfOV_rz~7N-ruojqNY4$nRKnX3JVy(ZBTzVD@og+AzMf zx6L$HGGIR2g!fdxm)~l>pI)fI%FM(}g2?cncQpv~!r;L3=GhuQ1iB&~8fg>~BH$k* zszr?A?KC=PG%offoOKfOEKS#-|v^>hw)ev7_KSA4tZc6Jz8s z?i0MrdlBQoei2+rP+{Yz9YTWb$Gu^76Q-n-4iFv@aw0-hf^CZ(d+?b`bQ`cmlQ>J6 zxIlh{ZlU(XcE*_P_M}q5(hrrm_3(MXxuF{lvwiR){hASH;~iebQcRw;n97sg-vfHO z;XkP?B%e|fEyQ81_ixcuSbQ=!V{g>;O&A4l)+ei+5#U<>{U~HDSLL2lA>72|%&qZ^ zGzV)*3hU1hcclmHH2u-F0wcLJ49OK^)>=LaVBa-C2F?epNrKTVbb=FRuA5br`wWW@ zuXTj7wo)2*gezw68&q}lJ$A`8vXXU16jb3Fr|22+c%xG4u3P5wv90$Cnp{=uEr=n@? z8n_IJxT9EM@tR*m?5-Wdd(xAxJ{6((x^xW*XkpW&cLna*;i#E}_6MKze-W+B%WIlVkg7WU_&`x8D z*kS;3Jzv_c5EpOk=5p+EexZ7x#D~1Ior~1$p}cpZ%kg|p3Hq|al6D4!_pGDdHwr6x#11 zDcs4<5)G?X`;}qa%+bohEKO=3OlQecO9&F56Eh>&MC$b8#1ZxB8jWl7$xLT7cmkK+ z2bKzIaIYAgr-so@DZtu+yv!QkGE@+HBBt5ZrV~{%Rlq1zRcT}5WM4FB=V4s=v3i)u z{&U|yz#dP_BjY0v{lrjjDn5q%F!d4oNCR@&M))mHg5#LFgU)b}?X;nwj$Is>U1P>m zUF;h;y|HC4p7K0#;9)m^R0XIzkVowO!8N}UKAaBGgyTziCWQu%Y%`yrI)h^Q{WvOU zbWZ)++qA7HVXGqo#XXPw z*!i8xjbo{Ot>da9sm3c;?C9P^J=^Q3#{OBy$)R1!?NDRu4!c-3tpNctQmaoI&2vi< z5V}iIB+1n^+}ndkDVyb&?rg;$s+qVpmq=s~jDDl%*#mM1Pu3T&7-rGGJ*zxzEIW*l z>Q0cdbvcFUbX-`PESZ|j8E$Qsy@U@DdHg!KAR`c(|8DpJD6 zW?RR$Y@KS9Q?#vDL^`L2MOnEL+9JB(Z?OpHO+Vrt>*kSZ)=KMbDS{+P!!0>{_I0Ug z)iVbCnxFhyxPfkm1mD3)fYhBIP!Wb1@;7}&LU&)M93A893}7p();lbeX|qbE8AUR>Wc@`_CzB(%V^X_m9M53cnaJRSu=3Z+OvXw?zWx;*xxd%ZV8$ zLKE#F5#1dIq;>Zj+axH35kG9iIREfTN6uAA>-rsy6GD=Dpk3u*mdSW>tJ9+@vOn*o|6?M*09wkekHp3ot!45uT6JeqprQtDiWJG zeGY5?W+VF`=^SilrhP`Is`V%&u2e&b$Yp2S<=F^dPjln+UEzf|(btT?$*ELpf>&AK zCsnRhbTKiszotE)*7-4qxXI8cYRoc~lXrZAE^EdF6$iU0E^k`EKR@0pKp=bY3v-?; z4hqnsiX`Ojz z^Wx_kd%lZo|F>#X$cMTAcNH@KIy;c0jJxl;LCTZZYgkMjFQAURjXIdWP`QS}t^q2A$uy>+!n<~Gq+bsbcG%ZSUSK{1JZXuzE9yIgg1K= z+rQZNdQV^9s1#9ulsC%Zbe$U39w;_Bm`?p+vufH~&e!YCCJ)GLrRC+R$+4j*r?qC1 zpA|WO=cD>0UOabozh1NadD5hEWKAh0N(*t94!?}!%PZYGp@l@}eHX|vIO*(ubm&Q( zo(b)gnHF>;r<0CEfbq!2-`g-iQn^X{3W`T8;YbXOlmooff@Flen^9mE6X^5M>Livf zz;GbdduIY^3=D}^cp6kIxLDMvbj8F|J!M{fb?J~_r08h0Sf79Ggb=|Q%S@{yyg^St z>%s(d#~WXStVZ>@A8Lvq>y-(sd*Kn(DP8BtWZZIGF>HKx1x|ch*IZdfc_YHh+gtjS zp_91Z;R`D$GHm49cJ)zobx{-Ve2rnQxG*Ve#|>VBv^a;18kr`kZQ{`}Wt|e@1|5_M z7xWTto&s5Bz2cw$C^_sc-Ym3#ruw^fv2l~?l`A4kXn2MEhw9>4rPl5cw(9P4W&Bsusp(K5q!^&(Nt9lsLuN6+q|RYHo*&ple1YE?m;z%QCSs zkxfI-QUP)wlQi3wd`+@gy0|~zYK12&gBQC@Hv=CkrAfilL8i}}LU_O}a|j?IIw-!@ z5WPneBft3MjWB!3P{4ulP{w0}w|Dt7TQ8Uli4ma4ckxP+l%IT2?MQ&a23)g(bvv(Xt>c6#B^;Cocx#9KB ztv1Yhx^l|Hg#g262g_8{KVS0GdRNnSlT(#6_M=hWghdi@L8am*F9HB}_i?;Io;Z`_ z$mgV%w>InJp^JMcHki z`LIDfj&`F0gL{+B4oS0#qTZNe``r4?*!j(>@2uPQTP8K0t=-F?OvasS(&^S#hpxLv zj#HY9wE7VqjGI@&5u+2?mlkm58QMkI{4uX1lrLU;2Pu#JeukfALrf|uKhhc z+DKRLqqrSB_vMyIj%ztze)xygDqpz|c8oiACL0U|wFiazpDfDJ9%2wD)yCeW$`Ojp zZ2L4-^9>;((&5Eo_s6%(_wTsTygidR$S(pW!sv^}(~bC6v=lbMc0C18OQuo^R+yiy z<-TF%svRV<@U|4=w$1hldAR+QEyC3L5A>o6i6xkbd``~V*kWxDtPXxwvNRrejYTF^ zWoN6j=li)eSLwK+Ox(~-1>0^U=>v{>D_%4XUA31l!)CBk;5>GQ;jG10bA$HrRtctyzzcZZ@Zntfr{~w?uzrv*{1j7LU2xW`rbZqL;3YtSo0F^y=~TY7i(ZtybW1t%|!{!F|qsCRH)T=tv>DK#5%w@eyotv3l1-!VlgG#=$*V; z;`5eG~`?W@_bZ`xPHaX-*T+Af%28*ACf>yX|3v@6vzkugsiHY zR5aP&G=sf~u#%0Cxj#^@z%|b^>X8JFRT^NWhLw+ag@~%9w~eHa zP~Qq&dq(dsGPgC-@*N8)azbMs?pwBk1xGqqgtU0HJBA$XBm{(C$1yGs2@=M4I#H>9 z(4=L7t841etW_7Hi8^{ALTb9`U`l*A5+)rPoFf&fl5sG%vjV>NxG#9v+b?6)^#1yg ztX}mFY|m%X7oA)mR~G2`mMA=qXQFl#Rj#&aBuXyW zzD*#cz3!d#_}v39D=+QaJbV=EG2*+(M?pgJ-;$u--*4Ef8w@UmB{*g^jSPO5=6#0! zSnQZqTl$6y7KQ?=efn0WJg1bP$OULyok=y+WVqVou>FVG11=UF1LX(3A+@jTD}AA% zUMh2kOrRU?fNUhFIISrxj^BocfVwYax%!noAKQ~L!t0kSrtc|)x*M)Ubo|R<>Fv-h z*>3?FB^S35M*|cIX6+b%vDDqfgZ-oeTOZ%Uen(F=p~5dRAp!h4dSgPuvlcD~_mAU| zHd{?O3GlS^^)yknqcu@u{wuCPZ7RB=jNdvd`CtXRS6 zeLvmu;O)?dmah;t)`|3Ozzbj!V{m$si>_W+G_5nFeU)QJAA4r95+&oz9#jhm;_`^l z)6iP;Ngdyn-88|BaAOlA)p#m;mV|rAD@TGHiNXAF?vHc5j^d~c-OLFmD(MZAw151( z0bM3~7rT<0O|gYymkhJw@KRg(EX15_H8*rYl^D}SHR^=Otf3F4D+sYeN$2GsDJ!2XBn6dk{aydsQpPj!a# zag6Nbg=DJUR?}Fbnwb9#n4rT zg`>D%x`?1Sjr=O|%{Vp7Xl10h5Gy(+Qs-W?Yb6nYm{BjA$mQQ)nYj1E5|9pc4HQ$y|&wsoqqw^b5|>WoKQLXOW$%dVYH zHf@bss=DcEVfakpS5X94d5)fM9B|TaT}#p7)2+OHeZ%m^optMw*RCgGASpHz$*XH$ zVpU*L8vH}Gsvbgq9~A(x3WzlK!>QN3_^yS8c3LgCS8ZR&)seZ=z&J~&>RAOfPnY-Fz|8+?Y>MLQW&Z4 zihHT?cRN4X z$U5TGSKc0IC+At1DC?q@pGs9}L#*DYU-{j*nzdf)2d(P+?$9bnu+AnEkEp^l>5)>X z%$lvXZafUU2W0c-nO3b&BiNt)D)?-vBnPYCPO+r7q+KiVH=z4S;JS^hJ=$q5?lkmA z?jYvegvQ2x7}p~V=FEBdCx1XPI&%kzZTrG`($q^bV9@wa18T$bGE0A)Djl4g=liuP zMpuhHDvlJE%I~n;0{KG$%fT^H*VUMBIi-6domN;rjtP@vC!A*yf|a{Wy-*{;44G@CrrOpVNIT8Va!WCOLp0lyk~KQ0(O;x0y@ zJ_E`T_G)`jVRdt@);di|rKi&W#o_KxMK@$BBradLwiE0Fp#@625wG<@mabm?z4~4z zDSmG2Wf20smmZxspW-B%vICUBDN{;Nc~a6aKa0dqTvmDV5^xj!`vKC>*o9d6IwEhhQ7iM_p2XDXk;IAYaKD=ShPvvs&;-t+@4PidAHwsLXXmt)GXbEu?)40j=TyOmo z$ZD)l?*ouIAzns{MPj1o`?NU0H8JMyk+clo1oD&t65@onK;W1xR5))?RV@G$_5{%KhF? zpGp)IlTWMmaXQK?G&DUEK%vWRL!lv@W$fP}L%C+; z4gJxqM^)be90O~BEE33+{yQ*5x`=^>aG?9#RV z0AW+9T-fc37SlUEM>w;dBKOx;5|+2-GCAV{HKMIFz0!w?WqsRyhZ|2?Z9Sh^%LA_* zU<7ucnM45iIVxBBhXJZ)Cy-K|4&`ZatTr3cDrEuIPHzrI2Bes>fZK%hn?>Rr9iK8^MQbC zn%K@7dF$w~d=B#GlJiSH$HeoS)Afs$E{r^tI3a?EbtNt6P|%HBDXVeb>CSufhV+H3 z;BUZG2Abc&A(+gQAl^u_pmJ=SQhE;C!^DF1ZFsn!7=@8nqJQ*_PFVjd^~wpud@E-B za>o^*xbl`m<$(4ml3D^FS+$h4pMTvY@={7JlXKJj`G=3%ZDw}0zuG{?dG222IZaDJ z4wA&X1;3@&@3|l|cMpJ1^0>gngKW-_$O?YsNv`4a*X?S4`g9x^L%p)uKKx;_&B-Q> zw9Bu5*6&U`j#T)X+33tVUfx)&z1I?IW8^|ip-BHcrbJ)&A3NiY`$1%s5c+M~~Jww~d zm?ll+vVxn5Ce6JM8C#IYcbjO%_cHjEvw}zYmiV$<h~904l4ou$7bJZl5k z^ZwI0K;0^!rcYX=^jy}a&Sez8vzmFQ#iz!7Jc2f(48=`aTY?V6_8PD|T(B3uJ|aVz z5E9k{l%@j1E>@_CC1u*S@`}Vyd`WzA3_h(e&Q&8cb=%8$mqFS3c=mKle@X zy+8{Tu>zxDNEw{NWnS>-U?C<{g&Me|^q3@|^&q9rN;LgtFD42Dy=XLZ3{Z&+bf3P- zfM89VN{BP3({AXJgF3W42CCWdOH16RU3{@0p!&C9 zJE50%WZTzyfsg$44xsFTrKJEg^K;;Xm5q_p*~pZq)~&SIC6qjVYQV^ zM1I0+z58s<6KAi_nomOdWM%^boun(sGn_Zqxb0YA?pMM80mq#@vFGl`Wg!q_mK5H1 zQ!?i|-r=n9gC9GxZ1!Fj4lGUh*wWKpWF4k~v0rVf0^0$- zOnG<3y03Ivy}bNWAPca@Vco$|KyyuUS&JK6q|1j-6ou+|5vtO?$Q8uVCY+`i68@C> zo23k-@965)*T70@T*eDtK{B|&w7TXog}d}SFZ7;Md;9R{248=Z@X4H+{wnG{Q`#c3Bb%>HM8WWT6_iH|;TEwp`sMQ`^R308EyTZGp|fMvNi_#PF_8zF zvIDo5n9KMtySqTqxq*KHX<7nYJh)VGv8Jqrwo=E~PxSivwv%LvijZe`R10V#n^~5i z@P;;#xE31n-o+O3@(r-wUpE%?OtYZ$7>AhNHhJB=pS1$r0Q0B801nbX>*=n5aEerQ zWA9kj>Z0RMsw}`Yu!{kx>paXWCD;^}*7H<)g0_%bMsHmJR@@-plL(-=L!~1;DKtE7 z^(IdDdLdymH;o3{DfK(RQq{9<%ar)E*c<-Po?k#( zfJ+u{+fT9qoyiv-x|x6V`1vHB>lU{vxn$o^^ejw=^Vc*b4nehCpkH0)Lirg4e|2f0 z#Xsykh5>2=ezyJkdH!j9(jPF$%x7!))eO|Zzq$Gg1Sdrs=C@y1``12-=Q{bTdHtzg zh-m#Nca1ww%@H?zkoMQ)(-ohnVDx!yC&xU-d_;)Q$6u+?x$nOGf-0X;)Rs(9SOyY~ zwrUNhkSDJ`Mqe+uwo7L2yyG8e0#~Wz82^|HIZ%Ou$YHq3I9o&B#!KEAv+= zI?s|Vvwsa|A&~sgM;tz~=2D%^Bj2+CeSSI-T$dl zJT~e7%U5i#FOVqhWqzwoS==IDOa{q4Ren+;Wg0-X5C5hA|E2%`rT_o4`v2bmgv7Ek literal 0 HcmV?d00001 diff --git a/pics/4e2485e4-34bd-4967-9f02-0c093b797aaa.png b/pics/4e2485e4-34bd-4967-9f02-0c093b797aaa.png new file mode 100644 index 0000000000000000000000000000000000000000..a5643118d0671223b7382462ad7259a12fbcc290 GIT binary patch literal 18432 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