aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile1
-rw-r--r--include/00.build/AS_Makefile6
-rw-r--r--include/00.build/C_Makefile8
-rwxr-xr-xinclude/setup.sh4
-rw-r--r--kernel.bib40
-rw-r--r--kernel.pdfbin484484 -> 500134 bytes
-rw-r--r--kernel.tex234
7 files changed, 192 insertions, 101 deletions
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
--- a/kernel.pdf
+++ b/kernel.pdf
Binary files 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