From 013366f9eea59bb1b2ee1985580f37a32c20ee76 Mon Sep 17 00:00:00 2001 From: Aleksa Vučković Date: Sat, 28 May 2022 00:27:42 +0200 Subject: makefile & komentarisanje koda (treci deo) --- Makefile | 1 - include/00.build/AS_Makefile | 6 ++ include/00.build/C_Makefile | 8 ++ include/setup.sh | 4 +- kernel.bib | 40 ++++---- kernel.pdf | Bin 484484 -> 500134 bytes kernel.tex | 234 ++++++++++++++++++++++++++++--------------- 7 files changed, 192 insertions(+), 101 deletions(-) create mode 100644 include/00.build/AS_Makefile create mode 100644 include/00.build/C_Makefile diff --git a/Makefile b/Makefile index f1fa7f3..54ffefa 100644 --- a/Makefile +++ b/Makefile @@ -4,7 +4,6 @@ BIB_FILE=$(NAME).bib PDF_FILE=$(NAME).pdf .PHONY: all clean - all: $(PDF_FILE) $(PDF_FILE): $(TEX_FILE) $(BIB_FILE) diff --git a/include/00.build/AS_Makefile b/include/00.build/AS_Makefile new file mode 100644 index 0000000..c8919d7 --- /dev/null +++ b/include/00.build/AS_Makefile @@ -0,0 +1,6 @@ +.PHONY: all + +all: $(AS_OBJECTS) + +$(AS_OBJECT_DIR)/%.o: %.s Makefile + $(AS) $< -o $@ diff --git a/include/00.build/C_Makefile b/include/00.build/C_Makefile new file mode 100644 index 0000000..b8fe609 --- /dev/null +++ b/include/00.build/C_Makefile @@ -0,0 +1,8 @@ +.PHONY: all + +all: $(C_OBJECTS) + +$(C_OBJECT_DIR)/%.o: %.c Makefile + $(CC) $(CFLAGS) -MD -MP -c $< -o $@ + +-include $(C_OBJECTS:.o=.d) diff --git a/include/setup.sh b/include/setup.sh index d3227df..86645fd 100755 --- a/include/setup.sh +++ b/include/setup.sh @@ -5,7 +5,9 @@ rm -rf "00.build" "01.pocetak" "02.vga" "03.gdt" "04.idt" "05.irq" "06.keyboard" mkdir "00.build" "01.pocetak" "02.vga" "03.gdt" "04.idt" "05.irq" "06.keyboard" "07.pit" "08.heap" "09.paging" "10.libc" cp ../../aleksa-toolchain/setup.sh 00.build -cp ../../mykernel/Makefile ./00.build +cp ../../mykernel/Makefile ./00.build/Makefile +cp ../../mykernel/src/as/Makefile ./00.build/AS_Makefile +cp ../../mykernel/src/c/Makefile ./00.build/C_Makefile cp ../../mykernel/src/as/boot.s ./01.pocetak cd 01.pocetak || exit diff --git a/kernel.bib b/kernel.bib index e276e58..cbbf12b 100644 --- a/kernel.bib +++ b/kernel.bib @@ -21,8 +21,8 @@ series = {}, edition = {1}, volume = {}, - url = {http://gen.lib.rus.ec/book/index.php?md5=529078edeb67e6ca26edc683ad3f6a51} } + url = {http://gen.lib.rus.ec/book/index.php?md5=529078edeb67e6ca26edc683ad3f6a51} @book{book:2759472, title = {Assemblers and loaders}, author = {Salomon, David}, @@ -32,8 +32,8 @@ series = {Ellis Horwood series in computers and their applications}, edition = {}, volume = {}, - url = {http://gen.lib.rus.ec/book/index.php?md5=A5065F7D488058B77DD8FBF85DF7490F} } + url = {http://gen.lib.rus.ec/book/index.php?md5=A5065F7D488058B77DD8FBF85DF7490F} @book{book:1309309, title = {Compilers - Principles, Techniques, and Tools}, author = {Alfred V. Aho and Monica S. Lam and Ravi Sethi and Jeffrey D. Ullman}, @@ -43,8 +43,8 @@ series = {}, edition = {2}, volume = {}, - url = {http://gen.lib.rus.ec/book/index.php?md5=90db32d070cfb70ca617e655d5c35529} } + url = {http://gen.lib.rus.ec/book/index.php?md5=90db32d070cfb70ca617e655d5c35529} @book{book:917849, title = {Computer Architecture, Fifth Edition: A Quantitative Approach}, author = {John L. Hennessy and David A. Patterson}, @@ -54,8 +54,8 @@ series = {The Morgan Kaufmann Series in Computer Architecture and Design}, edition = {5}, volume = {}, - url = {http://gen.lib.rus.ec/book/index.php?md5=041f6d8fb8e6b6d1ed26a824775b5a0d} } + url = {http://gen.lib.rus.ec/book/index.php?md5=041f6d8fb8e6b6d1ed26a824775b5a0d} @book{book:2535395, title = {Computer Systems: A Programmer's Perspective}, author = {Bryant Randal E. and O'Hallaron David Richard}, @@ -65,8 +65,8 @@ series = {}, edition = {2}, volume = {}, - url = {http://gen.lib.rus.ec/book/index.php?md5=3E84B730EC874FFDB1A069FF482D112C} } + url = {http://gen.lib.rus.ec/book/index.php?md5=3E84B730EC874FFDB1A069FF482D112C} @book{book:915673, title = {Structured Computer Organization}, author = {Andrew S. Tanenbaum and Todd Austin}, @@ -76,8 +76,8 @@ series = {}, edition = {6}, volume = {}, - url = {http://gen.lib.rus.ec/book/index.php?md5=f6fc02a547e862360e743754fc06375b} } + url = {http://gen.lib.rus.ec/book/index.php?md5=f6fc02a547e862360e743754fc06375b} @book{book:2560474, title = {USB: The Universal Serial Bus (FYSOS: Operating System Design Book 8)}, author = {Benjamin Lunt}, @@ -87,8 +87,8 @@ series = {}, edition = {}, volume = {}, - url = {http://gen.lib.rus.ec/book/index.php?md5=D4A70ECFDC3F4EB7DC62723D7BCB222C} } + url = {http://gen.lib.rus.ec/book/index.php?md5=D4A70ECFDC3F4EB7DC62723D7BCB222C} @book{book:821745, title = {Modern Operating Systems}, author = {Andrew S. Tanenbaum}, @@ -98,8 +98,8 @@ series = {}, edition = {3}, volume = {}, - url = {http://gen.lib.rus.ec/book/index.php?md5=ac8cd7d4fd0467e923a0c04b7a939f84} } + url = {http://gen.lib.rus.ec/book/index.php?md5=ac8cd7d4fd0467e923a0c04b7a939f84} @book{book:924556, title = {Operating system concepts}, author = {Abraham Silberschatz and Peter B Galvin and Greg Gagne }, @@ -109,8 +109,8 @@ series = {}, edition = {9}, volume = {}, - url = {http://gen.lib.rus.ec/book/index.php?md5=be3559401fec4b4ba93cc8e2f2e05601} } + url = {http://gen.lib.rus.ec/book/index.php?md5=be3559401fec4b4ba93cc8e2f2e05601} @book{book:748936, title = {Operating systems: internals and design principles}, author = {William Stallings}, @@ -120,8 +120,8 @@ series = {}, edition = {7}, volume = {}, - url = {http://gen.lib.rus.ec/book/index.php?md5=6990c44cecea007aa328a9a86c3027d1} } + url = {http://gen.lib.rus.ec/book/index.php?md5=6990c44cecea007aa328a9a86c3027d1} @book{book:2398655, title = {Operating Systems: Three Easy Pieces}, author = {Remzi H. Arpaci-Dusseau and Andrea C Arpaci-Dusseau}, @@ -131,8 +131,8 @@ series = {}, edition = {Paperback}, volume = {}, - url = {http://gen.lib.rus.ec/book/index.php?md5=aa2c64b8cee2819de114afdebd113e7a} } + url = {http://gen.lib.rus.ec/book/index.php?md5=aa2c64b8cee2819de114afdebd113e7a} book{book:658757, title = {Mmurtl V1.0}, author = {Richard A. Burgess}, @@ -142,8 +142,8 @@ book{book:658757, series = {}, edition = {}, volume = {}, - url = {http://gen.lib.rus.ec/book/index.php?md5=eb2ae29c03308f4f95a57a2a1dadab22} } + url = {http://gen.lib.rus.ec/book/index.php?md5=eb2ae29c03308f4f95a57a2a1dadab22} @book{book:1400099, title = {Operating Systems: Design and Implementation}, author = {Andrew S. Tanenbaum and Albert S. Woodhull}, @@ -153,8 +153,8 @@ book{book:658757, series = {}, edition = {3}, volume = {}, - url = {http://gen.lib.rus.ec/book/index.php?md5=fdafa32272838b3eff5583d668e3192b} } + url = {http://gen.lib.rus.ec/book/index.php?md5=fdafa32272838b3eff5583d668e3192b} @book{book:1310096, title = {The Design and Implementation of the FreeBSD Operating System}, author = {Marshall Kirk McKusick and George V. Neville-Neil and Robert N.M. Watson}, @@ -164,8 +164,8 @@ book{book:658757, series = {}, edition = {2}, volume = {}, - url = {http://gen.lib.rus.ec/book/index.php?md5=bc62cc0f2ad546d5a7b2d2c610ee14ae} } + url = {http://gen.lib.rus.ec/book/index.php?md5=bc62cc0f2ad546d5a7b2d2c610ee14ae} @book{book:441007, title = {C: A Reference Manual}, author = {Samuel P. Harbison and Guy L. Steele}, @@ -175,8 +175,8 @@ book{book:658757, series = {}, edition = {5}, volume = {}, - url = {http://gen.lib.rus.ec/book/index.php?md5=fe81d808c24e1a0c0d479520db57cd86} } + url = {http://gen.lib.rus.ec/book/index.php?md5=fe81d808c24e1a0c0d479520db57cd86} @book{book:690930, title = {C Programming Language}, author = {Brian W. Kernighan and Dennis M. Ritchie}, @@ -186,8 +186,8 @@ book{book:658757, series = {}, edition = {2}, volume = {}, - url = {http://gen.lib.rus.ec/book/index.php?md5=5013a19e2b20b82d104bae34ac7e5320} } + url = {http://gen.lib.rus.ec/book/index.php?md5=5013a19e2b20b82d104bae34ac7e5320} @book{book:2751214, title = {Learning the bash shell}, author = {Rosenblatt, Bill and Newham, Cameron}, @@ -197,8 +197,8 @@ book{book:658757, series = {Nutshell handbook}, edition = {3}, volume = {}, - url = {http://gen.lib.rus.ec/book/index.php?md5=F0B2387CFA911873144412D2DF51E16C} } + url = {http://gen.lib.rus.ec/book/index.php?md5=F0B2387CFA911873144412D2DF51E16C} @book{book:78583, title = {Learning the Vi and Vim Editors}, author = {Arnold Robbins and Elbert Hannah and Linda Lamb}, @@ -208,8 +208,8 @@ book{book:658757, series = {}, edition = {7}, volume = {}, - url = {http://gen.lib.rus.ec/book/index.php?md5=bc6fb75f968bcc39e4446c29bf04d2d1} } + url = {http://gen.lib.rus.ec/book/index.php?md5=bc6fb75f968bcc39e4446c29bf04d2d1} @book{book:78575, title = {Managing Projects with GNU Make}, author = {Robert Mecklenburg}, @@ -219,8 +219,8 @@ book{book:658757, series = {Nutshell Handbooks}, edition = {3}, volume = {}, - url = {http://gen.lib.rus.ec/book/index.php?md5=6754a2b1ac7071ea1ccedc05801f5424} } + url = {http://gen.lib.rus.ec/book/index.php?md5=6754a2b1ac7071ea1ccedc05801f5424} @book{book:1505234, title = {Advanced Programming in the UNIX Environment}, author = {Rago, Stephen A. and Stevens, W. Richard}, @@ -230,5 +230,5 @@ book{book:658757, series = {Addison-Wesley professional computing series}, edition = {3}, volume = {}, - url = {http://gen.lib.rus.ec/book/index.php?md5=8f4dd448cc992b8ab4a38dd056b09478} } + url = {http://gen.lib.rus.ec/book/index.php?md5=8f4dd448cc992b8ab4a38dd056b09478} diff --git a/kernel.pdf b/kernel.pdf index e3cf969..3ef1dbe 100644 Binary files a/kernel.pdf and b/kernel.pdf differ diff --git a/kernel.tex b/kernel.tex index 5dc70e1..818339f 100644 --- a/kernel.tex +++ b/kernel.tex @@ -779,7 +779,7 @@ korish\/c1enjem {\eng GCC} kompajlera na {\eng host} sistemu, kompajluje se poseban {\eng GCC} kompajler koji sluzhi za kompajlovanje izvornog koda namenjenog jezgru ovog operativnog sistema. Nakon toga on se instalira na put {\eng /opt/aleksa/usr/bin/}, gde se nalazi novi {\eng \$SYSROOT} koji -koristi {\eng Makefile}. +koristi {\eng Makefile} za izgradnju jezgra. \section{{\eng Makefile}} \medskip @@ -788,9 +788,24 @@ koristi {\eng Makefile}. terminalu. Svaki {\eng Makefile} sadrzhi neki set pravila koji definishe proces koji se pokrec1e ukucavanjem komande {\eng make $<$ime\_pravila$>$}. U tekstu koji sledi mozhe se videti koji je to set pravila koje su definisani za ovaj -projekat. +projekat.\\ -\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=make,linerange={70-200}]{include/00.build/Makefile}\srb\end{minipage}\smallskip +{\eng Makefile}: + +\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=make,linerange={68-104}]{include/00.build/Makefile}\srb\end{minipage}\smallskip + +\newpage + +Osim navedenog seta pravila, u {\eng Makefile}-u mozhemo definisati neke +promenljive koje bi nam omoguc1ile krac1i zapis, izbegavanje ponavljanja +konstanti, kao i znachajno lakshe menjanje istih. One funkcionishu na slichan +nachin kao i pretprocesorske direktive u {\eng C}-u. Primetimo da ispred nekih +linija u kojima dodeljujemo vrednosti promenljivima imamo i kljuchnu rech {\eng +export}. To znachi da c1e se vrednost date promenljive, preneti i u rekurzivni +poziv {\eng Makefile}-a. + +\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=make,linerange={0-22}]{include/00.build/Makefile}\srb\end{minipage} +\begin{minipage}{\textwidth}\eng\lstinputlisting[language=make,linerange={25-40}]{include/00.build/Makefile}\srb\end{minipage}\smallskip Mozhemo videti da je ovo kompleksnija forma {\eng Makefile}-a jer sadrzhi proces rekurzivnog pozivanja {\eng \$(MAKE)} komande. To znachi da ovaj @@ -800,12 +815,27 @@ Konkretno kod ovog jezgra postoje josh dva {\eng Makefile}-a, a tichu se koda napisanog u {\eng C}-u, kao i koda napisanog u {\eng GNU Assembler}-u za {\eng X86} arhitekturu.\\ +{\eng src/as/Makefile}: + +\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=make]{include/00.build/AS_Makefile}\srb\end{minipage}\smallskip + +{\eng src/c/Makefile}: + +\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=make]{include/00.build/C_Makefile}\srb\end{minipage}\smallskip + Na taj nachin bi sa lakoc1om projekat mogao biti proshiren na vishe razlichitih -arhitektura procesora shto je i autorov plan u buduc1nosti. Biblioteke, +arhitektura procesora, shto je i autorov plan u buduc1nosti. Biblioteke, interaktivni {\eng shell}, kao i drajver za tastaturu napisan za ovo jezgo se ne bi menjali, dok bi zbog specifichnosti druge arhitekture bile promenjene komponente zaduzhene za pochetnu inicijalizaciju i kontolisanje hardvera na -najnizhem nivou. +najnizhem nivou.\\ + +Za svaki projekat moguc1e je automatizovati deo posla kreiranjem {\eng +Makefile}, pa tako na primer i ovaj maturski rad koji je iskucan u {\eng +LaTeX}-u ima svoj {\eng Makefile}: + +\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=make]{Makefile}\srb\end{minipage}\smallskip + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -954,7 +984,8 @@ deklaracije ukoliko su one vec1 definisane pod tim imenom. Autor je kreirao biblioteku {\eng types.h} da bi od\/jednom dodao sve kompajlerske biblioteke koje definishu vrste promenljivih kao shto su {\eng int, uint16\_t, bool,...}, kao i konstante kao shto su {\eng true, false, -UINT16\_MAX...}. +UINT16\_MAX...}. Na taj nachin u jednom redu se dodaju sve biblioteke zaduzhene +za to, dok se chitljivost rada povec1ava. \medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/03.gdt/gdt2.h}\srb\end{minipage}\smallskip @@ -1029,16 +1060,26 @@ handle}-ovati) taj prekid i ukoliko je prekid fatalan (deljenje nulom, {\eng triple fault},...) funkcija ima zadatak da ukloni novonastali problem i obezbedi operativnom sistemu oporavak od greshke.\\ -{\eng include/source/idt.h}: +{\eng include/source/idt.h}:\\ + +Direktive koje se dalje ponavljaju u svakom {\eng header} fajlu. Dalje +pozivanje direktiva c1e biti izostavljeno, radi sushtine. \medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/04.idt/idt1.h}\srb\end{minipage}\smallskip -\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/04.idt/idt2.h}\srb\end{minipage}\smallskip +%\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/04.idt/idt2.h}\srb\end{minipage}\smallskip + +Konstanta koju dalje koristimo pri definisanju prekida. \medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/04.idt/idt3.h}\srb\end{minipage}\smallskip +Segmenti u memoriji o kojima je u proshloj sekciji bilo rechi. + \medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/04.idt/idt4.h}\srb\end{minipage}\smallskip +Konstante koje chuvaju vrednosti adresa preko kojih dalje komuniciramo sa {\eng +PIC (Programmable Interrupt Controller)}-om. + \medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/04.idt/idt5.h}\srb\end{minipage}\smallskip Struktura u kojoj rachunar prihvata globalnu tabelu prekida. @@ -1050,15 +1091,20 @@ Assembler}-u}, a koja uchitava tabelu prekida u odgovarajuc1i registar. \medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/04.idt/idt7.h}\srb\end{minipage}\smallskip +Prototipi funkcija koji su korishc1eni u sledec1em poglavlju. + \medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/04.idt/idt8.h}\srb\end{minipage}\smallskip +Direktive koje se dalje ponavljaju u svakom {\eng header} fajlu. Dalje +pozivanje direktiva c1e biti izostavljeno, radi sushtine. + \medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/04.idt/idt9.h}\srb\end{minipage}\smallskip %{\eng\url{https://wiki.osdev.org/IDT}} \section{{\eng IRQ} i {\eng PIC}} \medskip -{\eng c/idt.c}: +{\eng c/idt.c}:\\ \medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/05.irq/idt1.c}\srb\end{minipage}\smallskip @@ -1067,21 +1113,38 @@ predvidjeni registar. \medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/05.irq/idt2.c}\srb\end{minipage}\smallskip -Tabela segmenata i pokazivach na nju koji se prosledjuje prethodno pomenutoj +Tabela prekida i pokazivach na nju koji se prosledjuje prethodno pomenutoj funkciji. \medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/05.irq/idt3.c}\srb\end{minipage}\smallskip +Funkcija koja na osnovu pruzhenih parametara definishe prekid u tabeli. + \medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/05.irq/idt4.c}\srb\end{minipage}\smallskip +Funkcija koja dodaje prekid na tabeli u niz koji sadrzhi sve prekide. + \medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/05.irq/idt5.c}\srb\end{minipage}\smallskip +Funkcija koja inicijalizuje kontroler prekida. To je jedan od najbitnijih +chipova koji definishe {\eng X86} arhitekturu. Bez njega ova arhitektura ne bi +bila vodjena principima prekida. + \medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/05.irq/idt6.c}\srb\end{minipage}\smallskip +Funkcija koja definishe sve prekide koje c1emo koristiti uz pomoc1 prethodno +pomenutih funkcija. + \medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C,linerange={1-6,34-37}]{include/05.irq/idt7.c}\srb\end{minipage}\smallskip +Ova funkcija sve podatke o prekidima, skladishtenim u niz, prosledjuje posebno +formiranoj strukturi pokazivacha na tabelu prekida, + \medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/05.irq/idt8.c}\srb\end{minipage}\smallskip +koji se zatim prosledjuje asemblerskoj funkciji koja uchitava tu tabelu +prekida. + \medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/05.irq/idt9.c}\srb\end{minipage}\smallskip @@ -1091,15 +1154,22 @@ funkciji. \section{Tastatura} \medskip -{\eng c/keyboard.c}: +{\eng c/keyboard.c}:\\ -\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/06.keyboard/keyboard1.c}\srb\end{minipage}\smallskip +Korish\/c1ene biblioteke: -\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/06.keyboard/keyboard2.c}\srb\end{minipage}\smallskip +\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/06.keyboard/keyboard1.c}\srb\end{minipage}\smallskip Bafer koji chuva prethodno pozvane funkcije radi implementacije istorije komanda, kao i brojach bafera na trenutnu komandu. +\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/06.keyboard/keyboard2.c}\srb\end{minipage}\smallskip + +Tabela koja prevodi kodove koje vrac1a prekid u karaktere koje funkcija +ispisuje. Takodje, chuva se i informacija da li je dati karakter trenutno +pritisnut shto nam mozhe posluzhiti prilikom mapiranja pritiska vishe karaktera +odjednom. + \medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/06.keyboard/keyboard3.c}\srb\end{minipage}\smallskip Funkcija za inicijalizaciju tastature. Ova funkcija postavlja jezik tastature i @@ -1124,47 +1194,81 @@ Takodje funkcija azhurira bafer koji chuva do sada pozivane komande. \medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/06.keyboard/keyboard7.c}\srb\end{minipage}\smallskip Funkcija koja definishe ponashanje jezgra nakon pritiska {\eng enter} dugmeta -na tastaturi. +na tastaturi. Primetimo da se izvrshava komanda koja je u tom trenutku u +baferu, a nakon toga se dati bafer chuva u istoriji bafera. \medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/06.keyboard/keyboard8.c}\srb\end{minipage}\smallskip +Funkcija koja odredjuje ponashanje jezgra nakon pritiska {\eng space} dugmeta +na tastaturi. + \medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/06.keyboard/keyboard9.c}\srb\end{minipage}\smallskip +Funkcija koja odredjuje ponashanje jezgra nakon pritiska dugmeta sa strelicom +okrenutom ka gore, na tastaturi. + \medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/06.keyboard/keyboard10.c}\srb\end{minipage}\smallskip +Funkcija koja odredjuje ponashanje jezgra nakon pritiska dugmeta sa strelicom +okrenutom ka dole, na tastaturi. + \medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/06.keyboard/keyboard11.c}\srb\end{minipage}\smallskip -%\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/06.keyboard/keyboard12.c}\srb\end{minipage}\smallskip +Funkcija koja je postavljena u tabeli prekida da odgovori na prekide koji se +tichu tastature. +%\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/06.keyboard/keyboard12.c}\srb\end{minipage}\smallskip %\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/06.keyboard/keyboard13.c}\srb\end{minipage}\smallskip \medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/06.keyboard/keyboard14.c}\srb\end{minipage}\smallskip -\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/06.keyboard/keyboard15.c}\srb\end{minipage}\smallskip +Ona uzima kod koji vrac1a prekid i pretvara ga u karakter ili izvrshava neku od +prethodno navedenih funkcija u zavisnosti od toga koji karakter je pritisnut na +tastaturi. -\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/06.keyboard/keyboard16.c}\srb\end{minipage}\smallskip +\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/06.keyboard/keyboard15.c}\srb\end{minipage} +\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/06.keyboard/keyboard16.c}\srb\end{minipage}\smallskip + +Ovde se mozhe videti kako se na primer neka kombinacija karaktera mozhe +iskoristiti za definisanje prechica na tastaturi. \medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/06.keyboard/keyboard17.c}\srb\end{minipage}\smallskip + + \medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/06.keyboard/keyboard18.c}\srb\end{minipage}\smallskip \section{{\eng PIT - Programmable Interval Timer}} \medskip -{\eng c/timer.c}: +{\eng c/timer.c}:\\ + + \medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/07.pit/timer1.c}\srb\end{minipage}\smallskip + + \medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/07.pit/timer2.c}\srb\end{minipage}\smallskip + + \medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/07.pit/timer3.c}\srb\end{minipage}\smallskip + + \medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/07.pit/timer4.c}\srb\end{minipage}\smallskip + + \medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/07.pit/timer5.c}\srb\end{minipage}\smallskip + + \medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/07.pit/timer6.c}\srb\end{minipage}\smallskip + + \medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/07.pit/timer7.c}\srb\end{minipage}\smallskip %{\eng\url{https://wiki.osdev.org/PIT}} @@ -1178,73 +1282,45 @@ nam sluzhi da bismo dinamichki alocirali memoriju, tj. da bismo mogli da koristimo globalne promenljive, kao i promenljive chiji zhivotni vek mora biti dugotrajniji od funkcije u kojoj je ta promenljiva nastala.\\ -{\eng c/heap.c}: - - -\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap1.c}\srb\end{minipage}\smallskip - -\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap2.c}\srb\end{minipage}\smallskip - -\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap3.c}\srb\end{minipage}\smallskip - -\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap4.c}\srb\end{minipage}\smallskip - -\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap5.c}\srb\end{minipage}\smallskip - -\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap6.c}\srb\end{minipage}\smallskip - -\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap7.c}\srb\end{minipage}\smallskip - -\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap8.c}\srb\end{minipage}\smallskip - -\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap9.c}\srb\end{minipage}\smallskip - -\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap10.c}\srb\end{minipage}\smallskip - -\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap11.c}\srb\end{minipage}\smallskip - -\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap12.c}\srb\end{minipage}\smallskip - -\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap13.c}\srb\end{minipage}\smallskip - -\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap14.c}\srb\end{minipage}\smallskip - -\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap15.c}\srb\end{minipage}\smallskip - -\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap16.c}\srb\end{minipage}\smallskip - -\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap17.c}\srb\end{minipage}\smallskip - -\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap18.c}\srb\end{minipage}\smallskip - -\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap19.c}\srb\end{minipage}\smallskip - -\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap20.c}\srb\end{minipage}\smallskip - -\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap21.c}\srb\end{minipage}\smallskip - -\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap22.c}\srb\end{minipage}\smallskip - -\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap23.c}\srb\end{minipage}\smallskip - -\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap24.c}\srb\end{minipage}\smallskip - -\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap25.c}\srb\end{minipage}\smallskip - -\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap26.c}\srb\end{minipage}\smallskip - -\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap27.c}\srb\end{minipage}\smallskip - -\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap28.c}\srb\end{minipage}\smallskip - -\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap29.c}\srb\end{minipage}\smallskip +{\eng c/heap.c}:\\ + + +\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap1.c}\srb\end{minipage} +\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap2.c}\srb\end{minipage} +\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap3.c}\srb\end{minipage} +\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap4.c}\srb\end{minipage} +\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap5.c}\srb\end{minipage} +\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap6.c}\srb\end{minipage} +\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap7.c}\srb\end{minipage} +\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap8.c}\srb\end{minipage} +\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap9.c}\srb\end{minipage} +\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap10.c}\srb\end{minipage} +\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap11.c}\srb\end{minipage} +\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap12.c}\srb\end{minipage} +\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap13.c}\srb\end{minipage} +\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap14.c}\srb\end{minipage} +\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap15.c}\srb\end{minipage} +\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap16.c}\srb\end{minipage} +\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap17.c}\srb\end{minipage} +\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap18.c}\srb\end{minipage} +\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap19.c}\srb\end{minipage} +\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap20.c}\srb\end{minipage} +\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap21.c}\srb\end{minipage} +\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap22.c}\srb\end{minipage} +\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap23.c}\srb\end{minipage} +\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap24.c}\srb\end{minipage} +\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap25.c}\srb\end{minipage} +\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap26.c}\srb\end{minipage} +\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap27.c}\srb\end{minipage} +\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap28.c}\srb\end{minipage} +\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap29.c}\srb\end{minipage} %{\eng\url{https://wiki.osdev.org/Heap}} \section{{\eng Paging}} \medskip -{\eng c/paging.c}: +{\eng c/paging.c}:\\ \medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/09.paging/paging1.c}\srb\end{minipage}\smallskip -- cgit v1.2.3