aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksa Vučković <aleksav013@gmail.com>2022-05-07 02:09:34 +0200
committerAleksa Vučković <aleksav013@gmail.com>2022-05-07 02:11:52 +0200
commitea8b982f67bcbf92fbf3be8f4da92908b6b788ce (patch)
tree34d3360aa876a199ff3d1cd1119e2b3526dd2ce7
parent18863123f1462be74a086472dc1545ef440d9214 (diff)
Komentarisanje koda (prvi deo)
-rw-r--r--kernel.pdfbin470517 -> 474447 bytes
-rw-r--r--kernel.tex71
2 files changed, 62 insertions, 9 deletions
diff --git a/kernel.pdf b/kernel.pdf
index 3b8e495..04dfe43 100644
--- a/kernel.pdf
+++ b/kernel.pdf
Binary files differ
diff --git a/kernel.tex b/kernel.tex
index dfbe1b7..214ac13 100644
--- a/kernel.tex
+++ b/kernel.tex
@@ -93,7 +93,7 @@
\vfill
\begin{center}
-{\imen Beograd, jun 2021.}
+{\imen Beograd, jun 2022.}
\end{center}
\clearpage
@@ -403,9 +403,9 @@ strane {\eng bootloader}-a i da mu bilo predato dalje upravljanje.
disku, kreiran kao rezultat kompajlovanja i linkovanja. {\eng ELF} fajl je
podeljen na odeljke. Za program koji mozhe da se izvrshi, postoje sledec1i
odeljci: odeljak sa tekstom za kod, odeljak sa podacima za globalne promenljive
-i odeljak "Rodata" koji obično sadrži konstantne niske ({\eng Read only data}).
-{\eng ELF} fajl sadrzhi zaglavlja koja opisuju kako ovi odeljci treba da budu
-uskladishteni u memoriji.\\
+i odeljak {\eng ".rodata" (read only data)} koji obichno sadrzhi konstantne
+niske. {\eng ELF} fajl sadrzhi zaglavlja koja opisuju kako ovi odeljci treba
+da budu uskladishteni u memoriji.\\
Ovaj format definisan je u {\eng System V ABI} ({\eng System V Application
Binary Interface}) koji je set specifikacija koji definishe pozivanje funkcija,
@@ -616,7 +616,7 @@ koji sadrzhi sve stho je neophodno za uspeshno podizanje sistema.
{\eng\url{https://www.sourceware.org/gdb/}}
{\eng GDB} je {\eng GNU}-ov {\eng debugger} koji sluzhi za pronalazhenje
-greshaka u kodu, kao i aktivno prac1enje izvrshavanja programa (u ovom slucaju
+greshaka u kodu, kao i aktivno prac1enje izvrshavanja programa (u ovom sluchaju
jezgra). Uz pomoc1 ovog programa ustanovljeno je shta svako dugme na tastaturi
vrac1a nakon pritiska shto je znachajno ubzalo proces mapiranja tastature.
@@ -842,12 +842,12 @@ Funkcija koja ispisuje niz karaktera na ekran.
\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/02.vga/vga11.c}\srb\end{minipage}\smallskip
-Funcija koja ispisuje celobrojnu vrednost na ekran tako shto je prvo pretvori u
+Funkcija koja ispisuje celobrojnu vrednost na ekran tako shto je prvo pretvori u
niz karaktera a zatim iskoristi prethodnu funkciju.
\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/02.vga/vga12.c}\srb\end{minipage}\smallskip
-Funcija koja ispisuje realnu vrednost na ekran tako shto je prvo pretvori u niz
+Funkcija koja ispisuje realnu vrednost na ekran tako shto je prvo pretvori u niz
karaktera a zatim iskoristi funkciju za ispis niza karaktera.
\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/02.vga/vga13.c}\srb\end{minipage}\smallskip
@@ -861,10 +861,22 @@ brojache kolone i reda na pochetnu poziciju.
\section{{\eng Global Desctiptor Table}}
\medskip
+Globalna tabela deskriptora je struktura u kojoj se chuvaju informacije o
+segmentima memorije.
+
{\eng include/source/gdt.h}:
+Koristimo {\eng \#ifndef} i {\eng \#define} direktive da bi se osigurali da se
+ovaj fajl ukljuchuje ({\eng include}-uje) samo jednom u toku celog rada
+operativnog sistema. Ove direktive deluju kao osigurach koji preskache sve
+deklaracije ukoliko su one vec1 definisane pod tim imenom.
+
\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/03.gdt/gdt1.h}\srb\end{minipage}\smallskip
+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,...}
+
\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/03.gdt/gdt2.h}\srb\end{minipage}\smallskip
Format u kom rachunar prihvata unos pojedinachnih definicija segmenata.
@@ -874,30 +886,51 @@ unutar strukture, vec1 c1e se "pakovati" jedna do druge u memoriji.
\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/03.gdt/gdt3.h}\srb\end{minipage}\smallskip
-Format koji rachunar prihvata za tabelu svih definicija segmenata.
+Format koji rachunar prihvata za tabelu svih definicija segmenata memorije.
\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/03.gdt/gdt4.h}\srb\end{minipage}\smallskip
+Funkcije koje su definisane u {\eng c/gdt.c}, a tichu se inicijalizacije
+globalne tabele deskriptora.
+
\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/03.gdt/gdt5.h}\srb\end{minipage}\smallskip
+Direktiva za zatvaranje koja se nalazi na kraju fajla i kojom se zavrshava
+segment koda predvidjen za deklaracije.
+
\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/03.gdt/gdt6.h}\srb\end{minipage}\smallskip
-{\eng c/gdt.c}:
+{\eng c/gdt.c}:\\
+
+U {\eng source/} folderu se nalaze prototipi za funkcije istoimenog {\eng C}
+izvornog fajla.
\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/03.gdt/gdt1.c}\srb\end{minipage}\smallskip
+Funkcija napisana u {\eng Assembler}-u koja uchitava tabelu deskriptora u
+predvidjeni registar.
+
\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/03.gdt/gdt2.c}\srb\end{minipage}\smallskip
+Tabela segmenata i pokazivach na nju koji se prosledjuje prethodno pomenutoj
+funkciji.
+
\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/03.gdt/gdt3.c}\srb\end{minipage}\smallskip
+Funkcija koja na osnovu parameta inicijalizuje jedan globalni segment memorije.
+
\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/03.gdt/gdt4.c}\srb\end{minipage}\smallskip
+Glavna funkcija koja postavlja velichinu pokazivacha koji se prosledjuje,
\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/03.gdt/gdt5.c}\srb\end{minipage}\smallskip
+inicijalizuje sve segmente memorije koji c1e se koristiti,
\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/03.gdt/gdt6.c}\srb\end{minipage}\smallskip
+kao i poziva fukciju kojoj prosledjuje pokazivach na globalnu tabelu segmenata
+memorije.
\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/03.gdt/gdt7.c}\srb\end{minipage}\smallskip
@@ -907,6 +940,15 @@ Format koji rachunar prihvata za tabelu svih definicija segmenata.
\section{{\eng Interrupt Desctiptor Table}}
\medskip
+Globalna tabela prekida je struktura koja nam govori koja funkcija zapravo
+reaguje kada procesor dobije zahtev za prekid ({\eng Interrupt request}). Tada
+procesor pauzira ono shto trenutno radi i predaje upravljenje odredjenoj funkciji.\\
+
+Funkcija je duzhna da dojavi procesoru da je c1e ona preuzeti ({\eng
+handle}-ovati) taj prekid i ukoliko je prekid fatalan (deljenje nulom, {\eng
+triple fault},...) fukcija ima zadatak da ukloni novonastali problem i obezbedi
+operativnom sistemu oporavak od greshke.
+
{\eng include/source/idt.h}:
\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/04.idt/idt1.h}\srb\end{minipage}\smallskip
@@ -919,8 +961,13 @@ Format koji rachunar prihvata za tabelu svih definicija segmenata.
\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.
+
\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/04.idt/idt6.h}\srb\end{minipage}\smallskip
+Pokazivach na tabelu prekida koja se prosledjuje funkciji napisanoj u {\eng
+Assembler}-u koja uchitava tabelu prekida u odgovarajuc1i registar.
+
\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/04.idt/idt7.h}\srb\end{minipage}\smallskip
\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/04.idt/idt8.h}\srb\end{minipage}\smallskip
@@ -935,8 +982,14 @@ Format koji rachunar prihvata za tabelu svih definicija segmenata.
\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/05.irq/idt1.c}\srb\end{minipage}\smallskip
+Asemblerska fukcija koja uchitava pokazivach na tabelu prekida u
+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
+funkciji.
+
\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/05.irq/idt3.c}\srb\end{minipage}\smallskip
\medskip\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/05.irq/idt4.c}\srb\end{minipage}\smallskip