From 7ef199ab9d4f9c496807c54e0468d7d70f7f3300 Mon Sep 17 00:00:00 2001 From: kuchy Date: Fri, 6 May 2022 11:42:53 +0200 Subject: [PATCH] add lab4 --- EOPSY/lab3/report/.report.tex.swp | Bin 0 -> 16384 bytes EOPSY/lab4/report/report.aux | 25 + EOPSY/lab4/report/report.fdb_latexmk | 87 + EOPSY/lab4/report/report.fls | 142 ++ EOPSY/lab4/report/report.log | 340 +++ EOPSY/lab4/report/report.out | 2 + EOPSY/lab4/report/report.pdf | Bin 0 -> 96710 bytes EOPSY/lab4/report/report.synctex.gz | Bin 0 -> 14966 bytes EOPSY/lab4/report/report.tex | 48 + EOPSY/lab4/task4/README | 1 + EOPSY/lab4/task4/ftp/Makefile | 24 + EOPSY/lab4/task4/ftp/README.tjk | 45 + EOPSY/lab4/task4/ftp/memory.tgz | Bin 0 -> 87307 bytes EOPSY/lab4/task4/ftp/setUp | 9 + EOPSY/lab4/task4/work/.memory.conf.swp | Bin 0 -> 12288 bytes EOPSY/lab4/task4/work/Common.class | Bin 0 -> 1747 bytes EOPSY/lab4/task4/work/Common.java | 58 + EOPSY/lab4/task4/work/ControlPanel.class | Bin 0 -> 28597 bytes EOPSY/lab4/task4/work/ControlPanel.java | 1852 +++++++++++++++++ EOPSY/lab4/task4/work/Instruction.class | Bin 0 -> 318 bytes EOPSY/lab4/task4/work/Instruction.java | 12 + EOPSY/lab4/task4/work/Kernel.class | Bin 0 -> 10016 bytes EOPSY/lab4/task4/work/Kernel.java | 511 +++++ EOPSY/lab4/task4/work/Makefile | 24 + EOPSY/lab4/task4/work/MemoryManagement.class | Bin 0 -> 1660 bytes EOPSY/lab4/task4/work/MemoryManagement.java | 61 + EOPSY/lab4/task4/work/Page.class | Bin 0 -> 498 bytes EOPSY/lab4/task4/work/Page.java | 24 + EOPSY/lab4/task4/work/PageFault.class | Bin 0 -> 927 bytes EOPSY/lab4/task4/work/PageFault.java | 92 + EOPSY/lab4/task4/work/README.tjk | 45 + EOPSY/lab4/task4/work/Virtual2Physical.class | Bin 0 -> 390 bytes EOPSY/lab4/task4/work/Virtual2Physical.java | 22 + EOPSY/lab4/task4/work/commands | 11 + EOPSY/lab4/task4/work/copying.txt | 340 +++ EOPSY/lab4/task4/work/install_unix.html | 410 ++++ EOPSY/lab4/task4/work/install_windows.html | 385 ++++ EOPSY/lab4/task4/work/javadoc/AllNames.html | 274 +++ EOPSY/lab4/task4/work/javadoc/Common.html | 87 + .../lab4/task4/work/javadoc/ControlPanel.html | 129 ++ .../lab4/task4/work/javadoc/Instruction.html | 72 + EOPSY/lab4/task4/work/javadoc/Kernel.html | 153 ++ .../task4/work/javadoc/MemoryManagement.html | 63 + EOPSY/lab4/task4/work/javadoc/Page.html | 126 ++ EOPSY/lab4/task4/work/javadoc/PageFault.html | 107 + .../task4/work/javadoc/Virtual2Physical.html | 65 + .../task4/work/javadoc/images/BaseObject.gif | Bin 0 -> 1633 bytes .../task4/work/javadoc/images/Category.gif | Bin 0 -> 1463 bytes .../lab4/task4/work/javadoc/images/Class.gif | Bin 0 -> 1737 bytes .../task4/work/javadoc/images/Collection.gif | Bin 0 -> 1482 bytes .../task4/work/javadoc/images/DataObject.gif | Bin 0 -> 1561 bytes .../lab4/task4/work/javadoc/images/Group.gif | Bin 0 -> 1378 bytes .../task4/work/javadoc/images/Interface.gif | Bin 0 -> 1834 bytes EOPSY/lab4/task4/work/javadoc/images/Job.gif | Bin 0 -> 1259 bytes .../task4/work/javadoc/images/JobOutput.gif | Bin 0 -> 1516 bytes .../work/javadoc/images/JobParameter.gif | Bin 0 -> 1589 bytes .../task4/work/javadoc/images/ObjectID.gif | Bin 0 -> 1496 bytes .../task4/work/javadoc/images/ObjectType.gif | Bin 0 -> 1578 bytes .../work/javadoc/images/OpenBookIcon.gif | Bin 0 -> 2241 bytes .../task4/work/javadoc/images/Permissions.gif | Bin 0 -> 1525 bytes .../lab4/task4/work/javadoc/images/Query.gif | Bin 0 -> 1381 bytes .../task4/work/javadoc/images/QueryVector.gif | Bin 0 -> 1581 bytes .../work/javadoc/images/ReportMartEntity.gif | Bin 0 -> 1772 bytes .../javadoc/images/ReportMartException.gif | Bin 0 -> 1878 bytes .../task4/work/javadoc/images/Repository.gif | Bin 0 -> 1536 bytes .../lab4/task4/work/javadoc/images/SPFSet.gif | Bin 0 -> 1485 bytes .../lab4/task4/work/javadoc/images/SQRJob.gif | Bin 0 -> 1521 bytes .../work/javadoc/images/SQRJobOutput.gif | Bin 0 -> 1752 bytes .../task4/work/javadoc/images/Session.gif | Bin 0 -> 1416 bytes .../work/javadoc/images/SessionFactory.gif | Bin 0 -> 1679 bytes .../images/UnimplementedMethodException.gif | Bin 0 -> 2297 bytes .../images/UnknownReportMartException.gif | Bin 0 -> 2207 bytes EOPSY/lab4/task4/work/javadoc/images/User.gif | Bin 0 -> 1290 bytes .../images/UserValidationException.gif | Bin 0 -> 2064 bytes .../work/javadoc/images/blue-ball-small.gif | Bin 0 -> 255 bytes .../task4/work/javadoc/images/blue-ball.gif | Bin 0 -> 925 bytes .../task4/work/javadoc/images/class-index.gif | Bin 0 -> 1497 bytes .../work/javadoc/images/constructor-index.gif | Bin 0 -> 1711 bytes .../work/javadoc/images/constructors.gif | Bin 0 -> 1565 bytes .../work/javadoc/images/cyan-ball-small.gif | Bin 0 -> 255 bytes .../task4/work/javadoc/images/cyan-ball.gif | Bin 0 -> 925 bytes .../task4/work/javadoc/images/error-index.gif | Bin 0 -> 1438 bytes .../work/javadoc/images/exception-index.gif | Bin 0 -> 1707 bytes .../work/javadoc/images/green-ball-small.gif | Bin 0 -> 102 bytes .../task4/work/javadoc/images/green-ball.gif | Bin 0 -> 886 bytes .../work/javadoc/images/interface-index.gif | Bin 0 -> 1648 bytes .../javadoc/images/magenta-ball-small.gif | Bin 0 -> 104 bytes .../work/javadoc/images/magenta-ball.gif | Bin 0 -> 896 bytes .../work/javadoc/images/method-index.gif | Bin 0 -> 1588 bytes .../task4/work/javadoc/images/methods.gif | Bin 0 -> 1403 bytes .../work/javadoc/images/package-index.gif | Bin 0 -> 1607 bytes .../work/javadoc/images/red-ball-small.gif | Bin 0 -> 255 bytes .../task4/work/javadoc/images/red-ball.gif | Bin 0 -> 527 bytes .../work/javadoc/images/variable-index.gif | Bin 0 -> 1576 bytes .../task4/work/javadoc/images/variables.gif | Bin 0 -> 1380 bytes .../work/javadoc/images/yellow-ball-small.gif | Bin 0 -> 255 bytes .../task4/work/javadoc/images/yellow-ball.gif | Bin 0 -> 925 bytes EOPSY/lab4/task4/work/javadoc/packages.html | 17 + EOPSY/lab4/task4/work/javadoc/tree.html | 45 + EOPSY/lab4/task4/work/memory.conf | 33 + EOPSY/lab4/task4/work/setUp | 9 + EOPSY/lab4/task4/work/user_guide.html | 460 ++++ EOPSY/lab4/task4/work/user_guide_1.gif | Bin 0 -> 15914 bytes 103 files changed, 6210 insertions(+) create mode 100644 EOPSY/lab3/report/.report.tex.swp create mode 100644 EOPSY/lab4/report/report.aux create mode 100644 EOPSY/lab4/report/report.fdb_latexmk create mode 100644 EOPSY/lab4/report/report.fls create mode 100644 EOPSY/lab4/report/report.log create mode 100644 EOPSY/lab4/report/report.out create mode 100644 EOPSY/lab4/report/report.pdf create mode 100644 EOPSY/lab4/report/report.synctex.gz create mode 100644 EOPSY/lab4/report/report.tex create mode 100644 EOPSY/lab4/task4/README create mode 100644 EOPSY/lab4/task4/ftp/Makefile create mode 100644 EOPSY/lab4/task4/ftp/README.tjk create mode 100644 EOPSY/lab4/task4/ftp/memory.tgz create mode 100755 EOPSY/lab4/task4/ftp/setUp create mode 100644 EOPSY/lab4/task4/work/.memory.conf.swp create mode 100644 EOPSY/lab4/task4/work/Common.class create mode 100644 EOPSY/lab4/task4/work/Common.java create mode 100644 EOPSY/lab4/task4/work/ControlPanel.class create mode 100644 EOPSY/lab4/task4/work/ControlPanel.java create mode 100644 EOPSY/lab4/task4/work/Instruction.class create mode 100644 EOPSY/lab4/task4/work/Instruction.java create mode 100644 EOPSY/lab4/task4/work/Kernel.class create mode 100644 EOPSY/lab4/task4/work/Kernel.java create mode 100644 EOPSY/lab4/task4/work/Makefile create mode 100644 EOPSY/lab4/task4/work/MemoryManagement.class create mode 100644 EOPSY/lab4/task4/work/MemoryManagement.java create mode 100644 EOPSY/lab4/task4/work/Page.class create mode 100644 EOPSY/lab4/task4/work/Page.java create mode 100644 EOPSY/lab4/task4/work/PageFault.class create mode 100644 EOPSY/lab4/task4/work/PageFault.java create mode 100644 EOPSY/lab4/task4/work/README.tjk create mode 100644 EOPSY/lab4/task4/work/Virtual2Physical.class create mode 100644 EOPSY/lab4/task4/work/Virtual2Physical.java create mode 100644 EOPSY/lab4/task4/work/commands create mode 100644 EOPSY/lab4/task4/work/copying.txt create mode 100644 EOPSY/lab4/task4/work/install_unix.html create mode 100644 EOPSY/lab4/task4/work/install_windows.html create mode 100644 EOPSY/lab4/task4/work/javadoc/AllNames.html create mode 100644 EOPSY/lab4/task4/work/javadoc/Common.html create mode 100644 EOPSY/lab4/task4/work/javadoc/ControlPanel.html create mode 100644 EOPSY/lab4/task4/work/javadoc/Instruction.html create mode 100644 EOPSY/lab4/task4/work/javadoc/Kernel.html create mode 100644 EOPSY/lab4/task4/work/javadoc/MemoryManagement.html create mode 100644 EOPSY/lab4/task4/work/javadoc/Page.html create mode 100644 EOPSY/lab4/task4/work/javadoc/PageFault.html create mode 100644 EOPSY/lab4/task4/work/javadoc/Virtual2Physical.html create mode 100644 EOPSY/lab4/task4/work/javadoc/images/BaseObject.gif create mode 100644 EOPSY/lab4/task4/work/javadoc/images/Category.gif create mode 100644 EOPSY/lab4/task4/work/javadoc/images/Class.gif create mode 100644 EOPSY/lab4/task4/work/javadoc/images/Collection.gif create mode 100644 EOPSY/lab4/task4/work/javadoc/images/DataObject.gif create mode 100644 EOPSY/lab4/task4/work/javadoc/images/Group.gif create mode 100644 EOPSY/lab4/task4/work/javadoc/images/Interface.gif create mode 100644 EOPSY/lab4/task4/work/javadoc/images/Job.gif create mode 100644 EOPSY/lab4/task4/work/javadoc/images/JobOutput.gif create mode 100644 EOPSY/lab4/task4/work/javadoc/images/JobParameter.gif create mode 100644 EOPSY/lab4/task4/work/javadoc/images/ObjectID.gif create mode 100644 EOPSY/lab4/task4/work/javadoc/images/ObjectType.gif create mode 100644 EOPSY/lab4/task4/work/javadoc/images/OpenBookIcon.gif create mode 100644 EOPSY/lab4/task4/work/javadoc/images/Permissions.gif create mode 100644 EOPSY/lab4/task4/work/javadoc/images/Query.gif create mode 100644 EOPSY/lab4/task4/work/javadoc/images/QueryVector.gif create mode 100644 EOPSY/lab4/task4/work/javadoc/images/ReportMartEntity.gif create mode 100644 EOPSY/lab4/task4/work/javadoc/images/ReportMartException.gif create mode 100644 EOPSY/lab4/task4/work/javadoc/images/Repository.gif create mode 100644 EOPSY/lab4/task4/work/javadoc/images/SPFSet.gif create mode 100644 EOPSY/lab4/task4/work/javadoc/images/SQRJob.gif create mode 100644 EOPSY/lab4/task4/work/javadoc/images/SQRJobOutput.gif create mode 100644 EOPSY/lab4/task4/work/javadoc/images/Session.gif create mode 100644 EOPSY/lab4/task4/work/javadoc/images/SessionFactory.gif create mode 100644 EOPSY/lab4/task4/work/javadoc/images/UnimplementedMethodException.gif create mode 100644 EOPSY/lab4/task4/work/javadoc/images/UnknownReportMartException.gif create mode 100644 EOPSY/lab4/task4/work/javadoc/images/User.gif create mode 100644 EOPSY/lab4/task4/work/javadoc/images/UserValidationException.gif create mode 100644 EOPSY/lab4/task4/work/javadoc/images/blue-ball-small.gif create mode 100644 EOPSY/lab4/task4/work/javadoc/images/blue-ball.gif create mode 100644 EOPSY/lab4/task4/work/javadoc/images/class-index.gif create mode 100644 EOPSY/lab4/task4/work/javadoc/images/constructor-index.gif create mode 100644 EOPSY/lab4/task4/work/javadoc/images/constructors.gif create mode 100644 EOPSY/lab4/task4/work/javadoc/images/cyan-ball-small.gif create mode 100644 EOPSY/lab4/task4/work/javadoc/images/cyan-ball.gif create mode 100644 EOPSY/lab4/task4/work/javadoc/images/error-index.gif create mode 100644 EOPSY/lab4/task4/work/javadoc/images/exception-index.gif create mode 100644 EOPSY/lab4/task4/work/javadoc/images/green-ball-small.gif create mode 100644 EOPSY/lab4/task4/work/javadoc/images/green-ball.gif create mode 100644 EOPSY/lab4/task4/work/javadoc/images/interface-index.gif create mode 100644 EOPSY/lab4/task4/work/javadoc/images/magenta-ball-small.gif create mode 100644 EOPSY/lab4/task4/work/javadoc/images/magenta-ball.gif create mode 100644 EOPSY/lab4/task4/work/javadoc/images/method-index.gif create mode 100644 EOPSY/lab4/task4/work/javadoc/images/methods.gif create mode 100644 EOPSY/lab4/task4/work/javadoc/images/package-index.gif create mode 100644 EOPSY/lab4/task4/work/javadoc/images/red-ball-small.gif create mode 100644 EOPSY/lab4/task4/work/javadoc/images/red-ball.gif create mode 100644 EOPSY/lab4/task4/work/javadoc/images/variable-index.gif create mode 100644 EOPSY/lab4/task4/work/javadoc/images/variables.gif create mode 100644 EOPSY/lab4/task4/work/javadoc/images/yellow-ball-small.gif create mode 100644 EOPSY/lab4/task4/work/javadoc/images/yellow-ball.gif create mode 100644 EOPSY/lab4/task4/work/javadoc/packages.html create mode 100644 EOPSY/lab4/task4/work/javadoc/tree.html create mode 100644 EOPSY/lab4/task4/work/memory.conf create mode 100755 EOPSY/lab4/task4/work/setUp create mode 100644 EOPSY/lab4/task4/work/user_guide.html create mode 100644 EOPSY/lab4/task4/work/user_guide_1.gif diff --git a/EOPSY/lab3/report/.report.tex.swp b/EOPSY/lab3/report/.report.tex.swp new file mode 100644 index 0000000000000000000000000000000000000000..d27796c7d4a4b9bdf423326e2d375005639f33d3 GIT binary patch literal 16384 zcmeHOO>87b6)r+TFiC)H5I3R<8=>8-XJ*%CMY4#4e`d30y|&{SCoDTFtERhVy5gSh zp{v^C*^vow2nPg00xn2MhyxNq91;RT2nmn~NC+;GxIjSS09kPXi3kpepYK&y&5z?~ zAqOt$kv?_1eqO!)-m6ztuiNdjkFQyod6=kRPwmE{T>}>N(M>>N(M>>N(M>>nCaiao&pcIIW9Wx`lch- zf4g7c%DYGE|K;jiuKedm>i_BLue$R0xdHq*Z+7MPy6aO%>RoYpDH$jkC>bajC>baj zC>bajC>bajC>bajC>bajcpVIgkg*f!_ftA=63$A?^28`;ckV2HtXAV;o(U4o(+)S0~2WjvW)p6?p;bKkLv zuYO`a>F)hO#Bn;1A%`4jr1V6@9K5+7OK8F?zLfW1eYBJZfs`R?3T4TS=q0P=yu8eg%6Rq1ek@+bndU2iU}3Iv@bK!mHahyklMFzOv2rEo)k|}*u>H>6%8S3+-dA$Htb_OivHsW zI;kDcf@6BpI)I+`g5Wf9TSNdicdSqUSB~h`1Gu3x966+473v55SR^(`S{*U4rki~c z=eR?d*KS$K+_D1BeOVFWB&G@&H8#j~RH8H%KDd>?rC^Yxh8BiyN{fNOUlHb(_aj<% zVgw$bSZELwGYS+g%*}IwIpAWC4UzJoub>alWEb|2v83@qB&UUXQnwKcL%yB1@g!5> zyTYGqgUJxILJP|Z#1@=;$&CnKUSj0Rhtqat zLmn9TRJ~X_XnTO|h<|c$X(9m|ks*xOlRTC}8}DCJCT{fwW=|&i(P+~WKK4iix+2aM z<;OWKR!X}nc2qad$X{A23F17IR-g*>wSfvv^r03$6U8ct+v}r?D;FDR`KXk8`uZU) zq^&5Eol#^=Utg%z27^JhOO=Qv_FBcY1_RL-sudJgIzdNQXq}s=RKe0+IafOzU9)m& zX@fF>z+MYGDZ5jHD`4IhENR-QVIdQ=+Ht3>wYF!-J<+vG*BRO02<4rbe=L`|tU7Lv z7k$VIOY%Oxot?7D*qb3{wut=@hBo zlkjdD4iiJd1#nxX+3;izcfdl)A0vHvD2(9RWO-mxBPy5rs~`UzA#$_6%xeaeK4%Lh_r6_6xPyi zFzm`=F@%M%Pl7fr)`Z&K6dSrCrgEs3B1)$?Ay zaCo=~tFJXL)wg+blRr^k-dcLJ&NsLD*80*)ov&^1=B2d;U)@~Uxl-R~(&$U;>%3Y2 zNRu~qwzoHTHdgDaeEBNBcAc-UU9P*yFuh&ojZ2$5>u6NxE9+}3mzS2;>wIZrm9N*A zRwwJ#T4J&^gi~UkBAE0Ls*EzRWGy(X9JNduiXkdQZV>!Nm$Mr~eZzo)ZTDgNJYPKf zf%6ZaM;qI5WWQeL>!QsUv4^B@)lpTPwZarzb4(W$z+d|!*u%bI)QMAZq{u~tgV}}= z7Sjx&YPQs!-Y67$`9X}>J`$Nx0Ug=s{Qqg3$6p5M{O{ktKZkSuSAov~j{tW8zsA}A zm%uN8XMqFYap1=|+kY8Y0PY6<=H&g6WR|~@fs%oefs%oefs%oefs%oefs%oef&VW9 zHWTEJKsXK2>k=Gv+o~NaO5XG%9OU|`Lb}4I;3f&2Nge=6A*60zl@c;Jj=D<3+DfP* znNv$~97Cov>F(+w-V~rf?>fo56Un>d41=ylriTS+9L z_0XgVr88!gsW@e9W~D+&r%G{alTH|ZI??rd#aNEK?yr>#nLORh!MsS3P%4-*Aya9D zMVlSaRexMQYP``S{x#$OlJ6@lg10*KmU50>?;vwR`6`!-@hO)g**Z{rc)5UoTeqpf zaRzVJA3$mkdEM%`u}u-uU$u+KZ(ML`nB8Kqs^0H{c30>hZYse?Hgf5$!bWVzrcCg* p)|esh;a~Kj@Q@c-?y);j0z63bIJ6n2HrgVm?X&7d=G0n-{Rc!V+g|_x literal 0 HcmV?d00001 diff --git a/EOPSY/lab4/report/report.aux b/EOPSY/lab4/report/report.aux new file mode 100644 index 00000000..03929e99 --- /dev/null +++ b/EOPSY/lab4/report/report.aux @@ -0,0 +1,25 @@ +\relax +\providecommand\hyper@newdestlabel[2]{} +\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument} +\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined +\global\let\oldcontentsline\contentsline +\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}} +\global\let\oldnewlabel\newlabel +\gdef\newlabel#1#2{\newlabelxx{#1}#2} +\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}} +\AtEndDocument{\ifx\hyper@anchor\@undefined +\let\contentsline\oldcontentsline +\let\newlabel\oldnewlabel +\fi} +\fi} +\global\let\hyper@last\relax +\gdef\HyperFirstAtBeginDocument#1{#1} +\providecommand\HyField@AuxAddToFields[1]{} +\providecommand\HyField@AuxAddToCoFields[2]{} +\citation{Page Replacement Algorithms} +\bibcite{Page Replacement Algorithms}{1} +\@writefile{toc}{\contentsline {section}{\numberline {1}Introduction}{1}{section.1}\protected@file@percent } +\@writefile{toc}{\contentsline {paragraph}{First in First out}{1}{section*.1}\protected@file@percent } +\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces PageFault.java file}}{1}{figure.1}\protected@file@percent } +\@writefile{toc}{\contentsline {paragraph}{Mapping}{1}{section*.2}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {2}Finishing comments}{1}{section.2}\protected@file@percent } diff --git a/EOPSY/lab4/report/report.fdb_latexmk b/EOPSY/lab4/report/report.fdb_latexmk new file mode 100644 index 00000000..da7087c5 --- /dev/null +++ b/EOPSY/lab4/report/report.fdb_latexmk @@ -0,0 +1,87 @@ +# Fdb version 3 +["pdflatex"] 1651819250 "report.tex" "report.pdf" "report" 1651819251 + "/etc/texmf/web2c/texmf.cnf" 1649511474 475 c0e671620eb5563b2130f56340a5fde8 "" + "/usr/share/texlive/texmf-dist/fonts/map/fontname/texfonts.map" 1577235249 3524 cb3e574dea2d1052e39280babc910dc8 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/jknappen/ec/tcti1000.tfm" 1136768653 2048 3777f70f4372b17e2d3fda2b5684af05 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmbx10.tfm" 1136768653 1328 c834bbb027764024c09d3d2bf908b5f0 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmbx12.tfm" 1136768653 1324 c910af8c371558dc20f2d7822f66fe64 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmmi12.tfm" 1136768653 1524 4414a8315f39513458b80dfc63bff03a "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmmi6.tfm" 1136768653 1512 f21f83efb36853c0b70002322c1ab3ad "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmmi8.tfm" 1136768653 1520 eccf95517727cb11801f4f1aee3a21b4 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmr12.tfm" 1136768653 1288 655e228510b4c2a1abe905c368440826 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmr17.tfm" 1136768653 1292 296a67155bdbfc32aa9c636f21e91433 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmr6.tfm" 1136768653 1300 b62933e007d01cfd073f79b963c01526 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmr8.tfm" 1136768653 1292 21c1c5bfeaebccffdb478fd231a0997d "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmsy10.tfm" 1136768653 1124 6c73e740cf17375f03eec0ee63599741 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmsy6.tfm" 1136768653 1116 933a60c408fc0a863a92debe84b2d294 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmsy8.tfm" 1136768653 1120 8b7d695260f3cff42e636090a8002094 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmti10.tfm" 1136768653 1480 aa8e34af0eb6a2941b776984cf1dfdc4 "" + "/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx10.pfb" 1248133631 34811 78b52f49e893bcba91bd7581cdc144c0 "" + "/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx12.pfb" 1248133631 32080 340ef9bf63678554ee606688e7b5339d "" + "/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi10.pfb" 1248133631 36299 5f9df58c2139e7edcf37c8fca4bd384d "" + "/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb" 1248133631 35752 024fb6c41858982481f6968b5fc26508 "" + "/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr12.pfb" 1248133631 32722 d7379af29a190c3f453aba36302ff5a9 "" + "/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr17.pfb" 1248133631 32362 179c33bbf43f19adbb3825bb4e36e57a "" + "/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy10.pfb" 1248133631 32569 5e5ddc8df908dea60932f3c484a54c0d "" + "/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmti10.pfb" 1248133631 37944 359e864bd06cde3b1cf57bb20757fb06 "" + "/usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii" 1461363279 71627 94eb9990bed73c364d7f53f960cc8c5b "" + "/usr/share/texlive/texmf-dist/tex/generic/atbegshi/atbegshi.sty" 1575674566 24708 5584a51a7101caf7e6bbf1fc27d8f7b1 "" + "/usr/share/texlive/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty" 1576625341 40635 c40361e206be584d448876bba8a64a3b "" + "/usr/share/texlive/texmf-dist/tex/generic/bitset/bitset.sty" 1576016050 33961 6b5c75130e435b2bfdb9f480a09a39f9 "" + "/usr/share/texlive/texmf-dist/tex/generic/etexcmds/etexcmds.sty" 1576625273 7734 b98cbb34c81f667027c1e3ebdbfce34b "" + "/usr/share/texlive/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty" 1576625223 8371 9d55b8bd010bc717624922fb3477d92e "" + "/usr/share/texlive/texmf-dist/tex/generic/iftex/iftex.sty" 1573336935 6902 30fdaf7dc5636b8e3afa306210c45cae "" + "/usr/share/texlive/texmf-dist/tex/generic/iftex/ifvtex.sty" 1572645307 1057 525c2192b5febbd8c1f662c9468335bb "" + "/usr/share/texlive/texmf-dist/tex/generic/infwarerr/infwarerr.sty" 1575499628 8356 7bbb2c2373aa810be568c29e333da8ed "" + "/usr/share/texlive/texmf-dist/tex/generic/intcalc/intcalc.sty" 1576625065 31769 002a487f55041f8e805cfbf6385ffd97 "" + "/usr/share/texlive/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty" 1576878844 5412 d5a2436094cd7be85769db90f29250a6 "" + "/usr/share/texlive/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty" 1576624944 13807 952b0226d4efca026f0e19dd266dcc22 "" + "/usr/share/texlive/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty" 1576624883 18552 1e1cc7b75da0dfaacce7cdcb27d306bf "" + "/usr/share/texlive/texmf-dist/tex/generic/pdfescape/pdfescape.sty" 1576015897 19007 15924f7228aca6c6d184b115f4baa231 "" + "/usr/share/texlive/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty" 1576624663 7008 f92eaa0a3872ed622bbf538217cd2ab7 "" + "/usr/share/texlive/texmf-dist/tex/latex/atveryend/atveryend.sty" 1576191570 19336 ce7ae9438967282886b3b036cfad1e4d "" + "/usr/share/texlive/texmf-dist/tex/latex/auxhook/auxhook.sty" 1576625391 3935 57aa3c3e203a5c2effb4d2bd2efbc323 "" + "/usr/share/texlive/texmf-dist/tex/latex/base/article.cls" 1580683321 20023 e427dd9e17e239bf926ef3aab67fe35e "" + "/usr/share/texlive/texmf-dist/tex/latex/base/omlcmr.fd" 1580683321 2471 93c7889092ef3d83d375b915c5381dfe "" + "/usr/share/texlive/texmf-dist/tex/latex/base/omscmr.fd" 1580683321 2470 59e43b502a8bea3a12f4954945302e40 "" + "/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo" 1580683321 8446 9874cccac5fee462272c582807dbbf56 "" + "/usr/share/texlive/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty" 1579991033 13886 d1306dcf79a944f6988e688c1785f9ce "" + "/usr/share/texlive/texmf-dist/tex/latex/float/float.sty" 1137110151 6749 16d2656a1984957e674b149555f1ea1d "" + "/usr/share/texlive/texmf-dist/tex/latex/geometry/geometry.sty" 1578002852 41601 9cf6c5257b1bc7af01a58859749dd37a "" + "/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg" 1465944070 1224 978390e9c2234eab29404bc21b268d1e "" + "/usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def" 1515537368 17334 520b9b85ad8a2a48eda3f643e27a5179 "" + "/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty" 1580683321 16932 04729abe63b66ec59ea56edcd722b058 "" + "/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty" 1580683321 9067 1b996612394a52e1efe89c8bfe8a5892 "" + "/usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty" 1580683321 2590 e3b24ff953e5b58d924f163d25380312 "" + "/usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty" 1580683321 3976 d7fa7d81d2870d509d25b17d0245e735 "" + "/usr/share/texlive/texmf-dist/tex/latex/hycolor/hycolor.sty" 1580250785 17914 4c28a13fc3d975e6e81c9bea1d697276 "" + "/usr/share/texlive/texmf-dist/tex/latex/hyperref/hpdftex.def" 1579642962 50630 3d9728faf8630190cf601ce2cbe470d9 "" + "/usr/share/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty" 1579642962 238752 60dd338d71b6a4ab2192131f73dc908b "" + "/usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty" 1579642962 13244 0070bcab7b5a88187847128d22faf4d8 "" + "/usr/share/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def" 1579642962 14134 32b36577d311ddb6522413c7581ee968 "" + "/usr/share/texlive/texmf-dist/tex/latex/kvoptions/kvoptions.sty" 1575152344 22520 c4c2dab203104295e1e618be7e5c0f5b "" + "/usr/share/texlive/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def" 1580854751 25404 9d60f463a00d154207ec0048dee27cf0 "" + "/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg" 1279039959 678 4792914a8f45be57bb98413425e4c7af "" + "/usr/share/texlive/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty" 1575499565 5766 13a9e8766c47f30327caf893ece86ac8 "" + "/usr/share/texlive/texmf-dist/tex/latex/listings/listings.cfg" 1568236792 1830 bbaba8afaf42cc048ec4d4ff73467521 "" + "/usr/share/texlive/texmf-dist/tex/latex/listings/listings.sty" 1568236792 80511 830f3f1d3ab7448dd84233e9c2f6462c "" + "/usr/share/texlive/texmf-dist/tex/latex/listings/lstlang1.sty" 1568236792 204271 6a0ce6b8dafb6c4a13b9036ab1717c77 "" + "/usr/share/texlive/texmf-dist/tex/latex/listings/lstmisc.sty" 1568236792 77022 32914f01b528131c47be2a1040d3856d "" + "/usr/share/texlive/texmf-dist/tex/latex/pdftexcmds/pdftexcmds.sty" 1574631863 19963 36fd8e818f9f0f32e2db8413d4970122 "" + "/usr/share/texlive/texmf-dist/tex/latex/refcount/refcount.sty" 1576624809 9878 9e94e8fa600d95f9c7731bb21dfb67a4 "" + "/usr/share/texlive/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty" 1575674187 9715 b051d5b493d9fe5f4bc251462d039e5f "" + "/usr/share/texlive/texmf-dist/tex/latex/url/url.sty" 1388531844 12796 8edb7d69a20b857904dd0ea757c14ec9 "" + "/usr/share/texlive/texmf-dist/web2c/texmf.cnf" 1581979058 38841 ce3692aa899bb693b90b87eaa5d4d84e "" + "/usr/share/texmf/fonts/enc/dvips/cm-super/cm-super-ts1.enc" 1565080000 2900 1537cc8184ad1792082cd229ecc269f4 "" + "/usr/share/texmf/fonts/type1/public/cm-super/sfti1000.pfb" 1565080000 186554 e8f0fa8ca05e038f257a06405232745f "" + "/usr/share/texmf/web2c/texmf.cnf" 1581979058 38841 ce3692aa899bb693b90b87eaa5d4d84e "" + "/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map" 1649511498 4770781 1ed1abab22da9c3e2cc82e4db562318b "" + "/var/lib/texmf/web2c/pdftex/pdflatex.fmt" 1649511522 8256308 efb305160d4d659dcd0c4df67bdfa340 "" + "report.aux" 1651819250 1291 2ad45efb724135c31d626d6936d14b17 "pdflatex" + "report.out" 1651819250 100 25fdc042cd41a4fc702071f1ee9cd704 "pdflatex" + "report.tex" 1651819249 1665 7fe501939e4c3d08e14885cab811844d "" + (generated) + "report.pdf" + "report.aux" + "report.out" + "report.log" diff --git a/EOPSY/lab4/report/report.fls b/EOPSY/lab4/report/report.fls new file mode 100644 index 00000000..bdb58bff --- /dev/null +++ b/EOPSY/lab4/report/report.fls @@ -0,0 +1,142 @@ +PWD /home/kuchy/Zlew/Studia/NieNotatki/Projekty/nie_inzynierka/Programowanie/EOPSY/eopsy_rudnicki_lab/lab4/report +INPUT /etc/texmf/web2c/texmf.cnf +INPUT /usr/share/texmf/web2c/texmf.cnf +INPUT /usr/share/texlive/texmf-dist/web2c/texmf.cnf +INPUT /var/lib/texmf/web2c/pdftex/pdflatex.fmt +INPUT report.tex +OUTPUT report.log +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/article.cls +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/article.cls +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/size10.clo +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/size10.clo +INPUT /usr/share/texlive/texmf-dist/tex/latex/listings/listings.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/listings/listings.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/listings/lstmisc.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/listings/lstmisc.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/listings/listings.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/listings/listings.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/iftex/iftex.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/iftex/iftex.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pdftexcmds/pdftexcmds.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pdftexcmds/pdftexcmds.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/infwarerr/infwarerr.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/infwarerr/infwarerr.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/pdfescape/pdfescape.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/pdfescape/pdfescape.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/hycolor/hycolor.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/hycolor/hycolor.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/auxhook/auxhook.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/auxhook/auxhook.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/kvoptions/kvoptions.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/kvoptions/kvoptions.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def +INPUT /usr/share/texlive/texmf-dist/tex/generic/intcalc/intcalc.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/intcalc/intcalc.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/etexcmds/etexcmds.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/etexcmds/etexcmds.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/url/url.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/url/url.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/bitset/bitset.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/bitset/bitset.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/atbegshi/atbegshi.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/atbegshi/atbegshi.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/hpdftex.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/hpdftex.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/atveryend/atveryend.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/atveryend/atveryend.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/float/float.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/float/float.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/geometry/geometry.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/geometry/geometry.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/iftex/ifvtex.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/iftex/ifvtex.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def +INPUT report.aux +INPUT report.aux +OUTPUT report.aux +INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/refcount/refcount.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/refcount/refcount.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty +INPUT report.out +INPUT report.out +INPUT report.out +INPUT report.out +OUTPUT report.pdf +INPUT ./report.out +INPUT ./report.out +OUTPUT report.out +INPUT /usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii +INPUT /usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii +INPUT /usr/share/texlive/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +INPUT /usr/share/texlive/texmf-dist/fonts/map/fontname/texfonts.map +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmr17.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmr12.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmr8.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmr6.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmmi12.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmmi8.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmmi6.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmsy10.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmsy8.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmsy6.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmr12.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmbx12.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmbx10.tfm +INPUT /usr/share/texlive/texmf-dist/tex/latex/listings/lstlang1.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/listings/lstlang1.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/omscmr.fd +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/omscmr.fd +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmti10.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/jknappen/ec/tcti1000.tfm +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/omlcmr.fd +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/omlcmr.fd +INPUT /var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map +INPUT report.aux +INPUT ./report.out +INPUT ./report.out +INPUT /usr/share/texmf/fonts/enc/dvips/cm-super/cm-super-ts1.enc +INPUT /usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx10.pfb +INPUT /usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx12.pfb +INPUT /usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi10.pfb +INPUT /usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb +INPUT /usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr12.pfb +INPUT /usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr17.pfb +INPUT /usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy10.pfb +INPUT /usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmti10.pfb +INPUT /usr/share/texmf/fonts/type1/public/cm-super/sfti1000.pfb diff --git a/EOPSY/lab4/report/report.log b/EOPSY/lab4/report/report.log new file mode 100644 index 00000000..8d82079b --- /dev/null +++ b/EOPSY/lab4/report/report.log @@ -0,0 +1,340 @@ +This is pdfTeX, Version 3.14159265-2.6-1.40.20 (TeX Live 2019/Debian) (preloaded format=pdflatex 2022.4.9) 6 MAY 2022 08:40 +entering extended mode + restricted \write18 enabled. + file:line:error style messages enabled. + %&-line parsing enabled. +**report.tex +(./report.tex +LaTeX2e <2020-02-02> patch level 2 +L3 programming layer <2020-02-14> (/usr/share/texlive/texmf-dist/tex/latex/base/article.cls +Document Class: article 2019/12/20 v1.4l Standard LaTeX document class +(/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo +File: size10.clo 2019/12/20 v1.4l Standard LaTeX file (size option) +) +\c@part=\count167 +\c@section=\count168 +\c@subsection=\count169 +\c@subsubsection=\count170 +\c@paragraph=\count171 +\c@subparagraph=\count172 +\c@figure=\count173 +\c@table=\count174 +\abovecaptionskip=\skip47 +\belowcaptionskip=\skip48 +\bibindent=\dimen134 +) (/usr/share/texlive/texmf-dist/tex/latex/listings/listings.sty (/usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty +Package: keyval 2014/10/28 v1.15 key=value parser (DPC) +\KV@toks@=\toks14 +) +\lst@mode=\count175 +\lst@gtempboxa=\box45 +\lst@token=\toks15 +\lst@length=\count176 +\lst@currlwidth=\dimen135 +\lst@column=\count177 +\lst@pos=\count178 +\lst@lostspace=\dimen136 +\lst@width=\dimen137 +\lst@newlines=\count179 +\lst@lineno=\count180 +\lst@maxwidth=\dimen138 + (/usr/share/texlive/texmf-dist/tex/latex/listings/lstmisc.sty +File: lstmisc.sty 2019/09/10 1.8c (Carsten Heinz) +\c@lstnumber=\count181 +\lst@skipnumbers=\count182 +\lst@framebox=\box46 +) (/usr/share/texlive/texmf-dist/tex/latex/listings/listings.cfg +File: listings.cfg 2019/09/10 1.8c listings configuration +)) +Package: listings 2019/09/10 1.8c (Carsten Heinz) + (/usr/share/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty +Package: hyperref 2020/01/14 v7.00d Hypertext links for LaTeX + (/usr/share/texlive/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty +Package: ltxcmds 2019/12/15 v1.24 LaTeX kernel commands for general use (HO) +) (/usr/share/texlive/texmf-dist/tex/generic/iftex/iftex.sty +Package: iftex 2019/11/07 v1.0c TeX engine tests +) (/usr/share/texlive/texmf-dist/tex/latex/pdftexcmds/pdftexcmds.sty +Package: pdftexcmds 2019/11/24 v0.31 Utility functions of pdfTeX for LuaTeX (HO) + (/usr/share/texlive/texmf-dist/tex/generic/infwarerr/infwarerr.sty +Package: infwarerr 2019/12/03 v1.5 Providing info/warning/error messages (HO) +) +Package pdftexcmds Info: \pdf@primitive is available. +Package pdftexcmds Info: \pdf@ifprimitive is available. +Package pdftexcmds Info: \pdfdraftmode found. +) (/usr/share/texlive/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty +Package: kvsetkeys 2019/12/15 v1.18 Key value parser (HO) +) (/usr/share/texlive/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty +Package: kvdefinekeys 2019-12-19 v1.6 Define keys (HO) +) (/usr/share/texlive/texmf-dist/tex/generic/pdfescape/pdfescape.sty +Package: pdfescape 2019/12/09 v1.15 Implements pdfTeX's escape features (HO) +) (/usr/share/texlive/texmf-dist/tex/latex/hycolor/hycolor.sty +Package: hycolor 2020-01-27 v1.10 Color options for hyperref/bookmark (HO) +) (/usr/share/texlive/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty +Package: letltxmacro 2019/12/03 v1.6 Let assignment for LaTeX macros (HO) +) (/usr/share/texlive/texmf-dist/tex/latex/auxhook/auxhook.sty +Package: auxhook 2019-12-17 v1.6 Hooks for auxiliary files (HO) +) (/usr/share/texlive/texmf-dist/tex/latex/kvoptions/kvoptions.sty +Package: kvoptions 2019/11/29 v3.13 Key value format for package options (HO) +) +\@linkdim=\dimen139 +\Hy@linkcounter=\count183 +\Hy@pagecounter=\count184 + (/usr/share/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def +File: pd1enc.def 2020/01/14 v7.00d Hyperref: PDFDocEncoding definition (HO) +Now handling font encoding PD1 ... +... no UTF-8 mapping file for font encoding PD1 +) (/usr/share/texlive/texmf-dist/tex/generic/intcalc/intcalc.sty +Package: intcalc 2019/12/15 v1.3 Expandable calculations with integers (HO) +) (/usr/share/texlive/texmf-dist/tex/generic/etexcmds/etexcmds.sty +Package: etexcmds 2019/12/15 v1.7 Avoid name clashes with e-TeX commands (HO) +) +\Hy@SavedSpaceFactor=\count185 +\pdfmajorversion=\count186 +Package hyperref Info: Hyper figures OFF on input line 4547. +Package hyperref Info: Link nesting OFF on input line 4552. +Package hyperref Info: Hyper index ON on input line 4555. +Package hyperref Info: Plain pages OFF on input line 4562. +Package hyperref Info: Backreferencing OFF on input line 4567. +Package hyperref Info: Implicit mode ON; LaTeX internals redefined. +Package hyperref Info: Bookmarks ON on input line 4800. +\c@Hy@tempcnt=\count187 + (/usr/share/texlive/texmf-dist/tex/latex/url/url.sty +\Urlmuskip=\muskip16 +Package: url 2013/09/16 ver 3.4 Verb mode for urls, etc. +) +LaTeX Info: Redefining \url on input line 5159. +\XeTeXLinkMargin=\dimen140 + (/usr/share/texlive/texmf-dist/tex/generic/bitset/bitset.sty +Package: bitset 2019/12/09 v1.3 Handle bit-vector datatype (HO) + (/usr/share/texlive/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty +Package: bigintcalc 2019/12/15 v1.5 Expandable calculations on big integers (HO) +)) +\Fld@menulength=\count188 +\Field@Width=\dimen141 +\Fld@charsize=\dimen142 +Package hyperref Info: Hyper figures OFF on input line 6430. +Package hyperref Info: Link nesting OFF on input line 6435. +Package hyperref Info: Hyper index ON on input line 6438. +Package hyperref Info: backreferencing OFF on input line 6445. +Package hyperref Info: Link coloring OFF on input line 6450. +Package hyperref Info: Link coloring with OCG OFF on input line 6455. +Package hyperref Info: PDF/A mode OFF on input line 6460. +LaTeX Info: Redefining \ref on input line 6500. +LaTeX Info: Redefining \pageref on input line 6504. + (/usr/share/texlive/texmf-dist/tex/generic/atbegshi/atbegshi.sty +Package: atbegshi 2019/12/05 v1.19 At begin shipout hook (HO) +) +\Hy@abspage=\count189 +\c@Item=\count190 +\c@Hfootnote=\count191 +) +Package hyperref Info: Driver (autodetected): hpdftex. + (/usr/share/texlive/texmf-dist/tex/latex/hyperref/hpdftex.def +File: hpdftex.def 2020/01/14 v7.00d Hyperref driver for pdfTeX + (/usr/share/texlive/texmf-dist/tex/latex/atveryend/atveryend.sty +Package: atveryend 2019-12-11 v1.11 Hooks at the very end of document (HO) +Package atveryend Info: \enddocument detected (standard20110627). +) +\Fld@listcount=\count192 +\c@bookmark@seq@number=\count193 + (/usr/share/texlive/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty +Package: rerunfilecheck 2019/12/05 v1.9 Rerun checks for auxiliary files (HO) + (/usr/share/texlive/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty +Package: uniquecounter 2019/12/15 v1.4 Provide unlimited unique counter (HO) +) +Package uniquecounter Info: New unique counter `rerunfilecheck' on input line 286. +) +\Hy@SectionHShift=\skip49 +) (/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty +Package: graphicx 2019/11/30 v1.2a Enhanced LaTeX Graphics (DPC,SPQR) + (/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty +Package: graphics 2019/11/30 v1.4a Standard LaTeX Graphics (DPC,SPQR) + +(/usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty +Package: trig 2016/01/03 v1.10 sin cos tan (DPC) +) (/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg +File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration +) +Package graphics Info: Driver file: pdftex.def on input line 105. + (/usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def +File: pdftex.def 2018/01/08 v1.0l Graphics/color driver for pdftex +)) +\Gin@req@height=\dimen143 +\Gin@req@width=\dimen144 +) (/usr/share/texlive/texmf-dist/tex/latex/float/float.sty +Package: float 2001/11/08 v1.3d Float enhancements (AL) +\c@float@type=\count194 +\float@exts=\toks16 +\float@box=\box47 +\@float@everytoks=\toks17 +\@floatcapt=\box48 +) (/usr/share/texlive/texmf-dist/tex/latex/geometry/geometry.sty +Package: geometry 2020/01/02 v5.9 Page Geometry + (/usr/share/texlive/texmf-dist/tex/generic/iftex/ifvtex.sty +Package: ifvtex 2019/10/25 v1.7 ifvtex legacy package. Use iftex instead. +) +\Gm@cnth=\count195 +\Gm@cntv=\count196 +\c@Gm@tempcnt=\count197 +\Gm@bindingoffset=\dimen145 +\Gm@wd@mp=\dimen146 +\Gm@odd@mp=\dimen147 +\Gm@even@mp=\dimen148 +\Gm@layoutwidth=\dimen149 +\Gm@layoutheight=\dimen150 +\Gm@layouthoffset=\dimen151 +\Gm@layoutvoffset=\dimen152 +\Gm@dimlist=\toks18 +) (/usr/share/texlive/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def +File: l3backend-pdfmode.def 2020-02-03 L3 backend support: PDF mode +\l__kernel_color_stack_int=\count198 +\l__pdf_internal_box=\box49 +) (./report.aux) +\openout1 = `report.aux'. + +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 7. +LaTeX Font Info: ... okay on input line 7. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 7. +LaTeX Font Info: ... okay on input line 7. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 7. +LaTeX Font Info: ... okay on input line 7. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 7. +LaTeX Font Info: ... okay on input line 7. +LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 7. +LaTeX Font Info: ... okay on input line 7. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 7. +LaTeX Font Info: ... okay on input line 7. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 7. +LaTeX Font Info: ... okay on input line 7. +LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 7. +LaTeX Font Info: ... okay on input line 7. +\c@lstlisting=\count199 +\AtBeginShipoutBox=\box50 +Package hyperref Info: Link coloring OFF on input line 7. + (/usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty +Package: nameref 2019/09/16 v2.46 Cross-referencing by name of section + (/usr/share/texlive/texmf-dist/tex/latex/refcount/refcount.sty +Package: refcount 2019/12/15 v3.6 Data extraction from label references (HO) +) (/usr/share/texlive/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty +Package: gettitlestring 2019/12/15 v1.6 Cleanup title references (HO) +) +\c@section@level=\count266 +) +LaTeX Info: Redefining \ref on input line 7. +LaTeX Info: Redefining \pageref on input line 7. +LaTeX Info: Redefining \nameref on input line 7. + (./report.out) (./report.out) +\@outlinefile=\write3 +\openout3 = `report.out'. + + (/usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii +[Loading MPS to PDF converter (version 2006.09.02).] +\scratchcounter=\count267 +\scratchdimen=\dimen153 +\scratchbox=\box51 +\nofMPsegments=\count268 +\nofMParguments=\count269 +\everyMPshowfont=\toks19 +\MPscratchCnt=\count270 +\MPscratchDim=\dimen154 +\MPnumerator=\count271 +\makeMPintoPDFobject=\count272 +\everyMPtoPDFconversion=\toks20 +) (/usr/share/texlive/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty +Package: epstopdf-base 2020-01-24 v2.11 Base part for package epstopdf +Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 485. + (/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Live +)) +*geometry* driver: auto-detecting +*geometry* detected driver: pdftex +*geometry* verbose mode - [ preamble ] result: +* driver: pdftex +* paper: +* layout: +* layoutoffset:(h,v)=(0.0pt,0.0pt) +* modes: +* h-part:(L,W,R)=(90.3375pt, 433.62001pt, 90.3375pt) +* v-part:(T,H,B)=(90.3375pt, 614.295pt, 90.3375pt) +* \paperwidth=614.295pt +* \paperheight=794.96999pt +* \textwidth=433.62001pt +* \textheight=614.295pt +* \oddsidemargin=18.0675pt +* \evensidemargin=18.0675pt +* \topmargin=-18.9325pt +* \headheight=12.0pt +* \headsep=25.0pt +* \topskip=10.0pt +* \footskip=30.0pt +* \marginparwidth=65.0pt +* \marginparsep=11.0pt +* \columnsep=10.0pt +* \skip\footins=9.0pt plus 4.0pt minus 2.0pt +* \hoffset=0.0pt +* \voffset=0.0pt +* \mag=1000 +* \@twocolumnfalse +* \@twosidefalse +* \@mparswitchfalse +* \@reversemarginfalse +* (1in=72.27pt=25.4mm, 1cm=28.453pt) + +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <12> on input line 12. +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <8> on input line 12. +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <6> on input line 12. +(/usr/share/texlive/texmf-dist/tex/latex/listings/lstlang1.sty +File: lstlang1.sty 2019/09/10 1.8c listings language file +) +LaTeX Font Info: Trying to load font information for OMS+cmr on input line 20. + (/usr/share/texlive/texmf-dist/tex/latex/base/omscmr.fd +File: omscmr.fd 2019/12/16 v2.5j Standard LaTeX font definitions +) +LaTeX Font Info: Font shape `OMS/cmr/m/n' in size <10> not available +(Font) Font shape `OMS/cmsy/m/n' tried instead on input line 20. +LaTeX Font Info: Trying to load font information for OML+cmr on input line 25. + (/usr/share/texlive/texmf-dist/tex/latex/base/omlcmr.fd +File: omlcmr.fd 2019/12/16 v2.5j Standard LaTeX font definitions +) +LaTeX Font Info: Font shape `OML/cmr/m/it' in size <10> not available +(Font) Font shape `OML/cmm/m/it' tried instead on input line 25. +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <7> on input line 27. +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <5> on input line 27. +Package atveryend Info: Empty hook `BeforeClearDocument' on input line 48. + [1 + +{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}pdfTeX warning (ext4): destination with the same identifier (name{figure.1}) has been already used, duplicate ignored + +\AtBegShi@Output ...ipout \box \AtBeginShipoutBox + \fi \fi +l.48 \end{document} + ] +Package atveryend Info: Empty hook `AfterLastShipout' on input line 48. + (./report.aux) +Package atveryend Info: Executing hook `AtVeryEndDocument' on input line 48. +Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 48. +Package rerunfilecheck Info: File `report.out' has not changed. +(rerunfilecheck) Checksum: 25FDC042CD41A4FC702071F1EE9CD704;100. +Package atveryend Info: Empty hook `AtVeryVeryEnd' on input line 48. + ) +Here is how much of TeX's memory you used: + 7424 strings out of 481239 + 110306 string characters out of 5920378 + 570541 words of memory out of 5000000 + 22566 multiletter control sequences out of 15000+600000 + 537009 words of font info for 39 fonts, out of 8000000 for 9000 + 1141 hyphenation exceptions out of 8191 + 34i,6n,42p,215b,1492s stack positions out of 5000i,500n,10000p,200000b,80000s +{/usr/share/texmf/fonts/enc/dvips/cm-super/cm-super-ts1.enc} +Output written on report.pdf (1 page, 96710 bytes). +PDF statistics: + 85 PDF objects out of 1000 (max. 8388607) + 72 compressed objects within 1 object stream + 24 named destinations out of 1000 (max. 500000) + 17 words of extra memory for PDF output out of 10000 (max. 10000000) + diff --git a/EOPSY/lab4/report/report.out b/EOPSY/lab4/report/report.out new file mode 100644 index 00000000..a9178fc8 --- /dev/null +++ b/EOPSY/lab4/report/report.out @@ -0,0 +1,2 @@ +\BOOKMARK [1][-]{section.1}{Introduction}{}% 1 +\BOOKMARK [1][-]{section.2}{Finishing comments}{}% 2 diff --git a/EOPSY/lab4/report/report.pdf b/EOPSY/lab4/report/report.pdf new file mode 100644 index 0000000000000000000000000000000000000000..166a635e5e4c31a2169d62678cc61d10a81a3e66 GIT binary patch literal 96710 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Νx@Gw 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%0DvRB-o zh~d+8u}YxcfND~VLQt#)2SDdc#!5xg|Bv!0od1LlKX6YIG?cWpZCo*}9dSkXkub)G4Nq5Jb`u|vsw!$*tXw_XAG#rc zm`Q|nu*7%sd&tLYS0>(G{BMzRI3IQgze0{FhK?X-5@0spHm)zZ>-ukoMAjXA@1m1B z{GXgtzK#b;G+d`ywasp)9$j1>MG z*B!ZEw3%j?SehER517}W65BuT&5Gzz8&*2i_?pkMN{0rrMJ8=xpd*@a(P9i`ZUA(10cd3liTI6 zFI=3B)$&t8Q%VdWzMiUVzMv%Hn(j!Ro?};$`RZPIZzfDMsbD?Ljg5!6RC+f-c(j*^ z4^x)g69(r@ULzoh6U>flM-iUf)~DxW>*N`n6;<$>CUSS;eV z+YA)A?lfW_kH%F0VSw85sx>D~f7nWLZ~FRoN`PnO-#Lv{miL2I1NZ?MdLtgPRW4A+KeAKshx0*QjjgBs?$JyoSL+ z6(AKJEi>cX#NP5FvER&i0}aIHn;h1qK&r6%2P#v2Q+96F!?8mdYI5Qf)V&qY!K5PG zX(*d2Zq5oJ35W~0T8-rZV&c}fE0aV(mY>kOx*xUq7lIpgU=9dIi*2+e%*RUc6w5`NqOQb z3dD&+Zwz48GqVJpZC}AFddZa>2EGEc!xN%GHWplv)i42^!Qp!8--V(Qh_*rgq~*_d zGjD#$`wUp6E!3op^kM{-+0vFwYM7(+h9_Ul^S-dJ7SrX@*T*U?T7*9}b^ruV25KE3 zl2k77`kRq@SzzYWmL*2uefko55XTeg^2Iw7@lDe0P2_Iq(?w+6-&|x^Kvi^*0T^eK z-1^eXWcOl8r}E_i)Hy&Zc@Tn~qsx2=+lNO(Fa(7JlriDDr85ueJ9IE2Z+RI#HjRZ% zrwom>qamD&^O%OH)m@!{+bF)8kuqk(ikE-dz~Q>Ngc8TMel%xB|Hrj71;lz1WmYgMh_lq|!(0+j@McB}^b z6e3KNjyJ#$wf0MoIohJUlH(x$scQ04ZqZYnpd1sBq|dgg7fXXKE)Egkg7i%m?ShcL zZSAlErXpk2V}E7>mAzNJvy0-{pZAmu?gOw;p((otGHr<=sAb4T^~{II(N+jaWjbs2 z!^Ic%Nh7x*(W}d2uuGj{KRe`)n{$yh=oboBd#+5FFE{)|HyYF2zB%Y`wn02p01+gj zOfTkqcIe9i`K-nelIb$U>I+RpyLpd6P*j}km~>LVOuRx%4_uhaL7ttjkZ4UfMYdhS zYs-+EVi_8dbi1WhL2~b5O9@{UzYDkV|J;0xuHp zD+lw)sGb?zMcNY*j-FAf!+O>vcci#4ymF^I)@PUwYzepQ3Hyz}uoYbin$^_LY{83+ zO(2SUTMkP}do+^T5Yw?B+_8K45Ph+66C8FDd#Y14GN$h~?z5%_tWoWvvWXA49}kBz z9T=ENoTB~`>x6f$R}9vx3H7kCZ99;-d#~E!BD&4gd{-*N-fkDpEk_!oRan%4Uc~Wb zr`k(rhk(Kv?^f(in`v#j?(PTl$_E7k58KHFS;B!2ag~5JJnrXMY2o1=P}HF+L+{c< za{vcrE04DJSt)*jMUOXBfhmgx_GGr1w}V6}G@}{~d>q;*b*|&g14oN#b-9TbnkIQQq>{E~E+Kz(uxk%{=L&`gzDbkvDmAjK9M;lp@S?97g?i z$s(0>6@bzCl!bKwHj+Cifsdd;J_>e;Z~eF~9s6nH!iTXYSF;fhs_3`{HiB6o)yUA@ zt%QR_S{T1-W{{xsEwFn1R9cXMMzz4gyCwr}$E$|qjYHPMBq@Qs3h96ud#8{kdLvfm65~_lc)@jj1D{g4Fv>ahbm%7LN ziTYNDf#SWuPU!g*paDrw4w~iRazD{111028g)QnUK#S!faXl7|xD{vN0Spq{KUldO zV*_l8SfK-%--4Jdh$ei^G=E8v`>M+>O4rPPUC~;I^0US^Ge`}GiM~hIF{n;b1~0qq zGtUo>3<~>;ZkwXt+yUQx)$%h`F0>!VT$B+laV$7Y1^Ry)d*|R@f@obdw(b04+u5;g z+s-exc5K_;v2EMdj=hr|Tl?kQ^X{wj>Yl1|tEQ@FdRBMOn)##WTixHc2vXz<#-slB z?q99ox#KlENWzLcS#W|r(J0<(^GJYC5RaHouJx=fT>OZyx*K31QWK08CplhdS)p7d z-xZ#W|83gL_k}S?v84>#k6X#55v#(PD5Zwm^rJs$|GAl6D43+&ww>`r4+^p*83uF$ z9qo|BI)oqxQkfXb3nC&zKp7tMQkSYk%U7$HBQ;ha zsa6}?8D=nihF>1PZt}~SNhE^aUg&NXS7Rr=Z>p54EfkQ~Wm)>ld1lGWrjxNpaMH%e zvncSiWUC>eudZ2b3L06(9H=$(JEMfo{YN60nlb(p9oB*Noj(qy=NKxY&#w>gIt}ZB(PHHKB#Ozk*^?YJ=sC1XP>;%(g5t?z7YJSKk0aV0zMNe3f9_3Bk*o9Z(3f>EXJt2Qh$z#Q8&VXTDrq7&u_dfoiAOhM6tHrFCfjKSGsltj}cn);Ak7R1O=~$^wnB<{TP4lTrn>}0~yb-#~gaJ%Xco|TUlJg6pF{l zW>Dqc9nXYhwmx>MnL)_rx)D~}52Z21+hl_tO31aJc8j*$QixB4A8gT=cpCG#eo7YG zG9U(>Jwj0^Ix|#gpxB~TmD-%Y)rfZ|La*4juuOY7o|9C}j#5Rb60=i;Q0XHh9;wcr zt!vML(=Fest<&V9l%kENCt^5yiKr%=G{r-c**uY-h`1hybGgXG2+H=?-gl&T{*BUp zta==>zohOduT<$?K1l}Mc3phXJ}byiTfEy&N?#PpS!9eoR_R(4nuFp-+Qs^MksONA z=2+lHD>&6n_j@uj7-%n>l)LCbq2II&7df@Z9&WDLA@@;m%J}OhBU?E$Cwn{-$)2=b zyHa8+>XPn#pO(n@49VcdPKut#1V!^KCB`9Y9=|sz%1n|Vb#z*;W4IFf2i>_bcrItt zL@Z>6GWLG;^oRn?Q$xcAhC{zvT5B7u-LBhig?ECU#*MzDR>k_aWuR62T!fq7R-U~3 zq3~i-qwaP>SM=0Pt?g(>FoskA=8ef0sSjQIzm$Ec@tA-8%=aftbE({@*)`I5W2i*s zb|R-^a2l-$7PPs%SiOZ$SnQZwU@F`|Q*QMrx}Ug!%1|ToWz5GN;K*!=5yV5#(#MCN zBK*Lu0{dY>8e15^>45efDP|adPjcGI<}xFC%l2^Rh!wt7Fio+_*+^ktvVQQnc3fZ` zeUG#D$c7n@{ak`Q#<>5pJ@;F927;k!iz*1LMh>8|T6r*3H?w&`;tG}ZLjZ!=D2{H^ zSfO@g|7YaS#0>9@`Chn1eDmhG8f&*l?yjLs8kT_3mQU>}pjZLBk!}gPb_oyHLXeo8 zL3(BVbRWFVlNyx@ei0HyXWHzue|hml(Mx*a9YYA{pD_=~50h}4+V^I<_2wy{p=F5mjl$vv8Vpmoi_+Uyexr%f@2Im&9R-^#$ z9p7ICJj6-n^d>N@(Q1>iR>Qm`#VMPjY99UDd~LnM#zK)^L zt)YK={XU1OhKo^j*`}Z1jd83=nu9~B;LcST8MZ|JoO!~*m3!R&IT(|kRk{{`ET6W# z1-qKUc7%6y$h$dem^<4MhYxkd{PFzub$5s4aB|^*Iz3K+m+FE`lu6hb$y^3eo)?R8 zw`Q`MUdPv~7_BC>9$z!f7sciwd~LZL86Cwt$+g;^%=jy#u*!=Wz4qug@UCmskua#w zwxQ2oOl#hGw)!lLuq8c6M(|H1C7VCR#4=HOCrl=I7efdw%tevH#6OfW7_pvS{qi1T zN3KH1eJ6f%BsZ4Q{0sjwS~O~Tmqk+EauTIfwk{wob={r0sJOWTritYseWnvZfeM8S zy{Ua>s?1TLA{v}#L5cAxn2olU&l^=CZV>TclYs;(y?J8}{c#GkY3~R{El(X>KxB#L z@A45w-q63X3EOkUC4Gzw)|D139+!#VN#_po+4KvjX9B19I(qrzkHt3j%N!}*n^;@F-a z2VxtJH$n(Dj??-tAP+M0O8q!QQ+7d1*G4)mgYnG;e&=cv@xgyZ7mG9>*JX9|>>z<{ z2;P?6cJ+OZV@vT1 zqD7SL-?x^2w?>A6L|Euj5p2JY^Qs&RkWWmhHa$J-r*y`=B3ybYW!>X#6V~QhUneY& z$GBac^Vx$5V~6ad>63YQPaj2fA*LPWM#(S62I1Ny_#Fuu9%m$PSEr-KB|c=Ajk8lW-M;;wa+xhj0lUa9Cm&2o%zsebyj2osNS z<6MUcoZl0~+!Zx1^L9?TtoEoK^U=F45*Y&us6%LvuBk}1SFmUhmZb08rK6ZFI_v^Hj6vo0nM7_bkd?Q+cZ%`R zy12;mekY%CGi{SROWQ0WqqH~3SzjsI5EANUV9`%A>a@4*oCFkBLg&97fbh(R_SrK< z(Pb(y7(bLWPoB|tZ`%LataJ7#S9IdIz)ynxq3hU- z0nFy*oU+SPnw$Syle1i$>Ne%lG>7ft0_gv@o%PnEbpb3x5Hh)Y+MZFfK^>RTfJr+l zs$)1quXmS1MNXykpT8C+I&U<9XEwdZ?~(wGK`EPkKPeGo{O*-hNkzzHCp)!py1@us zk;Fmp9H~xNffgW@c}JoC2z8w1_1MhvI6Md4TNYx-dzM?Wd-MJ)c?={diVCvf*_;NT z)mn-WgwO*)b6}cuWCR2`6v@v9z8&d_KBgc3R9XU;Okbf8u-jiFo>SbYRp^WIH+M^5 zx8dSwWV3!f+;7C!a-;XXmRPpB+0Bq*{ZJ|Qim?~sLTx6TL*<(nEK9*C_)y=5At#E# z`QZX>f6VoE^X~I6UXBqV9ihE4S`+2neT@DaPLY&kYJ)rrY_Pv>1zDhh#)x-IKoOi<}^<(;!F z_KRXI6vJ$K*iCo7(o=jU<+TrK8clSzPKf1D zd@5Y$U5(H5JzOLs(4V(JRC>|CQk-JGA*&3RH_E3+bdA%K1~NDt;?SOXqECa=_Lz`@ z8uAE_Z;S94Zk z#&n<>4HJB7^w3x(kVUc6k9jQ$g;SwoFRvVfOawam5YPCaYjXNAXVx+vY_-qEnEmFNp~YBfyLP{d4B2F0X(i&f!b!y% zdYFMCMkAYt6O_yTrSeYZ2}-%A)jgE|J{G3_RtyNmY6`w4mjLOkvg)yqVWUn{6Hwa% z`85lNRPu2opZA}NpTVafDnu3?Lsf5p<%qP&fxoBKyrH!n!Sps}l?x}zc6%&ECF4M> zBGX_vKo{A2nFBQ4KG$K(d~lLlu1zo@>*t{#I#4Fd#12iOnS>u)7pS1Y9dpmsS~8=@ zt>#`0PR)`WudAUyj+>1%`Ja+7w+uBc^PX|}|A{4ejl5vs_n6R3Bay20%N$}z#FRk8O0it}jqlCKGm#W5&-^?r#?izQL z2ThF$pRvn3icu83;;-Sz5uuz>sSG#6G2tq~7Cd-kVdMp}!B6;^Gk@tud>~bbK+!f< zW(Ih`w(1lkmEp!-h1rM$3bMvKtOksK=$;V$q;0*jE)mqZFHimunp%rqiM^;q)9}wkvEZsNTg?IM;bd1nhiIhMdfrSpL}x! zCsjN-Ma=!qU^UMRdIK9lOu+4Q#jhg!?D-c5!eR`s&dkqyS1yY^5*We5ML6Yd59vF` zXu(Gg4CYzQNDG|=Ywx*b7rxl<_g#<2GqS_=?3(PnOn0wZQ#7u!1nUd-euI-S$p zA~7uU`(9lo91#;}MXB-$^qvIu)yi%-_Kf`wCORo*VZ7IS;q%hD7M1|Hd}m7)DIOPd zip^PbT$d7;fXmWgTCe&0OG`?6-3OA;7@oPx8@zCo4AW^uyr>QsHjZ|!m&(aNeA;#` zkKvyeU={KH*BQgsl7dB+>kFykMS%v|vS@voE9E(8kO4{Ik`}O1E0mOkuGwc>9es?z zegRS_!8VL__x8U%J4|l(mq^QO34GlSwi$`Gi1LSI15BQuSG^l;=sov1h}awsjTYKT zNkAWCdbv21=R>e}f1q=p1E3HRkt}ujY~H$J)$cOk(uL$fCPZIY2Jh~2>{p{R8- zhN?PwzgGxaCllGe*IQn@i|{MX;GOeD+}PYd^BUWN{Oh?hWlbg^pPLINb`ttqfNzc!~eU>7Kma47R2n zmxcYKP1(QAUXB!W{dz2F%Bu4o?LAtbuhlQf;+aqvo$0=FvVRrh zB;r(d7UQXVmx#M0P(pN3{L;lR=t@w{smE0I4+OenP_XU3U<_0vR=du!OD87<*=Gvu zOy^;qO_QcGtXCLY3F2I=-BTCfni~jHNv%QT#{+(eRVeB2Ahz5b|zvfZWM&uOSW4nKtA6I9Y#b;lQ8MxMoevbxj*{4 zKSSJ~X_%5HtNEqLkIO`Rm&J_bA?{1dPw($pGuATQoVbmpi& zk8sQzmfwJ|sVDXoQ$d?Bbm1i-CA+e?z`d%hby_CJ?GN*AFbKnkPDl-LNKl}5-O(wPlQc7HRaiE6_<&SNIBf(Fz%{ z405#W1ez^~gOxiG2X~Hbmi+{LAC0)}suKN>G_ixnRHurq!~nQGv>#^t`2K%c9}46_ zG?w)I`{lfF!Ekq7Zt3eLP&w^qjYaFkJ8Xn~>dVFS|7dYZ$|3F<3JB`^G_VJMvjmB+ zlq_Y+0c72eQ-UP0&mjgYj&syZvT3$;kYRk2)!7ee)6Ne#&~IX9jh0TL&X!*`Iy3`0 zk@%Q?Imk)Mfac2PmKIpL4!Yb&6sW<*0=>UQPW1~=?YWFGqAW*%wvt>KLY?E|K5S;Y z0V_@8n%(%DTzYqUt2@&ZetUiUYm_`e?`MXWOJ_vb(LhW(tx5`B!TH%KNv^QymIn!H z*`e%OzOHRxy`IYzW_~(w75N!Num1Vy!!}k#Ce&Gh6mU z*ag01W?c-HTrU77T5x&=g=jUAPgbm80q2F&6f8Zjz-wYsVDJPxa3Via+DPM1zQC~4 zCFrZ}d7x7`)QD|4yL?v@(Z;>R8UF&~NS zRDfNRI(MyDCq@|iE%9iuW+$LDKKktZb!YPOAOgY8aR(IKHx7( zZ+1Ju>suvMHfAY*L631it15zjk~hjxg#J+;m_!&D?Yi^GxeuRQmkz#a;}SW#!{&@v zMrQ21!*q_|nIEk|tg4USq1IGEt!++Jo;M)1RB(v^!NS<^ot*Ya5UsMeR_^O_r*ds5 zI%`gQXP{0O`+!+okAvGv^70zax78>$uvxG%ip~5-yPSfmN#9JoaGQddjLlCoaJ)O3 z$M%|8mlZz6M*fWJAU_>?hQZG)Sv*{m0c7-2kt_7&U8E`+k=iquhtdb4`VF_SsMd__ zazb34k$|yC#?DyMYA%f*_<2z*p9-6_ZsZm69fkJ(!5t{Zl!-Y^^pBv9@4Bv&UfkCP z-`DR;^ke_*oo8p12qK(pk3BnFF*?%>>+k~o71v5VLIq#jG^azrC0)xzr1p+KXtkw-3_;wFdEs7W8b;(*j*z#vi2FxLH8*lmv7dgM{G)Ne%9}cuA5J zdGN7gZC3=wNJF7uDhc-7Uan6E9JFv2EW<3WHel#}nds<`L~bI(JhVWIGWas&OqhxV z_RwE|wxaol#t<`98YuROhnshO=sfA#h&?nZYmADE@dUXZgo_7-OLV*bkU?@QY$01J zrfI;Z?bNENjiJKpr`EWXMx-A_@AAEsdOTvrDs>gTkfZ++4qkcF8NZA}!f%w#lC_wv z^ULprkDCK&m+FPycG~i2uyyAJ>M|tkWi9e1DTbf-yxo555=$2if8Z#fwXfCmmKD|s zvt}+S9Ij%_*n(6n*JQfG+tP9{CX~|l3*Mo^&GqA`*BDF2|FxN!d3$`r13I2NjrKz6 znuh2MFpriI@g1dcg3hfk>Z?~$MJL-NIt!TE6YX(2R+YbH@;Qfl-pF18q912S2chuT zJyk;n^c#Lk3*vOfz_&-jEXpa2lV|c6asOuh`s5Rkm9~SFxMUV!susAy;otB0iVYu( z_fh1tXdGb}UQn@Z$z*oz@g+3#2X~7Q4ovd( z$m9D`SO(-&5)x7zi;?!A&B2)wxeR8}PT2?8x`@*Bdfu_Da)G9!a>@Aj9OCc3{LP2`G~h`gFhrszjB zTl-NCQ`Ph5(*;p8Ep;3K%1KIc-64R3wCM&N@p-?vtYuzQ%U|i4d}w5N2z_YyTB;aP zi}*sCfE-6QQ1J0TOj}bAs`Vo4EndRIr+ONzmQp3c^`Wc?&EExlh1)dC<;Xqc@Hm?bM|zus(lW5|WxY(ME z$f=>)o8o`^=W4cGgy}wM+w4ZYBg6UTa9qRI@+df7^VV^MO!YI1S#_rCXkUL3w!QVw ztTc;3=(=@WwaBTj35~q)z64NV^)0w0@&93*Mc2rjG(O?ZW$n4BA0l&#WSa9E2B3mn z7{*GDJ?>(zQo-6e%$uh17$KDt(f-uS(;IwR=o?LH`R2gG!al3bQNc$Fq)b+^E4I%* z1T1YGaYQEv=v@(DTfv%WF;EI@^MJ+n>+aGJP~^^_jy;0mi^93z+V#MIIofr!;U|GJ zk%sXda?S}ppD=N*y@iD}Ftkkl(J5PZK{X47BL`39P46F$ArPc{7Oa8s!3**0W9Iv1 zdMIrywL485Y~Gl0OQA%Up!p z5VTvOE0E!;yzV|y(3Y6k5wJy{MW=jG?q1u5Yk^Dj%e6@*yP5|NjCedLMIAL;#8;_v zdc|ETz?+`8GML91K*HE1CH*J?x(|=TR_Q{Q12#f#&?Cpta?>HRpi*c2*?e{~XaHe? zUgR%(WT4B~<*`AsEY3s*V#dpXS3E~;3WcZ~r`{_CT_dDJ1Zs{QM6SpOm{l`EwA5;@ zHzFBo%G-DDMg#$AZ}670Kb&h!BLYr8n@_W<9>QZzC`b^aeTQg)Y4ig5w1z=ZU=I(& zvL6N+zGC|TyaO<6k zG`Ns;0q+=KC&6%`X6`WFq$-|QA)G=u$A;|xN;D!8j?R7qFW(=5q#5K+ktwy58zi2r zm;(qy4=gz2p#TrC@~w;G4-y9Zdq~PPq1!XWsKWMzw<)*Oxm?6g0FoOr6X2_SXz7eAkVCKGXk+S9(_2OFh(kQgy%6fsx05uv-%KZogJ2@Gd zJ2@FOC+QW+TA(UQ7^qAbC@kaHPa|8Sc5WdEJ8@7Fp%7FY*eT%xT8%ieeq>2zQq=GD z?j(r2P!NC&*vKh6h4U#SiZqV&d5E-BDcH+9gaZ~35e7;C%%C2m9|G>9^{f?Lt*9z4 zmIOm!EtjwWE0MrJtRdQ}L57kEz=#+G5=Dj)F;c=Ud^qz;Nl7kqb1QUCKY%kLU)WT{$VY zRVRQXqE8+6XKSOp$BcAbDp-1{3t)%OC>iSJ&Z*>6!i|vMPBVg8N;E zi|Am!u7mQ?kF@l3Rxj+a5m-lpOA-(s5rzJd0srTJ<>G4Ok*Lev7o8eAqxVZ8#uGRq z7gtK8zzru!rW60{ll!`-$>;UIH7q2TNLJRCQ|f;eO!de_i^C-u454%@1%tt$) z1+UTjs!iIMvx15R4hjvde6kK;?agLWEx+va5c@-q_1`rUBrdO}~_ z5#Cq|6te##%<<*6<2-jY62x-1qK{}obb*H*?FYI#1BYzPNJ#)i)P zx&-p|m9p_0GWzj5cJ%wu4Mn!ix%_#)@9ojy9&V{Ur;>*7wn8N11rUGvF7u1fR$AFXDZo*CdWl!19_p6(>ugYn7~?Ujv*?7f|s#$e~Y z;%e&QB-A znLhEKzkGF-K8M&Z(6`>mXLAE9XITD}bC;cmY!fg3YR$)Qtgy8!kAJli3XnLtuojqv z=`y+Sv{~F_s*B)3O%7${^dE?Z#T3Ni*Ue`pz26FBe-XfbEYakE)Rqa3mN1`67GT)L zJQ(KHLiGc;=QwryqPAV7G~i~cC}o7zm*DTsFe;CkKg6%pz`l>KsjN{s-EP0|&S|dn zaFRoraW(W`@Nv@aH7ZNJF5oquXs2}@DcOI?l;<&5rGd?|Wr4Env!PX}67f~on(^*) zy3)37r+*B7{$cpHxVb7{_n&{rRa#&Aj5U1EGy=@vXvpA~i@9HZ%uYOohERNeIzKK`9 z*VtcW8D8NZjc!ZX7gbg3CSan`HdS|Lo)Gs91?c}v#I}CUd*CFZZ}0mvpw6baUw>5$ z7kh2aPP(7OZ0xVy`WPtXV(>if9s3Tav8k+J{r2cblU2Ww*NYXJwC(UDZ(Co?zucR|O@O2y1f^=&8bVD>+ms5u)u zI+~jSm?VttT+HE^l+?tv7$w~7>`aV-!2fVS&C1#Z@O}KJBlG|bb7zc-{cLy|Z z0s{Z>CLK&{;Qp(4hT6B+047Bf8&y|(I3@)E*SD6wgtfDaD}aOj{}a*&u(5D({NMgq z)adAXY;mIbuhsRNcJot4{HUiYJLQ(%cFW${RLCB_fEKr~v$va|TkLpPyXFFyA$4mw zXhja{A27Pg0F|OvhNF_B>8@8GN6k?xl`^2FNQrxawZAnBfz+rW9Wy&f9)~K?Dd9Sh?jWW^q-PFV}l2@nKHcnIJ+%Q%AgrE3bUB)S3OMbZ-d0yi{EV=T=1Gl%R|9Rs8S zq=L|ligQ-zcS1;00?Iuh`GW#tgedF|5nhaj4GNJb(LITC#1Ya56#$pQ zOSR^IQ2`Gs=_%d2EJ9-uuH7pxC$ly(yN+Km+{MmDk#e(pM$|+)Hm|scWOW za$*6&OIbfAT=AFTh&Jrc@ClK{Q*e|FW6F)l1tiL3nzJ0`2z1#H?$2CgZ#`UFfZ~+^ z`^Seb-z$59;;*J?o6(1rj*oP{B*j~hg*oX0WwP1kmC&_jdc6U5&;&xA=G0crSFQ55 zq}$?g_Z%kUGZ|*fZ}G;}`-(8uh3`q+L-vhqF2R_GE|dxm%8)32Wu3MWxYE`)+;+~p zAmJu&r9>!TA7HxJFc`D6*{0Si;EHSkcHkKD?#|Fwb48W@N=22gE7EJOG0G{@4VoL` z4&hh`Z22TjcsFKH_~gv_)pqFL29!PXGjJADD0;0oUjrs*EY5Ov(H4ab1bkW*fm}s4 zJN4)mabUoP)38!!*^BvxN0)3CE%lk(#I3l5OkJTA0BtUnk4?Nl>obOW7K=JL?F1Te zv_9k{WsAU)aK{r1XfWqZNRce*&w@}^ns6}qD7X-5ifCvs*KS98Fos|ZHaaBbx&4~I zA`>!QuqZ9Ck)Y0_Gf-SR>9@8=vetm^nu55HSc_pGQ=BEKmURqSu69=22brGx3cgP?1uB zox8O%j=@mK09JgSbEk@z^}Q$%d@Nge`8l^&)MC8nX`?jFN}+o`5nb! z(kn{uo_y=R2`spYeYjYXaq@xVdMu1A1l3>oeMCixahQ~umtpymc48+GWrD5soyHA@ zLsZk8JlCz6ns{Rpj$3OVTRfhNj*K61ykB$TIFLNeFA%vGbMs>MVdUsKF%&?evYEbM zXat5E9<1(yhHOr$qjk?hOETRaJKfDL*jirGj-HuP2Pa?7^wHVx9p?Vch9h@H6t0G{OlWWRN|Dw|I7ghK z<2TL4&3Xdh#wLX-k+Eh*C2(q95Fyqqv6KY7CKhlhC@7~XabDe}lTBOxC5=}YsV~!o z#}oF>-DGD%1b5jsrB^mhwc253lW7W@Jp!EkB~H*~x!LGm7N&}qi1WT9r5dR??L-EvgBCGV9|zXE zUJZ2>wKNVDMGNnF-ePt6zF;Ry`+xf?Z;vsFipK`3CQaX?pyIRkA3a@}JGyHj#`D=% zW*h(^iEV$$Q@H2b@n+BX9;ApSv7M;}#}m6#OuZPWoM|17%C&#_Eb}FeDcy-^+>xpE1T}J1U%INa{NXhG z<(KOBiju0hL)hzohp*=E)I8I~oog|d#(AZ*@w@C!fQOxq&{fj1xRcj#w$fO2=EzNb zjlbnVblLmg((QX2M*Y}UbK|jI73(Kv4OZNPb(I42&C%S=G2N@q*KFXsF(-jvW!A+X zQ?~0lE6N=HECWTVq#bPJjaxa?tAE@lFzs*dKI-x)F#l5XQC_DU+f&;fI@6_{nb5my zEDp~@KX!fH#^>&$KUSNn{UXc*1V3Jnjax6%D1u0bWywcgo^e*~IWFtQ!N-`-tgP!o zTLd(j7pXXrD-1OAja$7xQdg%}sw?j%6L*h@@8WGZ|7s5lj+6cq@O!$~ZIxO#K}|Mg z&|b#P?%g5y%vT98taI3|(sFje8K-ND(e|X=ekn^Rkd-;-DS!1pO2yZjZKG zIZBh)74vL<7Kt3CMUf(X>HVrd);L}2tl<9bFq+(D&*kRh<`qbCVNdH^y;KDbd4TjCHtL^=qap+d{HGX@v=DwyDz-)^g2~`olo%P=qv?A z-JM`dF52?6R_CC7Skb&6;HpLzQmC z^YzjYlzLXRnYqGGdwOAU=1W8d$ayx?()`Hsw69xk!t;|oc5n(m)ZR{5j#vrw6|f`5 zC{5TM!=6!>&o}3K+Y>mc`jH{vQm2u*)g0U5!+pQfGYsd_H2K?uIZ@@ArHw%$2p>$?oj$cWcs#2z^sD&Obkg(>8 zx`#APGG2EW?ftcHL&4M2XUB?)LfVzI5jkAIzQxHbnYB3RB4>DLq@8|?aF_n#n}#S6qSU0Y!4 zPt9|R*4k1VE_pneh$3O&&WL{uAkgI0slW5yr zCmgz;>y_ea!M@zhbF+9$`T5-BdG%Lyg~&78_+zD;pO5@0F#(bdqy$nU9rIo6#eh}i zxhOMBbrkREZ($v&^fjk(oA3{N?jxqjhHfSdu6dCsP@Ufi(|Je@;aLVq&Uo5-P+68y z$0p{w;{1ja=_}Fa;uO2fE36gWoi&uNHVE69w%VV>DDb%f{|x}-_%9LC|3olaD&`h& zOwvFzb5DRSGk}{@AC5`Y+S~m5430??pvwYa1F(G8sW>>e0=U0}rT~@yFt>03{4X^5 z9~WW(T|RMf9v&WX2@am`cq_XEJC6tt8#_A(i?|pwhX^|}3%3B^e>V9ZMa~>(`3)&q zS(yJ5H39x-sX@X8NrfO#4Do%R05v7CdJkct22J|)kycpA*%L}fom&@c##eFBwv$nAM>YijMuu|R|e5pX190p77cF2gS%UCx8hLTo#IY$mk?YF6nA&{@;vW-@BQ*C znZ0w)K0ABXtXVT5i9&$+_w|0lS2vERHDR~iZva2-Blq;$z>{Q6kY`$0BdUixD;~a7 zW1CJnt!xov@^Q+?r;WQP0Tk*H(ks)L4{2Gys?^dAO(mq@fW{aRT*w{ct1P1U!CtvwAXOIJ-(jSaQpkbUS7SNOq`vb`Q6?7 zJUu)3Uxk$n`FDGJyn0<-yq-?ok-Xgk-h>2KXKtF6nn{S?yrPh~-|nA;pDzsUPKkwm zUmy2Mn1%g2{I49|_U@X6*Zy>$?jD>%wjoy&aXUkCQ|{fknBzy8%sDxBLf!4YZS6ff zcX$3vuP^6g=)xQRe#JQ+a4%;{%{gawb~)K+8y($G7ZXoYJMV7I(C>ZTn)$0l-n91D zEFbUguU@xTrf!Dfa&o#;O70;_0h2cCEpN}oo-)s& z3!YbFE0;+wkF;l9er?`fZBIq7Akz_=?91EJ?KQ|tX6D^gch|%DmBnkbXQT$R$M_5L z^}=oU3B~on-NQ9I*e?HActtwPaglCf$nX_u5dwLw@SP=C*pU`|-nm+1*W11N*TB3^ za&xuDd`EIN3b_?t{+R6u@*~A@y?dBADQSPvd@8;2dpSMI9J-5BdbWRx$Gg8-WB<9| zcam8$bnE_9dv)sjw6owI7l;1ODEqpv=Ww4Pv9KV;so%OkCpw$Ovp2{l$8X-9WaAkD zav?tHaetaJWpB5!;IFG~u(jsCs(df~lzV0LFb45{w3mOzvVT2zB{<1@h6w$oB7TOv z=xU6<*846JknD!73B9@8-CngnJr?**dkU{p98qC3&ie(t7k=A0Jvdq$%DFSF;@Qi> z?>QP9GCbYb==5~I+cmnc_bl|4ZF#-CczyF}^}f2_*}hs+d((UxzS?ZRt=^GdL0-IS z9lTGQZ#?l_sE+gWYx7?b+VYv{iMxN7b;UHXuC|hDK`i{-AsOFOa{R#ZGWImIvN!hD z#O%7>xUo)l5?v&d!7i2z-3_pO=JYU)(Jp zF2>l${=5mtZz`zyT!nvmIJzR4QZ2k-){p1jT6~`_UQ?gAo2OO~bZKu6{e3&6v+oac-cIkjp9BB?ZS=Zf zewy+pee(73dpYFh+Pgm#zOL|xY>0O1j^i#%&lP^pB55-v`G~=zKg2a)L#TbC-<)Wddb>6fFo*R}6+lr!s5QPHwTX zBGdbDF9NMiRHGfatsDkDZaO2@Jr?je6G{QGdsNTnSy4|_Z^P{@ffW3xWY zCI-VdCxJ)EBv%cy67%4`$M^g-F2hC^?uTBhHJaUX4$2hgw9?5x2ri^n@Hxi?47hWL z72~E@KakNWoHIRQ(A>|t*62@mCA_r<@%z(NpJSExT!fS$O>tw|0w}HzAJ(NZU+$JE zra#{La7e|$H238Rz+EWo8^SPE8;&O$wFHO%c0Y1e@|AGT+WtBYmKTti?2+ww=UhSK z0f%SZ&>wYFu-tEr)VUd=H{Tk8zpk4j>8=t$sM+yr<72W*11D}=3pt;G8U@>FD)at+ zV*uIR*yq*@&6&}-xRDW0m*H(Q+p4g`Z9iY2h_7IBB4Wb(Di}SSAXXb+^lMV2+~U-b zn-TWFuXbY$*KocnE5}l(c^3A)PF(bpPF?gdlB#%XtqVA*u<(dojtQ*29|I>QK6#p= z|H7c!O1P8>)`NLNL?-{*NiQ}dQ2(C3UfivRV>(D`tr{aXj2L9j7Ua#;mQ|_O zOt@~==<&0Wtf0WYkY)1lk;hbfzMORUrzY!u3;C7MUQ&KMd1<9Sg@7=VR!4Qy%XX3l z8%V76OOZ&06KjzuQlBYpZ*oks=~AA0TgZ7!F#gIalc|*FNA(8)!Hw$@Vyf6`-sx2J zaD4GS!^VWxbqRG9ht1E+5gtLSMGqHrAqz)A3DvIDg?i~b1{YIu!a5{*qJem^aXA4d zqt)-l%+&>9lFC@2&5=x$jkUQU{b=)8ri4sJv!gh;_D4au%<$@aKPL{07^IkaJuXyn zBZ6WS4crkH!tpNoK8}ZWX6gA?QRm@w(s67At7-w&NMkXQd0>c2dGXc2J8YNPATfOA zpprNvf47Jj{5i512vG)8N#SboGFpsQvMR+l(E@uZF5{swoxC^cW~ypy4%v#;dzUXW z#vb_a>sl>g*42qro&6?1GZYZPd{uZ&{gW(AFKOzhaIVRv*{RHc3Bol0N z@Up#b&IZIyW!iDXis#tEenbbuAri573@%5m0|6rvGVE%L zHFyH5a1DqQ7fU)>8GFxeex0&DZS90>!E#@B)$YwYGA7-U-oN)a%8J_Ci z=4hRFAR2LZGEI5)jSqi_AEx>su)c1akX_@iiBkU*$TE&g6jPqUMX3GJCzqhrV+SCW zFVk1Gl$1!R^Ro919Z!oR9L*~1<$G>iaCQ#cx&cf3hXPTT>>iKu17&J;HUrO!Xyex- z%6mKiEq~Q1#AfefgSY{oMsHgX{X3?y{b?1%rrVR zd;@)A1!BqaE-7SH0`F&{y|m_;fye}R*%GKjNtnwA^WNw^MI7qz2qBBtnFqn%R&~UP zv8krIUiirjw(Vjemmot*3Jk$W7_dOk&|x z`azhOPLy)BJ|&IFV0Szkkw2BcTtmTv(nF-U=3BL2*GLwpP%7F{(odBmUC{YQO;5h0xI(#&%^(}vzl<$fj zz>k8*j-v@+12@a`utj{xQOy#~B)tY=&UbH=^yaW6$e$+u&_kG_HN9B+1E3+6 z^EoIAIioO3Rd$*Z;TurN1PN7&f)Eex>8FL{Y22aCTXLLznF0~u~gh)Wfk9T}# zvAsEks4?o`KZ~X*iR|k(!K4}k6LJ55VH92VA_WR>6d)3OG>3{a;~yHJeaCx(~V4)scRvn_<%&PR! z^MWi{hWE`%!ETqZ?ab=ayny9t*sM=tzsqwta_C?ft9-PA_M|Zh()@!+1eu9#uZM%Y z7D{pfE8UtsF5&3Pd1W>=3+h*h6eH*}haF_tVxb03Z-${l@3OtRx)+Jx9)(eDDNE?+ zN7$yh804#L_;BJcK~xK)rieBGcyd4yX6NKKztr)=%%KAt1N);~i&jr4#&E5qRu}YP zjt^$uWEPFIs#yq9#uy1wx>W*Ywfyq3(R=H%1g}{b;?T3;+DtC0x3eSNa z3`kG3X(hC({pfoyfh(UGs7I7ZQl?a|zUtHmheG7)6O^UyXk;ebp-fLy$ zhcd3Z05_NI*-)kXv&}UVU{FjhOeBl~H6)LI(UF^T)M4F{8)xUsc8RjYmN3Rx!+&~L z`NuBs5~Z4D+=2VDAW}TnUD7*3Lq=K{Dcy!^y(oK-?JGw(rPwxNin3)74Lx2bwoe_B zsCAEpW+)5-JrNlacFZIGA-sH03J1{)TyIX2u{P;MMj#iRB03Ps_)x0}?nlSkX zUUj9Vf8v;B53+vTgy>@`s?bbqCA|9Wbn(b(AH`=d>&Z zuTkUss!L&m!F7!T;o(*v4O&%q@NJTSvfvrQ&OgZt%8oO3FiyId4vITLlWd~7MfvL) z$-5)Q4KHqmVttKOcsD@M;(nJ|`^dZMCBCze@(b30c*Z{ny*}j6W=pVa!DDss_>vW* zu{z%+P?q!;U?=m_`5!7QIUg-pwxk<-Dh=6D)FN912W=!zDl`eH`eljm#o zaeXtF`0|_HI?k=GDKL7ypcomXVXcWM0Bb$0Vty{O1e)9*_JaL2yr~3}ZV^ngZ0-{t zj_o{W;x-EmDU?e8tOLLRG!vOj)7~>I)1F{RDr;Q?(o53le)f`Bo}}^M)WJlstcUJm zo}Oj$CV`FuiD{?>!;5FqrYu~|rwp@e3vhC~x=v#Py10f$X$(tCV$5%;!VOy|F%t2_cBzT`DOM>H`S2=#oCgDabl4D|WNwc*4TUfRObH*-j5W&U$)dL()gJjE*O^cbo_F0rJ2dBZX;gf0*l2pSd zJ!z*T^yL@{6w6LNbkl4Z%Jv7TXG;%quxfU?8LX8hp%U$e%3OcOyxPteh$Bz_h%bkw zCs~Me%g7J98LoncKOr_q;xe>kYycO4QP0@)V+KKTk=NW0I=fh^GIC&+=5lUKjc8O7 z?1I`cRzhs*z?>|3;1P(Kui8TrrRF)9uIEwZ+)6;6G*XS?V&GFnJ~Iy{76_t3T8m?UTN#s(V8LwcN_?cDk>885)eT4z)UtT1vLE zu-x_36aN=c)vF$>O3S}CP6+N4rmShsO+q16Tiw~aHCnX3d>L_3JRrGT$2C$1YEq9; zHw3j%&O?sru)dQO@JQiM>#3XcXDhXImUAHt4%DU$HU`GPF!i{M^b_bArR9<7koC57 zB5fHIxIWlsNiv(}6Q;Qde*KnFn2;TgCr@jfR<`F;C$_t}EtA+NSz@y16K@A0wifN9 zD$ky(7I}w}A}EGKJv_EGTE{C@QDo+v&$=C82LEmGtUz%)jjSrz-T|!u(+*EZC2Ini z){=xGOMP19L9eVdR9yDAjO0g>#o9mcVdv?g`0oM4A31jc0JG1IVmkul8$Tj%U-l3I z6Pb?<9?S&^$d;S?4MGMbUtC%~eI*a(ClaH}scasFjOTGoa7j?uhOnlUK0yGe5=Tt+dy1K^xJXFIC4Uv7%)kB#4|8IVe>q3Otjfs0xF7tW*CsNq<-iNR%!w zJXp<#XNKd7wxtA^;k0rtglHD12gGv;2eRbYIuDNSqKRj4{PJAW{MFDZ!mu@rNP30B z`k)b)fmT);^RX!}AOd3!@}|BP*rl%?fTzoPa`E<7KNC)vd6-BDpXT%z2AT4 zOJ$LV(mo*Rb$uH2YGK%5H{Mu$qseP_xtpOayZ-zaQk(5u-k+uoL52fDs#V|q9 zlP<=Y2~3@Phxt`?PIbi!M2jD|Gg%S_5aX9W^T|yIAu>YnbsQAWHy{7Z3S0R)B*h+i%D=^j*Rk%fc`27ThEOcy z11vu2F%0e4xwF2qupM!{%gV3|3ljuX1t;{0V;fJe=|MuuJ^2IT+n|Sugfh`BIW^r@ zw0wMQ8l6mAXmpG^JRg#0X)wSlEzT|+gZo};o|8NL{11-VSm93v-UYREIZ2uq`h?^> zcwT^xf6KYmhMk1W8i^=UPOxaC4r=9#j8=ZWoTdoM zeaw&hnLHcBz5}TO0(hzJppa!4o z4GW04Y*&JzYp~zF{{_zoxdLTEc!!rcI%2D`yOu7vG=sJOcU0(|q6A!dSm?LaKs<63 zEJE5mw}i-5ikdZDN@LY}{&yyRe%8+XHZ@D&HT;7@eOf9)`@<5R<%}%*NGDEV*Zr8; zA`o}0;W{%1JWPX3$MaIYzNjHRHRCsvfXd$*lIlP5VfQ!Zlew;JD(=v~eetp_y#Q#$GI?#|GeWaV3t@9l>ZStLD zJ7jjJm|^*$m{3!sK7Z{W)N};LX656a_^36|mosxTZq0-LMa{4Opk^aT6T|z*pUixH zX0575PL675vR11Kst)sjH!*}YYl;<$0Joq%`WzkUAMS2DaN__dY(%W;)OSBYN#6I zCcNgTV_^Q#*lLq=W>|Ro@+rJU9L+XtZ1U`2w%p+$f#&;V_7m$W_4KrIjv#qBSko&K zV6*>%-?X1l^KZ6ONQ~vSNTHc_oG`|?MB!fmmq`2&;w7}7(07~{CU^-AFeL8(o9&z? z6gl>H;>mbxAb}|~y8(hw%DxIwxct*4EhIm|Z5H?WwmL<$p7;UoIPbSyoL*M`?Xb~V zg7!^FXglOTOkMDjHJ@dZI33d)I+@rLBibAMZ+Q8BFqp#L(i_iRqN%sWL3}%L&>8RQ z>?LoK9?D&U&e6f^J6K|;cxGvJHgmOED?+V9)S%_EKuFSF|q^E83bkpa9q_=3GJFyjNe-Tvt0mN=7g` z6o+sOokeU4>d;#Pq3cre zoco{4sa@<|CqzOmRF#>KkL7K=zM~a(iX>$o&W}H#W^|yd^CPeqYA%G{SIq$WNd$Tk zrLx2S?`zU@>zeCVR?pg`rq=vWuV4QuWNQnZNvgl5&}Cx_`|o-tR-sQu$AjUH;-tfCAhf3k^h~HE*IfNSWs|8>wI_*)Jm`!9>{Xfzs_hYc_M@j+znt zqU{hId34B63(rA)C z*C>pk%vj>g2Crk^)&`3;ZQkn78ONoS3oXXX3^W{wlQiq;WC*2X(WF$5aiyf-h7W|_ zz{Puh=;v5zs`nCrT`M|M_^>p&&+<0gnC68eo~usq;KXwv60%Np(6R*(VLvdug$D@M zNYTTR*}6faRtKGlRec+sNqlv6k=C*TX)(XQ5_Io=rRp=QQ#70>-h}J1WiaTX%-z^# zZrlRnS4KyObZQcG&=*U2=!7;6n6p=w#>awbis99z_z5|umPGyZW{Mk*b4W+&C=xA|bD;#RK#C9?TVna~ zSJmjkwYg$T{#xj>?L1d}-bZD2HUlEoct_6S2TJphhA|52yC|!S2(xH_iHilggT-|+ zc@Gj7ju3v+mq9%vH`LpPvTv~b41>TlhQTD=I{d2`EQLr`=GiMzR_aM&FRf?-57{{Ndsvun%ejr^n*XY z3*uNEhxay(+W;hlfT1%jD|`9y#x4C$AVI;QLI7V^u#SK_2?H7N=>kJ zQnK7Gs<+a};#*N&z^N2jTSpQ{@5)L}Lke#`u4p?kel;aDHIk(j-9F&oHtz}J`l(G1 z+V>W3&<73DsA1*x%BazQ63o#LfF)({hH7*kN>}4`u1Z&=`1Xm`s!jHd+yxE5{EHO=5y3g8Y6%p6ybN0K6=>J){VPN(+l{RR7;+2Jv?F)P zjf*Rz(vDvFI5e5gi5a5?R;QEv76v(GKhzd3-|#NKnU+K8+FGul_@Xyab{i` zpS;t4VY|*FxN3(&P5N2sz&q~N`z&`B&nUg|*6oQ)%GN0r!0RvEJ;5v|{_*J3%k#?? zU;QT0!u!lyROw-cRH2{>2FC@i*Z_`^`C{>ivs=f%D#|*oXT5<)L7%S^X1Y=|WSdp? z#O6A(M8bz%p+_gSDVotZwMiww0FF6B&f(&Vmu$Zg4^M>oX+$x7>L!d-E?*_aG69Em zC(6f$Ct4~3w0N5`TgjKeXhrf_w$Cj#r9RE%;wY0VPE7$QE3r);9joLvnj$lM--7byh}Lh0uTb zBwNxmzM|4ucr)UQ7GM|ldF2mq1k0(Lli-K!0+%1PJmHAEMT76*W;1elbeeShC<66e zMR@v8$I;>N2(rk=hcCuR5`A7DsgR-*6>603YPPj1gNY}bTib))&ug?y*eQCIC|G;7 zH#~~Xcf@{|F(VO8!<+-Atf>_@ILrvnwe71e!LqK!dm{}Cm;l$(J}(uGNG2fYAhD|S z!}9%H8vLUHd?y>?LS3*wn=%jYU9ND#flMcJQb$7hx5Wh1o>#A;3Vv5_d%AWZ_AE7) zbG~JJBsgdHE&}7#5&9G14|uhoqrcbHE-HL2-7?<}@K?Y{64_}9B#C8b>`siCZH5DsaW7gOccF~Pv=P!-`BQ|*-qSg&5E zH|ggo7|k$O8Sv(G!$vqzhn^3by`Aflk;%4^XBykc<}mDB?Eb&sLfKnJF}WkHj#{DlzGIQN<7Z`5qnNq`}0R&vawKWXTC)G!5lU4RV)wkP0%k+v4YF?B5b~N)8<3OyXq$$p z-kTGHBFOxO*f${w!&iQv8l4%accJ)Ivi*agB*laLfVWe(7TMWcePL&x$AjrWCRmg1 z7yY8LzWHMQmT$-s=OUyy5b?NnOW&w&OW$rJ@{U`MrOX4WNPh&J9f+gTuWyUfaQ^*2 z4R=77P5t2H7*yZfR-osP;i;mbVL7FnMPb5=LSq?s3Sz5N?}%?8oXAY|Tg9 z@0ND{A2ji;GLDt2sP%ZY@wv0Qa4J8L>C5rffQ*Z`t>IA(xYdk|qzV8#*FA9(Es7)< za)QZKKw=6>=IAKaup$a!%?`F1$QKSJ_6eDb-oQvY=amwW6y18;g4)T4M1)N_C_@R_ zbkX57(3wh)vFXe(AL>)NN=6_|_2kYZ;fbqWEi0a1e&;LOm<@J$%u8CD9?WU7KPc+} zPfE(}IG@W^m4e6$AwTHaThya<=!Sp|jSdy~sKBI7yH6>_9X3E-&;czFxW@HPq3owv zx6I3)$PNdmNq4@}x1GY^8T*!-gu<@J%BzQ7Y8hK#6W*eJo~blmHJ#v;UogwinQe3VwYeJkWRO_2ovY{Xf-vZ`dnn8Ax99S=K-P&2H&=~v-nf@Shm zA)Plw6NK(8J0qX9OP}GA0#HO^1+7;FlpMT3?Jn^P%QK3@TL&Rh!2}NbCl5T}JP%z2 z0-d!beUgp}JRCcPU?f)ue6l96LECkUNCu>r`N0c{TKE3*ESxi-_5O zn6NAFoj{v|v=z2q!9g*Lyn7jYQUrRDf#=FKM+p+}BEf)woJhaMn{En-6MRBhIDZlW zWvark|3I;kP=kQW+%NFpHb=S*>$Plo-x6*_n(x&nO0`oo{?rY&l7>2Ce#y$DE8)&x zigNFAjY&*a@YcJ+^RhiXrADo(R^q~nJyqt$FBlLA)<5Y%fuxYFX;B}xRvhh&lkL(; zvBbyjCwTRBp^sD)%G4Qd-&fVhIKI$$k|lC6F?bfqSh&cPcMw@Y4@`7nWLma_23^oY zwPbTgWhBQ2g-%1!86JEhE-?IT*^7*<+5}|-P1Kt%v+tI-IUy3g=(MawAt{qh`Nk3D z=4WeC1oa*Bx|urrjsjZsq~CEecwrO|c~R>JZLNCxe%gPLtwo`~RyKX#$y$~Akqgn> zEI;+&Ay*;E0$q>^8x=hZVDNv{;8BU*|B_J#>|Yy^Y+z`zo23w0@0-5Q;o3?&Ced2< zhBIBM-~xNA{7sMAxTMr9e>Ev0@(}rJ)rAX3dnDYqeYZHw5LrfSK>zx|Zn45Fvc?!c z>c0i4qpNd8Xwj(fAaylId%<~z?W-Zx-h5o$*2ZoLePUM@uB7Zr=x}dGwM%SYR?#C(vx<&XV|Lx#YKE4}j8Cq+i;sUFp&zLjpP|q*HbvDm##dH2} zU;`2AeNA5WA5Q@+ZJ8K4 z$tbI{I>r@&oy#fBg09qDDHi3RvgPhAc#8`mS%ZB$vD-k+0svI#5*kDG0?h1 z$}Lx(dh0^dy-=9y$@lbA5+yrLM7e6&H)&ryUDr*aQNC#R0MAf z{*(>Frc_a>d!vjWHO=?IlKoTC!3S4cdzmmADLhGg&`+`H8+rqLnTj!v8%78Lm=GDu$YL}=FG1%aL%05AUX2qM z1L1%Kn)de%r7FG@5F7HzG%svxypmxY>BsMZ$B8x}T+Rv;#Nuu8s59Y4Ow}blXheX} zdP^)_3apY=zqlj!a&{S&%BAF z*qIA44)U4u{eN5X*m-tA(|?y=+jtRz>`WYL%mQudN(6%~WmA$y+1Vap27)Vndoao8 z{Nc)?Ri`UNi;5miii}6r|hI->WWk?IrFtzvhENW6%WfhLtheh+FeN#BLs1QoIr)2rfsBgSd^uj zxanUO_&24Iy|y>Dxl$e9Ubt_f&8!OVmz{Rz%y~*P<++X z{2(JqdBNa`&uX>|ecJj8%U-bVb-E}Sv8{o8E9XqeLbYN9MyOCQOHOH`e!7lY@sGl) zJEg;_XhzKXgG6VMU0LLAr-B#0qF-x8?7`6>V?y2x#44o2>k&8ZHvA3*t8)RqZj%Az zplkUlHs!fG`>6_Wq{x4cyefb8a^-w1w8$~v-jFWB&@A5pqu&Zivi@`wPh~w{D!ILc z#_-9sDKhpKaVfBfJXCS{T|})M&@SyNkaUGEC;{o@_cV;3T*&dT4NWf^aFXX!+bu*T z&()eK8oDPq16aYerYX{XRX z;fX#~qeB&Fpj66c9E1B0tcxu_BdFd>gfw+D@DhgBL%kqTI+Y7Ad@1Rem-MQzrYwYu z>uPq#Emh;arKKgpt{x=u2Iv6#yMOtDWgBV#cpVTaH!3H^D2E?JL|N&J=IdZh4~zq9 z>nj#!U*>O@P6TVN=`Z|$zN~v){HoHtA2Z|F>2g2<%lcV)dMG#%v`b72DVxn5Z&jpJT*AZxAtBIU{^%*OmR>u!2Nl zs>j957{kQc8u5AzUVA+P|CuaVU)b3Ia2{q-RZ!uOb@B>y-nn5C}* z_6baxk3vfSPU11=CYQ*Os8Sp;Z_xFFe+SUnjUz2hrz16O`dd(472i*RTsA)+h(=Fm zac<5wPX;T&t~z%o7as386GTm@{sr35g=w!KI$k|(Q*bw0RVv2PBkygt?45#lTPL#{ zqe_l9M4D_B@AYbcTeaR?FP9)n{K7Y}fp-5>}A=e9{L`0G&#?UA`lr;B`V5yLmU(%E8 z3jRr7p?>YyYJqqpuLa;@uFyC6uVP78al)dav8|h5d0T}wT(>NLcupu~GwCa+mvRle?r&2_v5482v>-PP>ZymRNkDZuyHAZJ6u7#iQ}AJ!d3Md~+p> zrDLAxY6fd&upA9dutG{k)|n*-WZLuZJaR@F$lPO+rf-r7k=`-cD);}2BjyQLy>bn| z;^!q}0+VYfn5rmY>I={nH<84ZHbU$|8b-Y44a6L3MG?|1D@(lyH9@5|QuGDV5AR23E3?Iqow?l9Gm$qUge^;A@3>H?q7YAR9(aWAe}Fd1M2iQ$AoV(25?j zhBBBfK3N8lnM6%nRt6c!`kDYNa$!GTUK1z(8`{jyvKy8#NyUPzwRYaLHV}?fLsm5I z@N<6VDYQ9^@vS_4iI~b#*a#(c))w{)Gw9CldyA>-W&Iq$m#PTbWX2I;6gB&wrU?01 zI-{^M-H?%4Xj4Sl3RIzxT{9@%3!0r6C-zEfi$Tw#6#u7fP7rXG)UrMM^?wzLGTj^9 zgf?hTMAn+=@7WSNi?RpvDvTJC0eGaf<1Q30Mu%7$&r zX_6z*eo@O14dwURaSvs2!WW1lS^=KKie^+JIt4)WV-?8l7Y)0D)W%4Wb}LVD`yDMAhVLg$dHvSq|lX}NqzcaDH}|BmB1BL z-C`!a2N-i7%Pp8X0J0q^IN4YQUE4nWz7jFt7Xji)zh~h#0lP&5BSf>~A*xh^^l*|? z!G+Y4SEclIBCT18rex)yPu%;Q5%*Zf(F~%{TEgnI5C(HF4P?kSu#R4Hy{l}ysMQiR zw&#s;xDqLQbW@O^vQV|SkEG-*bOrbnm6XRuV94zJB*B6j`)}b!z)S=?8-l(!)2N5xsUK)y6yHEaa6__Ks~uaAucsy>%C?vFe5oa zz!>m7ofhsZ{;=*LJW|`abYkn@=^L`^8!-)JyG=4X8oE@$n6cUW$|TU^3R8AS%X`nD zco>r}j~Z8UaB#|XKQT=kNEytz4AI661@)98qXGNELk(zE3Z z>(-O@orfLb(zCgU1t_lIUq^k5l7+fRqj1y-SZTuf-lL}R%AMH}) z)GYtFJ#-W}YkVDPszD2t7{iceiwmG9!fhZAqU@2i3y57Ambb$U5VMd?`G&uI)J`gI z$xo{q4-SC1cwH+bUNbUF9#J04m~R4gdF>`qEi=}*x?)U0*ba7`)KZj)k68;mjo zX9Fuk+XHMmgpm7*`%u69;lcQT*W?=r+}2S+ z{yV_;H5>OU9T{%{t5jYi(}v0L*Q)_5pMXI6Ey%R0+D1<*GYDni%lL8XgDYp%+v?9& znp~ztEuFapZw8N%kH-0E@eu@K)vNhU%4p{e$i+2%^wWAlz8{0CV(X-7FTsT zKLBOLW=!8He+Sn1N0`tdPrmfx3T-qqM3vFSr*G%6&F7&RGFH=UQa&gIx(GL9M(Hbh zt4{6KMZDL~6S0%cK|X;tr&;>)G9n*mD_v1EqzT6CpZt~1xke~ag$q@{s$nPEV7fr) zZ}1lRQ#H2ILrozh5#7V0fxTc^M%%W3!HcO+SoNLwJjsJjuHfhrooHh%VCa?-{a-;a^?c}8L{x{nt+ez)#=ehcUSk*(F93O_p^_`H}oHN?HhtZ z8$!aX8_$~u7aM29+1=|t(7!icy$p5x4s-wog(G4PQR!zg7qf`1y6coI{@4 r7iwNNFUE!}biN)MybSiAOm6u4UAep+JdA}whe)>Svgo&I-@*Jp!yj^c literal 0 HcmV?d00001 diff --git a/EOPSY/lab4/report/report.tex b/EOPSY/lab4/report/report.tex new file mode 100644 index 00000000..99737f5f --- /dev/null +++ b/EOPSY/lab4/report/report.tex @@ -0,0 +1,48 @@ +\documentclass{article} +\usepackage{listings} +\usepackage{hyperref} +\usepackage{graphicx} +\usepackage{float} +\usepackage[margin=1.25in]{geometry} +\begin{document} +\title{EOPSY Lab 4 Report} +\author{Krzysztof Rudnicki, 307585} +\date{\today} +\maketitle +\section{Introduction} +\paragraph{First in First out} +We use FIFO (First in First out) page replacement algorithm for those laboratories as indicated +by the PageFault.java file line 18 +\begin{figure}[H] +\caption{PageFault.java file} +\begin{lstlisting}[language=Java] +[...] +public class PageFault { + + /** + * The page replacement algorithm for the memory management sumulator. + * This method gets called whenever a page needs to be replaced. + *

xxR02}0h#yftUSowohi34 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/dev/null +cd ../work +cp ../ftp/* . +gzip -d memory.tgz +tar -xvf memory.tar +rm memory.tar +echo "" +echo "Now, go to the directory ../work and submit 'make'" diff --git a/EOPSY/lab4/task4/work/.memory.conf.swp b/EOPSY/lab4/task4/work/.memory.conf.swp new file mode 100644 index 0000000000000000000000000000000000000000..235982c0482179908153a937271d160cc54ed8a1 GIT binary patch literal 12288 zcmeI2J&YSg7=|aI;vfWp#5G9yLJFS++}b{$bA>qxp^J19cU*n|1&Oo9-dTI%_0DQ$ z_KdF}=~E&KL`#{Hk_rlFkf1=Kp&}Ipq6!`2o%K(0kP{-V z5oktUx?wXK8#|0fYGmwWy=SuI)WEm`8+h6c6h3)#>zvqV)N5g?mtMO_FTeEu(>`mS z9~)o;Y=8~00XDz}*Z><~1CJQ+`5AE=*Jo#W7ia02$I{s)Cv1QXumLu}2G{@_U;}J` z4X^<=zy{dB6KFujLfn2%hzrjnc>MoAfB*mDybyOlAMAro@G5u){PBViKZBpZJz&8h z_!wLPE8y>QLfi+xgRg)D*T7Y<0{+5yzk(mY_uwwb!CT;U5aRg-LDDOD2Z4U$<*nIU|KtH=*z zHoKWxP0|h-iei<>BK346(?XrNN1XE0D%ccVWyvHoy&u=|!NlpFOv~PnwDpBdt9ZYN zW2>CAGS;6^y%jn;k<~6s%Kg>&&*4wBScEX`Q)e_D=-wba3zRJ*D8qInF}+y3Je3oL zx2ZBteXJ10##Z_CSmd;w&ibh;r$R2&S?fxNnziaS8B6U-ZpO-1!WgrnMzxGNbWyf= zV=fJP3^fkx%~C{9W|=Ad_pOp1#!BIh!$wPp)bu-v#<}X;N!uQyoOyTpwhqjAB9yS+3WwM*94$AtN zImVwZGselv3v#*Y>10CkVS9MM20BvIO=UKu1lP{T7$}VLScjF+V&xU{A#lwg=1dOqSo?)P1;;u(4^+_f(_bOUeLhiUpjc5>dOn}wL>}$7n7Y$g~BeM z?wLzOi~V1231nQOH7t2di8Z4t(H^ahOso^F;wtHEPmOM9tlnDYs+8isykYQF{~}BL E3rp>QTmS$7 literal 0 HcmV?d00001 diff --git a/EOPSY/lab4/task4/work/Common.class b/EOPSY/lab4/task4/work/Common.class new file mode 100644 index 0000000000000000000000000000000000000000..bde546beb3230f1159b4e536f34af2083fff4273 GIT binary patch literal 1747 zcmaJ?%~IP|7(LfAmMz3T6bQc|KnzXdge1^nNB}o9P)yQ5lV-XS=8hwfC69ESfn7Iw zfX-ymMZ31eTcqELXRX;On`dE(!Jl`Ip@2dq`yDB`wPGfo*HPwh=E>Q zGBAoU9pf2XM%F+Q6YUJSYTz1j2Cm~q!{O0S$CSaKn+8nW3NN>HOzW5tNX^-+b3tpw-xz|E6 zCfduPx@&g&KV=nP|><3D+jONt{(-oJpz1%|{ zlOmL~DtY#?ELBkkfmN0U9^j!s&zUWn9To!J6>C=(Jhx=2C$@UVRiG?a1p?z|O~P61 zJ0kWcX$a`mkd)(|GXtE&wqw;Ru99Wx3#23A+|pgD`Mz}3rd^Rm+i`4i;s|q4!g*o7 z?#ewCh0?sD-b(^ z?3BK8H^93Ht&?vce&>Qm$ZIMx3S{sZy15QRcaY#q z2^h*OOdcTd7TUrqbgch@hN}liy@L)MAU*V&;RzUMVsIiVc7f$W+yv6JH`0?qGgkv# z_0ZFX#37dn9lc2i9my63TtHtPt`_2Ib1`maj<`kQUa7ySTH-1pObe+ZuBi@4=K(IXT~&a5#^+a>zO=^f=U zjL~`-BgjT1NbisijpF%)eq=Gon7HddGMk;nOec)RKVd$7i>5bdo=px9zWf!L;mpfl z(BGRpK+AMPd`opTyy!~3uohn({xkfVsqra{v#I=?uw0JRu9L_O^y4O}-NGbpV+zx} q&P1ddp}j|IQis{t1C0v8A{VjAyFp%$@E9BXWKD9P=Kgd3ulx%)LWP|G literal 0 HcmV?d00001 diff --git a/EOPSY/lab4/task4/work/Common.java b/EOPSY/lab4/task4/work/Common.java new file mode 100644 index 00000000..ef146424 --- /dev/null +++ b/EOPSY/lab4/task4/work/Common.java @@ -0,0 +1,58 @@ +public class Common { + + static public long s2l ( String s ) + { + long i = 0; + + try { + i = Long.parseLong(s.trim()); + } catch (NumberFormatException nfe) { + System.out.println("NumberFormatException: " + nfe.getMessage()); + } + + return i; + } + + static public int s2i ( String s ) + { + int i = 0; + + try { + i = Integer.parseInt(s.trim()); + } catch (NumberFormatException nfe) { + System.out.println("NumberFormatException: " + nfe.getMessage()); + } + + return i; + } + + static public byte s2b ( String s ) + { + int i = 0; + byte b = 0; + + try { + i = Integer.parseInt(s.trim()); + } catch (NumberFormatException nfe) { + System.out.println("NumberFormatException: " + nfe.getMessage()); + } + b = (byte) i; + return b; + } + + public static long randomLong( long MAX ) + { + long i = -1; + + java.util.Random generator = new + java.util.Random(System.currentTimeMillis()); + while (i > MAX || i < 0) + { + int intOne = generator.nextInt(); + int intTwo = generator.nextInt(); + i = (long) intOne + intTwo; + } + return i; + } +} + diff --git a/EOPSY/lab4/task4/work/ControlPanel.class b/EOPSY/lab4/task4/work/ControlPanel.class new file mode 100644 index 0000000000000000000000000000000000000000..c99a93a2ae2af600a49de9719acb630e143d33a3 GIT binary patch literal 28597 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 e#7^=|=;4I&bY7EZ5HGs}82>5u literal 0 HcmV?d00001 diff --git a/EOPSY/lab4/task4/work/ControlPanel.java b/EOPSY/lab4/task4/work/ControlPanel.java new file mode 100644 index 00000000..a0c1832c --- /dev/null +++ b/EOPSY/lab4/task4/work/ControlPanel.java @@ -0,0 +1,1852 @@ +import java.applet.*; +import java.awt.*; + +public class ControlPanel extends Frame +{ + Kernel kernel ; + Button runButton = new Button("run"); + Button stepButton = new Button("step"); + Button resetButton = new Button("reset"); + Button exitButton = new Button("exit"); + Button b0 = new Button("page " + (0)); + Button b1 = new Button("page " + (1)); + Button b2 = new Button("page " + (2)); + Button b3 = new Button("page " + (3)); + Button b4 = new Button("page " + (4)); + Button b5 = new Button("page " + (5)); + Button b6 = new Button("page " + (6)); + Button b7 = new Button("page " + (7)); + Button b8 = new Button("page " + (8)); + Button b9 = new Button("page " + (9)); + Button b10 = new Button("page " + (10)); + Button b11 = new Button("page " + (11)); + Button b12 = new Button("page " + (12)); + Button b13 = new Button("page " + (13)); + Button b14 = new Button("page " + (14)); + Button b15 = new Button("page " + (15)); + Button b16 = new Button("page " + (16)); + Button b17 = new Button("page " + (17)); + Button b18 = new Button("page " + (18)); + Button b19 = new Button("page " + (19)); + Button b20 = new Button("page " + (20)); + Button b21 = new Button("page " + (21)); + Button b22 = new Button("page " + (22)); + Button b23 = new Button("page " + (23)); + Button b24 = new Button("page " + (24)); + Button b25 = new Button("page " + (25)); + Button b26 = new Button("page " + (26)); + Button b27 = new Button("page " + (27)); + Button b28 = new Button("page " + (28)); + Button b29 = new Button("page " + (29)); + Button b30 = new Button("page " + (30)); + Button b31 = new Button("page " + (31)); + Button b32 = new Button("page " + (32)); + Button b33 = new Button("page " + (33)); + Button b34 = new Button("page " + (34)); + Button b35 = new Button("page " + (35)); + Button b36 = new Button("page " + (36)); + Button b37 = new Button("page " + (37)); + Button b38 = new Button("page " + (38)); + Button b39 = new Button("page " + (39)); + Button b40 = new Button("page " + (40)); + Button b41 = new Button("page " + (41)); + Button b42 = new Button("page " + (42)); + Button b43 = new Button("page " + (43)); + Button b44 = new Button("page " + (44)); + Button b45 = new Button("page " + (45)); + Button b46 = new Button("page " + (46)); + Button b47 = new Button("page " + (47)); + Button b48 = new Button("page " + (48)); + Button b49 = new Button("page " + (49)); + Button b50 = new Button("page " + (50)); + Button b51 = new Button("page " + (51)); + Button b52 = new Button("page " + (52)); + Button b53 = new Button("page " + (53)); + Button b54 = new Button("page " + (54)); + Button b55 = new Button("page " + (55)); + Button b56 = new Button("page " + (56)); + Button b57 = new Button("page " + (57)); + Button b58 = new Button("page " + (58)); + Button b59 = new Button("page " + (59)); + Button b60 = new Button("page " + (60)); + Button b61 = new Button("page " + (61)); + Button b62 = new Button("page " + (62)); + Button b63 = new Button("page " + (63)); + Label statusValueLabel = new Label("STOP" , Label.LEFT) ; + Label timeValueLabel = new Label("0" , Label.LEFT) ; + Label instructionValueLabel = new Label("NONE" , Label.LEFT) ; + Label addressValueLabel = new Label("NULL" , Label.LEFT) ; + Label pageFaultValueLabel = new Label("NO" , Label.LEFT) ; + Label virtualPageValueLabel = new Label("x" , Label.LEFT) ; + Label physicalPageValueLabel = new Label("0" , Label.LEFT) ; + Label RValueLabel = new Label("0" , Label.LEFT) ; + Label MValueLabel = new Label("0" , Label.LEFT) ; + Label inMemTimeValueLabel = new Label("0" , Label.LEFT) ; + Label lastTouchTimeValueLabel = new Label("0" , Label.LEFT) ; + Label lowValueLabel = new Label("0" , Label.LEFT) ; + Label highValueLabel = new Label("0" , Label.LEFT) ; + Label l0 = new Label(null, Label.CENTER); + Label l1 = new Label(null, Label.CENTER); + Label l2 = new Label(null, Label.CENTER); + Label l3 = new Label(null, Label.CENTER); + Label l4 = new Label(null, Label.CENTER); + Label l5 = new Label(null, Label.CENTER); + Label l6 = new Label(null, Label.CENTER); + Label l7 = new Label(null, Label.CENTER); + Label l8 = new Label(null, Label.CENTER); + Label l9 = new Label(null, Label.CENTER); + Label l10 = new Label(null, Label.CENTER); + Label l11 = new Label(null, Label.CENTER); + Label l12 = new Label(null, Label.CENTER); + Label l13 = new Label(null, Label.CENTER); + Label l14 = new Label(null, Label.CENTER); + Label l15 = new Label(null, Label.CENTER); + Label l16 = new Label(null, Label.CENTER); + Label l17 = new Label(null, Label.CENTER); + Label l18 = new Label(null, Label.CENTER); + Label l19 = new Label(null, Label.CENTER); + Label l20 = new Label(null, Label.CENTER); + Label l21 = new Label(null, Label.CENTER); + Label l22 = new Label(null, Label.CENTER); + Label l23 = new Label(null, Label.CENTER); + Label l24 = new Label(null, Label.CENTER); + Label l25 = new Label(null, Label.CENTER); + Label l26 = new Label(null, Label.CENTER); + Label l27 = new Label(null, Label.CENTER); + Label l28 = new Label(null, Label.CENTER); + Label l29 = new Label(null, Label.CENTER); + Label l30 = new Label(null, Label.CENTER); + Label l31 = new Label(null, Label.CENTER); + Label l32 = new Label(null, Label.CENTER); + Label l33 = new Label(null, Label.CENTER); + Label l34 = new Label(null, Label.CENTER); + Label l35 = new Label(null, Label.CENTER); + Label l36 = new Label(null, Label.CENTER); + Label l37 = new Label(null, Label.CENTER); + Label l38 = new Label(null, Label.CENTER); + Label l39 = new Label(null, Label.CENTER); + Label l40 = new Label(null, Label.CENTER); + Label l41 = new Label(null, Label.CENTER); + Label l42 = new Label(null, Label.CENTER); + Label l43 = new Label(null, Label.CENTER); + Label l44 = new Label(null, Label.CENTER); + Label l45 = new Label(null, Label.CENTER); + Label l46 = new Label(null, Label.CENTER); + Label l47 = new Label(null, Label.CENTER); + Label l48 = new Label(null, Label.CENTER); + Label l49 = new Label(null, Label.CENTER); + Label l50 = new Label(null, Label.CENTER); + Label l51 = new Label(null, Label.CENTER); + Label l52 = new Label(null, Label.CENTER); + Label l53 = new Label(null, Label.CENTER); + Label l54 = new Label(null, Label.CENTER); + Label l55 = new Label(null, Label.CENTER); + Label l56 = new Label(null, Label.CENTER); + Label l57 = new Label(null, Label.CENTER); + Label l58 = new Label(null, Label.CENTER); + Label l59 = new Label(null, Label.CENTER); + Label l60 = new Label(null, Label.CENTER); + Label l61 = new Label(null, Label.CENTER); + Label l62 = new Label(null, Label.CENTER); + Label l63 = new Label(null, Label.CENTER); + + public ControlPanel() + { + super(); + } + + public ControlPanel( String title ) + { + super(title); + } + + public void init( Kernel useKernel , String commands , String config ) + { + kernel = useKernel ; + kernel.setControlPanel( this ); + setLayout( null ); + setBackground( Color.white ); + setForeground( Color.black ); + resize( 635 , 545 ); + setFont( new Font( "Courier", 0, 12 ) ); + + runButton.setForeground( Color.blue ); + runButton.setBackground( Color.lightGray ); + runButton.reshape( 0,25,70,15 ); + add( runButton ); + + stepButton.setForeground( Color.blue ); + stepButton.setBackground( Color.lightGray ); + stepButton.reshape( 70,25,70,15 ); + add( stepButton ); + + resetButton.setForeground( Color.blue ); + resetButton.setBackground( Color.lightGray ); + resetButton.reshape( 140,25,70,15 ); + add( resetButton ); + + exitButton.setForeground( Color.blue ); + exitButton.setBackground( Color.lightGray ); + exitButton.reshape( 210,25,70,15 ); + add( exitButton ); + + b0.reshape(0, (0+2)*15+25, 70, 15); + b0.setForeground( Color.magenta ); + b0.setBackground( Color.lightGray ); + add ( b0 ); + + b1.reshape(0, (1+2)*15+25, 70, 15); + b1.setForeground( Color.magenta ); + b1.setBackground( Color.lightGray ); + add ( b1 ); + + b2.reshape(0, (2+2)*15+25, 70, 15); + b2.setForeground( Color.magenta ); + b2.setBackground( Color.lightGray ); + add ( b2 ); + + b3.reshape(0, (3+2)*15+25, 70, 15); + b3.setForeground( Color.magenta ); + b3.setBackground( Color.lightGray ); + add ( b3 ); + + b4.reshape(0, (4+2)*15+25, 70, 15); + b4.setForeground( Color.magenta ); + b4.setBackground( Color.lightGray ); + add ( b4 ); + + b5.reshape(0, (5+2)*15+25, 70, 15); + b5.setForeground( Color.magenta ); + b5.setBackground( Color.lightGray ); + add ( b5 ); + + b6.reshape(0, (6+2)*15+25, 70, 15); + b6.setForeground( Color.magenta ); + b6.setBackground( Color.lightGray ); + add ( b6 ); + + b7.reshape(0, (7+2)*15+25, 70, 15); + b7.setForeground( Color.magenta ); + b7.setBackground( Color.lightGray ); + add ( b7 ); + + b8.reshape(0, (8+2)*15+25, 70, 15); + b8.setForeground( Color.magenta ); + b8.setBackground( Color.lightGray ); + add ( b8 ); + + b9.reshape(0, (9+2)*15+25, 70, 15); + b9.setForeground( Color.magenta ); + b9.setBackground( Color.lightGray ); + add ( b9 ); + + b10.reshape(0, (10+2)*15+25, 70, 15); + b10.setForeground( Color.magenta ); + b10.setBackground( Color.lightGray ); + add ( b10 ); + + b11.reshape(0, (11+2)*15+25, 70, 15); + b11.setForeground( Color.magenta ); + b11.setBackground( Color.lightGray ); + add ( b11 ); + + b12.reshape(0, (12+2)*15+25, 70, 15); + b12.setForeground( Color.magenta ); + b12.setBackground( Color.lightGray ); + add ( b12 ); + + b13.reshape(0, (13+2)*15+25, 70, 15); + b13.setForeground( Color.magenta ); + b13.setBackground( Color.lightGray ); + add ( b13 ); + + b14.reshape(0, (14+2)*15+25, 70, 15); + b14.setForeground( Color.magenta ); + b14.setBackground( Color.lightGray ); + add ( b14 ); + + b15.reshape(0, (15+2)*15+25, 70, 15); + b15.setForeground( Color.magenta ); + b15.setBackground( Color.lightGray ); + add ( b15 ); + + b16.reshape(0, (16+2)*15+25, 70, 15); + b16.setForeground( Color.magenta ); + b16.setBackground( Color.lightGray ); + add ( b16 ); + + b17.reshape(0, (17+2)*15+25, 70, 15); + b17.setForeground( Color.magenta ); + b17.setBackground( Color.lightGray ); + add ( b17 ); + + b18.reshape(0, (18+2)*15+25, 70, 15); + b18.setForeground( Color.magenta ); + b18.setBackground( Color.lightGray ); + add ( b18 ); + + b19.reshape(0, (19+2)*15+25, 70, 15); + b19.setForeground( Color.magenta ); + b19.setBackground( Color.lightGray ); + add ( b19 ); + + b20.reshape(0, (20+2)*15+25, 70, 15); + b20.setForeground( Color.magenta ); + b20.setBackground( Color.lightGray ); + add ( b20 ); + + b21.reshape(0, (21+2)*15+25, 70, 15); + b21.setForeground( Color.magenta ); + b21.setBackground( Color.lightGray ); + add ( b21 ); + + b22.reshape(0, (22+2)*15+25, 70, 15); + b22.setForeground( Color.magenta ); + b22.setBackground( Color.lightGray ); + add ( b22 ); + + b23.reshape(0, (23+2)*15+25, 70, 15); + b23.setForeground( Color.magenta ); + b23.setBackground( Color.lightGray ); + add ( b23 ); + + b24.reshape(0, (24+2)*15+25, 70, 15); + b24.setForeground( Color.magenta ); + b24.setBackground( Color.lightGray ); + add ( b24 ); + + b25.reshape(0, (25+2)*15+25, 70, 15); + b25.setForeground( Color.magenta ); + b25.setBackground( Color.lightGray ); + add ( b25 ); + + b26.reshape(0, (26+2)*15+25, 70, 15); + b26.setForeground( Color.magenta ); + b26.setBackground( Color.lightGray ); + add ( b26 ); + + b27.reshape(0, (27+2)*15+25, 70, 15); + b27.setForeground( Color.magenta ); + b27.setBackground( Color.lightGray ); + add ( b27 ); + + b28.reshape(0, (28+2)*15+25, 70, 15); + b28.setForeground( Color.magenta ); + b28.setBackground( Color.lightGray ); + add ( b28 ); + + b29.reshape(0, (29+2)*15+25, 70, 15); + b29.setForeground( Color.magenta ); + b29.setBackground( Color.lightGray ); + add ( b29 ); + + b30.reshape(0, (30+2)*15+25, 70, 15); + b30.setForeground( Color.magenta ); + b30.setBackground( Color.lightGray ); + add ( b30 ); + + b31.reshape(0, (31+2)*15+25, 70, 15); + b31.setForeground( Color.magenta ); + b31.setBackground( Color.lightGray ); + add ( b31 ); + + b32.reshape(140, (0+2)*15+25, 70, 15); + b32.setForeground( Color.magenta ); + b32.setBackground( Color.lightGray ); + add ( b32 ); + + b33.reshape(140, (1+2)*15+25, 70, 15); + b33.setForeground( Color.magenta ); + b33.setBackground( Color.lightGray ); + add ( b33 ); + + b34.reshape(140, (2+2)*15+25, 70, 15); + b34.setForeground( Color.magenta ); + b34.setBackground( Color.lightGray ); + add ( b34 ); + + b35.reshape(140, (3+2)*15+25, 70, 15); + b35.setForeground( Color.magenta ); + b35.setBackground( Color.lightGray ); + add ( b35 ); + + b36.reshape(140, (4+2)*15+25, 70, 15); + b36.setForeground( Color.magenta ); + b36.setBackground( Color.lightGray ); + add ( b36 ); + + b37.reshape(140, (5+2)*15+25, 70, 15); + b37.setForeground( Color.magenta ); + b37.setBackground( Color.lightGray ); + add ( b37 ); + + b38.reshape(140, (6+2)*15+25, 70, 15); + b38.setForeground( Color.magenta ); + b38.setBackground( Color.lightGray ); + add ( b38 ); + + b39.reshape(140, (7+2)*15+25, 70, 15); + b39.setForeground( Color.magenta ); + b39.setBackground( Color.lightGray ); + add ( b39 ); + + b40.reshape(140, (8+2)*15+25, 70, 15); + b40.setForeground( Color.magenta ); + b40.setBackground( Color.lightGray ); + add ( b40 ); + + b41.reshape(140, (9+2)*15+25, 70, 15); + b41.setForeground( Color.magenta ); + b41.setBackground( Color.lightGray ); + add ( b41 ); + + b42.reshape(140, (10+2)*15+25, 70, 15); + b42.setForeground( Color.magenta ); + b42.setBackground( Color.lightGray ); + add ( b42 ); + + b43.reshape(140, (11+2)*15+25, 70, 15); + b43.setForeground( Color.magenta ); + b43.setBackground( Color.lightGray ); + add ( b43 ); + + b44.reshape(140, (12+2)*15+25, 70, 15); + b44.setForeground( Color.magenta ); + b44.setBackground( Color.lightGray ); + add ( b44 ); + + b45.reshape(140, (13+2)*15+25, 70, 15); + b45.setForeground( Color.magenta ); + b45.setBackground( Color.lightGray ); + add ( b45 ); + + b46.reshape(140, (14+2)*15+25, 70, 15); + b46.setForeground( Color.magenta ); + b46.setBackground( Color.lightGray ); + add ( b46 ); + + b47.reshape(140, (15+2)*15+25, 70, 15); + b47.setForeground( Color.magenta ); + b47.setBackground( Color.lightGray ); + add ( b47 ); + + b48.reshape(140, (16+2)*15+25, 70, 15); + b48.setForeground( Color.magenta ); + b48.setBackground( Color.lightGray ); + add ( b48 ); + + b49.reshape(140, (17+2)*15+25, 70, 15); + b49.setForeground( Color.magenta ); + b49.setBackground( Color.lightGray ); + add ( b49 ); + + b50.reshape(140, (18+2)*15+25, 70, 15); + b50.setForeground( Color.magenta ); + b50.setBackground( Color.lightGray ); + add ( b50 ); + + b51.reshape(140, (19+2)*15+25, 70, 15); + b51.setForeground( Color.magenta ); + b51.setBackground( Color.lightGray ); + add ( b51 ); + + b52.reshape(140, (20+2)*15+25, 70, 15); + b52.setForeground( Color.magenta ); + b52.setBackground( Color.lightGray ); + add ( b52 ); + + b53.reshape(140, (21+2)*15+25, 70, 15); + b53.setForeground( Color.magenta ); + b53.setBackground( Color.lightGray ); + add ( b53 ); + + b54.reshape(140, (22+2)*15+25, 70, 15); + b54.setForeground( Color.magenta ); + b54.setBackground( Color.lightGray ); + add ( b54 ); + + b55.reshape(140, (23+2)*15+25, 70, 15); + b55.setForeground( Color.magenta ); + b55.setBackground( Color.lightGray ); + add ( b55 ); + + b56.reshape(140, (24+2)*15+25, 70, 15); + b56.setForeground( Color.magenta ); + b56.setBackground( Color.lightGray ); + add ( b56 ); + + b57.reshape(140, (25+2)*15+25, 70, 15); + b57.setForeground( Color.magenta ); + b57.setBackground( Color.lightGray ); + add ( b57 ); + + b58.reshape(140, (26+2)*15+25, 70, 15); + b58.setForeground( Color.magenta ); + b58.setBackground( Color.lightGray ); + add ( b58 ); + + b59.reshape(140, (27+2)*15+25, 70, 15); + b59.setForeground( Color.magenta ); + b59.setBackground( Color.lightGray ); + add ( b59 ); + + b60.reshape(140, (28+2)*15+25, 70, 15); + b60.setForeground( Color.magenta ); + b60.setBackground( Color.lightGray ); + add ( b60 ); + + b61.reshape(140, (29+2)*15+25, 70, 15); + b61.setForeground( Color.magenta ); + b61.setBackground( Color.lightGray ); + add ( b61 ); + + b62.reshape(140, (30+2)*15+25, 70, 15); + b62.setForeground( Color.magenta ); + b62.setBackground( Color.lightGray ); + add ( b62 ); + + b63.reshape(140, (31+2)*15+25, 70, 15); + b63.setForeground( Color.magenta ); + b63.setBackground( Color.lightGray ); + add ( b63 ); + + statusValueLabel.reshape( 345,0+25,100,15 ); + add( statusValueLabel ); + + timeValueLabel.reshape( 345,15+25,100,15 ); + add( timeValueLabel ); + + instructionValueLabel.reshape( 385,45+25,100,15 ); + add( instructionValueLabel ); + + addressValueLabel.reshape(385,60+25,230,15); + add( addressValueLabel ); + + pageFaultValueLabel.reshape( 385,90+25,100,15 ); + add( pageFaultValueLabel ); + + virtualPageValueLabel.reshape( 395,120+25,200,15 ); + add( virtualPageValueLabel ); + + physicalPageValueLabel.reshape( 395,135+25,200,15 ); + add( physicalPageValueLabel ); + + RValueLabel.reshape( 395,150+25,200,15 ); + add( RValueLabel ); + + MValueLabel.reshape( 395,165+25,200,15 ); + add( MValueLabel ); + + inMemTimeValueLabel.reshape(395,180+25,200,15 ); + add( inMemTimeValueLabel ); + + lastTouchTimeValueLabel.reshape( 395,195+25,200,15 ); + add( lastTouchTimeValueLabel ); + + lowValueLabel.reshape( 395,210+25,230,15 ); + add( lowValueLabel ); + + highValueLabel.reshape( 395,225+25,230,15 ); + add( highValueLabel ); + + Label virtualOneLabel = new Label( "virtual" , Label.CENTER) ; + virtualOneLabel.reshape(0,15+25,70,15); + add(virtualOneLabel); + + Label virtualTwoLabel = new Label( "virtual" , Label.CENTER) ; + virtualTwoLabel.reshape(140,15+25,70,15); + add(virtualTwoLabel); + + Label physicalOneLabel = new Label( "physical" , Label.CENTER) ; + physicalOneLabel.reshape(70,15+25,70,15); + add(physicalOneLabel); + + Label physicalTwoLabel = new Label( "physical" , Label.CENTER) ; + physicalTwoLabel.reshape(210,15+25,70,15); + add(physicalTwoLabel); + + Label statusLabel = new Label("status: " , Label.LEFT) ; + statusLabel.reshape(285,0+25,65,15); + add(statusLabel); + + Label timeLabel = new Label("time: " , Label.LEFT) ; + timeLabel.reshape(285,15+25,50,15); + add(timeLabel); + + Label instructionLabel = new Label("instruction: " , Label.LEFT) ; + instructionLabel.reshape(285,45+25,100,15); + add(instructionLabel); + + Label addressLabel = new Label("address: " , Label.LEFT) ; + addressLabel.reshape(285,60+25,85,15); + add(addressLabel); + + Label pageFaultLabel = new Label("page fault: " , Label.LEFT) ; + pageFaultLabel.reshape(285,90+25,100,15); + add(pageFaultLabel); + + Label virtualPageLabel = new Label("virtual page: " , Label.LEFT) ; + virtualPageLabel.reshape(285,120+25,110,15); + add(virtualPageLabel); + + Label physicalPageLabel = new Label("physical page: " , Label.LEFT) ; + physicalPageLabel.reshape(285,135+25,110,15); + add(physicalPageLabel); + + Label RLabel = new Label("R: ", Label.LEFT) ; + RLabel.reshape(285,150+25,110,15); + add(RLabel); + + Label MLabel = new Label("M: " , Label.LEFT) ; + MLabel.reshape(285,165+25,110,15); + add(MLabel); + + Label inMemTimeLabel = new Label("inMemTime: " , Label.LEFT) ; + inMemTimeLabel.reshape(285,180+25,110,15); + add(inMemTimeLabel); + + Label lastTouchTimeLabel = new Label("lastTouchTime: " , Label.LEFT) ; + lastTouchTimeLabel.reshape(285,195+25,110,15); + add(lastTouchTimeLabel); + + Label lowLabel = new Label("low: " , Label.LEFT) ; + lowLabel.reshape(285,210+25,110,15); + add(lowLabel); + + Label highLabel = new Label("high: " , Label.LEFT) ; + highLabel.reshape(285,225+25,110,15); + add(highLabel); + + l0.reshape( 70, (2)*15+25, 60, 15 ); + l0.setForeground( Color.red ); + l0.setFont( new Font( "Courier", 0, 10 ) ); + add( l0 ); + + l1.reshape( 70, (3)*15+25, 60, 15 ); + l1.setForeground( Color.red ); + l1.setFont( new Font( "Courier", 0, 10 ) ); + add( l1 ); + + l2.reshape( 70, (4)*15+25, 60, 15 ); + l2.setForeground( Color.red ); + l2.setFont( new Font( "Courier", 0, 10 ) ); + add( l2 ); + + l3.reshape( 70, (5)*15+25, 60, 15 ); + l3.setForeground( Color.red ); + l3.setFont( new Font( "Courier", 0, 10 ) ); + add( l3 ); + + l4.reshape( 70, (6)*15+25, 60, 15 ); + l4.setForeground( Color.red ); + l4.setFont( new Font( "Courier", 0, 10 ) ); + add( l4 ); + + l5.reshape( 70, (7)*15+25, 60, 15 ); + l5.setForeground( Color.red ); + l5.setFont( new Font( "Courier", 0, 10 ) ); + add( l5 ); + + l6.reshape( 70, (8)*15+25, 60, 15 ); + l6.setForeground( Color.red ); + l6.setFont( new Font( "Courier", 0, 10 ) ); + add( l6 ); + + l7.reshape( 70, (9)*15+25, 60, 15 ); + l7.setForeground( Color.red ); + l7.setFont( new Font( "Courier", 0, 10 ) ); + add( l7 ); + + l8.reshape( 70, (10)*15+25, 60, 15 ); + l8.setForeground( Color.red ); + l8.setFont( new Font( "Courier", 0, 10 ) ); + add( l8 ); + + l9.reshape( 70, (11)*15+25, 60, 15 ); + l9.setForeground( Color.red ); + l9.setFont( new Font( "Courier", 0, 10 ) ); + add( l9 ); + + l10.reshape( 70, (12)*15+25, 60, 15 ); + l10.setForeground( Color.red ); + l10.setFont( new Font( "Courier", 0, 10 ) ); + add( l10 ); + + l11.reshape( 70, (13)*15+25, 60, 15 ); + l11.setForeground( Color.red ); + l11.setFont( new Font( "Courier", 0, 10 ) ); + add( l11 ); + + l12.reshape( 70, (14)*15+25, 60, 15 ); + l12.setForeground( Color.red ); + l12.setFont( new Font( "Courier", 0, 10 ) ); + add( l12 ); + + l13.reshape( 70, (15)*15+25, 60, 15 ); + l13.setForeground( Color.red ); + l13.setFont( new Font( "Courier", 0, 10 ) ); + add( l13 ); + + l14.reshape( 70, (16)*15+25, 60, 15 ); + l14.setForeground( Color.red ); + l14.setFont( new Font( "Courier", 0, 10 ) ); + add( l14 ); + + l15.reshape( 70, (17)*15+25, 60, 15 ); + l15.setForeground( Color.red ); + l15.setFont( new Font( "Courier", 0, 10 ) ); + add( l15 ); + + l16.reshape( 70, (18)*15+25, 60, 15 ); + l16.setForeground( Color.red ); + l16.setFont( new Font( "Courier", 0, 10 ) ); + add( l16 ); + + l17.reshape( 70, (19)*15+25, 60, 15 ); + l17.setForeground( Color.red ); + l17.setFont( new Font( "Courier", 0, 10 ) ); + add( l17 ); + + l18.reshape( 70, (20)*15+25, 60, 15 ); + l18.setForeground( Color.red ); + l18.setFont( new Font( "Courier", 0, 10 ) ); + add( l18 ); + + l19.reshape( 70, (21)*15+25, 60, 15 ); + l19.setForeground( Color.red ); + l19.setFont( new Font( "Courier", 0, 10 ) ); + add( l19 ); + + l20.reshape( 70, (22)*15+25, 60, 15 ); + l20.setForeground( Color.red ); + l20.setFont( new Font( "Courier", 0, 10 ) ); + add( l20 ); + + l21.reshape( 70, (23)*15+25, 60, 15 ); + l21.setForeground( Color.red ); + l21.setFont( new Font( "Courier", 0, 10 ) ); + add( l21 ); + + l22.reshape( 70, (24)*15+25, 60, 15 ); + l22.setForeground( Color.red ); + l22.setFont( new Font( "Courier", 0, 10 ) ); + add( l22 ); + + l23.reshape( 70, (25)*15+25, 60, 15 ); + l23.setForeground( Color.red ); + l23.setFont( new Font( "Courier", 0, 10 ) ); + add( l23 ); + + l24.reshape( 70, (26)*15+25, 60, 15 ); + l24.setForeground( Color.red ); + l24.setFont( new Font( "Courier", 0, 10 ) ); + add( l24 ); + + l25.reshape( 70, (27)*15+25, 60, 15 ); + l25.setForeground( Color.red ); + l25.setFont( new Font( "Courier", 0, 10 ) ); + add( l25 ); + + l26.reshape( 70, (28)*15+25, 60, 15 ); + l26.setForeground( Color.red ); + l26.setFont( new Font( "Courier", 0, 10 ) ); + add( l26 ); + + l27.reshape( 70, (29)*15+25, 60, 15 ); + l27.setForeground( Color.red ); + l27.setFont( new Font( "Courier", 0, 10 ) ); + add( l27 ); + + l28.reshape( 70, (30)*15+25, 60, 15 ); + l28.setForeground( Color.red ); + l28.setFont( new Font( "Courier", 0, 10 ) ); + add( l28 ); + + l29.reshape( 70, (31)*15+25, 60, 15 ); + l29.setForeground( Color.red ); + l29.setFont( new Font( "Courier", 0, 10 ) ); + add( l29 ); + + l30.reshape( 70, (32)*15+25, 60, 15 ); + l30.setForeground( Color.red ); + l30.setFont( new Font( "Courier", 0, 10 ) ); + add( l30 ); + + l31.reshape( 70, (33)*15+25, 60, 15 ); + l31.setForeground( Color.red ); + l31.setFont( new Font( "Courier", 0, 10 ) ); + add( l31 ); + + l32.reshape( 210, (2)*15+25, 60, 15 ); + l32.setForeground( Color.red ); + l32.setFont( new Font( "Courier", 0, 10 ) ); + add( l32 ); + + l33.reshape( 210, (3)*15+25, 60, 15 ); + l33.setForeground( Color.red ); + l33.setFont( new Font( "Courier", 0, 10 ) ); + add( l33 ); + + l34.reshape( 210, (4)*15+25, 60, 15 ); + l34.setForeground( Color.red ); + l34.setFont( new Font( "Courier", 0, 10 ) ); + add( l34 ); + + l35.reshape( 210, (5)*15+25, 60, 15 ); + l35.setForeground( Color.red ); + l35.setFont( new Font( "Courier", 0, 10 ) ); + add( l35 ); + + l36.reshape( 210, (6)*15+25, 60, 15 ); + l36.setForeground( Color.red ); + l36.setFont( new Font( "Courier", 0, 10 ) ); + add( l36 ); + + l37.reshape( 210, (7)*15+25, 60, 15 ); + l37.setForeground( Color.red ); + l37.setFont( new Font( "Courier", 0, 10 ) ); + add( l37 ); + + l38.reshape( 210, (8)*15+25, 60, 15 ); + l38.setForeground( Color.red ); + l38.setFont( new Font( "Courier", 0, 10 ) ); + add( l38 ); + + l39.reshape( 210, (9)*15+25, 60, 15 ); + l39.setForeground( Color.red ); + l39.setFont( new Font( "Courier", 0, 10 ) ); + add( l39 ); + + l40.reshape( 210, (10)*15+25, 60, 15 ); + l40.setForeground( Color.red ); + l40.setFont( new Font( "Courier", 0, 10 ) ); + add( l40 ); + + l41.reshape( 210, (11)*15+25, 60, 15 ); + l41.setForeground( Color.red ); + l41.setFont( new Font( "Courier", 0, 10 ) ); + add( l41 ); + + l42.reshape( 210, (12)*15+25, 60, 15 ); + l42.setForeground( Color.red ); + l42.setFont( new Font( "Courier", 0, 10 ) ); + add( l42 ); + + l43.reshape( 210, (13)*15+25, 60, 15 ); + l43.setForeground( Color.red ); + l43.setFont( new Font( "Courier", 0, 10 ) ); + add( l43 ); + + l44.reshape( 210, (14)*15+25, 60, 15 ); + l44.setForeground( Color.red ); + l44.setFont( new Font( "Courier", 0, 10 ) ); + add( l44 ); + + l45.reshape( 210, (15)*15+25, 60, 15 ); + l45.setForeground( Color.red ); + l45.setFont( new Font( "Courier", 0, 10 ) ); + add( l45 ); + + l46.reshape( 210, (16)*15+25, 60, 15 ); + l46.setForeground( Color.red ); + l46.setFont( new Font( "Courier", 0, 10 ) ); + add( l46 ); + + l47.reshape( 210, (17)*15+25, 60, 15 ); + l47.setForeground( Color.red ); + l47.setFont( new Font( "Courier", 0, 10 ) ); + add( l47 ); + + l48.reshape( 210, (18)*15+25, 60, 15 ); + l48.setForeground( Color.red ); + l48.setFont( new Font( "Courier", 0, 10 ) ); + add( l48 ); + + l49.reshape( 210, (19)*15+25, 60, 15 ); + l49.setForeground( Color.red ); + l49.setFont( new Font( "Courier", 0, 10 ) ); + add( l49 ); + + l50.reshape( 210, (20)*15+25, 60, 15 ); + l50.setForeground( Color.red ); + l50.setFont( new Font( "Courier", 0, 10 ) ); + add( l50 ); + + l51.reshape( 210, (21)*15+25, 60, 15 ); + l51.setForeground( Color.red ); + l51.setFont( new Font( "Courier", 0, 10 ) ); + add( l51 ); + + l52.reshape( 210, (22)*15+25, 60, 15 ); + l52.setForeground( Color.red ); + l52.setFont( new Font( "Courier", 0, 10 ) ); + add( l52 ); + + l53.reshape( 210, (23)*15+25, 60, 15 ); + l53.setForeground( Color.red ); + l53.setFont( new Font( "Courier", 0, 10 ) ); + add( l53 ); + + l54.reshape( 210, (24)*15+25, 60, 15 ); + l54.setForeground( Color.red ); + l54.setFont( new Font( "Courier", 0, 10 ) ); + add( l54 ); + + l55.reshape( 210, (25)*15+25, 60, 15 ); + l55.setForeground( Color.red ); + l55.setFont( new Font( "Courier", 0, 10 ) ); + add( l55 ); + + l56.reshape( 210, (26)*15+25, 60, 15 ); + l56.setForeground( Color.red ); + l56.setFont( new Font( "Courier", 0, 10 ) ); + add( l56 ); + + l57.reshape( 210, (27)*15+25, 60, 15 ); + l57.setForeground( Color.red ); + l57.setFont( new Font( "Courier", 0, 10 ) ); + add( l57 ); + + l58.reshape( 210, (28)*15+25, 60, 15 ); + l58.setForeground( Color.red ); + l58.setFont( new Font( "Courier", 0, 10 ) ); + add( l58 ); + + l59.reshape( 210, (29)*15+25, 60, 15 ); + l59.setForeground( Color.red ); + l59.setFont( new Font( "Courier", 0, 10 ) ); + add( l59 ); + + l60.reshape( 210, (30)*15+25, 60, 15 ); + l60.setForeground( Color.red ); + l60.setFont( new Font( "Courier", 0, 10 ) ); + add( l60 ); + + l61.reshape( 210, (31)*15+25, 60, 15 ); + l61.setForeground( Color.red ); + l61.setFont( new Font( "Courier", 0, 10 ) ); + add( l61 ); + + l62.reshape( 210, (32)*15+25, 60, 15 ); + l62.setForeground( Color.red ); + l62.setFont( new Font( "Courier", 0, 10 ) ); + add( l62 ); + + + l63.reshape( 210, (33)*15+25, 60, 15 ); + l63.setForeground( Color.red ); + l63.setFont( new Font( "Courier", 0, 10 ) ); + add( l63 ); + + kernel.init( commands , config ); + + show(); + } + + public void paintPage( Page page ) + { + virtualPageValueLabel.setText( Integer.toString( page.id ) ); + physicalPageValueLabel.setText( Integer.toString( page.physical ) ); + RValueLabel.setText( Integer.toString( page.R ) ); + MValueLabel.setText( Integer.toString( page.M ) ); + inMemTimeValueLabel.setText( Integer.toString( page.inMemTime ) ); + lastTouchTimeValueLabel.setText( Integer.toString( page.lastTouchTime ) ); + lowValueLabel.setText(Long.toString( page.low , Kernel.addressradix ) ); + highValueLabel.setText(Long.toString( page.high , Kernel.addressradix ) ); + } + + public void setStatus(String status) { + statusValueLabel.setText(status); + } + + public void addPhysicalPage( int pageNum , int physicalPage ) + { + if ( physicalPage == 0 ) + { + l0.setText( "page " + pageNum ); + } + else if ( physicalPage == 1) + { + l1.setText( "page " + pageNum ); + } + else if ( physicalPage == 2) + { + l2.setText( "page " + pageNum ); + } + else if ( physicalPage == 3) + { + l3.setText( "page " + pageNum ); + } + else if ( physicalPage == 4) + { + l4.setText( "page " + pageNum ); + } + else if ( physicalPage == 5) + { + l5.setText( "page " + pageNum ); + } + else if ( physicalPage == 6) + { + l6.setText( "page " + pageNum ); + } + else if ( physicalPage == 7) + { + l7.setText( "page " + pageNum ); + } + else if ( physicalPage == 8) + { + l8.setText( "page " + pageNum ); + } + else if ( physicalPage == 9) + { + l9.setText( "page " + pageNum ); + } + else if ( physicalPage == 10) + { + l10.setText( "page " + pageNum ); + } + else if ( physicalPage == 11) + { + l11.setText( "page " + pageNum ); + } + else if ( physicalPage == 12) + { + l12.setText( "page " + pageNum ); + } + else if ( physicalPage == 13) + { + l13.setText( "page " + pageNum ); + } + else if ( physicalPage == 14) + { + l14.setText( "page " + pageNum ); + } + else if ( physicalPage == 15) + { + l15.setText( "page " + pageNum ); + } + else if ( physicalPage == 16) + { + l16.setText( "page " + pageNum ); + } + else if ( physicalPage == 17) + { + l17.setText( "page " + pageNum ); + } + else if ( physicalPage == 18) + { + l18.setText( "page " + pageNum ); + } + else if ( physicalPage == 19) + { + l19.setText( "page " + pageNum ); + } + else if ( physicalPage == 20) + { + l20.setText( "page " + pageNum ); + } + else if ( physicalPage == 21) + { + l21.setText( "page " + pageNum ); + } + else if ( physicalPage == 22) + { + l22.setText( "page " + pageNum ); + } + else if ( physicalPage == 23) + { + l23.setText( "page " + pageNum ); + } + else if ( physicalPage == 24) + { + l24.setText( "page " + pageNum ); + } + else if ( physicalPage == 25) + { + l25.setText( "page " + pageNum ); + } + else if ( physicalPage == 26) + { + l26.setText( "page " + pageNum ); + } + else if ( physicalPage == 27) + { + l27.setText( "page " + pageNum ); + } + else if ( physicalPage == 28) + { + l28.setText( "page " + pageNum ); + } + else if ( physicalPage == 29) + { + l29.setText( "page " + pageNum ); + } + else if ( physicalPage == 30) + { + l30.setText( "page " + pageNum ); + } + else if ( physicalPage == 31) + { + l31.setText( "page " + pageNum ); + } + else if ( physicalPage == 32) + { + l32.setText( "page " + pageNum ); + } + else if ( physicalPage == 33) + { + l33.setText( "page " + pageNum ); + } + else if ( physicalPage == 34) + { + l34.setText( "page " + pageNum ); + } + else if ( physicalPage == 35) + { + l35.setText( "page " + pageNum ); + } + else if ( physicalPage == 36) + { + l36.setText( "page " + pageNum ); + } + else if ( physicalPage == 37) + { + l37.setText( "page " + pageNum ); + } + else if ( physicalPage == 38) + { + l38.setText( "page " + pageNum ); + } + else if ( physicalPage == 39) + { + l39.setText( "page " + pageNum ); + } + else if ( physicalPage == 40) + { + l40.setText( "page " + pageNum ); + } + else if ( physicalPage == 41) + { + l41.setText( "page " + pageNum ); + } + else if ( physicalPage == 42) + { + l42.setText( "page " + pageNum ); + } + else if ( physicalPage == 43) + { + l43.setText( "page " + pageNum ); + } + else if ( physicalPage == 44) + { + l44.setText( "page " + pageNum ); + } + else if ( physicalPage == 45) + { + l45.setText( "page " + pageNum ); + } + else if ( physicalPage == 46) + { + l46.setText( "page " + pageNum ); + } + else if ( physicalPage == 47) + { + l47.setText( "page " + pageNum ); + } + else if ( physicalPage == 48) + { + l48.setText( "page " + pageNum ); + } + else if ( physicalPage == 49) + { + l49.setText( "page " + pageNum ); + } + else if ( physicalPage == 50) + { + l50.setText( "page " + pageNum ); + } + else if ( physicalPage == 51) + { + l51.setText( "page " + pageNum ); + } + else if ( physicalPage == 52) + { + l52.setText( "page " + pageNum ); + } + else if ( physicalPage == 53) + { + l53.setText( "page " + pageNum ); + } + else if ( physicalPage == 54) + { + l54.setText( "page " + pageNum ); + } + else if ( physicalPage == 55) + { + l55.setText( "page " + pageNum ); + } + else if ( physicalPage == 56) + { + l56.setText( "page " + pageNum ); + } + else if ( physicalPage == 57) + { + l57.setText( "page " + pageNum ); + } + else if ( physicalPage == 58) + { + l58.setText( "page " + pageNum ); + } + else if ( physicalPage == 59) + { + l59.setText( "page " + pageNum ); + } + else if ( physicalPage == 60) + { + l60.setText( "page " + pageNum ); + } + else if ( physicalPage == 61) + { + l61.setText( "page " + pageNum ); + } + else if ( physicalPage == 62) + { + l62.setText( "page " + pageNum ); + } + else if ( physicalPage == 63) + { + l63.setText( "page " + pageNum ); + } + else + { + return; + } + } + + public void removePhysicalPage( int physicalPage ) + { + if ( physicalPage == 0 ) + { + l0.setText( null ); + } + else if ( physicalPage == 1) + { + l1.setText( null ); + } + else if ( physicalPage == 2) + { + l2.setText(null ); + } + else if ( physicalPage == 3) + { + l3.setText( null ); + } + else if ( physicalPage == 4) + { + l4.setText( null ); + } + else if ( physicalPage == 5) + { + l5.setText( null ); + } + else if ( physicalPage == 6) + { + l6.setText( null ); + } + else if ( physicalPage == 7) + { + l7.setText( null ); + } + else if ( physicalPage == 8) + { + l8.setText( null ); + } + else if ( physicalPage == 9) + { + l9.setText( null ); + } + else if ( physicalPage == 10) + { + l10.setText( null ); + } + else if ( physicalPage == 11) + { + l11.setText( null ); + } + else if ( physicalPage == 12) + { + l12.setText( null ); + } + else if ( physicalPage == 13) + { + l13.setText( null ); + } + else if ( physicalPage == 14) + { + l14.setText( null ); + } + else if ( physicalPage == 15) + { + l15.setText( null ); + } + else if ( physicalPage == 16) + { + l16.setText( null ); + } + else if ( physicalPage == 17) + { + l17.setText( null ); + } + else if ( physicalPage == 18) + { + l18.setText( null ); + } + else if ( physicalPage == 19) + { + l19.setText( null ); + } + else if ( physicalPage == 20) + { + l20.setText( null ); + } + else if ( physicalPage == 21) + { + l21.setText( null ); + } + else if ( physicalPage == 22) + { + l22.setText( null ); + } + else if ( physicalPage == 23) + { + l23.setText( null ); + } + else if ( physicalPage == 24) + { + l24.setText( null ); + } + else if ( physicalPage == 25) + { + l25.setText( null ); + } + else if ( physicalPage == 26) + { + l26.setText( null ); + } + else if ( physicalPage == 27) + { + l27.setText( null ); + } + else if ( physicalPage == 28) + { + l28.setText( null ); + } + else if ( physicalPage == 29) + { + l29.setText( null ); + } + else if ( physicalPage == 30) + { + l30.setText( null ); + } + else if ( physicalPage == 31) + { + l31.setText( null ); + } + else if ( physicalPage == 32) + { + l32.setText( null ); + } + else if ( physicalPage == 33) + { + l33.setText( null ); + } + else if ( physicalPage == 34) + { + l34.setText( null ); + } + else if ( physicalPage == 35) + { + l35.setText( null ); + } + else if ( physicalPage == 36) + { + l36.setText( null ); + } + else if ( physicalPage == 37) + { + l37.setText( null ); + } + else if ( physicalPage == 38) + { + l38.setText( null ); + } + else if ( physicalPage == 39) + { + l39.setText( null ); + } + else if ( physicalPage == 40) + { + l40.setText( null ); + } + else if ( physicalPage == 41) + { + l41.setText( null ); + } + else if ( physicalPage == 42) + { + l42.setText( null ); + } + else if ( physicalPage == 43) + { + l43.setText( null ); + } + else if ( physicalPage == 44) + { + l44.setText( null ); + } + else if ( physicalPage == 45) + { + l45.setText( null ); + } + else if ( physicalPage == 46) + { + l46.setText( null ); + } + else if ( physicalPage == 47) + { + l47.setText( null ); + } + else if ( physicalPage == 48) + { + l48.setText( null ); + } + else if ( physicalPage == 49) + { + l49.setText( null ); + } + else if ( physicalPage == 50) + { + l50.setText( null ); + } + else if ( physicalPage == 51) + { + l51.setText( null ); + } + else if ( physicalPage == 52) + { + l52.setText( null ); + } + else if ( physicalPage == 53) + { + l53.setText( null ); + } + else if ( physicalPage == 54) + { + l54.setText( null ); + } + else if ( physicalPage == 55) + { + l55.setText( null ); + } + else if ( physicalPage == 56) + { + l56.setText( null ); + } + else if ( physicalPage == 57) + { + l57.setText( null ); + } + else if ( physicalPage == 58) + { + l58.setText( null ); + } + else if ( physicalPage == 59) + { + l59.setText( null ); + } + else if ( physicalPage == 60) + { + l60.setText( null ); + } + else if ( physicalPage == 61) + { + l61.setText( null ); + } + else if ( physicalPage == 62) + { + l62.setText( null ); + } + else if ( physicalPage == 63) + { + l63.setText( null ); + } + else + { + return; + } + } + + + public boolean action( Event e, Object arg ) + { + if ( e.target == runButton ) + { + setStatus( "RUN" ); + runButton.disable(); + stepButton.disable(); + resetButton.disable(); + kernel.run(); + setStatus( "STOP" ); + resetButton.enable(); + return true; + } + else if ( e.target == stepButton ) + { + setStatus( "STEP" ); + kernel.step(); + if (kernel.runcycles == kernel.runs) { + stepButton.disable(); + runButton.disable(); + } + setStatus("STOP"); + return true; + } + else if ( e.target == resetButton ) + { + kernel.reset(); + runButton.enable(); + stepButton.enable(); + return true; + } + else if ( e.target == exitButton ) + { + System.exit(0); + return true; + } + else if ( e.target == b0 ) + { + kernel.getPage(0); + return true; + } + else if ( e.target == b1 ) + { + kernel.getPage(1); + return true; + } + else if ( e.target == b2 ) + { + kernel.getPage(2); + return true; + } + else if ( e.target == b3 ) + { + kernel.getPage(3); + return true; + } + else if ( e.target == b4 ) + { + kernel.getPage(4); + return true; + } + else if ( e.target == b5 ) + { + kernel.getPage(5); + return true; + } + else if ( e.target == b6 ) + { + kernel.getPage(6); + return true; + } + else if ( e.target == b7 ) + { + kernel.getPage(7); + return true; + } + else if ( e.target == b8 ) + { + kernel.getPage(8); + return true; + } + else if ( e.target == b9 ) + { + kernel.getPage(9); + return true; + } + else if ( e.target == b10 ) + { + kernel.getPage(10); + return true; + } + else if ( e.target == b11 ) + { + kernel.getPage(11); + return true; + } + else if ( e.target == b12 ) + { + kernel.getPage(12); + return true; + } + else if ( e.target == b13 ) + { + kernel.getPage(13); + return true; + } + else if ( e.target == b14 ) + { + kernel.getPage(14); + return true; + } + else if ( e.target == b15 ) + { + kernel.getPage(15); + return true; + } + else if ( e.target == b16 ) + { + kernel.getPage(16); + return true; + } + else if ( e.target == b17 ) + { + kernel.getPage(17); + return true; + } + else if ( e.target == b18 ) + { + kernel.getPage(18); + return true; + } + else if ( e.target == b19 ) + { + kernel.getPage(19); + return true; + } + else if ( e.target == b20 ) + { + kernel.getPage(20); + return true; + } + else if ( e.target == b21 ) + { + kernel.getPage(21); + return true; + } + else if ( e.target == b22 ) + { + kernel.getPage(22); + return true; + } + else if ( e.target == b23 ) + { + kernel.getPage(23); + return true; + } + else if ( e.target == b24 ) + { + kernel.getPage(24); + return true; + } + else if ( e.target == b25 ) + { + kernel.getPage(25); + return true; + } + else if ( e.target == b26 ) + { + kernel.getPage(26); + return true; + } + else if ( e.target == b27 ) + { + kernel.getPage(27); + return true; + } + else if ( e.target == b28 ) + { + kernel.getPage(28); + return true; + } + else if ( e.target == b29 ) + { + kernel.getPage(29); + return true; + } + else if ( e.target == b30 ) + { + kernel.getPage(30); + return true; + } + else if ( e.target == b31 ) + { + kernel.getPage(31); + return true; + } + else if ( e.target == b32 ) + { + kernel.getPage(32); + return true; + } + else if ( e.target == b33 ) + { + kernel.getPage(33); + return true; + } + else if ( e.target == b34 ) + { + kernel.getPage(34); + return true; + } + else if ( e.target == b35 ) + { + kernel.getPage(35); + return true; + } + else if ( e.target == b36 ) + { + kernel.getPage(36); + return true; + } + else if ( e.target == b37 ) + { + kernel.getPage(37); + return true; + } + else if ( e.target == b38 ) + { + kernel.getPage(38); + return true; + } + else if ( e.target == b39 ) + { + kernel.getPage(39); + return true; + } + else if ( e.target == b40 ) + { + kernel.getPage(40); + return true; + } + else if ( e.target == b41 ) + { + kernel.getPage(41); + return true; + } + else if ( e.target == b42 ) + { + kernel.getPage(42); + return true; + } + else if ( e.target == b43 ) + { + kernel.getPage(43); + return true; + } + else if ( e.target == b44 ) + { + kernel.getPage(44); + return true; + } + else if ( e.target == b45 ) + { + kernel.getPage(45); + return true; + } + else if ( e.target == b46 ) + { + kernel.getPage(46); + return true; + } + else if ( e.target == b47 ) + { + kernel.getPage(47); + return true; + } + else if ( e.target == b48 ) + { + kernel.getPage(48); + return true; + } + else if ( e.target == b49 ) + { + kernel.getPage(49); + return true; + } + else if ( e.target == b50 ) + { + kernel.getPage(50); + return true; + } + else if ( e.target == b51 ) + { + kernel.getPage(51); + return true; + } + else if ( e.target == b52 ) + { + kernel.getPage(52); + return true; + } + else if ( e.target == b53 ) + { + kernel.getPage(53); + return true; + } + else if ( e.target == b54 ) + { + kernel.getPage(54); + return true; + } + else if ( e.target == b55 ) + { + kernel.getPage(55); + return true; + } + else if ( e.target == b56 ) + { + kernel.getPage(56); + return true; + } + else if ( e.target == b57 ) + { + kernel.getPage(57); + return true; + } + else if ( e.target == b58 ) + { + kernel.getPage(58); + return true; + } + else if ( e.target == b59 ) + { + kernel.getPage(59); + return true; + } + else if ( e.target == b60 ) + { + kernel.getPage(60); + return true; + } + else if ( e.target == b61 ) + { + kernel.getPage(61); + return true; + } + else if ( e.target == b62 ) + { + kernel.getPage(62); + return true; + } + else if ( e.target == b63 ) + { + kernel.getPage(63); + return true; + } + else + { + return false; + } + } +} diff --git a/EOPSY/lab4/task4/work/Instruction.class b/EOPSY/lab4/task4/work/Instruction.class new file mode 100644 index 0000000000000000000000000000000000000000..9f6d3616e9bc730e0ddcf2cd2d72e54c5729b0a1 GIT binary patch literal 318 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 R;HegzZNWJfoNK|a{~u*|^L79L literal 0 HcmV?d00001 diff --git a/EOPSY/lab4/task4/work/Kernel.java b/EOPSY/lab4/task4/work/Kernel.java new file mode 100644 index 00000000..362f227d --- /dev/null +++ b/EOPSY/lab4/task4/work/Kernel.java @@ -0,0 +1,511 @@ +import java.lang.Thread; +import java.io.*; +import java.util.*; + +public class Kernel extends Thread +{ + // The number of virtual pages must be fixed at 63 due to + // dependencies in the GUI + private static int virtPageNum = 63; + + private String output = null; + private static final String lineSeparator = + System.getProperty("line.separator"); + private String command_file; + private String config_file; + private ControlPanel controlPanel ; + private Vector memVector = new Vector(); + private Vector instructVector = new Vector(); + private String status; + private boolean doStdoutLog = false; + private boolean doFileLog = false; + public int runs; + public int runcycles; + public long block = (int) Math.pow(2,12); + public static byte addressradix = 10; + + public void init( String commands , String config ) + { + File f = new File( commands ); + command_file = commands; + config_file = config; + String line; + String tmp = null; + String command = ""; + byte R = 0; + byte M = 0; + int i = 0; + int j = 0; + int id = 0; + int physical = 0; + int physical_count = 0; + int inMemTime = 0; + int lastTouchTime = 0; + int map_count = 0; + double power = 14; + long high = 0; + long low = 0; + long addr = 0; + long address_limit = (block * virtPageNum+1)-1; + + if ( config != null ) + { + f = new File ( config ); + try + { + DataInputStream in = new DataInputStream(new FileInputStream(f)); + while ((line = in.readLine()) != null) + { + if (line.startsWith("numpages")) + { + StringTokenizer st = new StringTokenizer(line); + while (st.hasMoreTokens()) + { + tmp = st.nextToken(); + virtPageNum = Common.s2i(st.nextToken()) - 1; + if ( virtPageNum < 2 || virtPageNum > 63 ) + { + System.out.println("MemoryManagement: numpages out of bounds."); + System.exit(-1); + } + address_limit = (block * virtPageNum+1)-1; + } + } + } + in.close(); + } catch (IOException e) { /* Handle exceptions */ } + for (i = 0; i <= virtPageNum; i++) + { + high = (block * (i + 1))-1; + low = block * i; + memVector.addElement(new Page(i, -1, R, M, 0, 0, high, low)); + } + try + { + DataInputStream in = new DataInputStream(new FileInputStream(f)); + while ((line = in.readLine()) != null) + + { + if (line.startsWith("memset")) + { + StringTokenizer st = new StringTokenizer(line); + st.nextToken(); + while (st.hasMoreTokens()) + { + id = Common.s2i(st.nextToken()); + tmp = st.nextToken(); + if (tmp.startsWith("x")) + { + physical = -1; + } + else + { + physical = Common.s2i(tmp); + } + if ((0 > id || id > virtPageNum) || (-1 > physical || physical > ((virtPageNum - 1) / 2))) + { + System.out.println("MemoryManagement: Invalid page value in " + config); + System.exit(-1); + } + R = Common.s2b(st.nextToken()); + if (R < 0 || R > 1) + { + System.out.println("MemoryManagement: Invalid R value in " + config); + System.exit(-1); + } + M = Common.s2b(st.nextToken()); + if (M < 0 || M > 1) + { + System.out.println("MemoryManagement: Invalid M value in " + config); + System.exit(-1); + } + inMemTime = Common.s2i(st.nextToken()); + if (inMemTime < 0) + { + System.out.println("MemoryManagement: Invalid inMemTime in " + config); + System.exit(-1); + } + lastTouchTime = Common.s2i(st.nextToken()); + if (lastTouchTime < 0) + { + System.out.println("MemoryManagement: Invalid lastTouchTime in " + config); + System.exit(-1); + } + Page page = (Page) memVector.elementAt(id); + page.physical = physical; + page.R = R; + page.M = M; + page.inMemTime = inMemTime; + page.lastTouchTime = lastTouchTime; + } + } + if (line.startsWith("enable_logging")) + { + StringTokenizer st = new StringTokenizer(line); + while (st.hasMoreTokens()) + { + if ( st.nextToken().startsWith( "true" ) ) + { + doStdoutLog = true; + } + } + } + if (line.startsWith("log_file")) + { + StringTokenizer st = new StringTokenizer(line); + while (st.hasMoreTokens()) + { + tmp = st.nextToken(); + } + if ( tmp.startsWith( "log_file" ) ) + { + doFileLog = false; + output = "tracefile"; + } + else + { + doFileLog = true; + doStdoutLog = false; + output = tmp; + } + } + if (line.startsWith("pagesize")) + { + StringTokenizer st = new StringTokenizer(line); + while (st.hasMoreTokens()) + { + tmp = st.nextToken(); + tmp = st.nextToken(); + if ( tmp.startsWith( "power" ) ) + { + power = (double) Integer.parseInt(st.nextToken()); + block = (int) Math.pow(2,power); + } + else + { + block = Long.parseLong(tmp,10); + } + address_limit = (block * virtPageNum+1)-1; + } + if ( block < 64 || block > Math.pow(2,26)) + { + System.out.println("MemoryManagement: pagesize is out of bounds"); + System.exit(-1); + } + for (i = 0; i <= virtPageNum; i++) + { + Page page = (Page) memVector.elementAt(i); + page.high = (block * (i + 1))-1; + page.low = block * i; + } + } + if (line.startsWith("addressradix")) + { + StringTokenizer st = new StringTokenizer(line); + while (st.hasMoreTokens()) + { + tmp = st.nextToken(); + tmp = st.nextToken(); + addressradix = Byte.parseByte(tmp); + if ( addressradix < 0 || addressradix > 20 ) + { + System.out.println("MemoryManagement: addressradix out of bounds."); + System.exit(-1); + } + } + } + } + in.close(); + } catch (IOException e) { /* Handle exceptions */ } + } + f = new File ( commands ); + try + { + DataInputStream in = new DataInputStream(new FileInputStream(f)); + while ((line = in.readLine()) != null) + { + if (line.startsWith("READ") || line.startsWith("WRITE")) + { + if (line.startsWith("READ")) + { + command = "READ"; + } + if (line.startsWith("WRITE")) + { + command = "WRITE"; + } + StringTokenizer st = new StringTokenizer(line); + tmp = st.nextToken(); + tmp = st.nextToken(); + if (tmp.startsWith("random")) + { + instructVector.addElement(new Instruction(command,Common.randomLong( address_limit ))); + } + else + { + if ( tmp.startsWith( "bin" ) ) + { + addr = Long.parseLong(st.nextToken(),2); + } + else if ( tmp.startsWith( "oct" ) ) + { + addr = Long.parseLong(st.nextToken(),8); + } + else if ( tmp.startsWith( "hex" ) ) + { + addr = Long.parseLong(st.nextToken(),16); + } + else + { + addr = Long.parseLong(tmp); + } + if (0 > addr || addr > address_limit) + { + System.out.println("MemoryManagement: " + addr + ", Address out of range in " + commands); + System.exit(-1); + } + instructVector.addElement(new Instruction(command,addr)); + } + } + } + in.close(); + } catch (IOException e) { /* Handle exceptions */ } + runcycles = instructVector.size(); + if ( runcycles < 1 ) + { + System.out.println("MemoryManagement: no instructions present for execution."); + System.exit(-1); + } + if ( doFileLog ) + { + File trace = new File(output); + trace.delete(); + } + runs = 0; + for (i = 0; i < virtPageNum; i++) + { + Page page = (Page) memVector.elementAt(i); + if ( page.physical != -1 ) + { + map_count++; + } + for (j = 0; j < virtPageNum; j++) + { + Page tmp_page = (Page) memVector.elementAt(j); + if (tmp_page.physical == page.physical && page.physical >= 0) + { + physical_count++; + } + } + if (physical_count > 1) + { + System.out.println("MemoryManagement: Duplicate physical page's in " + config); + System.exit(-1); + } + physical_count = 0; + } + if ( map_count < ( virtPageNum +1 ) / 2 ) + { + for (i = 0; i < virtPageNum; i++) + { + Page page = (Page) memVector.elementAt(i); + if ( page.physical == -1 && map_count < ( virtPageNum + 1 ) / 2 ) + { + page.physical = i; + map_count++; + } + } + } + for (i = 0; i < virtPageNum; i++) + { + Page page = (Page) memVector.elementAt(i); + if (page.physical == -1) + { + controlPanel.removePhysicalPage( i ); + } + else + { + controlPanel.addPhysicalPage( i , page.physical ); + } + } + for (i = 0; i < instructVector.size(); i++) + { + high = block * virtPageNum; + Instruction instruct = ( Instruction ) instructVector.elementAt( i ); + if ( instruct.addr < 0 || instruct.addr > high ) + { + System.out.println("MemoryManagement: Instruction (" + instruct.inst + " " + instruct.addr + ") out of bounds."); + System.exit(-1); + } + } + } + + public void setControlPanel(ControlPanel newControlPanel) + { + controlPanel = newControlPanel ; + } + + public void getPage(int pageNum) + { + Page page = ( Page ) memVector.elementAt( pageNum ); + controlPanel.paintPage( page ); + } + + private void printLogFile(String message) + { + String line; + String temp = ""; + + File trace = new File(output); + if (trace.exists()) + { + try + { + DataInputStream in = new DataInputStream( new FileInputStream( output ) ); + while ((line = in.readLine()) != null) { + temp = temp + line + lineSeparator; + } + in.close(); + } + catch ( IOException e ) + { + /* Do nothing */ + } + } + try + { + PrintStream out = new PrintStream( new FileOutputStream( output ) ); + out.print( temp ); + out.print( message ); + out.close(); + } + catch (IOException e) + { + /* Do nothing */ + } + } + + public void run() + { + step(); + while (runs != runcycles) + { + try + { + Thread.sleep(2000); + } + catch(InterruptedException e) + { + /* Do nothing */ + } + step(); + } + } + + public void step() + { + int i = 0; + + Instruction instruct = ( Instruction ) instructVector.elementAt( runs ); + controlPanel.instructionValueLabel.setText( instruct.inst ); + controlPanel.addressValueLabel.setText( Long.toString( instruct.addr , addressradix ) ); + getPage( Virtual2Physical.pageNum( instruct.addr , virtPageNum , block ) ); + if ( controlPanel.pageFaultValueLabel.getText() == "YES" ) + { + controlPanel.pageFaultValueLabel.setText( "NO" ); + } + if ( instruct.inst.startsWith( "READ" ) ) + { + Page page = ( Page ) memVector.elementAt( Virtual2Physical.pageNum( instruct.addr , virtPageNum , block ) ); + if ( page.physical == -1 ) + { + if ( doFileLog ) + { + printLogFile( "READ " + Long.toString(instruct.addr , addressradix) + " ... page fault" ); + } + if ( doStdoutLog ) + { + System.out.println( "READ " + Long.toString(instruct.addr , addressradix) + " ... page fault" ); + } + PageFault.replacePage( memVector , virtPageNum , Virtual2Physical.pageNum( instruct.addr , virtPageNum , block ) , controlPanel ); + controlPanel.pageFaultValueLabel.setText( "YES" ); + } + else + { + page.R = 1; + page.lastTouchTime = 0; + if ( doFileLog ) + { + printLogFile( "READ " + Long.toString( instruct.addr , addressradix ) + " ... okay" ); + } + if ( doStdoutLog ) + { + System.out.println( "READ " + Long.toString( instruct.addr , addressradix ) + " ... okay" ); + } + } + } + if ( instruct.inst.startsWith( "WRITE" ) ) + { + Page page = ( Page ) memVector.elementAt( Virtual2Physical.pageNum( instruct.addr , virtPageNum , block ) ); + if ( page.physical == -1 ) + { + if ( doFileLog ) + { + printLogFile( "WRITE " + Long.toString(instruct.addr , addressradix) + " ... page fault" ); + } + if ( doStdoutLog ) + { + System.out.println( "WRITE " + Long.toString(instruct.addr , addressradix) + " ... page fault" ); + } + PageFault.replacePage( memVector , virtPageNum , Virtual2Physical.pageNum( instruct.addr , virtPageNum , block ) , controlPanel ); controlPanel.pageFaultValueLabel.setText( "YES" ); + } + else + { + page.M = 1; + page.lastTouchTime = 0; + if ( doFileLog ) + { + printLogFile( "WRITE " + Long.toString(instruct.addr , addressradix) + " ... okay" ); + } + if ( doStdoutLog ) + { + System.out.println( "WRITE " + Long.toString(instruct.addr , addressradix) + " ... okay" ); + } + } + } + for ( i = 0; i < virtPageNum; i++ ) + { + Page page = ( Page ) memVector.elementAt( i ); + if ( page.R == 1 && page.lastTouchTime == 10 ) + { + page.R = 0; + } + if ( page.physical != -1 ) + { + page.inMemTime = page.inMemTime + 10; + page.lastTouchTime = page.lastTouchTime + 10; + } + } + runs++; + controlPanel.timeValueLabel.setText( Integer.toString( runs*10 ) + " (ns)" ); + } + + public void reset() { + memVector.removeAllElements(); + instructVector.removeAllElements(); + controlPanel.statusValueLabel.setText( "STOP" ) ; + controlPanel.timeValueLabel.setText( "0" ) ; + controlPanel.instructionValueLabel.setText( "NONE" ) ; + controlPanel.addressValueLabel.setText( "NULL" ) ; + controlPanel.pageFaultValueLabel.setText( "NO" ) ; + controlPanel.virtualPageValueLabel.setText( "x" ) ; + controlPanel.physicalPageValueLabel.setText( "0" ) ; + controlPanel.RValueLabel.setText( "0" ) ; + controlPanel.MValueLabel.setText( "0" ) ; + controlPanel.inMemTimeValueLabel.setText( "0" ) ; + controlPanel.lastTouchTimeValueLabel.setText( "0" ) ; + controlPanel.lowValueLabel.setText( "0" ) ; + controlPanel.highValueLabel.setText( "0" ) ; + init( command_file , config_file ); + } +} diff --git a/EOPSY/lab4/task4/work/Makefile b/EOPSY/lab4/task4/work/Makefile new file mode 100644 index 00000000..59bad64c --- /dev/null +++ b/EOPSY/lab4/task4/work/Makefile @@ -0,0 +1,24 @@ + +default: info + + +help: + less README.tjk + +compile: + javac -nowarn *.java + +run: + java MemoryManagement commands memory.conf + +setup: + ./setUp + +info: + @echo "" + @echo "Use 'make' with one argument:" + @echo "" + @echo " make help" + @echo " make compile" + @echo " make run" + @echo "" diff --git a/EOPSY/lab4/task4/work/MemoryManagement.class b/EOPSY/lab4/task4/work/MemoryManagement.class new file mode 100644 index 0000000000000000000000000000000000000000..485d95852459781c30752460f11ab8386b8a29e9 GIT binary patch literal 1660 zcmbVMOHUhD6#gy@9y1x3;KWec6o!Q02M@O-O&aXHFwi)$jf+VlT6J-;FEGKLv1Tq& z*>ure|3OrBkxG%etJJE3DoCj7Hoqz9nXy|OY-JHI?wt4i&UcRQ->+XD1GtWd8qQ<9 zA0{TkxTxV0CN)wntC-RdLd-wn{*j1K{H!m{MZhqt;u8%67+3LW81otoKi0q%6<1Y! z#t_O_wk2;d^u`m97?iA26%0n+vPE&PzA4;wzF8xSQscWEY#@r&7%@~WBRY!QH?MO2yJI63m=evUFt8n?)k~<`MlH2}; zQ{C`&UP+iL++GvB$}n;IUZSFEI$I_)w>Uwl(uIn@)C{S3zB#>gXUR@W;*pAiKm9Km zCQl}2*-xEa(c1N96DzzTX_-}&iMzbx?Cv#aKXSG$+-!||o}kX2wRhI4(Ok59+^*Jy zH`z>lH?+4B*Y_KuOL+SxHPkOAW`s;>`VeH*;n7}!DnEYQ4 zy*Bh`rgMa}kLk591RZY%rvV*9L{x;dC_UaIND>1# zh=ZHBfF+EfjBz~1MSO!v>|hEG;`j~;e2;1TfLT1l9Dc$)Uf>FT#Z~-)YxoNb_y-w$ zM7Lc+SU>ZclA$6rnjC#Y7DdGc6^4odvVq9zrMdXP#!#ZKMgu5f4XXqtN%|mprpY!F HoT+~SEf<;T literal 0 HcmV?d00001 diff --git a/EOPSY/lab4/task4/work/MemoryManagement.java b/EOPSY/lab4/task4/work/MemoryManagement.java new file mode 100644 index 00000000..7e3e6387 --- /dev/null +++ b/EOPSY/lab4/task4/work/MemoryManagement.java @@ -0,0 +1,61 @@ +// The main MemoryManagement program, created by Alexander Reeder, 2000 Nov 19 + +import java.applet.*; +import java.awt.*; +import java.io.*; +import java.util.*; + +public class MemoryManagement +{ + public static void main(String[] args) + { + ControlPanel controlPanel; + Kernel kernel; + + if ( args.length < 1 || args.length > 2 ) + { + System.out.println( "Usage: 'java MemoryManagement '" ); + System.exit( -1 ); + } + + File f = new File( args[0] ); + + if ( ! ( f.exists() ) ) + { + System.out.println( "MemoryM: error, file '" + f.getName() + "' does not exist." ); + System.exit( -1 ); + } + if ( ! ( f.canRead() ) ) + { + System.out.println( "MemoryM: error, read of " + f.getName() + " failed." ); + System.exit( -1 ); + } + + if ( args.length == 2 ) + { + f = new File( args[1] ); + + if ( ! ( f.exists() ) ) + { + System.out.println( "MemoryM: error, file '" + f.getName() + "' does not exist." ); + System.exit( -1 ); + } + if ( ! ( f.canRead() ) ) + { + System.out.println( "MemoryM: error, read of " + f.getName() + " failed." ); + System.exit( -1 ); + } + } + + kernel = new Kernel(); + controlPanel = new ControlPanel( "Memory Management" ); + if ( args.length == 1 ) + { + controlPanel.init( kernel , args[0] , null ); + } + else + { + controlPanel.init( kernel , args[0] , args[1] ); + } + } +} diff --git a/EOPSY/lab4/task4/work/Page.class b/EOPSY/lab4/task4/work/Page.class new file mode 100644 index 0000000000000000000000000000000000000000..bb3b1cabd0ecbadb5e7f4ca88348756fd34f3b8b GIT binary patch literal 498 zcmXAlOHaZ;6ot<~1quc6QG9`jPZ$%8Zrm6bn3$CKiW2svHZZ0XqoDC;xoAvW_yhb= z#xvt$zB9L(d+t5``ThC^aDrAI1=MWhv93|q*wAQbY-((2Y-{Xfv75!7KuSFb2u~pQ zG<<(ifgiEF<7x9;3D_#W3P)Wv3I&Rh|1#;0r@`>QwuWjjh{Xux}=)d|7me6$I zpy;5aF^jT;IgNQ;E@&*mbx?szd)+8d)~$z;9}f<1`j25S;a1I74-LjG@DJr6v?Xss zyBejjQF zW)fs&C7U28D|Q0=!+5QdlDmPkEN)~oW{G<&FzE_|)_L1u%ze&2Vp4%MzD=R}2iV|4 ACjbBd literal 0 HcmV?d00001 diff --git a/EOPSY/lab4/task4/work/Page.java b/EOPSY/lab4/task4/work/Page.java new file mode 100644 index 00000000..2e9ec1ff --- /dev/null +++ b/EOPSY/lab4/task4/work/Page.java @@ -0,0 +1,24 @@ +public class Page +{ + public int id; + public int physical; + public byte R; + public byte M; + public int inMemTime; + public int lastTouchTime; + public long high; + public long low; + + public Page( int id, int physical, byte R, byte M, int inMemTime, int lastTouchTime, long high, long low ) + { + this.id = id; + this.physical = physical; + this.R = R; + this.M = M; + this.inMemTime = inMemTime; + this.lastTouchTime = lastTouchTime; + this.high = high; + this.low = low; + } + +} diff --git a/EOPSY/lab4/task4/work/PageFault.class b/EOPSY/lab4/task4/work/PageFault.class new file mode 100644 index 0000000000000000000000000000000000000000..d212c127cdca50b5a13112d5c1d3280eb4618420 GIT binary patch literal 927 zcmY*XT~8B16g{(_>~;Y`R;+-6f|e>&G+C4?iYT$#LWPQ-iP@G3EN*v6*`hvbOnmmy z_y8s*KKWn}jXW5i{Yl1%cNQ=>$)34ibLO5q`}5D{cL2jUYr?`o6KzQ9IAlOZhk#BK zHo62H7VZ%N-2!@a9My4*LA&4uUNp)er}}3Zl<{zmGc@PDfKS$|WnL?}WuGF68ej6= z3NO0zsYjllndOxztYve#{CF5dwa_oR0r#_lu5l)ED~}8AQp}>GS4SU% zITO}v6+Yn!;wHg3;nw|VP*7TEM3aT%I6=*bl!X-fEu;mU#3>5{7_^WP?r98JID;Vu z;~xpbzPK~r4dydb)S0xdxHC_!@cyXs-dq@iL&1m9nSw%z|Q5b`;4`Wk-`7 zU3MB|$FPkzFl?n`71z_Y@&(cl$RlRb{0v1}MW3xpYtU`Q(M3qLwfAU=Ek~oEsyN0= zh0*afXk>rbTDR5sfbOViTivBgckWn;0TI-aiTHvIC + * The page replacement algorithm included with the simulator is + * FIFO (first-in first-out). A while or for loop should be used + * to search through the current memory contents for a canidate + * replacement page. In the case of FIFO the while loop is used + * to find the proper page while making sure that virtPageNum is + * not exceeded. + *

+   *   Page page = ( Page ) mem.elementAt( oldestPage )
+   * 
+ * This line brings the contents of the Page at oldestPage (a + * specified integer) from the mem vector into the page object. + * Next recall the contents of the target page, replacePageNum. + * Set the physical memory address of the page to be added equal + * to the page to be removed. + *
+   *   controlPanel.removePhysicalPage( oldestPage )
+   * 
+ * Once a page is removed from memory it must also be reflected + * graphically. This line does so by removing the physical page + * at the oldestPage value. The page which will be added into + * memory must also be displayed through the addPhysicalPage + * function call. One must also remember to reset the values of + * the page which has just been removed from memory. + * + * @param mem is the vector which contains the contents of the pages + * in memory being simulated. mem should be searched to find the + * proper page to remove, and modified to reflect any changes. + * @param virtPageNum is the number of virtual pages in the + * simulator (set in Kernel.java). + * @param replacePageNum is the requested page which caused the + * page fault. + * @param controlPanel represents the graphical element of the + * simulator, and allows one to modify the current display. + */ + public static void replacePage ( Vector mem , int virtPageNum , int replacePageNum , ControlPanel controlPanel ) + { + int count = 0; + int oldestPage = -1; + int oldestTime = 0; + int firstPage = -1; + int map_count = 0; + boolean mapped = false; + + while ( ! (mapped) || count != virtPageNum ) { + Page page = ( Page ) mem.elementAt( count ); + if ( page.physical != -1 ) { + if (firstPage == -1) { + firstPage = count; + } + if (page.inMemTime > oldestTime) { + oldestTime = page.inMemTime; + oldestPage = count; + mapped = true; + } + } + count++; + if ( count == virtPageNum ) { + mapped = true; + } + } + if (oldestPage == -1) { + oldestPage = firstPage; + } + Page page = ( Page ) mem.elementAt( oldestPage ); + Page nextpage = ( Page ) mem.elementAt( replacePageNum ); + controlPanel.removePhysicalPage( oldestPage ); + nextpage.physical = page.physical; + controlPanel.addPhysicalPage( nextpage.physical , replacePageNum ); + page.inMemTime = 0; + page.lastTouchTime = 0; + page.R = 0; + page.M = 0; + page.physical = -1; + } +} diff --git a/EOPSY/lab4/task4/work/README.tjk b/EOPSY/lab4/task4/work/README.tjk new file mode 100644 index 00000000..e77b9a16 --- /dev/null +++ b/EOPSY/lab4/task4/work/README.tjk @@ -0,0 +1,45 @@ + + + WORKPLACE ORGANIZATION: +mkdir ../work +cd ../work +cp ../ftp/* . +gzip -d memory.tgz +tar -xvf memory.tar +rm memory.tar + + + READING: +more/less/vi/vim README.tjk +netscape/lynx/links install_unix.html +netscape/lynx/links user_guide.html + + + COMPILE: +javac -nowarn *.java + + + RUN: +java MemoryManagement commands memory.conf + + + FILES: +input file name: commands +initial content of the VM map: memory.conf +output file name: tracefile + + +--[ YOUR TASK ]------------------------------------------------------- + +Create a command file that maps any 8 pages of physical memory to the +first 8 pages of virtual memory, and then reads from one virtual memory +address on each of the 64 virtual pages. Step through the simulator one +operation at a time and see if you can predict which virtual memory +addresses cause page faults. What page replacement algorithm is being +used? + +Locate in the sources and describe to the instructor the page +replacement algorithm. + +---------------------------------------------------------------------- + diff --git a/EOPSY/lab4/task4/work/Virtual2Physical.class b/EOPSY/lab4/task4/work/Virtual2Physical.class new file mode 100644 index 0000000000000000000000000000000000000000..c6d4da9955af0db5a5568deae90de0654b435224 GIT binary patch literal 390 zcmZ8dO-sW-5Ph3uH%Z&HRZKz9LOn>^gB1mXC|(4i#V@Gz>^6qFZEQ#Ad3&vV8LoBZjm*FRXUP9A5)_wfq3m~RC+%+FM<_ufq4Ci`!obN3dM#6A6nXUx z?3EG{M_weL4jUHTU+M$3rKq-}Z*kibwr5e|@}*}~OD?}xo<+epr$iL2;^YZVu^=Xo z5H6qIarW~4rA?__OBPgB8wH|u#P!w61I(ngh}5#Lxvf~YOFk+ H%*p%!xoSe| literal 0 HcmV?d00001 diff --git a/EOPSY/lab4/task4/work/Virtual2Physical.java b/EOPSY/lab4/task4/work/Virtual2Physical.java new file mode 100644 index 00000000..8affc2e3 --- /dev/null +++ b/EOPSY/lab4/task4/work/Virtual2Physical.java @@ -0,0 +1,22 @@ +import java.util.Vector; + +public class Virtual2Physical +{ + public static int pageNum ( long memaddr , int numpages , long block ) + { + int i = 0; + long high = 0; + long low = 0; + + for (i = 0; i <= numpages; i++) + { + low = block * i; + high = block * ( i + 1 ); + if ( low <= memaddr && memaddr < high ) + { + return i; + } + } + return -1; + } +} diff --git a/EOPSY/lab4/task4/work/commands b/EOPSY/lab4/task4/work/commands new file mode 100644 index 00000000..f80c6f81 --- /dev/null +++ b/EOPSY/lab4/task4/work/commands @@ -0,0 +1,11 @@ +// Enter READ/WRITE commands into this file +// READ +// WRITE +READ bin 100 +READ 19 +WRITE hex CC32 +READ bin 100000000000000 +READ bin 100000000000000 +WRITE bin 110000000000001 +WRITE random + diff --git a/EOPSY/lab4/task4/work/copying.txt b/EOPSY/lab4/task4/work/copying.txt new file mode 100644 index 00000000..60549be5 --- /dev/null +++ b/EOPSY/lab4/task4/work/copying.txt @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) 19yy + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/EOPSY/lab4/task4/work/install_unix.html b/EOPSY/lab4/task4/work/install_unix.html new file mode 100644 index 00000000..926e240a --- /dev/null +++ b/EOPSY/lab4/task4/work/install_unix.html @@ -0,0 +1,410 @@ + + +MOSS | Memory Management Simlulator | Installation | + + +Unix + + + + + +

MOSS Memory Management Simulator + + +
Installation on Unix/Linux/Solaris/HP-UX Systems

+ + +

Purpose

+ +

+This installation guide only provides information about +installing the software and testing the configuration for + +Unix-like operating systems. To install on Windows +operating systems, please read the +Installation Guide for Win95/98/Me/NT/2000 Systems. + + +For more detailed information about the simulator, please +read the User Guide. +

+ +

Requirements

+ +The following software components are required +to install and use the MOSS Memory Management +Simulator. +
    + + +
  • X-windows environment for running Java Application Window Toolkit (AWT) programs + +
  • Java Development Kit (JDK) 1.0 or greater +
  • Text program editor (e.g., notepad) +
+ +

Pre-Installation

+

+Before installation, you should verify: +

+
    +
  • that you have a working java runtime environment, +
  • that you have a working java development environment, and +
  • that the working directory is in the classpath for the runtime environment. +
+

+If you're using a standard command-line java compiler, the following +instructions will help determine if your environment is configured +correctly. +

+
    +
  1. Verify that you have java installed and configured in your environment. + + +
    +$ java -version
    +
    + +You should see a message like this with possibly a different version number. +
    +java version "1.1.8"
    +
    +If you get a message like: + + +
    +java: Command not found.
    +
    + +Then java may not be installed on your system, or may not be configured +for your use. +

    +If you think that Java may already be installed on your system +but may not be in your "path", you can find it by + + +

    +$ find /usr -name java -print
    +
    +On my system, for example, the following is returned. +
    +/usr/lib/netscape/477/communicator/java
    +/usr/lib/netscape/477/netscape/java
    +/usr/lib/jdk1.1/bin/java
    +/usr/lib/jdk1.1/bin/ia32/green_threads/java
    +/usr/share/java
    +/usr/bin/java
    +/usr/src/kernel-source-2.2.17/include/config/binfmt/java
    +
    +On my system, I also searched for "javac" and found +that it exists in /usr/bin/java. I'll use this jdk for my +installation. + +

    +If Java isn't available on your system, you should check with +your instructor or system administrator. If you administer your +own system, then you should be able to find a copy of Java +for your operating system. +

    +If you find that java is installed but not configured for +your use, then perhaps you need to add it to your path. Consult +your instructor or system administrator if you need help adding this +to your path. +

    +

    + +
  2. Verify that the java compiler is installed and configured in +your environment. + + +
    +$ javac
    +
    + +If you're using a standard java command-line compiler, you should +see a message similar to this. +
    +use: javac [-g][-O][-debug][-depend][-nowarn][-verbose][-classpath path][-nowrite][-deprecation][-d dir][-J] file.java...
    +
    +If you get a message like: + + +
    +javac: Command not found.
    +
    + +then the java compiler may not be installed on your system, or +may not be configured for your use. Consult your instructor +or system administrator. +

    + +
  3. Verify that that the current directory is in your classpath. + + +
    +$ echo $CLASSPATH
    +
    +You should see a list of directories separated by colons (":") +or possibly just a blank line. If you don't see the directory +"." (a single period, which stands for the current directory), then +you should add it to the claspath. +

    +Determine which shell you're using: +

    +
    +$ echo $SHELL
    +
    + +

    +If you're using sh, ksh, or bash: +

    +
    +$ CLASSPATH=.:$CLASSPATH
    +$ export CLASSPATH
    +
    + +

    +If you're using csh, or tcsh: +

    +
    +% set CLASSPATH=.:$CLASSPATH
    +
    + +

    + +
+

+If you have a working java runtime environment, a working java +compiler, and the current directory is in your path, then you're +ready to proceed with the installation. +

+ + +

Installation

+ +Installation of the software can be accomplished with +these simple steps: +
    +
  1. + + +Create a directory in which you wish to install the +simulator (e.g., "moss/memory"). +
    +$ cd
    +$ mkdir moss
    +$ cd moss
    +$ mkdir memory
    +$ cd memory
    +
    + +

    + +
  2. + + +Download the compressed tar archive (memory.tgz) into +the directory. +The latest release for this file can always be found at +http://www.ontko.com/moss/memory/memory.tgz. + +

    + +
  3. + + +Expand the compressed tar archive. +
    +$ tar -xzf memory.tgz
    +
    +or +
    +$ gunzip memory.tgz
    +$ tar xf memory.tar
    +
    + +

    + +
+ +

Files

+

+The directory should now contain the following files: +

+ + + + + + + + + + +
Files +Description +
+ + +memory.tgz +Compressed tar + +archive which contains all the other files. +
Common.java +
ControlPanel.java +
Instruction.java +
Kernel.java +
MemoryManagement.java +
PageFault.java +
Page.java +
Virtual2Physical.java +
+Java source files (*.java) +
Common.class +
ControlPanel.class +
Instruction.class +
Kernel.class +
MemoryManagement.class +
PageFault.class +
Page.class +
Virtual2Physical.class +
+Compiled Java class files (*.class) +
commands +Sample input command file +
memory.conf +Sample configuration file +
install_unix.html +
install_windows.html +
user_guide.html +
user_guide_1.gif +
+Documentation and associated images +
copying.txtGnu General Public License: Terms and Conditions +for Copying, Distribution, and Modification +
+ +

Compilation

+ +

+The distribution includes compiled class files as +well as the source java files. You should not need +to recompile unless you decide to change the code. +If you wish to compile the code, +the following commands should work if you're using +a Java compiler that accepts the normal "javac" command +line. + + +

+$ javac -nowarn *.java
+
+ + +The -nowarn flag supresses warning messges, of which +there may be several. For backward compatability we use only +those features of Java which have been present from the beginning, +some of which are deprecated and are usually reported by the +compiler with warning messages. + +

Test

+ +

+To test the program, enter the following command line. + + + +

+$ java MemoryManagement commands memory.conf
+
+ + +

+The program will display a window allowing you to run the +simulator. +When the window presents itself, click on the Run +button. +You should see the +program "execute" 7 memory operations, about one per second. +When the simulation completes, click the +Exit button. +

+The memory operation commands are read from a file called +"commands", +and the initial configuration and various options are +specified in the file "memory.conf". +The program also produces a log file called "tracefile" +in the working directory. + +

+The "commands" file looks something like this: +

+// Enter READ/WRITE commands into this file
+// READ <OPTIONAL number type: bin/hex/oct> <virtual memory address or random>
+// WRITE <OPTIONAL number type: bin/hex/oct> <virtual memory address or random>
+READ bin 100
+READ 19
+WRITE hex CC32
+READ bin 10000000000000000
+READ bin 10000000000000000
+WRITE bin 11000000000000001
+WRITE random
+
+ +

+If things are working correctly, the "tracefile" should look +something like this: + +

+READ 4 ... okay
+READ 13 ... okay
+WRITE 3acc32 ... okay
+READ 10000000 ... okay
+READ 10000000 ... okay
+WRITE c0001000 ... page fault
+WRITE 1ff82cdc ... okay
+
+ +

+The program and its input and output files are described +more fully in the MOSS Memory Management Simulator +User Guide. +

+© Copyright 2001, Prentice-Hall, Inc. +This program is free software; it is distributed under the +terms of the Gnu General Public License. +See copying.txt, +included with this distribution. +

+Please send suggestions, corrections, and comments to +Ray Ontko (rayo@ontko.com). +

+Last updated: July 28, 2001 + + diff --git a/EOPSY/lab4/task4/work/install_windows.html b/EOPSY/lab4/task4/work/install_windows.html new file mode 100644 index 00000000..d3c3ffd0 --- /dev/null +++ b/EOPSY/lab4/task4/work/install_windows.html @@ -0,0 +1,385 @@ + + +MOSS | Memory Management Simlulator | Installation | + +Windows + + + + + + +

MOSS Memory Management Simulator + +
Installation on Windows 95/98/Me/NT/2000 Systems

+ + + +

Purpose

+ +

+This document provides instructions for the installation +of the MOSS Memory Management Simulator on + +Microsoft Windows + + +operating systems. This procedure should be the same or similar on + +Windows 95, 98, Me, NT, and 2000 + + +systems. +The MOSS software +is designed for use with +Andrew S. Tanenbaum, +Modern Operating Systems, 2nd Edition +(Prentice Hall, 2001). +The Memory Management Simulator was written by +Alex Reeder +(alexr@e-sa.org). +This installation guide was written by +Ray Ontko +(rayo@ontko.com). + +

+This installation guide only provides information about +installing the software and testing the configuration for + + +Windows operating systems. To install on Unix-like +operating systems, please read the +Installation Guide for Unix/Linux/Solaris/HP-UX Systems. + +For more detailed information about the simulator, please +read the User Guide. +

+ +

Requirements

+ +The following software components are required +to install and use the MOSS Memory Management +Simulator. +
    + +
  • Microsoft Windows 95, 98, Me, NT, or 2000 + + +
  • Java Development Kit (JDK) 1.0 or greater +
  • Text program editor (e.g., notepad) +
+ +

Pre-Installation

+

+Before installation, you should verify: +

+
    +
  • that you have a working java runtime environment, +
  • that you have a working java development environment, and +
  • that the working directory is in the classpath for the runtime environment. +
+

+If you're using a standard command-line java compiler, the following +instructions will help determine if your environment is configured +correctly. +

+
    +
  1. Verify that you have java installed and configured in your environment. + +
    +C:\WINDOWS> java -version
    +
    + + +You should see a message like this with possibly a different version number. +
    +java version "1.1.8"
    +
    +If you get a message like: + +
    +Bad command or file name
    +
    + + +Then java may not be installed on your system, or may not be configured +for your use. +

    +If you think that Java may already be installed on your system +but may not be in your "path", you can find it by + +choosing Start -> Find -> Files or Folders +and enter "java.exe" in the "Named:" field and click the Find Now button. +If found, make note of the directory folder in which it resides (e.g., +"C:\jdk1.1.8\bin"). +

    +While you're at it, also seach for javac.exe to see if the Java +compiler is installed and whether it's in the same directory as +the java.exe file. + + +

    +If Java isn't available on your system, you should check with +your instructor or system administrator. If you administer your +own system, then you should be able to find a copy of Java +for your operating system. +

    +If you find that java is installed but not configured for +your use, then perhaps you need to add it to your path. Consult +your instructor or system administrator if you need help adding this +to your path. +

    +

    + +
  2. Verify that the java compiler is installed and configured in +your environment. + +
    +C:\WINDOWS> javac
    +
    + + +If you're using a standard java command-line compiler, you should +see a message similar to this. +
    +use: javac [-g][-O][-debug][-depend][-nowarn][-verbose][-classpath path][-nowrite][-deprecation][-d dir][-J] file.java...
    +
    +If you get a message like: + +
    +Bad command or file name
    +
    + + +then the java compiler may not be installed on your system, or +may not be configured for your use. Consult your instructor +or system administrator. +

    + +
  3. Verify that that the current directory is in your classpath. + +
    +C:\WINDOWS> echo "%CLASSPATH%"
    +
    +You should see a list of directories separated by semi-colons (";") +or possibly just "". If you don't see the directory "." (a single +period, which stands for the current directory), then you should +add it to the classpath. +
    +C:\WINDOWS> set CLASSPATH=.;%CLASSPATH%
    +
    + + +

    + +
+

+If you have a working java runtime environment, a working java +compiler, and the current directory is in your path, then you're +ready to proceed with the installation. +

+ + +

Installation

+ +Installation of the software can be accomplished with +these simple steps: +
    +
  1. + +Create a directory folder in which you wish to install +the simulator (e.g., "C:\moss\memory"). You can do +this using the Windows explorer, or from the MS-DOS +prompt. To create the directory from the MS-DOS +prompt: +
    +C:\WINDOWS> cd \ 
    +C:\> mkdir moss
    +C:\> cd moss
    +C:\moss> mkdir memory
    +C:\moss> cd memory
    +C:\moss\memory>
    +
    + + +

    + +
  2. + +Download the self-extracting ZIP archive (memory.exe) into +the directory folder. +The latest release for this file can always be found at +http://www.ontko.com/moss/memory/memory.exe. + + +

    + +
  3. + +Double-click on the file you downloaded (memory.exe), +or invoke it using Start -> Run..., or invoke it +from an MS-DOS command prompt: +
    +C:\moss\memory> memory.exe
    +
    + + +

    + +
+ +

Files

+

+The directory should now contain the following files: +

+ + + + + + + + + + +
Files +Description +
+ +memory.exe +Self-extracting ZIP + + +archive which contains all the other files. +
Common.java +
ControlPanel.java +
Instruction.java +
Kernel.java +
MemoryManagement.java +
PageFault.java +
Page.java +
Virtual2Physical.java +
+Java source files (*.java) +
Common.class +
ControlPanel.class +
Instruction.class +
Kernel.class +
MemoryManagement.class +
PageFault.class +
Page.class +
Virtual2Physical.class +
+Compiled Java class files (*.class) +
commands +Sample input command file +
memory.conf +Sample configuration file +
install_unix.html +
install_windows.html +
user_guide.html +
user_guide_1.gif +
+Documentation and associated images +
copying.txtGnu General Public License: Terms and Conditions +for Copying, Distribution, and Modification +
+ +

Compilation

+ +

+The distribution includes compiled class files as +well as the source java files. You should not need +to recompile unless you decide to change the code. +If you wish to compile the code, +the following commands should work if you're using +a Java compiler that accepts the normal "javac" command +line. + +

+C:\moss\memory> javac -nowarn *.java
+
+ + + +The -nowarn flag supresses warning messges, of which +there may be several. For backward compatability we use only +those features of Java which have been present from the beginning, +some of which are deprecated and are usually reported by the +compiler with warning messages. + +

Test

+ +

+To test the program, enter the following command line. + + +

+C:\moss\memory> java MemoryManagement commands memory.conf
+
+ + + +

+The program will display a window allowing you to run the +simulator. +When the window presents itself, click on the Run +button. +You should see the +program "execute" 7 memory operations, about one per second. +When the simulation completes, click the +Exit button. +

+The memory operation commands are read from a file called +"commands", +and the initial configuration and various options are +specified in the file "memory.conf". +The program also produces a log file called "tracefile" +in the working directory. + +

+The "commands" file looks something like this: +

+// Enter READ/WRITE commands into this file
+// READ <OPTIONAL number type: bin/hex/oct> <virtual memory address or random>
+// WRITE <OPTIONAL number type: bin/hex/oct> <virtual memory address or random>
+READ bin 100
+READ 19
+WRITE hex CC32
+READ bin 10000000000000000
+READ bin 10000000000000000
+WRITE bin 11000000000000001
+WRITE random
+
+ +

+If things are working correctly, the "tracefile" should look +something like this: + +

+READ 4 ... okay
+READ 13 ... okay
+WRITE 3acc32 ... okay
+READ 10000000 ... okay
+READ 10000000 ... okay
+WRITE c0001000 ... page fault
+WRITE 1ff82cdc ... okay
+
+ +

+The program and its input and output files are described +more fully in the MOSS Memory Management Simulator +User Guide. +

+© Copyright 2001, Prentice-Hall, Inc. +This program is free software; it is distributed under the +terms of the Gnu General Public License. +See copying.txt, +included with this distribution. +

+Please send suggestions, corrections, and comments to +Ray Ontko (rayo@ontko.com). +

+Last updated: July 28, 2001 + + diff --git a/EOPSY/lab4/task4/work/javadoc/AllNames.html b/EOPSY/lab4/task4/work/javadoc/AllNames.html new file mode 100644 index 00000000..a7dce024 --- /dev/null +++ b/EOPSY/lab4/task4/work/javadoc/AllNames.html @@ -0,0 +1,274 @@ + + + + + + + Index of all Fields and Methods + + + + +

All Packages  Class Hierarchy

+A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +X +Y +Z + +
+

+ Index of all Fields and Methods +

+ +

+ A +

+
+
action(Event, Object). +Method in class ControlPanel +
+
addPhysicalPage(int, int). +Method in class ControlPanel +
+
addr. +Variable in class Instruction +
+
addressradix. +Static variable in class Kernel +
+
+ +
+

+ B +

+
+
block. +Variable in class Kernel +
+
+ +
+

+ C +

+
+
Common(). +Constructor for class Common +
+
ControlPanel(). +Constructor for class ControlPanel +
+
ControlPanel(String). +Constructor for class ControlPanel +
+
+ + + + +
+

+ G +

+
+
getPage(int). +Method in class Kernel +
+
+ +
+

+ H +

+
+
high. +Variable in class Page +
+
+ +
+

+ I +

+
+
id. +Variable in class Page +
+
init(Kernel, String, String). +Method in class ControlPanel +
+
init(String, String). +Method in class Kernel +
+
inMemTime. +Variable in class Page +
+
inst. +Variable in class Instruction +
+
Instruction(String, long). +Constructor for class Instruction +
+
+ + +
+

+ K +

+
+
Kernel(). +Constructor for class Kernel +
+
+ +
+

+ L +

+
+
lastTouchTime. +Variable in class Page +
+
low. +Variable in class Page +
+
+ +
+

+ M +

+
+
M. +Variable in class Page +
+
main(String[]). +Static method in class MemoryManagement +
+
MemoryManagement(). +Constructor for class MemoryManagement +
+
+ + + +
+

+ P +

+
+
Page(int, int, byte, byte, int, int, long, long). +Constructor for class Page +
+
PageFault(). +Constructor for class PageFault +
+
pageNum(long, int, long). +Static method in class Virtual2Physical +
+
paintPage(Page). +Method in class ControlPanel +
+
physical. +Variable in class Page +
+
+ + +
+

+ R +

+
+
R. +Variable in class Page +
+
randomLong(long). +Static method in class Common +
+
removePhysicalPage(int). +Method in class ControlPanel +
+
replacePage(Vector, int, int, ControlPanel). +Static method in class PageFault +
The page replacement algorithm for the memory management sumulator. +
reset(). +Method in class Kernel +
+
run(). +Method in class Kernel +
+
runcycles. +Variable in class Kernel +
+
runs. +Variable in class Kernel +
+
+ +
+

+ S +

+
+
s2b(String). +Static method in class Common +
+
s2i(String). +Static method in class Common +
+
s2l(String). +Static method in class Common +
+
setControlPanel(ControlPanel). +Method in class Kernel +
+
setStatus(String). +Method in class ControlPanel +
+
step(). +Method in class Kernel +
+
+ + + +
+

+ V +

+
+
Virtual2Physical(). +Constructor for class Virtual2Physical +
+
+ + + + + + diff --git a/EOPSY/lab4/task4/work/javadoc/Common.html b/EOPSY/lab4/task4/work/javadoc/Common.html new file mode 100644 index 00000000..5eb90559 --- /dev/null +++ b/EOPSY/lab4/task4/work/javadoc/Common.html @@ -0,0 +1,87 @@ + + + + + + + Class Common + + + + +

+ Class Common +

+
+java.lang.Object
+   |
+   +----Common
+
+
+
+
public class Common +
extends Object +
+
+ +

+ Constructor Index +

+
+
 o + Common() +
+
+

+ Method Index +

+
+
 o + randomLong(long) +
+
 o + s2b(String) +
+
 o + s2i(String) +
+
 o + s2l(String) +
+
+ +

+ Constructors +

+ + o +Common +
+ public Common()
+
+ +

+ Methods +

+ o +s2l +
+ public static long s2l(String s)
+
+ o +s2i +
+ public static int s2i(String s)
+
+ o +s2b +
+ public static byte s2b(String s)
+
+ o +randomLong +
+ public static long randomLong(long MAX)
+
+ + diff --git a/EOPSY/lab4/task4/work/javadoc/ControlPanel.html b/EOPSY/lab4/task4/work/javadoc/ControlPanel.html new file mode 100644 index 00000000..9a26c9b6 --- /dev/null +++ b/EOPSY/lab4/task4/work/javadoc/ControlPanel.html @@ -0,0 +1,129 @@ + + + + + + + Class ControlPanel + + + + +

+ Class ControlPanel +

+
+java.lang.Object
+   |
+   +----java.awt.Component
+           |
+           +----java.awt.Container
+                   |
+                   +----java.awt.Window
+                           |
+                           +----java.awt.Frame
+                                   |
+                                   +----ControlPanel
+
+
+
+
public class ControlPanel +
extends Frame +
+
+ +

+ Constructor Index +

+
+
 o + ControlPanel() +
+
 o + ControlPanel(String) +
+
+

+ Method Index +

+
+
 o + action(Event, Object) +
+
 o + addPhysicalPage(int, int) +
+
 o + init(Kernel, String, String) +
+
 o + paintPage(Page) +
+
 o + removePhysicalPage(int) +
+
 o + setStatus(String) +
+
+ +

+ Constructors +

+ + o +ControlPanel +
+ public ControlPanel()
+
+ o +ControlPanel +
+ public ControlPanel(String title)
+
+ +

+ Methods +

+ o +init +
+ public void init(Kernel useKernel,
+                  String commands,
+                  String config)
+
+ o +paintPage +
+ public void paintPage(Page page)
+
+ o +setStatus +
+ public void setStatus(String status)
+
+ o +addPhysicalPage +
+ public void addPhysicalPage(int pageNum,
+                             int physicalPage)
+
+ o +removePhysicalPage +
+ public void removePhysicalPage(int physicalPage)
+
+ o +action +
+ public boolean action(Event e,
+                       Object arg)
+
+
+
+
Overrides: +
action in class Component +
+
+ + diff --git a/EOPSY/lab4/task4/work/javadoc/Instruction.html b/EOPSY/lab4/task4/work/javadoc/Instruction.html new file mode 100644 index 00000000..ecfaea39 --- /dev/null +++ b/EOPSY/lab4/task4/work/javadoc/Instruction.html @@ -0,0 +1,72 @@ + + + + + + + Class Instruction + + + + +

+ Class Instruction +

+
+java.lang.Object
+   |
+   +----Instruction
+
+
+
+
public class Instruction +
extends Object +
+
+ +

+ Variable Index +

+
+
 o + addr +
+
 o + inst +
+
+

+ Constructor Index +

+
+
 o + Instruction(String, long) +
+
+ +

+ Variables +

+ o +inst +
+ public String inst
+
+ o +addr +
+ public long addr
+
+ +

+ Constructors +

+ + o +Instruction +
+ public Instruction(String inst,
+                    long addr)
+
+ + diff --git a/EOPSY/lab4/task4/work/javadoc/Kernel.html b/EOPSY/lab4/task4/work/javadoc/Kernel.html new file mode 100644 index 00000000..4c1aee21 --- /dev/null +++ b/EOPSY/lab4/task4/work/javadoc/Kernel.html @@ -0,0 +1,153 @@ + + + + + + + Class Kernel + + + + +

+ Class Kernel +

+
+java.lang.Object
+   |
+   +----java.lang.Thread
+           |
+           +----Kernel
+
+
+
+
public class Kernel +
extends Thread +
+
+ +

+ Variable Index +

+
+
 o + addressradix +
+
 o + block +
+
 o + runcycles +
+
 o + runs +
+
+

+ Constructor Index +

+
+
 o + Kernel() +
+
+

+ Method Index +

+
+
 o + getPage(int) +
+
 o + init(String, String) +
+
 o + reset() +
+
 o + run() +
+
 o + setControlPanel(ControlPanel) +
+
 o + step() +
+
+ +

+ Variables +

+ o +runs +
+ public int runs
+
+ o +runcycles +
+ public int runcycles
+
+ o +block +
+ public long block
+
+ o +addressradix +
+ public static byte addressradix
+
+ +

+ Constructors +

+ + o +Kernel +
+ public Kernel()
+
+ +

+ Methods +

+ o +init +
+ public void init(String commands,
+                  String config)
+
+ o +setControlPanel +
+ public void setControlPanel(ControlPanel newControlPanel)
+
+ o +getPage +
+ public void getPage(int pageNum)
+
+ o +run +
+ public void run()
+
+
+
+
Overrides: +
run in class Thread +
+
+ o +step +
+ public void step()
+
+ o +reset +
+ public void reset()
+
+ + diff --git a/EOPSY/lab4/task4/work/javadoc/MemoryManagement.html b/EOPSY/lab4/task4/work/javadoc/MemoryManagement.html new file mode 100644 index 00000000..5fc5f815 --- /dev/null +++ b/EOPSY/lab4/task4/work/javadoc/MemoryManagement.html @@ -0,0 +1,63 @@ + + + + + + + Class MemoryManagement + + + + +

+ Class MemoryManagement +

+
+java.lang.Object
+   |
+   +----MemoryManagement
+
+
+
+
public class MemoryManagement +
extends Object +
+
+ +

+ Constructor Index +

+
+
 o + MemoryManagement() +
+
+

+ Method Index +

+
+
 o + main(String[]) +
+
+ +

+ Constructors +

+ + o +MemoryManagement +
+ public MemoryManagement()
+
+ +

+ Methods +

+ o +main +
+ public static void main(String args[])
+
+ + diff --git a/EOPSY/lab4/task4/work/javadoc/Page.html b/EOPSY/lab4/task4/work/javadoc/Page.html new file mode 100644 index 00000000..2862fe45 --- /dev/null +++ b/EOPSY/lab4/task4/work/javadoc/Page.html @@ -0,0 +1,126 @@ + + + + + + + Class Page + + + + +

+ Class Page +

+
+java.lang.Object
+   |
+   +----Page
+
+
+
+
public class Page +
extends Object +
+
+ +

+ Variable Index +

+
+
 o + high +
+
 o + id +
+
 o + inMemTime +
+
 o + lastTouchTime +
+
 o + low +
+
 o + M +
+
 o + physical +
+
 o + R +
+
+

+ Constructor Index +

+
+
 o + Page(int, int, byte, byte, int, int, long, long) +
+
+ +

+ Variables +

+ o +id +
+ public int id
+
+ o +physical +
+ public int physical
+
+ o +R +
+ public byte R
+
+ o +M +
+ public byte M
+
+ o +inMemTime +
+ public int inMemTime
+
+ o +lastTouchTime +
+ public int lastTouchTime
+
+ o +high +
+ public long high
+
+ o +low +
+ public long low
+
+ +

+ Constructors +

+ + o +Page +
+ public Page(int id,
+             int physical,
+             byte R,
+             byte M,
+             int inMemTime,
+             int lastTouchTime,
+             long high,
+             long low)
+
+ + diff --git a/EOPSY/lab4/task4/work/javadoc/PageFault.html b/EOPSY/lab4/task4/work/javadoc/PageFault.html new file mode 100644 index 00000000..091f5c60 --- /dev/null +++ b/EOPSY/lab4/task4/work/javadoc/PageFault.html @@ -0,0 +1,107 @@ + + + + + + + Class PageFault + + + + +

+ Class PageFault +

+
+java.lang.Object
+   |
+   +----PageFault
+
+
+
+
public class PageFault +
extends Object +
+
+ +

+ Constructor Index +

+
+
 o + PageFault() +
+
+

+ Method Index +

+
+
 o + replacePage(Vector, int, int, ControlPanel) +
The page replacement algorithm for the memory management sumulator. +
+ +

+ Constructors +

+ + o +PageFault +
+ public PageFault()
+
+ +

+ Methods +

+ o +replacePage +
+ public static void replacePage(Vector mem,
+                                int virtPageNum,
+                                int replacePageNum,
+                                ControlPanel controlPanel)
+
+
+
The page replacement algorithm for the memory management sumulator. + This method gets called whenever a page needs to be replaced. +

+ The page replacement algorithm included with the simulator is + FIFO (first-in first-out). A while or for loop should be used + to search through the current memory contents for a canidate + replacement page. In the case of FIFO the while loop is used + to find the proper page while making sure that virtPageNum is + not exceeded. +

+   Page page = ( Page ) mem.elementAt( oldestPage )
+ 
+ This line brings the contents of the Page at oldestPage (a + specified integer) from the mem vector into the page object. + Next recall the contents of the target page, replacePageNum. + Set the physical memory address of the page to be added equal + to the page to be removed. +
+   controlPanel.removePhysicalPage( oldestPage )
+ 
+ Once a page is removed from memory it must also be reflected + graphically. This line does so by removing the physical page + at the oldestPage value. The page which will be added into + memory must also be displayed through the addPhysicalPage + function call. One must also remember to reset the values of + the page which has just been removed from memory. +

+

+
Parameters: +
mem - is the vector which contains the contents of the pages + in memory being simulated. mem should be searched to find the + proper page to remove, and modified to reflect any changes. +
virtPageNum - is the number of virtual pages in the + simulator (set in Kernel.java). +
replacePageNum - is the requested page which caused the + page fault. +
controlPanel - represents the graphical element of the + simulator, and allows one to modify the current display. +
+
+ + diff --git a/EOPSY/lab4/task4/work/javadoc/Virtual2Physical.html b/EOPSY/lab4/task4/work/javadoc/Virtual2Physical.html new file mode 100644 index 00000000..5b99bc98 --- /dev/null +++ b/EOPSY/lab4/task4/work/javadoc/Virtual2Physical.html @@ -0,0 +1,65 @@ + + + + + + + Class Virtual2Physical + + + + +

+ Class Virtual2Physical +

+
+java.lang.Object
+   |
+   +----Virtual2Physical
+
+
+
+
public class Virtual2Physical +
extends Object +
+
+ +

+ Constructor Index +

+
+
 o + Virtual2Physical() +
+
+

+ Method Index +

+
+
 o + pageNum(long, int, long) +
+
+ +

+ Constructors +

+ + o +Virtual2Physical +
+ public Virtual2Physical()
+
+ +

+ Methods +

+ o +pageNum +
+ public static int pageNum(long memaddr,
+                           int numpages,
+                           long block)
+
+ + diff --git a/EOPSY/lab4/task4/work/javadoc/images/BaseObject.gif b/EOPSY/lab4/task4/work/javadoc/images/BaseObject.gif new file mode 100644 index 0000000000000000000000000000000000000000..66d51d5d97f907aa0188fbb830a2dcdc74ab41ec GIT binary patch literal 1633 zcmb7@{ZrIc6vnUeB2Y3CpvV9&gTzY8D0eXMWd;XPAan2qK?Oy~OF&|ZD6VbBDy#D5 zt{`x01(yXDQ4o1?0@8GpVC8Btz-kSK7=-Oa6HaK5ayxhJAL#zFbLQUjoX_)|@2(GD z7Z|ihHA8}4qBjR4L=d6~F@!jR3S)!`!W3bKFc+5uBSH|Nh%iLBcuO&&1W}48LzIhF zh7lu(QN$Qx9F!2ph!eyq;tX*pKpUh%3!33I7jwiR7*mWH#$1eriV#dFCJYlUDBzM3 zOev-eQ!b$3EhCsw%ot`I7@-w&f;q*UVGdJ)8pHq^C;=oVbP>4x^NdAi*Dug^DrCIOGa;fdVcmXOu&ZkTe7UT<{!%2DcC;0!{-27g7CnTc@&yGd$y~qt5hlt2nYxX z35kr1jEjp)O-;?r%v36sg@uJ$t+u|tzP-KOU@#bs#^K@N@$vCDz5jj4|NqBx($dxj zjiAM%Rs1KA%{1z^bqi~_c>9Enqi<|igZ9p;IbIQ(uxk|^xh^dxI& zWMAsL9MhB%7k2)O+`9NXIo_u`toobw#+9y~FI^JVqOkYt@V{RFxOjA%dPhcDV${q- zR(1&{#j~#3tXcMcv8v>Oc9qwuzLgP9J{vE*Ag@wmo(x{~v{)jKZSej0_BMywvBj+| zso9qc=EL{r=&|Z(#GY80OfvLCx}*PxpSTXi-*O(hxyvJ?Uz*rivHNEJvHp%B>*FVe z>s0Nxp3DlJc9gg;o3q8pdgpn2`%W$E?z<4!li2g>Z$+meeN|aZn(1Ic)>e(o(mLaT zRC8J($;j*)z3V97^jGwnrxUXrWYYotaVeeImbxAV;_)I{gd>hgpT z_k~@NbFKZo*8Jq%T%@%4IV>{IY09Nil4a%cR2`(=Tye(d9D0yL&Ib(SDr!24)cdxd z(Ik;Emxl*#xK}=oJ$@m&Ak+2Wq7k{GZqoQ^p68;`4OL4|pK`Nbp`B^FuqIF~e=T1( zcZSkEDMnMVy4o0gdt9&5AzA3WizB5IgB64OwigFiI0QV=T>S3PMvo1qRv+7ewNi(q zs`+Og1@qOiiI}_(GM4WMQq>ajd0xuBgsPJ-T%)5Ztq!NwbltQJEAuHcEiAGQN*N3; zDmz+rky+PBB=yXRZjzwexGVSmH%b!b_p->Mf6cUJFNrmIY< z-@CgfY4e0G`btz_OJ$UG+eq($me7*syzy;S_XA7ndV*G*)tT0&wA2}Q?w{A}73Vj# z^W8qhSlGmx;Ivlfu>zt!vbbK>8RQ?Yl&`z~V_xFK(+JaYzsX_G8xfNurTb4N|Ef9S c(G#D0%&+ZP;@PyR-)i*rQ>H7}X%1TXFNmc9!2kdN literal 0 HcmV?d00001 diff --git a/EOPSY/lab4/task4/work/javadoc/images/Category.gif b/EOPSY/lab4/task4/work/javadoc/images/Category.gif new file mode 100644 index 0000000000000000000000000000000000000000..3982845e63832e889f1320a2c8e48c93ea3aea37 GIT binary patch literal 1463 zcmb7@{ZrIM9LIN1@lK;byW=S(L5Ks79@vpXeCU8dIi?s6FF6>{l-SY}Crsfqwb0}- zNX3v%P$AHSL_x4=PBRmf!=6@TsiSai*LpxA&g?1MM$2pV|GqKd<-u^Swou zg>iG1_mdgqPxAOsLKq>O5J89}s3;|r5y}Y_gi3YEC}E5+PM9D}s<)gH&Isp(3&N#p z6_f}@1SdieA)!PhC6W=zi4;VlfHtI|g=V~#YK}ULQckI$RI0J47^93+CMc7N0+*ao z&M6m^O9h3uf>FV#5L8GoqLoTUC8ttQiK(E57@$E3EZku*v>^>GG)rYj)i|6n!I)J3 zFcuZ(j0?u4vI`1a3eJRJLc%?u@Rmu=q+k;EkOwf)jX2;R5O4@;hyfaucnS^-hBl<3 zB~^0j8a0mKT&f`94`WdY!G%PwunP)Yaw)h(jz}5-fD6wNG~6Oe^Jz z*_5b~#tGx}J*lyIL)PZF!e3f?nllegEQ?(?;x0%>myhCmL=3 zm5r7Df3#W8)mWBHj=LLGv9;yv>YsKT9ywQRso1s2Sdbr)_8{ehRP*v{+pVT;9UIr^ zBCIE7jVAmyrp+wRcxkRK>{gHYaM48X(3-b46mI**XTh?Lc@I~Yw_nUyP@TQKve1`4 zG8GugJ8Wau%VXE?jQez>%RJ}^zV+qbf300Q?C%}_%;}52`t0nQUVLRINpt=a*=t*I zt;aNEUYFopwxJ@r&TczuN!I)E?_Ld9(WxB^eD8^mnx76{d-ulslfrh8pOdb+{eIYd zd%iu*R5R`)WdoF>1%=Qma06%NsF=@;`nM65m``J~biEo5a?bVjOm%U$>S8|jJqzLEO%ouAut55)InA3Uq>5;`jQCvFmDjMs1cQwrLgN zd8fiEBZs={2K;ni9ZgLB)}`0B=A6{HZU-J6zev~cPVvG`jm}r{=S^`8t}@>558Gp0 IY$kL61@#4u_5c6? literal 0 HcmV?d00001 diff --git a/EOPSY/lab4/task4/work/javadoc/images/Class.gif b/EOPSY/lab4/task4/work/javadoc/images/Class.gif new file mode 100644 index 0000000000000000000000000000000000000000..a47963e8dcaaa201522e3c2719003f22ced789e5 GIT binary patch literal 1737 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 literal 0 HcmV?d00001 diff --git a/EOPSY/lab4/task4/work/javadoc/images/DataObject.gif b/EOPSY/lab4/task4/work/javadoc/images/DataObject.gif new file mode 100644 index 0000000000000000000000000000000000000000..6a7495879e729a376195095a863493cba1ff3a25 GIT binary patch literal 1561 zcmb7@|4-9L7{||u3Pcv_#3)n8fGKrq=5A<<=tM+XNDzm$$Tz=GZrD;qP(;}lsDJ_r zm_o-PPC>p!g&-3cGuwm>5j?SOwtyp338?c+CJa%`=Iyz>M zQ;I3WlnW?$%Lrx^Glm%lMrg&HU`{b-n8Q?{1~GsJO2C3U7!2AV4O-C5g&|SHp@c9( zxbO#Kp`w&fMkp6{fdVcWC5#cq!9761Tf!;fjBv0Ac>pGKLmc2AAiyC|gBU;qB|HTV z7!2AV4O(0zC$6D}!zkqpGK zLma>ahQT3FgBU$OEG7;Wi@ZQBeBWSa-Ed>fWYW-v7Bc+2fv@EKK4<{`Q-k#OtrF7+PdxfFVj!0 zj_G@;Z*S7)xNmw~TA^k3%A7}^A6*>3Fl6kgNncofJv&1i6QYRNo}3XQX^wGPCeIlD z_QtV6PwmQh-^(Xo`)+?_el^f%SL<=~N#Xc};mSz$w66IrZK}9W_|*Ef9kL@w<_(z+ zMq5m-actxINX5;5wX^iq)6RDt?yi}+HRCUdry{sIF5H}*bF$f-^<4k*UQ$L$d}ywr zp{eAMUGeC=`AL}%G95h&pWX4l;d1!2+XlRnQGh_3T# zQSqLFruec=0XtfH>Kpn@eLaw5fKK7GIwjG^Wo8{5860d~9}Pk!z57 zkt(zIPQ}2Jhvux8Q?{s!_D%jn>TI~^m@BQ;rsS3um3^t|)qLYF8?IB8`j};^^QE!* zb?a|=_+60%Mad`aNLy0YpVaNy)Vn-9KO#{%hnga#~luiJePc L47g9RLo5FU-X`7S literal 0 HcmV?d00001 diff --git a/EOPSY/lab4/task4/work/javadoc/images/Group.gif b/EOPSY/lab4/task4/work/javadoc/images/Group.gif new file mode 100644 index 0000000000000000000000000000000000000000..d6911e763d459d6392957652b0bbd2fdb57bfacd GIT binary patch literal 1378 zcmb7@`%~0a7{<>eIBbN&a1n;MsWEPti5@X7LxV0M z84Sz;9PTt++yH0fHvNzx?YhT|W<+i9G9%cOX+tR%KX`i1+CR|wW#^r9-sk;1&->lo ziSZGU2dpHRJR#2xC4>>e2@!-yf{Ic?8KIm|L8w%hj1tBOm6!@@hyfauz``8{LmSf2LbFtcRE@(K6O2ja z4`Wer&bVM)D!ZV-rQl2mCM4Vg3U8U@ObRAp4|xC+-G~GJ0Re}gh8UnhiKpPeU}!@c zT2dvau2JI%&ZP|CIH{t*j48tL) zAqHr40t*}%3~fkDwIcNz*QjwMHijVK4`WdYDb)fU>sJ(xjjDY*mZYE@xvTX$qEw8I zbkw#Th842IgIc}=OF3{%f;2t{Yzg7PlVcQdb93|a^V4dz;o;#roh~&s)o3&p6cm_D zCbQYx(9qD?*=ey@rlzKBHrw3X+`_`b($dni-v2)2|Npb@A193qStPHhR`s7CE>DSF z%|H!5rQvv$=ZO4Yb&OHCVKIUY!PiNYs z$us++Sx!4ls&VCqv(K5R7 z+GwtK=uCLyo;$_A-}XwpdcLgHY23Vj%eAD*hLVZc69(NDmzb#H`(~r-&>H`P{j;Wp zr;W$DPB>|9x@P+Hm2WS3w4A(H7had)-gM!SX53VoJrQhQuIz0;e6y@5IdJ;4K2S5? z(f38^P(YDa`r`F#x6@Z$s`1U5edFD?^|B`OK>FYZ-qw8QCMT)ddU|B`#qf92lY*!|_2wL9POVCz4M_ABWv&u!YiCStzF<`$8%W4gQ0 z`SFwPGbMjc7+a}dzgM~?^SzL=ZOgyTMpk@&H#lxbd_s1$@!?ob#gT`*o12o7vVsop zT!}2s=xh18vAz89H_Ji&SCX!Kv3=>k<><3DdHH9ph0}SXqA+9e)aCdO)7pM|D|%KR VwQq29oc+-K2V-~4_Vid1{V&1Bbf^FT literal 0 HcmV?d00001 diff --git a/EOPSY/lab4/task4/work/javadoc/images/Interface.gif b/EOPSY/lab4/task4/work/javadoc/images/Interface.gif new file mode 100644 index 0000000000000000000000000000000000000000..dbd7235e026cf13cdc5ef9798779b059337370db GIT binary patch literal 1834 zcmb7@`&-Oe9LJAJ7ff3S-Ix@`VsSK=wQFa#rDRLHDAR>U<)o6RLD{v~G$|SpY800nOer-U=Y!5-uRn9vPzfPa7hhd>Qt01cGz6gXfoXoECp zaUnV38frLG)377~%857VqDk>^!YHFIBo4dQadwY97_Wt)F|NkGScP19*=pmXS zv$ED#md?HpjSy=)y^?Es=d18=*`_?k2Ht*rN?SA z-4>k;emC7uoHae{H}#kvjfur)5l`A}%Z}IC%M*t_GVYwZm#PZndVXRaAM0|X=>W*d3WrkvEAkxi1bS_5|(te)lVv@|d7|+wPW5n6|NRrZO&i>ZYL~)9gdHbzRJVZ_yf4 zb#Cu^ZSCUb(`TP+D#X{}8L*!k8j)%Y%e<>Ou&!fAyv^EYRPV^Faan!oiWQ(@rR}!cHpgr$-d3?j_{f%X7vzHRm?mNO-Dn z?zasJS3huzNH^^-5579+#$#RONXNhqg?^QPy` zN%a+5?*q~WjYCmnV&t2(@-(||vZCUhOrMk+S^I07)JxL!&89;yxgNeW-1~HpQdj-5 z((Fl1Xwrak#1Ch-iUQRqBz;x6Ez9&<@f|WX{*aGkfn4re@kIM(Y{9XZwEfC0>y0f7 z&OT2LI@+;gL4DVrXuGi&Oh0_NHo!El@sEWuc7%rn z)~;SOI){u(CGzlqWvYCK0L?hr+%=MV>5ItMb?OHrFJwttA`9yFnOI*C_2r~YdbDWa zL$&(wnvUACT(MCtuD?aiT^ruyc>BIA|7w5xjm_f5dsVX6CyHlXpJ@4`xop&!y=yZx zQC72kO(Mu8(b#bNhJU=I=bbFqx#i1zULW~cbJN*I@49_lqp#%Rj6*NQw~`0qb(TxK Y3LXD`nW7jnEYB*%>-zXnE@CwMUlf&1C;$Ke literal 0 HcmV?d00001 diff --git a/EOPSY/lab4/task4/work/javadoc/images/Job.gif b/EOPSY/lab4/task4/work/javadoc/images/Job.gif new file mode 100644 index 0000000000000000000000000000000000000000..6967a3ddca0432e10e24b3215a243a4f7ac2b908 GIT binary patch literal 1259 zcmb7@|4-C)9LHY=WQR(H=an#ap`Pww>V|JmVNzLF9$&WGNfA0Z{I=c}*BnhtNFs{j zOO#1$(0ek9bJZ@4AcZ+-O%(C&c)MsQE2TzqjB=~Q*%xi}?)m=MKhXP^+iUOl>-l;- zpRdokb2n#Z?FvyU{YiHYBjQAYND?VR#TYS8Oc0aAl)mJQI43TMOX5nu6^sNYAxKCP zO1DZzl9Lo9B}oM(Qj8QQB}hq9D4-2#XrURem7b#yXG}0A8B=;JD$W@fj7!Fqrog4( zOb8|<6G}tjt>jD!CMA;!jA&(wGbNakOkpahAqHqr0t&sQbR!P<2Lv2~8e)J3C7yx2$eVUa!~Z^ZEV$^78W9 z+S=yk=8lezuCA_ufq`&1JU%`ijYel@XYcg>_aXoPpQX3r;>|Qot8}aWPmuW^8i`NI z>HcuA#%xJ14s~~&t-Eh|URzF2;9TPpRyq;tId=ZtRM%T6@de)0_Z&}tT3j)Dmnmk| zo=96TaY0M#y8YKCf}<-<4`kQOzvKwL`OUFSN&Q1>PX@;tUN2eu;$H=$W1VSVf3~dm zTFUUzIM4dG=UY0r9og<~xH=TH6g93HS^uTDdEEC-=iwyQ*J80{SL78|ZYxTAEqKsU zRP2m=+jIVT6;tBOIC8PB(CTl`$-6kU$G>9Z3xU1Mw)QLx?<<+RKH=~LO7e%<<*?=R z#3|cCdnoC9f{`GkNh2iC&^jWO-oON~Ow=2KD@pRMl_N@Ft_e54j^}z?L>}54q zT>bHJlbhyDt+tov-E(*SE0GLG`~F9^)HlBxV_ni#k@Q7hp0#)N%+d{iKNM}RSHU6= zU-4M$RX+99kGrdG4LTCH#ywHkdf=-jr*F$|zl1JlPL{>mH%tzhn;I4;KQngd(%c*8 zUh>$?)0y{fe*FITcYU0@sHLI9%KU5du_#SYn}M)YB>pjuW#GcT+(wwy1!d8g$UOjEh4J#8nX@ zRxYPta2J`-2!RdDh!R98q6|?kS{X)+ zAVv{mh;dLt93xH;r-(Dep#W`=1}$iY*IdjIhhR)GW*BoZ7Ait8p_njCxS)VbN-(9E zGEBLEg13xdMloZUabSd2%n9ZcbA~xg1!@ojXrKfvxP!r<4bq?m&0H7~H5^I^BZLco zFcvCG31x(GVHYUil2O7KVI1586uc#z63z$*dyofULN~+#{s96U0yT&MG*H4*;DEuP z4bq^+MRMXAYB-EiE`kJqFcvDtDC3YT*aZr>q?}O>IYQD90C2%`2pZf%l#mBtLN~+# zOkfxs0yT&MG;{(MaKK>D25Bx6`I0y5v z$odE~&)+&0$G!G`H59)tKmDSrcE9b)TYlxuB{k}4%VpotbsoFwZbUDKAa7N>(q?rB z{bu6brnGNcde3yTg`(W!e|Oh(Uiu*ad_dh!5_8$sW!n`_MHVTPYPG*PL!uo&C$ny&xjc z!NdRhT1$P=mabR&4jJOQ=Q8d(k9=J=XQF(`XMFRZ)Tec4fV`w! zgVi>t#>QH7Ju|6zs-oEbMv*jpedPS-SwkJuSATU)kIwzW*8erj4Q)9w$+eybvGcZ; zJszF*E*IPz)-(?`UCY=M)7ujsnVmLy^ijBPZ{XyRcbsDJSeHq}@PK~g=;Pbr+ZP@W J&q^f7?_UWzwJiVu literal 0 HcmV?d00001 diff --git a/EOPSY/lab4/task4/work/javadoc/images/JobParameter.gif b/EOPSY/lab4/task4/work/javadoc/images/JobParameter.gif new file mode 100644 index 0000000000000000000000000000000000000000..0c6ee7b2914fea76a931e39205a845b62486d5a7 GIT binary patch literal 1589 zcmb7@|4-9L7{^ak1_d@n0j-LlRf>_Ad7=W&Z`BG+35e~izzhhdfC#uj0MQ{JFdb7< z5e`eF;5MXM1a(;J%osF$@wORt-CziUAW`Sk>=6T~Uv3~?wx8>B%Cn&CAUbHpJSQ;ZqLT#SW^5KJg03==LW;F1zd zDW(ilE}-BoBbZUl7-k$8p%rt2ImMh|4pV^|!~hy70SoS6Fld7`XhAa$_W%WN38#cJ!oeQo0hrJYae#k-0Ea*gVgL=4@Dw;; zFld7`XmOF8xP}@Iqm+vv!5@r;iZRMKo}ixr92a1Ava4jY3Y!5@r;ig7L$Xj{Laux(WA)3zi5 zWy@Wx*A}Hn4b=rV)>w{A!%4jzjkWDZy%dLMhBTe& z)XF34qdS|vP_8)`-K7ipquR-CLeisNldF@vZbgB_?V&dBh(1{BK6R+(?Co0T)VP2W z%b_0)s#B89U1b9%)fsh_S?(~hrFePsoYx`ucAJ`%<}N>n%oFl3UErbf9ZQMgisT>H zYay$j^coGHPsf?%Q#@B>hepU=Kl9mAxNMPA;p5CYtI4389;B2$-O*u~KX~U_c>UUo z@5jz{DZHKf!RDIa+2(ycpH6wtHL-br#ZrA*t6g{I+ez8Kn<8}U)~qURZ`S(k@Rp1@ zE%A;jpk-rMPnsnS5BsjG>ZW-dZ)#bcf2=%tOnt!gte~`~&-tUojW6si&HYhdTb51A z9e;BC>0FE3rRq;4Jv&`}NA%^Mj`uEkc&t&yw%kdx3$dtEUTWMq32APbr#~yo2>wN_qQm*y1AnNSeZaSD?JUo|TSp2dvSZ)&DZb0d)TYQzUhLTt z;aQ>1wRithyFJY^q>tES`D>WS+=uNV7cHLGk-5obiRXUr4)MWC}RVcrC*?n%rNZs}hUtJRB_S4et zq05sK9G^BE@Rg1<+(>uWk@Z`WvcGsk<37WeUbouShhr>^9%}lmABVNy zcdj4UtBF~Evv~2-(G!sqwSl^XB!7Re*vRx4pJNMWNFE$sWj)tVcHOW1JJ$J$^Js7J lyiKEbgS$&d`=$nFlq~4aGs|M{6?*J>F;L=Tj986={srmv-!T9H literal 0 HcmV?d00001 diff --git a/EOPSY/lab4/task4/work/javadoc/images/ObjectID.gif b/EOPSY/lab4/task4/work/javadoc/images/ObjectID.gif new file mode 100644 index 0000000000000000000000000000000000000000..a79b42eabd80a55b9c1c4470a4b04787c701fc76 GIT binary patch literal 1496 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 ZiCd#T*mg00$Z6N(iO2T~6Wv`<*uNEJ+Q|R_ literal 0 HcmV?d00001 diff --git a/EOPSY/lab4/task4/work/javadoc/images/OpenBookIcon.gif b/EOPSY/lab4/task4/work/javadoc/images/OpenBookIcon.gif new file mode 100644 index 0000000000000000000000000000000000000000..86384f7733f5f2b4c3a9b8f0315720f02e0e6023 GIT binary patch literal 2241 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 literal 0 HcmV?d00001 diff --git a/EOPSY/lab4/task4/work/javadoc/images/Query.gif b/EOPSY/lab4/task4/work/javadoc/images/Query.gif new file mode 100644 index 0000000000000000000000000000000000000000..e398de53873da5ebea38b4c2a5c23652469bb27e GIT binary patch literal 1381 zcmb7@{ZG|Z9LEpwunP>L5F!Lcz_?w^1!owPBu^&S#lwOUf;%zBsUV24VAod8P%%po z|3K%LyU)(~yg#q^`}4iK z^shw6>@$-fvO*pmN(du_6Cwza1Qn%(GD10_f>5b086}Jn#t9RIN%fXf!WrS5a6!0K zt%4H4h~PvBA|#ZEq(m|zIgx@$6wrn=w9t&#Qq56^QOYS5lu9)g6=Rff$^>OnQQ(p@ z$~onNa;c#3Rxm0!6@m&0Mzm7NsN_@%Dlrw*5Cb$QfrUE^hBl<3g=VP?sTzkfCK!{- zAI75MoN>XpRCYmuOTn2COh~u~6y7q)nG{UI9`XPtx)BHb0|E{~4KYB25>LT_!O(^@ zw4_Q-U8BYkoJ$oX{9!CAA-Isp6?Q>^OD+YM$Pq~+0C3?sf`(f}i9CRbZo~m57=}Yo zLk!U91Qs|j7}}7QYDMZbu2JJiYz#rdAI72*QmO^o*RLq-8&&(XFG)e!b64xNN2wU? z>8Nen4J%~32eo`VmU3X91ZjK@*b>5nC;KSk;o;%$@2}NrqoSe`6BE$SYHD$D(Ppzf>izFS{{KIl9yqyb$P(G2TGfAoXx7Lz z*MQ`nwjT~@ymh(e9@EHCuaMm>$-V8PpZn3mIdkta-NFdtI>aV_9x)!MB6c$Im|dV^?tBow>_#TQ!;} zJ{P{Xp*P+idKHF7tTKZ^ms2GfNfyDY~Anj8C@j@Av8Ke|PV4iR0R& zZ|kXg+k#ntF#lzPY2i%Pp-*z;wGPKmOIboB3=*Dut$Rj^jY#1{) zS4RwMz4DfljiygGJCp^LX**Y*u5q#X1y&cPOg99@S(zc;s{b{hHni)tokbQOi^m~% z%gRC=xe;wji>wUOlsplf9dbCf@mPU=A#=Q=((S;5+Mw9gbB#3-g+7^kY?h}oKiFaY zyNSofpPy{eRy%sWU@UX=YgFoq5Co-5;||joT|C>)|*L1 zYZJ@*`Rkp!)Q|c*E~GtUP4Y?`I57HU#b9K^-u8_)o!1-rF8}!S4*qodLaRe2{2or=U!VF<9E(u12AVLvgh;Z?iVnhj|6j6pK7p)8< zMi8TjF~m41A&wCzh*QKF;!uD#NP`wM!)q?)h(j=@7&DBy7z-64m{3d@CR|X!B_)_r zOc|zJK*3u^Fr%0;%s4PYE9L}qiaEm^rUEsH0W?qo7Tm#L&<1JHf@UrZi5de0KNt%Y<6JDzx_&`n-Kf~7bx8us zn!8x9HA=x~O-F3oYFHp!J&5I7v4jKbB#?&B0k#C;fhX%I9=tk#0F5Pt3 zvoG`5_qQ*ne_~ujSiD-H9ktAneA&3PC$Mr#P+iFjRa=pV(L4D?S!%}-|Fc^Hrll>t zaAHlXeZ#bKUFY;(N2esekAK*ws2E9i%+jO}td=_bGV=DvS9#AO)2H|^mR0?xsM?>b zRgFIXIZFD$&tmi;l`r0eDi3eXwOpON|Mo&t=R5n`$CoE=EmikjlGNrp4+iy> zXXG@U_sFu%S>PV?)xc^`)t=8s%Hx_`yOKg2!$v$d6qpfjK&Hk{RFy6#mPR&F4g>`q#9 zY+|7HQ`M^h``(b9UDHpO&EDMdFw>ZPUVrqh(}0gY(rs=TX-&PR*_FRu=bOF3C%LXX zdq<|nES}`-`1}4YX?tzPbZ1rEhSZ|Agwocg3rTyozxPi(yX0!>^P+s+A9EU)H>{NG zu)B3*1$EKXjp!$ZJTJ~IFU^?RGV}g;Z*xK1{f%1+BBDnWtNxUosn1?k)Elgd4IM7K zx3r|XD9W_Ru;y!n!LP9A<Wb)BW?O*qtRTZ)$uQpandz85i3&N$hSWwh=6D4o%Z@coD bQQnx7F!snLd+g=d&UwGy&)4hyx$C^WTwJ5N zkQI7~-X4q)L5L#65aI|bj1eXXQ-m49T(~3{5rPOsgdxI(w-h5v5T%GRM7hw)Fk%ET ziWozTgA(Exae_ESoFNVcXoECpK{LGO!W`icj48$pV=jz^iV#dFCJYlUP{1W6m{Lp` zrd)u6w~Sy$F=Lo+5H9$G zu~1P;C?k{$c7Xye86}Jn#=$*6!CS&9;f!#w2YCP{bVD5AA0WUXP=gpi10_5K4j2sD zAPrhvNKUwh8V;kB3qgWE7z-6+lyS%v>;eT`QqCxc93g240Jz{e1PyK>O2`8+p&Q}= zCNK;Rff~dB8ae?BIAAbngESXbB)o=esNrzf7z7FaU@TOOb76s+^$Qf5jSBnJEJ=XU zLV9|778VwEc6QFr&Yqs0 zetv!t5fO=riOI>y+1c6o`T6DL<+Zi7ZEbBTm8!qLe`siEVq)TL?|&ci|Noi$N?TV4 z4WorZtMH#dI%?FdJ7;~pqCHb*mP2?~efhP62J^)7^$jOGkC@?vfv$#%8#z{g_YVmEe0zMefrOertCXwUwHLShGSF4%mR}c?PsR0Q^j>{A?l((-#_ItcI2Vn-Vc&PqF!e`x6U(?{8JqB#8>_}B`!QAnQ1p&kZrG# z?I~Lu9}#F8*SWet;qk6`*DX8wHy(3$Cl8JOFl&!1MU&3+-QCLW_d4W69NeLPXs@*9gmujEUdxuBTAEFD%{q(s zs}?nD+u53R?eI!7u0SOpGav{zw#Iz_{g_? zwtr`Bs(+I5c&TkeXWa&6cb)&!_hc^v`&LMc)L9wUOD(6_erusnUltW&1 ToMyLA4}Fng7O-^*8K>R!D literal 0 HcmV?d00001 diff --git a/EOPSY/lab4/task4/work/javadoc/images/ReportMartException.gif b/EOPSY/lab4/task4/work/javadoc/images/ReportMartException.gif new file mode 100644 index 0000000000000000000000000000000000000000..bd0746be7b23bfb347b5ed769345358c48dc622c GIT binary patch literal 1878 zcmb7@{a4Ic9LFz7!n6{pgtnSfTMYK=p`mtblOCi~+Ok6rsJT>zjqQO%u_k3BB74)b zsYN@sCtB*9rSyCWsc4f_Gs>b}-aymbtj zp%L`qa0p?92tpJghM?j _n{#8JdC{t|NtV}uF96k*1{B^)9c5rPOsgz>GELlh%Q z5T%GRP(qAD3?oJmqliHP+8_;D&wJj3f@x8QNmHmQ3j0A$}!9_!ZFG*mnev>2Zpe+@MpN(keF1b;9VDoP1ukSo{)3b-VU5(YU!(hvY}!E*>2+(ML)2Vg=s z!~slT7#spMhygTo0v2$#;=Hf4cAb^VX!d>68ynfs3>Fn0yXRBDKs19_o-PD z52eYSU#})go>7wyzio|S9$DjoU%m#5cc7UB((pOJmLNRvq#1<-0)dH%iM6%$^5x5& zot?eCy#oUSBO)SVV`JrVd3t(!et!OyD_5$js+yXbIyyQA1_p+Qhd=cG_aXoPpN~f; z=}ti^w2*J*{}X7+IBL-~bt}ocb!3WxO+aHwer?hW3y&dnEC)zsvW2wyqa96>q!bk&rM=Av||tW?izcRgr$_83$YMd)=AQx&ey@ zYZf*-N=s*$+8QYv{TjYA4r$T-D966gths$%$zo|{qQFb^GV;%!8(G2r4r6=TtwS0% zR7SmvZFg?b{!6|#?5f$8UnZ4jy!R}PR+UZGI^{J~m9_JG#hSv;>NBnySnUt$pC22b zdi88#Lq^>R;o>*RoulJkhm3>rcJ|h@U47qv-XrY!I)2fRvik7S6pQq+3DPswmV4A;6*?_-|31qfcHB zs#F<9JCnk zPfPyc<;VlmR4u)gyY_17wN6|AKB~>jBh^AOCwJA8-b22tmHmtM=Je)nZ=YLLsUSI< zU;FNRv!Lfq(XO5s52s2ly(|@_##Fnt6x%6tPS*Z*e12|f^gwNr{l=I}K~+z`iWBDA zed+o*YD>D*^-^%Mdfmx!b?)`Cit@dYf*t<#K`9|=MH7Py2eym4W7qFf^=JPSI@3^D z9WHVk^Br%V?6lfN=yuk)SG{VIp^k|n@m8kM6T?EM-$`+z&uKrke++SOpmrJ047A^O zDpW3Yj@xea=G&;MvJ+HCbyqyg*lJmD@$Ng>F;Vh@nYn-J3q_H_`Ell+1=e+E)+ke! dUN<+~XnuRqWySHJ=@*O|-0D9~S!#w>{|m*@cuN2P literal 0 HcmV?d00001 diff --git a/EOPSY/lab4/task4/work/javadoc/images/Repository.gif b/EOPSY/lab4/task4/work/javadoc/images/Repository.gif new file mode 100644 index 0000000000000000000000000000000000000000..274e62921680e404ae3c32e92a65a027b0bc355a GIT binary patch literal 1536 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 OJ;Zcwq~6RF`Th%jgvW0H literal 0 HcmV?d00001 diff --git a/EOPSY/lab4/task4/work/javadoc/images/SQRJobOutput.gif b/EOPSY/lab4/task4/work/javadoc/images/SQRJobOutput.gif new file mode 100644 index 0000000000000000000000000000000000000000..873ecbc4cd4def51c4150c663ac5e0d27c4fdc2e GIT binary patch literal 1752 zcmb7@`BPL!6ooq!D8nKsDvPMNA&!E}3!A6`CMZw|PC{6w0#Ohe0Yy;5CR&JyY$7@W zHZrU;z#xizAjE91^6myhtlyZ~-BeZf1bBu6|atx*dHHZN;Py!a*!C=q^Y0!dZ#v9^mI0R#g zG2{KgSf~iWgkr*YyFdY#lwe9RW#As5;4NkZGm075gFFBex*-nm4-nuGs6h;%ffAkq z2Mh*nkOnQrC&yny4TloK_#nX_jD?C)LK)-=c7Xye38RETj*v7209^1Kf(Ew`CFB8^ z&<$|_6Bq`EKn-F54V{1m955KPL7MR^;$Oox)NmMV41xrIFcvDx7{5UE`gscVM)`fJ zm&8Mg$oy&o0~g3J9~S3M@L6rzkdC(_rDMM|NktS z)D&nV6{Q-3e%-t`R-aMjhBn;@dSoX^?!zG?Y?)BxZSteXWe@A^q`w0tC zrn$!@d8gFMyC$IXlA^0%&5qke9u1YO+WlzXSUO)t6da1Do>R}to)|4K%f)xK6+xrVhHW74D_3zs@x5cbn-oG3Zzkz1TDD{^OVuqpiD^6(wqXg-eeN=ZVTg zPr7xKxVD^k3w9ZG3>n;P|I?NpVX8;i&_QAK8ZVK^76%;{ERqb1jqK9Rr8D%8<(|^B zQT3#l1t}|>Ro=slzfh`sd#sIVae} z29#*GHYuDH`_qq^FI-=yAy}#xKH%rpW*d;AC3`j$8eKSEF71%D`iI0zrm5t*GD&{C zIQF4QxGHH`dNr#p_H+(W9(tH}v{EK*FUYj<)UaP{c}rI7TU;$oJYMf#l=y?brXq8D z-jk724Z{74=ibkkK53K&J6Sgl?vAX=NnWZWuM1lDw!E>$)JfIwpe9u5lAqTWo*JS5 z&NT6b?~1a*@XX~8Vl@1^Y+|(*+CLTgB$+I|*6&a=+#J*0QI#0EAbaJhiA|Gxa(ceT zF&SDXLi@tP)85rNuU(&TsbR$oVUL5)25MC?(@6R1)ae*Ai{zrIBxRtffy3PVzx8FK zQS*n==65`gD3IKDceQ>)hokp#_QUSAJzaSo*Y}2M;(4njBP#zzT?ZO#`hS0`bLO?= zOk+f}MMhA<${Sa1-P<^4tM179r;bnd&tE0V4PI%Syie;&VE^t%-8JonW4(ED?X>Un zv!w;qih-t^c|{{E!>zXJfPu->x$U3WY31#eBK4vhQK5acAATUC~ux%M^Wn zVS)?R+nPjoBKDq^*j=rzlMYzENs3$0?AF#|8usn%ZpB1&-%!Z-xR*;|!hx1~OJT2KQ9m8zw>t8jq+@RWbH3XHKxxpL{9$#BM3CE literal 0 HcmV?d00001 diff --git a/EOPSY/lab4/task4/work/javadoc/images/Session.gif b/EOPSY/lab4/task4/work/javadoc/images/Session.gif new file mode 100644 index 0000000000000000000000000000000000000000..afa3ce414f8e2642e294fa5d7809d17ad0c15338 GIT binary patch literal 1416 zcmb7@`%~0a7{*Ts1j{fnpi`kZD_Jg$7wm-KXbl9&B1tr9ZKt>b= z197z@h;mtEsTdF`3djr*R!-#)z!VoH1skGd$TVmgPtRHV2Rgs(ymQX`yr1WJzZ(*^ z&2Mw^-$YCPB2Nw_gb~6C5rjyBic&%up`1`bs8pAX62=JQgbBi=ddn%{jBrl4AY7_e zL5W~Qa3TZ|5=ul;A{mjKNI@hDXhRxWXvS-)=BUFc<&+9ar5cNhG0He)f-c>ojLhy(rs0f(T57@$Fkr{KU~XhRxW zQYELZQR4{Cr3w=MFcy^%Tu9^!yP&`&mx4>=h@=q!xbPf7!!4pj9>7F5;s6s2!y%|4 z2558w3mg~>ZAeSCBJ~>AsBt7Vh9Kb&V^Iky)dH>SR}|Kbs(o6Qq@b+1tMyu=RE*Yi z)V8gL6|&WXTD}!aIj~NGG(HDx3E{z$brf-Sc6N7n*XeXVK0bkgfsv7siHV7snVGq{ zxy8lBm6esXwY4oREnQt*7K>$MWMpb;YJPtHN$-Cj^8f!?wP@?;K&HuB)vEpz#Nja+ zbX*bIdf{r3gWJmq1Ff~aM_gVAuMTai>pT7&%@`kOtMC6v8+dF**rf(br7pTT!E(to zc*Z;RMs-+w<9Ahl*}slk+Asca-oHrWq0vWb>q09%w|;SKs5yISTj!pDf&!kzx4SfgO1PCY&ET{@dE)c(>EjJSt6sOyX>(hX=N`o}%lCz}+ulq{@|YjjMbss2xc=ZL zi(8YEmz(!%-rlpf*T)_<{I=MxS$5YwCUJIW%7a_q)Q7AN?(W>{IvKPfE#JFbJ8XC5 z@zZw_Bf4ki?0bsdTpriG&tzhEE276rG_I>pZfX4LgP!eXgL%`f?M5Tje)w+f=}~`a z4tCGjF%vUvVRCA^)L|OX>96 zg@+CCUZKfR1w(1o#XoKgs`2+-ud6R{iuyeEK!}(5tlq|}q+yr6edyHglltK46Ym-H zV|)Fx>d(Ki(=}-L{TP#x83)%b##K$~jTelut}gY4ke)ABo(U+6w)=SD=QWL42e+mF zQkE9h(NLJNu0N&TO|$Er3f2-IQF!W)k|DpzJ#ISR$x?G<#o=&6YQbdRfY$I*izfa+ zT7~E6^0JGgn@x@3=Xz)SJYKnWd-v~QkM1SiZ8PmU6npjTr|}Kx={jRnU%Y44raL#L zOUMqN;k@#exYPsh$>$=uifJer-m K@~oXL+43(Wija>0 literal 0 HcmV?d00001 diff --git a/EOPSY/lab4/task4/work/javadoc/images/SessionFactory.gif b/EOPSY/lab4/task4/work/javadoc/images/SessionFactory.gif new file mode 100644 index 0000000000000000000000000000000000000000..e4376c1d4855b75969a8f713fccbd638eee5030a GIT binary patch literal 1679 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 literal 0 HcmV?d00001 diff --git a/EOPSY/lab4/task4/work/javadoc/images/UnknownReportMartException.gif b/EOPSY/lab4/task4/work/javadoc/images/UnknownReportMartException.gif new file mode 100644 index 0000000000000000000000000000000000000000..5e60d9f19bd9168e2d1b09346a60898403cdf00a GIT binary patch literal 2207 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 N!IdApB^(ZN_&-}s*`5FZ literal 0 HcmV?d00001 diff --git a/EOPSY/lab4/task4/work/javadoc/images/blue-ball-small.gif b/EOPSY/lab4/task4/work/javadoc/images/blue-ball-small.gif new file mode 100644 index 0000000000000000000000000000000000000000..d4c5cde5b005117d443e595db216e8a212831f75 GIT binary patch literal 255 zcmZ?wbhEHbWMg1s_{zYrfB$|4hW}cM-Hp}9+?~z|3!KYIKF7jvjf3Go2g7@IhGW&$ z$JiOpi3t2RH2E*U0Tg`B!7!(1`TwQI{!0k_XJ**T$}mMlphZLRKR?GcCWaOkhA4K1 zdu$9_*%^}e?>)xJu$PTtEdyf|1A~`FZ#itU_uxX2H&oKM(5Rm1JCoE59jPZuy1E+ zQx>xD8(@q9h(scxP{`qMEG#SxhJE31IFU%Sx3?Q}pU+p2cT7HDkb(2MAd8c!3H|p(}ox{^0PDpsEsUa1^qp%-^D8l6;9WGRe zP!y3;$?3#353k7{DmW<-sU+(V7-|{Bc?cRxHMyUnlo31QWrGppY7-C?SeX&Zqci_J zBeg0@`(bqxo>?TF6Wp-ckv|6^2wpZFoMIOBlb65za78a8NwM%&)P0!cw7{(4R}(8!arG)0e@W2D=$^=?I!3g;gyB zYPzvmiX9LMaizhP4zWs9PD|9dsQ;xbf6`I_Gd3*+Uit}e-N@$FR*p3mmR(NI$gI0n zZ82qL6$s@mjlQ}}+j!fz%&Eua%S_f5Q}Muv5NP?Bv-5RzvF+K}Sof9UHC4x-ocGUG z+_@V|?RCU{{_5K>))?t7s4V}Hx4B`mYt?ew8Si-0WT)vCchA82$$Gynhq literal 0 HcmV?d00001 diff --git a/EOPSY/lab4/task4/work/javadoc/images/class-index.gif b/EOPSY/lab4/task4/work/javadoc/images/class-index.gif new file mode 100644 index 0000000000000000000000000000000000000000..7f276bcb242e6136502f60bded36f5326bab534a GIT binary patch literal 1497 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 K@{>+9vi}!y*+B~c literal 0 HcmV?d00001 diff --git a/EOPSY/lab4/task4/work/javadoc/images/constructors.gif b/EOPSY/lab4/task4/work/javadoc/images/constructors.gif new file mode 100644 index 0000000000000000000000000000000000000000..d1a6ae507ca808dd0df7f7cef51fbb3a4aa7050a GIT binary patch literal 1565 zcmb7@`BT$J7{=GpatY&z(?V0l;su7H(iP8Qn<5spb?_P#3@YdX;ZRX4P(`hBSV=u7 zghio(igJfbw5ek&ibPkPVhIxBSP+q>5{w|AwzGXV_8;i}l6hzMecsRWyx)8guw>r+ zO;6D@G=$zBj1WPHBE%5l2r7&bCJ0l68Nys#5{w8zgd)Na;o>dDh!R98q6|?kS{X)+ zAVv{mh;dLt93xH;r-(Dep#W`=1}$iY*IdjIhhR)GW*BoZ7Ait8p_njCxS)VbN-(9E zGEBLEg13xdMloZUabSd2%n9ZcbA~xg1!@ojXrKfvxP!r<4bq?m&0H7~H5^I^BZLco zFcvCG31x(GVHYUil2O7KVI1586uc#z63z$*dyofULN~+#{s96U0yT&MG*H4*;DEuP z4bq^+MRMXAYB-EiE`kJqFcvDtDC3YT*aZr>q?}O>IYQD90C2%`2pZf%l#mBtLN~+# zOkfxs0yT&MG;{(MaKK>D25BxQL#_Uk_40` zcd=eel!DQcj@Y)vut2tW5X-k<2?v%*APt`bYze{xPnJ>0!NEZyk+{3NdwYBP`uYY2 z2Fm5~=;-K#goM=8)XdDxf`WpIiVBTJqt$A4I$c*+m)UH7+xy>#{QrMkUyT}pP%HXK zw2J?PwGBs=w&VTPr++vLtWSe&C5UiYa%9Qe|6;evj=L2s%x`zSDIw?Tl%c-NViGlhxWYb zbg);QZdb;w)iJU zi)GbC(_haHzLnnx`glm1({CX=jJ)nK6}Z5pQl>FKD=0?lU{8x4m^tvV6zhm*xGxxn=L^pPwb) z-+pfB(SgAyZlU|0r!;OzyzV(XA&OI#(}o5=cS)R!F2X5c*u1;#kYU%n&=g7X+RkND zCPfye*h%Mf>>u^*w8t4O@2kS%2VO;l9viyiyiOVBnd6*3!_=cnUZ~IR*x}n4@ zamopE$IY(bB*)^($84oG@20J{8h)bOW?J({qSP+xasJ_pmm>XK^AjVFOIL&&i;F^2 zj3pO3uNzC&u6Vu5Sn8rR{#fMG?B8?h(;3sxRQ}RE&~u^SO0Kc2@#1%7RV8}6u{E1z znzE{sb_v}n4OX`&vDn}>;CR*@=WtE>>hcw%u9i1PVM(|otx2mZ=*z| zz9yS{XSK#=a_`p5%Y$O;K6AYv;?*3qyLXqYH2>N2*3GK&V@(%w%LnxvSKS_L-*$WS PkYQ(QY`uO&2U_?qzhC(7 literal 0 HcmV?d00001 diff --git a/EOPSY/lab4/task4/work/javadoc/images/cyan-ball-small.gif b/EOPSY/lab4/task4/work/javadoc/images/cyan-ball-small.gif new file mode 100644 index 0000000000000000000000000000000000000000..7f74357443af1e4323a2e6597c59a2e8a508b149 GIT binary patch literal 255 zcmZ?wbhEHbWMg1s_{zY*;NivK<<1Zl$`BRBkeJL+T)@y$$1r6g!|XW>YgaOC-N>+a zE5qKs495;JoIA;I?JUE+n+(q%F}#1p@c#?L|DT-KE^+_=C0LvZCAXF1$f-DNOXf3fyiD08rm6#^R zM8SoLL~$X}g`pxOY(P{jL8J>81fwD7rs(FnKt(heM-u-B&thi2FDK_aCo{AEz`lYV zH7TU<11Kq_bU#%`sH&o-4*zM|E^_N8cRG3ei2f%G_A@w04Q5N8Qn}3nP&Wk(bxSOt*Od zOyX69%zCE6apYhah{bl$!fN7N(wu}7)MU8}h|wXdbI?h}9BH7-zRHMP<0yjG zMb;?Cq{e62#K=I5GJ8^v-~$XpuYo-P4ycAq7=i-H!w`ti#L5}Sq+yCpU;#T!E3|zj zsK8gVq!kM#f3}D&CrW^w4(6*7neDSf!+BC=7D6Z#E9_3?WxFnoZig8Nk}Az8`SKu+ zB7BJFh%Jgyctco~*p-LF6+8&6b!kgU>XXE~L}1{av^>x7NqYGgwRACjR|S*OT!_jn z&Vm~np;@6(#bcrA67D{9g_d=AI`GHSvKIL?fbF}Z`FC}59?cr=9$MhE3ExK=%}P_AYAeR2;pxHOidV2%U>oHi_`t7IL%Ii} z4zG=sF0mo6uytfo^&+uG{OHk!|t?de#5)$L5Ue|OT)>b5@3{bRj_tWe*xyw{`{Q>RSk^|? z5d;SbWdYqTO;^}jqvfGkrC>*Fb%g>gsS2cmhETNxVwj#;`ww(}+1$+Bb3f;iL1qChzXF@O`;T}+U%Oqz~FbR9e1DNPW9PkeaI0QAs01Zk!1qTL08`98{ zDmitH8b@$0Rgmz9v8aULLLyh#1qCj-6kH-lB#i*Th35zwZV@H&04BN-2bf?O4nYku zK%)~_;J{#LLt3g8sn@thjU%x!1POl_i%LkT7HC_)qOfgL?bEg-1!c=!t=AT%Vzi~B zwrw-4kZm5+@@-hkfo&3`@i|~i2oIiYqllA}lSZS_YPCK-J|Q6?QBhHGad9arDLS1_ zuh$n96&VZ$v)SCx(9quA-r3pN-`_tvI{LErzYqEU|G17%n?gtz@lvhoKS5?plJgD= z!|N(r4$gSpBet#15JKim@h#V`c<08E1$6iCZS^}s4=;K(e^!L0roCudSXJXcbNg?W zuGl#*b^PQxamF{YC)DI^Y$;jgI`ORgJHw4b0R=g;$~Gk5stP~uk?LRU9(6YQ;~#|o zso^`t8>ZW5I(F7>IvU(ka>%2^wEm*k@%VfG8+UcoCB?NyZnF-pyRyEiEO4f7a7#tO z)HRQ1>gw)abGSddv$ylfR#UQ5%Jpw_=7&usp0}U87<)SKYh_IEp`TA=Cf@!s&3kp^ zME#cD;KUz08jJt#ZI4?ve{F5RzU02Dkg<+G?vAeQ_-X08>*5#EeZ#+0hiz&OptlAy z;wJB&3d$S*w5O}y*=5Ap_xXVJtAh7k${Y7Q?R7VfEw9L%w3fOh_T`i4T`qYSTC&U2 z?BYXXvbXIwF3vd-XmtrraJ#hqi{Z2a=Wyo-rCarxemX;e*8FDW0ej0U2?sOXOLrVu zG_kTe$#Y)#!_R6X+Pacw1AE6OA6<a$PY+xSsahrgG_qS18kzdTrL zvi#Pw+tYHjZ;0humwRY0_GevRW^O(3`P=0K7l(_?DYa`V8lHIsL^n=dym_Q~^LT{k h6*4{dmeFp0?0KX8(oaS%Ij(%1ZkZhxo4$$!{0r;mrQ`qr literal 0 HcmV?d00001 diff --git a/EOPSY/lab4/task4/work/javadoc/images/exception-index.gif b/EOPSY/lab4/task4/work/javadoc/images/exception-index.gif new file mode 100644 index 0000000000000000000000000000000000000000..e3830d9c52e7899bb62b56f56f71ba304108ed83 GIT binary patch literal 1707 zcmbu8`8U>C9LH}Xqh)ktwCQO(70S|bM@O0F6hqB4mZpZ3Wg>UtA%pNJ)C}RVWNXsR zGDNZ+OA8)GCLzm}7HbD(nL3pz&y*5z=ktB$Pni4L=iK{we_rqR=lk9Djk(d*!=f2l z=so)HV1x)l6d{HXM^IsmFhQ6i%n;_nCBcXgL?|K*5iY!?7*T>KMU)}Rg;s_UBZyJN z7-Afh5XXoU#3|woaVS6=q(KXs;WZcL2!~)yF=iNZVJuXHU_vorm~eptE-As3V#+Y( z0u;Pu1T%^m!;AwXv|>&$r25pcAEokO~A)$st31NhA!5@r; zic&%up>i?g0wk5>5$cgo8cE12CZ*;sE~u0S z(BeXJ!Zp-z7^PeY68ynfs2HP+L#|*KDBzNEMmgjNNkag@1i4AO_IT30S}ZgFzdlxv(PPHC#gthr`AoNbm<^p<VfhLy!GU5DNW=2Y1gr?V6vdC&FeDofQAAKSJ&p%Ka<2g?Q`?wv92@~H58 zUmKWZ$=^AiG-?`YJ$a?Zv24wor=zYar=}&N`<{xEe6$QE-bxzFFLyl*X&A6c3rgPV z=SZ+L`FyBygZAMAWa_63?~i8Xy#Xeh7OyfL(tno}shXIR5@FMKWrbv#9vBE!Ssy71 z5FM*^JIp zA}`&4o1>Ydb%f^Z!FVtAbx+b3pRijUfAj~HoJ5<6bq=R}FXbH#i#2?ao7W;YbGu?P zPg6TbGm1Yynjg6^(mh9d*1a!Fa$ff1vGUpzsTYF%sW`w&-S}l@hO;y|H>=FXJxb@( zl>C4{E1UDm?ktz37piY@*B7_>7m&-I^K_rzP&sSXS~c1*Y4F`Y%~iJ5?f2#u-)y(< zUM(w`Z@e<;h)I<=H{LmC#8BQZ_Bu5FmFW9Ab)_BhKh(NfylyUaDwNla8+2?;83`|N ztMy-!>XD%AEwXLgVB70mhac)C+%f2iDXpLUH3qXUm6jd9Yx+7>RB>{;Qm1%NOQYv~ z^JtH2?VC-v-{@H6GF94X_xR(rR*gxIw;fC3dOfoBh914$`L);IH+uF*O!?PqP;q;g z#L1$p9=AlUyw^hd){33GS-1Mo5N^6b@IHq>j zSIJ__;C(wsNwuYJ`qjSla?8El4!`$%JZ^%Y%Vod7l5t)m2T*2osjI1th4qU;ET zqaQM8*dde{LLf;n7Q$h%>a}2d6BZ}%!kd1Kx^Opw)rz+x{Tn@3--idD?}zWh)6;jd zGcwkQMr;9`a{z@xA(zX=VzJH5&3ryzsZp<{){O$yi%epSykn|uqsCFG;uQs@`U-Q52>&hCxbUfhhbH*< zB>$Y*;>5CWFNH~i)VTk>Ef@xd6|Ak}Sr+G1yrx#p!onhyvyf$I8o8|DgbdS^8B^nN z+)0X5PckXah|E;ohQu+zAy*+$M5vx(h;X8CQRl)y1(JyncUY1(&r~@XunVcwK3!g$ zus0?*ykNy*F;;py`Xb#zxY)so;OwjjFp~>BLwOtF^{{pz)k2J*pEnD39Sk=VFV;QC zdZFem+5pSrfV&hxCPZ^X^FTf&o99*LT>O9iOThor?E*YFxZQ651cX5}3442&<^o-U zD-=F6Kh`}}-+c6X@WQ;StLe{=`CzY)?rd;1?CE&>r2E1CzH9x#;1}QVy2jweZ!^)k b+wIz}<7UU3?Va8Cc|Xtde!pua;^hw8 zjf||(TlC+-2oZ!RLJT2}pu!kof-psxA=RGx;qh5&#Io!7NUea028_) z4qyVq;1H-m44|PCuz&*wgEmNWVMW4gxP}@IhmApy;19+^#W)uhXjs2MVc4j!Ps5S~ zC`0bTdJRzujD~cCZ5s>=$OaF>@(oym1H&YchR*@E1mS@v!zg5GYHDU?CK8G4?d_eN zojpB0WipvuE{}|ijEjp?DwSDTS$TPR8jYs5wzj#sS+Ca*3=BYT%l|l5BNL1eYC*Qb zpCJ4blZ-jaH?eRnICne7c$&@Dnt~@zXo}JDG*|WcdkHgfV0(?)|6crD$Kz!)_vO?o zMPBt=sZa)OfD`#(3>&3*R&OzPF4A zo;IzM7Tnc@d@=5%V!2vYw&F8!-u)Su|Eg&DD05=jjRAdi*!cODy$*x78_)M$D{rU$ z4Go!I@*F>!QB}Z?9}MUCRUWyyAf>HQ^z^h(r((`;L6#%Asp(gr z>C&a8%eJP~`OM5dZ6Y3S{9PPAGCMuqPx3hD*p@(Dw#__6c6{{vNL6mu`pYV(wU-rXRu@$H3aMh@m8c4-b&^bMvrByPlUQqc zhMn6K`&K{m4aM#IHSD{bvbo0!qM*tI806I{{V znVf%9KaTAw8P4$CTdd7^MAV}94(W+%r}#4!@g15kZ_V&$i6v9U4y06@e;l;8YI?+p zCAAjXN%QxX?sMxai*oyX|1GN&+t;_pX9s;-uFa|KL)~J7J9v9kbUL)^3?oK2)|{TGwO$>4&nV&5t%tFK$|uHM`)UYo>chgS1mI zSTph8kRSGK#JiBrc)e!?nL~x+glNYf_>1ctSxfly(4I(&Rl$|ch zQC=)sb|@{D6j&0BMQ|7``J~#ujKK-K@TOo8;ciA+3%-u@Z}eV0FE6~$kLTs>>N(aK z9BM=(RsqgAfI^{=%jF`GNUc`O=kt|HB_5AE!`&?drfK%|^#OB7n)GluJOEr7iK!?1 z_lV>1%TwUUWwQ?-n76NAEl|D4WX8yQrr9>?9F;2GQBbNcFvp1SKT@3wUn{t0f`3o) zZ<$q2EDLv17&Azni=S-4Fwn1JX&EoGIICfvS~&|dvrtb%QIJTGiwPW6V44bJS}cZ} zNr~!7CdU|2n5Ns1IYJyt6*5JT>M4dGCn}e8E`%zOO$4~ZlC*iI%1OvVFol3YBra;U zAR7p%@GV2mLek))mP02w3C%)MAu8}Ch?H0t#8fn<88L`SNx7!eE}3m7?1IMJumx}d zRWGQn(`YnWE|>WiEM;0tgM+X9{)Ltsi>(v*J(;ejCrj<^rS^T}{r+)3!gzD4yfk93 zjIDUVip652^nCDjx|wjPgA>8oSrK3+XLyEkAK?wKHX_wbj5d)s3HAmUZm3=?dyw@) z%Ug64ERO^3QUQgKgc}JDl;esytTE@}|Lb1@;xD%g@L=zHyZ#dp&R~nMt9x#0n>@Nk zLZLbGsEs`N5$ISPnr|EZ+1uPLJf05t4!+pBcHkU69Q!cQn?4cVan~b6&HI;%J6)d5 ipGSj{#>rdzKh|nNa(+5BY)`%InRw=U+S#xHhyDV{fCq2@ literal 0 HcmV?d00001 diff --git a/EOPSY/lab4/task4/work/javadoc/images/method-index.gif b/EOPSY/lab4/task4/work/javadoc/images/method-index.gif new file mode 100644 index 0000000000000000000000000000000000000000..a05e7051160fc7b579abde9ea02e0af9d796cb8e GIT binary patch literal 1588 zcmbu8`%{xg6o$8swRpi>TSNpV4x-$=j4LRL^)?VMSOH~<0#d3hj1-Vm5hF!Fjey!| zi9i;lTojQsL-?5@ zN4B8Z$c+9w7$JfXMTjB95mXo>Oc16BGlaRgBp4Bb2t|Y;!o^#P5haLHL>Z!7v@(ns zL5w2C5aXbPI7XZxP7!B_Ljl?#4O-9)ueq2b4#AjW%rNF+EL4PGLNQ^Oa6ti=lwe9R zWtegS1#cO_jAF(xB%Cnz=9}YB-b-MhF-F zU@TOW63PhW!Y)w2C8LBf!Z^4GD0oXaC7cls_8of`~w6y1ZofiXrP3rzyX6n z8>B&ti{!*L)NmN3Tm%XJU@TOOQN|%xunQD$Njak&a)hKI0N{e>5Hz@jC?OBPgl>of zn7}YN1ZofiXy^ni;DEuP4boh!NW6w?sNrzf7z7FaU@TOObFo0n`UQn$qhg9kFeTVS#M%AeL{z5)LerKpH*=*b;;Xo-Ct~wY9aKot=w|i>IgOnl)0!u=G)O9Ak>aL#GfGk ziI1!}IzQHa?S+zShpaw!3v1pjNjqxooYL=p(6Jm%Di=;&8gtq|~MRP4|B};=b)lgD$$eDa3ihu>6uKrbU$?FP|WH?bhMY zh*bY~i*{Yz>FdiS}N%Hvw!X9rJQ*7fKHjL%d_W>a*b{N9n9 zT?wi<=REmeMO%6jmjy>l;>V7%amZ+Jz1$OjXVt^Vj49cRBGVlH(FMkjjI@{dyJbte zj!Ft1Jdt{6t?Z9K^bH9MTfBXsR95-Owl{Ni>YJzE%_g}{zJ5RMD?8~q7&0w+di)zn z?7VGT3lepG=Du8?ys^$1n}f2tcMn&dizr-J?b@ZhP-_#lWz#Kb{*eu%))D2w?NaAM zOJrHkwq({VwkbX8H8`NkwzJApPL)0CkI%W1UvWGzD5Rn!&1+mmg=)Q9(YeH1uCt2v zb$UDI{A%L$VYzAgsBn4e$lIdRmFitC+K&RAzTS9!;*6k+P3sjNp8DmNp4Z%vt7dAl z^y7xA(xQw#r!=dNX#%?)4VvnwgZ(e+S$3$l=JBY>ahlFRee{{uvsUVT>9x1#=^N|D z$L-`9g<8YFn1=ILtcHFn&;Kg5zeKaZxiI1ShhL;<^)}IL{ zuX;VzNc_n?^6*eX7$KYxL5L)%C?%8;$_W*ON_EL7VT>?Nm>^85x118r2r&3Ufsi1}!pg{>N++i@ZAq_1wOJzvaIGi!Tm{k5S z78U1=3&y3g3kqBc&V*n>!abnymPyW}U=sF_2Qbl%IN%=;a0qIM0UDHe3Jwg0Hl(2? zRdVVYHICq1svzMHV^Imgg+#8f3kqCvDY!(ANE!iv3(pZW+#*Wk0Zeow4luzm9D*8R zfJP^&AkY zzA|DnueV(6$iI>i^R?G^jrUESI}=*BU1|@_sI*_RYCg1WHsnqWR1_R^bcIddxL$iG ztg~R*uj4;|U--l7wQhS?YA@-YoPX5h^>TVsSwuv*B{#&;+c0CEzdXM=vnubUGZVs; zn||7uX^jr=wd}fL4S&Wzt|~9n@YC)?HIoOjC+(fbM{M7$dG%Iz(_%U4mh;}g;(c#J*zTkXX+1f0xs*;Ex*Z%Accf4NMA8e@V-`baM8Lsr( zn^bFvjCZNk|J~M=QsL$}`)=iqmYe2EZRgG2V|_oGhl?I~#-x4v$lO+kc6WDd!?EoA znJ20X7ivyq(fGSJQnP$#8xjvcy?XRy)tf=5>Ob)w8?8uucJZl`rmdQ>>K9YTbmm<( z$s?8(V{c~+G*)OdBS|H@KF@4+EVXzxcQ}HAV~(57v7>W0xCJ*}@EG5jTY-cM>8=*uPvWoksuw literal 0 HcmV?d00001 diff --git a/EOPSY/lab4/task4/work/javadoc/images/package-index.gif b/EOPSY/lab4/task4/work/javadoc/images/package-index.gif new file mode 100644 index 0000000000000000000000000000000000000000..f894d4210d743ad9a4f0736159ef226279508dc1 GIT binary patch literal 1607 zcmb7@{a4Ic9LMi2iOh#iFQzPd{(&$DWDm~y-Q+B1=ob^z#cRzRRKd|?gIiGXy=lyxT-=FV%zi8ns z_mFNh3B5rd4n~L|L=j>LaRe2{2or=U!VF<9E(u12AVLvgh;Z?iVnhj|6j6pK7p)8< zMi8TjF~m41A&wCzh*QKF;!uD#NP`wM!)q?)h(j=@7&DBy7z-64m{3d@CR|X!B_)_r zOc|zJK*3u^Fr%0;%s4PYE9L}qiaEm^rUEsH0W?qo7Tm#L&<1JHf@UrZi5de0KNt%Y<6JDzynaDp-l*88c}W7w zoV!@BIZDB3PDgCpY*-+hJ&5I-v4jKjB#?&B0k#C;fhY4QWNB$>ZEfxB>@1Z^Wir{) zrArkGMR<64TwI(=rAkXn%gM>nXfy_c!Duwr)zz6yrrzG(5550=$p8PxzHjhH2-Tyh zqE-ASh7RNCf`yG&QTFwuVOB1Idq*Oq8aYvZqO!*R=KgUwthrKq`bM&?EXCpNraaHX zjz66N)es!jUcWX1XYG=piCgl%ydFXgAW7>`}2MU(|aqo#IJfqkD~ZDZRBg4 zfmsXM!*ZHk~`<%&WCR0-7Pd@r@r}J{NeK2OB1#}DUQvG zXc?pu2k0x%JTz1S9 zHS@^cr@#0I#jiR#;+x5xS&e7nbpDX&%w&F0jtKlL4Z5+f|~j=H+L6=dwTt!$6W=rEcR(-X$8 z&)u2du|8YZlYh&}x#!RIdNR9)^ucQ z%kJN)+ORO3C&_201iKS$7W2B$d;n*V#Q{a^b2zd+Dl2Foc7nk@o`{}q$3aX7UwXhtze++%Rs z%3zqxAaQK(-n|TlYZ(lq7!g_I20uKI2S4!EsS88&8xncF+^+0Bu|S=In4~#0Kfh|*#H0l literal 0 HcmV?d00001 diff --git a/EOPSY/lab4/task4/work/javadoc/images/red-ball.gif b/EOPSY/lab4/task4/work/javadoc/images/red-ball.gif new file mode 100644 index 0000000000000000000000000000000000000000..dca92960148cb3751f9b2de8cf96f26293c15888 GIT binary patch literal 527 zcmcJMziSg=9L66(&J2aVi;%_P#(>K^^{z=xdQDRM#@aO1)Lefl7qX-fl+XW@ z`sd~iK*8Nv#q1N@I((tDJMPhfrt8|m(PBE2S-O{9?Btd+#!9}BE#}%O(6S^S|@DC8+5U4>6pn(#e0tXBR zZIA{nE|L@1P{U!AauFo>gRxLCMj3}(!7fn1CFP8A$Pto;0DudgL(t$BqJ%sE6S^S| zU;@M75U4>6prI46fCC1DHb`@^BJmoop@zd@V-O_xgRxLC&cy<)>lYN(jf#C*mn5L9 zxr_B$qZEwRbi}r;h6S?KgIK;5OE|Dj0%`ahU`r4lc(RT{c6N3WiNwv#ZRX6GzP`R8 zAt4bF5ekK3$BrE;l`116L#y7ZSl(%f>8VW~J#WEZNspZB zGTfH0wW(|P$T!V>M#e5?v>Pn&Ci{_qHWr|a?67;2>&F90r+K*lsl&me- zIl9qqO!l4T>V!*o7RRrezOE+f;H(iZD<5@U-8`JY?bu6m+VN;!0Rl7PvtFLxy<#el%HZ1os~KE^SZ;aIkhx< z@{)};=VRJ#*81|qoe?h{-|f*J&ux!AGgNqQsO*=jS96Smy~c;;x!t@v`zZ zQ)hH@U{-kKvx)x4Vw>x-r~J@3HHcmQWJ0;0$!KYyd?SrEKT<^1_Po1`Svu#(>Cs~F_)%>97 zle^w2d)9iyyXtcO_wz?c%^COOT4<>2%DCI5=?jJjSrZ8E$&G6R!g0j>1;wPiZ z17^)R`z6K)<))P#9$LM8QGL3zm*nf8i<1@7oQq~jf82w_y`B{}iLqbb5#O<~y5jnx z`nb?{&pWP{kMeQ6Xld`z>R(K)_NW+!W7Gise%QW~l{-mjivl#bi}qw(*=)0+A(om{40d+*6h z50(8cld>ViUz=L{Vc%-6nq@Mrr9R-6slPmYzo$-a0XWh#<(bGTYK%mIRlEMcGxr-q`Th}-NGhs$CH#mY!G5HLYN zLM~^4gapl0ET)PaI1ITJi(hP#p%;`DXpV0a3opavj{XEb6{l5BI zcwms06L+#k{yUTqMhGWF5F!aGN(p6zazX{6Qe84i7$b}mCJ2-2EvJMt!a3oBaH(1a zC4v#bi4a6cC=p4CWJGcz1(7JA4QXhh8Ly?9qYk5#Qz|HxYAh)6-#;`oG%_+WK0aQj(`9F8 z7Zw&)R8*KuCX2<=-`{VwTBoL_=I7^ER#wpaf6g=aH*X?jnmnie1oclm>?BFYmR*|8 z#=&DwTfO71beawjvMZuabIyFJ_>q0y`7YPA;U!Op7X5Z5qv@5>-A`2cS-afAPJ4x# zPX~@SkJLKpO5<$h9-|EbTEm3(l;_x)=U*=J>l^d9o*R*~Kg;T;ojmhKEvq-s#h<>5 z9(-V1&fTu2|zHI3<){f82Bzjqs|PdxVE zOhWehq`vWxA<4bIAibp8^riC!kKgl;ge}f~`m8zS#uwYG7PWaU7L75(mg;0Ye!YD2 z%t^21d*J-cPu+rQoX8reZ1W}E*k%4B|mO&`{PZG`@F4uIDB|-%ee@h-C{{-v$u~e R_u6}I6z=s2*_1?H{1>c8*9!mu literal 0 HcmV?d00001 diff --git a/EOPSY/lab4/task4/work/javadoc/images/yellow-ball-small.gif b/EOPSY/lab4/task4/work/javadoc/images/yellow-ball-small.gif new file mode 100644 index 0000000000000000000000000000000000000000..8e5f57cdfcbfbd4ccd3504bdae10cbc9215ef8ca GIT binary patch literal 255 zcmZ?wbhEHbWMg1s_{zYrfB*hN$Eweqb2@iU;N-dFYu6Zl|7Upqp5gE@hGWO7kDp`s z|6kz$AH(1OIUYY}m_CQ$|Er$=PnLfFFR*tnL;n)y sGDQbOfc(V3Cgadhz@e~&ha-_oX=Vt6)LFL4i~$e0dEFQiU0rr literal 0 HcmV?d00001 diff --git a/EOPSY/lab4/task4/work/javadoc/images/yellow-ball.gif b/EOPSY/lab4/task4/work/javadoc/images/yellow-ball.gif new file mode 100644 index 0000000000000000000000000000000000000000..2b8c0bb3d6baad5fdb28a878b33c265daeafe9d4 GIT binary patch literal 925 zcmdUu?@Lp06viLZ+znRy1_>)xIn!`b#FeO|s9b4wePPbBn*H=n%T~->M79@-tzUGr zgk@M-A&pDiD$Iko>IY+h7 z;uk)^$}` zsYCCFPT9nRx&>`_<=mB~>_lzjh5BeT`ry#|pyCRtW>sbVsu+o2h7g;?3k8bedZosL zS#xtU{pDwf8;jw#4EiR~c;_!-fdFoJ5DJAF+-!!7uOpn>jlEWU9>yad4vBcF1pEQq ze+cV-2m+i=cG`(N0kSNps%W?4s>CZUNj2M5Ca9t-0yDuv5GG+(kfXRfDsqTfiFXla ziNP$xL{fx0Cy7}C$nn7BW;_|i2xoS~WQBehW*>MFdLzbsrJOjr@WZj zXsA8&qsk~w&Wz{}U!Kc;=uf + + + + + + Package Index + + + + +
API User's Guide  Class Hierarchy  Index

+

+Package Index +

+ + diff --git a/EOPSY/lab4/task4/work/javadoc/tree.html b/EOPSY/lab4/task4/work/javadoc/tree.html new file mode 100644 index 00000000..a1975141 --- /dev/null +++ b/EOPSY/lab4/task4/work/javadoc/tree.html @@ -0,0 +1,45 @@ + + + + + + + Class Hierarchy + + + + +
All Packages  Index

+

+ Class Hierarchy +

+
    +
  • class java.lang.Object +
      +
    • class Common +
    • class java.awt.Component (implements java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable) +
        +
      • class java.awt.Container +
          +
        • class java.awt.Window +
            +
          • class java.awt.Frame (implements java.awt.MenuContainer) + +
          +
        +
      +
    • class Instruction +
    • class MemoryManagement +
    • class Page +
    • class PageFault +
    • class java.lang.Thread (implements java.lang.Runnable) + +
    • class Virtual2Physical +
    +
+ + diff --git a/EOPSY/lab4/task4/work/memory.conf b/EOPSY/lab4/task4/work/memory.conf new file mode 100644 index 00000000..b8e40ab2 --- /dev/null +++ b/EOPSY/lab4/task4/work/memory.conf @@ -0,0 +1,33 @@ +// memset virt page # physical page # R (read from) M (modified) inMemTime (ns) lastTouchTime (ns) +memset 0 0 0 0 0 0 +memset 1 1 0 0 0 0 +memset 2 2 0 0 0 0 +memset 3 3 0 0 0 0 +memset 4 4 0 0 0 0 +memset 5 5 0 0 0 0 +memset 6 6 0 0 0 0 +memset 7 7 0 0 0 0 + +// enable_logging 'true' or 'false' +// When true specify a log_file or leave blank for stdout +enable_logging true + +// log_file +// Where is the name of the file you want output +// to be print to. +log_file tracefile + +// page size, defaults to 2^14 and cannot be greater than 2^26 +// pagesize or <'power' num (base 2)> +pagesize 16384 + +// addressradix sets the radix in which numerical values are displayed +// 2 is the default value +// addressradix +addressradix 16 + +// numpages sets the number of pages (physical and virtual) +// 64 is the default value +// numpages must be at least 2 and no more than 64 +// numpages +numpages 64 diff --git a/EOPSY/lab4/task4/work/setUp b/EOPSY/lab4/task4/work/setUp new file mode 100755 index 00000000..8a9877bb --- /dev/null +++ b/EOPSY/lab4/task4/work/setUp @@ -0,0 +1,9 @@ +echo "Creating ../work subdirectory" +mkdir ../work 2>/dev/null +cd ../work +cp ../ftp/* . +gzip -d memory.tgz +tar -xvf memory.tar +rm memory.tar +echo "" +echo "Now, go to the directory ../work and submit 'make'" diff --git a/EOPSY/lab4/task4/work/user_guide.html b/EOPSY/lab4/task4/work/user_guide.html new file mode 100644 index 00000000..7dad10de --- /dev/null +++ b/EOPSY/lab4/task4/work/user_guide.html @@ -0,0 +1,460 @@ + + +Moss | Memory Management Simulator | User Guide + + +

+MOSS +Memory Management Simulator +
User Guide

+ +

Purpose

+ +

+This document is a user guide for the MOSS +Memory Management Simulator. It explains how to use the simulator and +describes the display and the various input files used by and output files +produced by the simulator. The MOSS software +is designed for use with +Andrew S. Tanenbaum, +Modern Operating Systems, 2nd Edition +(Prentice Hall, 2001). +The Memory Management Simulator was written by +Alex Reeder +(alexr@e-sa.org). +This user guide was written by +Ray Ontko +(rayo@ontko.com). +

+This user guide assumes that you have already installed and tested +the simulator. If you are looking for installation information, +please read the +Installation Guide for +Unix/Linux/Solaris/HP-UX Systems or the +Installation Guide for +Win95/98/Me/NT/2000 Systems. +

+ +

Introduction

+

+The memory management simulator illustrates page fault behavior +in a paged virtual memory system. The program reads the initial +state of the page table and a sequence of virtual memory +instructions and writes a trace log indicating the effect of each +instruction. It includes a graphical user interface so that +students can observe page replacement algorithms at work. Students +may be asked to implement a particular page replacement algorithm +which the instructor can test by comparing the output from the +student's algorithm to that produced by a working implementation. + +

+ +

Running the Simulator

+ +

+The program reads a command file, optionally reads +a configuration file, displays a GUI window which +allows you to execute the command file, and optionally +writes a trace file. +

+To run the program, enter the following command line. + +

+$ java MemoryManagement commands memory.conf
+
+ +

+The program will display a window allowing you to run the +simulator. You will notice a row of command buttons across +the top, two columns of "page" buttons at the left, and an +informational display at the right. +

+ +

+Typically you will +use the step button to execute a command from the +input file, examine information about any pages by clicking +on a page button, and when you're done, quit the +simulation using the exit button. + +

+The buttons: +

+ + +
Button +Description
run +runs the simulation to completion. Note that the simulation +pauses and updates the screen between each step. +
step +runs a single setup of the simulation and updates the display. +
reset +initializes the simulator and starts from the beginning of +the command file. +
exit +exits the simulation. +
page n +display information about this virtual page in the display +area at the right. +
+ +

+The informational display: +

+ + +
Field +Description
status: +RUN, STEP, or STOP. This indicates whether the current +run or step is completed. +
time: +number of "ns" since the start of the simulation. +
instruction: +READ or WRITE. The operation last performed. +
address: +the virtual memory address of the operation last performed. +
page fault: +whether the last operation caused a page fault to occur. +
virtual page: +the number of the virtual page being displayed in the +fields below. This is the last virtual page accessed by the simulator, +or the last page n button pressed. +
physical page: +the physical page for this virtual page, if any. -1 +indicates that no physical page is associated with this virtual page. +
R: +whether this page has been read. (1=yes, 0=no) +
M: +whether this page has been modified. (1=yes, 0=no) +
inMemTime: +number of ns ago the physical page was allocated to this virtual +page. +
lastTouchTime: +number of ns ago the physical page was last modified. +
low: +low virtual memory address of the virtual page. +
high: +high virtual memory address of the virtual page. +
+ +

The Command File

+ +

+The command file for the simulator specifies a sequence +of memory instructions to be performed. Each instruction +is either a memory READ or WRITE operation, and includes +a virtual memory address to be read or written. Depending on whether +the virtual page for the address is present in physical +memory, the operation will succeed, or, if not, a page fault +will occur. + +

Operations on Virtual Memory

+ +

+There are two operations one can carry out on pages in memory: +READ and WRITE. +

+The format for each command is +

+operation address
+
+or +
+operation random
+
+where operation is READ or WRITE, +and address is the numeric virtual memory address, optionally +preceeded by one of the radix keywords bin, oct, +or hex. If no radix is supplied, the number is assumed +to be decimal. +The keyword random will generate a random virtual +memory address +(for those who want to experiment quickly) +rather than having to type an address. + +

+For example, the sequence + +

+READ bin 01010101
+WRITE bin 10101010
+READ random
+WRITE random
+
+ +causes the virtual memory manager to: + +
    +
  1. read from virtual memory address 85 +
  2. write to virtual memory address 170 +
  3. read from some random virtual memory address +
  4. write to some random virtual memory address +
+ +

Sample Command File

+

+The "commands" input file looks like this: + +

+// Enter READ/WRITE commands into this file
+// READ  
+// WRITE  
+READ bin 100
+READ 19
+WRITE hex CC32
+READ bin 100000000000000
+READ bin 100000000000000
+WRITE bin 110000000000001
+WRITE random
+
+
+
+ +

The Configuration File

+ +The configuration file memory.conf is used to specify the +the initial content of the virtual memory map +(which pages of virtual +memory are mapped to which pages in physical memory) +and provide other configuration information, such +as whether operation should be logged to a file. + +

Setting Up the Virtual Memory Map

+

+The memset command is used to initialize each +entry in the virtual page map. +memset is followed by six integer values: + +

    +
  1. The virtual page # to initialize +
  2. The physical page # associated with this virtual page +(-1 if no page assigned) +
  3. If the page has been read from (R) (0=no, 1=yes) +
  4. If the page has been modified (M) (0=no, 1=yes) +
  5. The amount of time the page has been in memory (in ns) +
  6. The last time the page has been modified (in ns) +
+The first two parameters define the mapping between +the virtual page and a physical page, if any. +The last four parameters are values that might be used +by a page replacement algorithm. +

+For example, + +

+memset 34 23 0 0 0 0
+
+ +specifies that virtual page 34 maps to physical page 23, +and that the page has not been read or modified. +

+Note: +

    +
  • Each physical page should be mapped to exactly one virtual page. +
  • The number of virtual pages is fixed at 64 (0..63). +
  • The number of physical pages cannot exceed 64 (0..63). +
  • If a virtual page is not specified by any memset command, +it is assumed that the page is not mapped. +
+ +

Other Configuration File Options

+ +

There are a number of other options which can +be specified in the configuration file. These are +summarized in the table below. +

+ + +
KeywordValuesDescription +
enable_loggingtrue
false +
Whether logging of the operations should be enabled. If logging +is enabled, then the program writes a one-line message for each +READ or WRITE operation. By default, no logging is enabled. +See also the log_file option. + +
log_file +trace-file-name +The name of the file to which log messages should be written. +If no filename is given, then log messages are written to stdout. +This option has no effect if enable_logging is false +or not specified. + +
pagesizen
+power p +
The size of the page in bytes as a power of two. +This can be given as a decimal number which is a +power of two (1, 2, 4, 8, etc.) or as a power of two using +the power keyword. The maximum page size is +67108864 or power 26. The default +page size is power 26. + +
addressradixn +The radix in which numerical values are displayed. +The default radix is 2 (binary). You may prefer radix +8 (octal), 10 (decimal), or 16 (hexadecimal). +
+ +

Sample Configuration File

+

+The "memory.conf" configuration file looks like this: + +

+// memset  virt page #  physical page #  R (read from)  M (modified) inMemTime (ns) lastTouchTime (ns)
+memset 0 0 0 0 0 0      
+memset 1 1 0 0 0 0      
+memset 2 2 0 0 0 0      
+memset 3 3 0 0 0 0      
+memset 4 4 0 0 0 0      
+memset 5 5 0 0 0 0      
+memset 6 6 0 0 0 0      
+memset 7 7 0 0 0 0      
+memset 8 8 0 0 0 0      
+memset 9 9 0 0 0 0      
+memset 10 10 0 0 0 0            
+memset 11 11 0 0 0 0            
+memset 12 12 0 0 0 0            
+memset 13 13 0 0 0 0            
+memset 14 14 0 0 0 0            
+memset 15 15 0 0 0 0            
+memset 16 16 0 0 0 0            
+memset 17 17 0 0 0 0            
+memset 18 18 0 0 0 0            
+memset 19 19 0 0 0 0            
+memset 20 20 0 0 0 0            
+memset 21 21 0 0 0 0            
+memset 22 22 0 0 0 0            
+memset 23 23 0 0 0 0            
+memset 24 24 0 0 0 0            
+memset 25 25 0 0 0 0            
+memset 26 26 0 0 0 0            
+memset 27 27 0 0 0 0            
+memset 28 28 0 0 0 0            
+memset 29 29 0 0 0 0            
+memset 30 30 0 0 0 0            
+memset 31 31 0 0 0 0            
+
+// enable_logging 'true' or 'false'
+// When true specify a log_file or leave blank for stdout
+enable_logging true
+
+// log_file 
+// Where  is the name of the file you want output
+// to be print to.
+log_file tracefile
+
+// page size, defaults to 2^14 and cannot be greater than 2^26
+// pagesize  or <'power' num (base 2)>
+pagesize 16384
+
+// addressradix sets the radix in which numerical values are displayed
+// 2 is the default value
+// addressradix 
+addressradix 16
+
+// numpages sets the number of pages (physical and virtual)
+// 64 is the default value
+// numpages must be at least 2 and no more than 64
+// numpages 
+numpages 64
+
+
+ +

The Output File

+ +

+The output file contains a log of the operations +since the simulation started (or since the last reset). +It lists the command that was attempted and what happened +as a result. You can review this file after executing +the simulation. +

+The output file contains one line per operation +executed. The format of each line is: +

+command address ... status
+
+where: +
    +
  • command is READ or WRITE, +
  • address is a number corresponding to a virtual memory address, and +
  • status is okay or page fault. +
+ +

Sample Output

+The output "tracefile" looks something like this: + +
+READ 4 ... okay
+READ 13 ... okay
+WRITE 3acc32 ... okay
+READ 10000000 ... okay
+READ 10000000 ... okay
+WRITE c0001000 ... page fault
+WRITE 2aeea2ef ... okay
+
+ + +

Suggested Exercises

+ +
    +
  1. Create a command file that maps any 8 pages of physical memory to +the first 8 pages of virtual memory, and then reads from one virtual +memory address on each +of the 64 virtual pages. Step through +the simulator one operation at a time and see if you can predict +which virtual memory addresses cause page faults. What page replacement +algorithm is being used? +

    +
  2. Modify replacePage() in +PageFault.java to implement a round robin +page replacement algorithm +(i.e., first page fault +replaces page 0, next one replaces page 1, next one replaces page 2, +etc.). +

    +
  3. Modify replacePage() in +PageFault.java to implement a least recently used +(LRU) page replacement algorithm. +

    +
+ +

To Do

+
    +
  1. +The user guide should tell a little bit about how replacePage works, e.g. +what data structures it uses, what the arguments are, +how it operates, how it makes it choice known, etc. +Add a section of documentation on how to implement a new +page replacement algorithm. This should explain a little about +what changes are needed in the GUI, what to call the page replacement +class, what fields and methods it needs to provide, and what +other changes might be needed. +
+ +

Copyright

+ +© Copyright 2001, Prentice-Hall, Inc. +

+This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. +

+This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +

+You should have received a copy of the GNU General Public License +along with this program (see copying.txt); +if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +

+ +Please send suggestions, corrections, and comments to +Ray Ontko +(rayo@ontko.com). +

+Last updated: July 28, 2001 + + diff --git a/EOPSY/lab4/task4/work/user_guide_1.gif b/EOPSY/lab4/task4/work/user_guide_1.gif new file mode 100644 index 0000000000000000000000000000000000000000..1c34506ec24ed5c646b620674b1debb86a2b357a GIT binary patch literal 15914 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 Dz+?vo literal 0 HcmV?d00001

+This document provides instructions for the installation +of the MOSS Memory Management Simulator on + + +Unix + +operating systems. This procedure should be the same or similar on + + +Unix, Linux, Solaris, HP-UX and other Unix-compatible + +systems. +The MOSS software +is designed for use with +Andrew S. Tanenbaum, +Modern Operating Systems, 2nd Edition +(Prentice Hall, 2001). +The Memory Management Simulator was written by +Alex Reeder +(alexr@e-sa.org). +This installation guide was written by +Ray Ontko +(rayo@ontko.com). + +

+ * The page replacement algorithm included with the simulator is + * FIFO (first-in first-out). A while or for loop should be used + * to search through the current memory contents for a canidate + * replacement page. In the case of FIFO the while loop is used + * to find the proper page while making sure that virtPageNum is + * not exceeded. +[...] +\end{lstlisting} +\end{figure} +All pages are stored in memory in a queue. Oldest page (First that came in) is +in front of this queue. \\ When we need to replace the page we remove the page that +is first in queue (so the one that came in as a first one, first in, first out) +\cite{Page Replacement Algorithms} +\paragraph{Mapping} + + +\section{Finishing comments} +\begin{thebibliography}{9} +\bibitem{Page Replacement Algorithms} +\href{https://www.geeksforgeeks.org/page-replacement-algorithms-in-operating-systems/}{[Geeks +for Geeks page replacament algorithms]} +\end{thebibliography} +\end{document} diff --git a/EOPSY/lab4/task4/README b/EOPSY/lab4/task4/README new file mode 100644 index 00000000..818dd2da --- /dev/null +++ b/EOPSY/lab4/task4/README @@ -0,0 +1 @@ +Change directory to ./ftp and submit "make setup". diff --git a/EOPSY/lab4/task4/ftp/Makefile b/EOPSY/lab4/task4/ftp/Makefile new file mode 100644 index 00000000..59bad64c --- /dev/null +++ b/EOPSY/lab4/task4/ftp/Makefile @@ -0,0 +1,24 @@ + +default: info + + +help: + less README.tjk + +compile: + javac -nowarn *.java + +run: + java MemoryManagement commands memory.conf + +setup: + ./setUp + +info: + @echo "" + @echo "Use 'make' with one argument:" + @echo "" + @echo " make help" + @echo " make compile" + @echo " make run" + @echo "" diff --git a/EOPSY/lab4/task4/ftp/README.tjk b/EOPSY/lab4/task4/ftp/README.tjk new file mode 100644 index 00000000..e77b9a16 --- /dev/null +++ b/EOPSY/lab4/task4/ftp/README.tjk @@ -0,0 +1,45 @@ + + + WORKPLACE ORGANIZATION: +mkdir ../work +cd ../work +cp ../ftp/* . +gzip -d memory.tgz +tar -xvf memory.tar +rm memory.tar + + + READING: +more/less/vi/vim README.tjk +netscape/lynx/links install_unix.html +netscape/lynx/links user_guide.html + + + COMPILE: +javac -nowarn *.java + + + RUN: +java MemoryManagement commands memory.conf + + + FILES: +input file name: commands +initial content of the VM map: memory.conf +output file name: tracefile + + +--[ YOUR TASK ]------------------------------------------------------- + +Create a command file that maps any 8 pages of physical memory to the +first 8 pages of virtual memory, and then reads from one virtual memory +address on each of the 64 virtual pages. Step through the simulator one +operation at a time and see if you can predict which virtual memory +addresses cause page faults. What page replacement algorithm is being +used? + +Locate in the sources and describe to the instructor the page +replacement algorithm. + +---------------------------------------------------------------------- + diff --git a/EOPSY/lab4/task4/ftp/memory.tgz b/EOPSY/lab4/task4/ftp/memory.tgz new file mode 100644 index 0000000000000000000000000000000000000000..98483c9dea42ef800cafcee52b48aad60a59a544 GIT binary patch literal 87307 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 s@z%&63YWeI{QH3d79$BR(l_W?@&j$jTjxq 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