diff options
| author | Aleksa Vučković <aleksav013@gmail.com> | 2021-12-31 14:59:29 +0100 |
|---|---|---|
| committer | Aleksa Vučković <aleksav013@gmail.com> | 2021-12-31 14:59:29 +0100 |
| commit | c0afee36ea5b3cc7e613ee4021b9a91a3c6f39a4 (patch) | |
| tree | 94baaec412816b4ce1a2d38b57c6f5a5985a0590 | |
| parent | 96c4c6a5bbadc9609896e586c43d6853ae91f26e (diff) | |
Initial commit
| -rw-r--r-- | JMThesis.cls | 105 | ||||
| -rw-r--r-- | include/binutils/binutils1 | 14 | ||||
| -rw-r--r-- | include/binutils/binutils2 | 8 | ||||
| -rw-r--r-- | include/binutils/exportsysroot | 1 | ||||
| -rw-r--r-- | include/gcc/gcc1 | 18 | ||||
| -rw-r--r-- | include/gcc/gcc2 | 7 | ||||
| -rw-r--r-- | kernel.pdf | bin | 0 -> 224850 bytes | |||
| -rw-r--r-- | kernel.tex | 480 |
8 files changed, 633 insertions, 0 deletions
diff --git a/JMThesis.cls b/JMThesis.cls new file mode 100644 index 0000000..66a2884 --- /dev/null +++ b/JMThesis.cls @@ -0,0 +1,105 @@ +%% SCThesis.cls + +\def\fileversion{0.01} +\def\filedate{06/06/12} + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{JMThesis}[\filedate\space\fileversion\space JM thesis] + +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{book}} + +\ProcessOptions + +\LoadClass{book} + +\def\es{} % eat space for nice formatting + +%% +%% REDEFINE PAGESTYLE "HEADINGS" +%% +%% uppercase removed, slanted replaced by boldface, and underline added, ES +\if@twoside % If two-sided printing. +\def\ps@headings{\let\@mkboth\markboth +%%\def\@oddfoot{\hfill\hbox{\today}\hfill}\def\@evenfoot{\hfill\hbox{\today}\hfill}% No feet. +\def\@evenhead{\underline{\makebox[\textwidth][l]{\es + \rm \thepage \vphantom{g}\hfill \bf \leftmark}}}% +\def\@oddhead{\underline{\makebox[\textwidth][l]{\es + \hbox{}\bf \rightmark \vphantom{g}\hfill \rm\thepage}}}% +\def\chaptermark##1{\markboth {\ifnum \c@secnumdepth >\m@ne + \@chapapp\ \thechapter. \ \fi ##1}{}}% +\def\sectionmark##1{\markright {\ifnum \c@secnumdepth >\z@ + \thesection. \ \fi ##1}}} +\else % If one-sided printing. +\def\ps@headings{\let\@mkboth\markboth +\def\@oddfoot{}\def\@evenfoot{}% No feet. +\def\@oddhead{\hbox {}\sl \rightmark \hfil \rm\thepage}% Heading. +\def\chaptermark##1{\markright {\uppercase{\ifnum \c@secnumdepth >\m@ne + \@chapapp\ \thechapter. \ \fi ##1}}}} +\fi +\pagestyle{headings} + +% CONTENTS ENTRY FOR FULL SECTION TITLES +% +% The following change to a LATEX.TEX part is for: If \section[a]{bb} +% is used in the original setting, then "a" gets the running head as +% well as the entry to the table of contents. Here we want however +% that "a" gets the running head only and the entry to the table of +% contents is still "bb" (JG). +% +% begin of overwrite + +\def\@chap#1#2#3#4#5#6[#7]#8{\ifnum #2>\c@chapnum + \def\@svchap{}\else + \refstepcounter{#1}\edef\@svchap{\csname the#1\endcsname\hskip 1em }\fi + \@tempskipa #5\relax + \ifdim \@tempskipa>\z@ + \begingroup #6\relax + \@hangfrom{\hskip #3\relax\@svshap}{\interlinepenalty \@M #8\par} + \endgroup + \csname #1mark\endcsname{#7}\addcontentsline + {toc}{#1}{\ifnum #2>\c@chapnum \else + \protect\numberline{\csname the#1\endcsname}\fi + #8}\else % #7 changed to #8, JG + \def\@svchaphd{#6\hskip #3\@svchap #8\csname #1mark\endcsname + {#7}\addcontentsline + {toc}{#1}{\ifnum #2>\c@chapnum \else + \protect\numberline{\csname the#1\endcsname}\fi + #8}}\fi % #7 changed to #8, JG + \@xchap{#5}} +% end of overwrite + +% +% RUNNING HEAD MACROS +% +% "empty" left and right head, i.e. without "CHAPTER", chapter- +% number and section-number, only the text specified by parameter (JG). +% +\def\runheadel#1{\markboth{#1}{}} +\def\runheader#1{\markright{#1}} +% +% chapter (left) and section (right) heads, text specified by +% parameter (JG). +% +\def\runheadc#1{\markboth{ + \ifnum \c@secnumdepth>\m@ne + \@chapapp\ \thechapter. \ \fi #1}{}} +\def\runheads#1{\markright{ + \ifnum \c@secnumdepth >\z@ + \thesection. \ \fi #1}} + +% +% DEFINE AND SET FLAG FOR ADDING CHAPER*-TITLES TO THE CONTENS +% +\newif\ifaddcontents \addcontentsfalse % Create flag and set false. + +% +% REDEFINITIONS TO THE REP10 STYLE +% +% Redefinitions to the rep10.sty can only be executed after \documentstyle. +% The modifications are: \addcontentsline in \def\chapter +% uses #2 instead of #1 to make #1 being still the running +% head, but #2 being written into the table of contents. (JG) +% \doubleclearpage is used in \chapter and \chapter*. Depending on the +% addcontents flag, \addcontentsline is executed for \chapter*. +% Set running heads for \chapter* as well. (ES) +% diff --git a/include/binutils/binutils1 b/include/binutils/binutils1 new file mode 100644 index 0000000..d24267d --- /dev/null +++ b/include/binutils/binutils1 @@ -0,0 +1,14 @@ + mkdir build + cd build + + ../configure \ + --target=i686-elf \ + --with-sysroot \ + --prefix=/usr \ + --bindir=/usr/bin \ + --libdir=/usr/lib/i686-elf \ + --disable-nls \ + --disable-werror + + make + make install diff --git a/include/binutils/binutils2 b/include/binutils/binutils2 new file mode 100644 index 0000000..d99af99 --- /dev/null +++ b/include/binutils/binutils2 @@ -0,0 +1,8 @@ + ../configure \ + --target=i686-elf \ + --with-sysroot=$SYSROOT \ + --prefix=/usr \ + --bindir=/usr/bin \ + --libdir=/usr/lib/i686-elf \ + --disable-nls \ + --disable-werror diff --git a/include/binutils/exportsysroot b/include/binutils/exportsysroot new file mode 100644 index 0000000..5d61861 --- /dev/null +++ b/include/binutils/exportsysroot @@ -0,0 +1 @@ +export SYSROOT=/put/do/biblioteke diff --git a/include/gcc/gcc1 b/include/gcc/gcc1 new file mode 100644 index 0000000..c555f2c --- /dev/null +++ b/include/gcc/gcc1 @@ -0,0 +1,18 @@ + mkdir build + cd build + + ../configure \ + --target=i686-elf \ + --prefix=/usr \ + --disable-nls \ + --disable-plugin \ + --enable-languages=c,c++ \ + --without-headers + + make all-gcc + make all-target-libgcc + + make -k check || true + + make install-gcc + make install-target-libgcc diff --git a/include/gcc/gcc2 b/include/gcc/gcc2 new file mode 100644 index 0000000..d406f6c --- /dev/null +++ b/include/gcc/gcc2 @@ -0,0 +1,7 @@ + ../configure \ + --target=i686-elf \ + --prefix=/usr \ + --with-sysroot=$SYSROOT \ + --disable-nls \ + --disable-plugin \ + --enable-languages=c,c++ diff --git a/kernel.pdf b/kernel.pdf Binary files differnew file mode 100644 index 0000000..8ac07c7 --- /dev/null +++ b/kernel.pdf diff --git a/kernel.tex b/kernel.tex new file mode 100644 index 0000000..d9d52ba --- /dev/null +++ b/kernel.tex @@ -0,0 +1,480 @@ +\documentclass[a4paper,fleqn,12pt]{JMThesis}
+\usepackage{listings}
+\lstset{
+ language=make,
+ basicstyle=\footnotesize,
+ frame=single,
+ showstringspaces=false,
+ tabsize=8,
+ escapeinside={<@}{@>},
+}
+
+\usepackage[OT2]{fontenc}
+\newcommand\eng{\fontencoding{OT1}\fontfamily{\rmdefault}\selectfont}
+\newcommand\srb{\fontencoding{OT2}\fontfamily{\rmdefault}\selectfont}
+
+% \usepackage[serbian,english]{babel}
+
+\renewcommand{\baselinestretch}{1}
+\usepackage{amsfonts}
+\usepackage{amsthm}
+\usepackage{amsmath}
+\usepackage{multicol}
+\usepackage{hyperref}
+\usepackage{tocloft}
+
+\newlength\tindent
+\setlength{\tindent}{\parindent}
+\setlength{\parindent}{0pt}
+\renewcommand{\indent}{\hspace*{\tindent}}
+
+\oddsidemargin 1cm
+\evensidemargin 0cm
+\textwidth 15cm
+
+\pagestyle{headings}
+
+\font \matematicka=wncsc10 scaled 1600
+\font \maturski=wncyb10 scaled 2500
+\font \naslov=wncyb10 scaled 1900
+\font \naslovlat=cmr10 scaled 1900
+\font \imen=wncyr10 scaled 1600
+
+
+\def\zn{,\kern-0.09em,}
+\def\zng{'\kern-0.09em'}
+\pagenumbering{roman}
+\begin{document}
+
+
+\thispagestyle{empty}
+
+\begin{center}
+{\matematicka Matematichka gimnazija}
+\end{center}
+\vspace*{50mm}
+
+\begin{center}
+{\maturski MATURSKI RAD}
+
+\vspace*{8pt}
+{\naslov - iz rachunarstva i informatike -}
+\end{center}
+
+\vspace*{10pt}
+\begin{center}
+ {\naslov Izrada \textbf{\eng\Large X86 32bit i686} jezgra operativnog sistema}
+\end{center}
+
+\vspace*{70mm}
+\setlength{\columnsep}{50pt}
+\begin{multicols}{2}
+ {\noindent \imen Uchenik:
+\\Aleksa Vuchkovic1 $\operatorname{IV}$d}
+
+
+{ \noindent \hfill \imen Mentor:\\
+\hfill \phantom{aaaaaaaa} Milosh Arsic1}
+\end{multicols}
+
+\vfill
+\begin{center}
+{\imen Beograd, jun 2021.}
+\end{center}
+\clearpage
+
+\thispagestyle{empty}
+\mbox{}
+\clearpage
+
+
+\renewcommand{\contentsname}{Sadrzhaj}
+\thispagestyle{empty}
+
+\pagenumbering{gobble}
+
+\tableofcontents \clearpage
+
+\thispagestyle{empty}
+\mbox{}
+\clearpage
+
+\pagenumbering{arabic}
+\renewcommand{\chaptername}{}
+\setcounter{page}{1}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\chapter{Uvod}
+\bigskip
+Ideja za ovaj rad prozishla je iz ekstenzivnog korish\/c1enja {\eng GNU/Linux}
+sistema, kao i zhelja za razumevanjem rada rachunara na najnizhem nivou.
+
+Ceo kod je pisan u {\eng GNU Asembler}-u i {\eng C}-u i mozhe se nac1i na
+{\eng GitHub-u} na stranici {\eng\url{https://github.com/aleksav013/mykernel}}.
+Sav kod je dostupan pod {\eng GPLv3} licencom.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\chapter{Teorija}
+\bigskip
+
+\section{{\eng X86} arhitektura}
+\medskip
+{\eng X86} arhitektura je probitno bila 8bitna (sadrzhala je registre duzhine 8
+bitova), 16bitna, zatim 32bitna i na kraju 64bitna. Danas 64bitnu {\eng X86}
+arhitekturu znamo kao i {\eng{} AMD64}, {\eng X86-64} ili {\eng X86\_64}.
+
+Zajedno sa {\eng ARM}-om jedna od najkorish\/c1enijih arhitektura.
+
+\subsection{Registri procesora}
+\smallskip
+Postoji vishe vrsta registara procesora:
+16bitni registri opshte namene: {\eng ax,bx,cx,dx}.
+
+{\eng\url{https://wiki.osdev.org/CPU_Registers_x86}}
+
+\subsection{{\eng 32bit i686}}
+\smallskip
+32bitni registri opshte namene: {\eng eax,ebx,ecx,edx}.
+64bitni registri opshte namene: {\eng rax,rbx,rcx,rdx}.
+
+\subsection{{\eng Real mode}}
+\smallskip
+Realni mod je stanje procesora u kojem nam je dozvoljeno adresiranje samo prvih
+20mb memorije. Prelazak iz realnog u zasticeni mod postizhe se dalekim skokom
+{\eng "far jump"}.
+
+{\eng\url{https://wiki.osdev.org/Real_Mode}}
+
+\subsection{Segmentacija}
+\smallskip
+Segmentacija je reshenje kojim se omoguc1ava adresiranje vishe memorije nego
+shto je to hardverski predvidjeno.
+
+{\eng\url{https://wiki.osdev.org/Segmentation}}
+
+\subsection{{\eng Protected mode}}
+\smallskip
+Zashtic1en mod je stanje procesora u kojem procesor ima pun pristup celom opsegu
+memorije za razliku od realnog moda.
+
+{\eng\url{https://wiki.osdev.org/Protected_Mode}}
+
+\section{Redosled pokretanja}
+\smallskip
+Od pritiska dugmeta za paljenje rachunara, pa do uchitavanja operativnog sitema
+postoji ceo jedan proces. Nakon pritiska dugmeta rachunar prvo izvrshava {\eng
+POST (Power On Self Test)} koji je jedna od pochetnih faza {\eng BIOS (Basic
+Input Output System)}. U {\eng POST}-u rachunar pokushava da incijalizuje
+komponente rachunarskog sistema i proverava da li one ispunjavaju sve uslove za
+startovanje rachunara. Ukoliko je ceo proces proshao bez greshaka nastavlja se
+dalje izvrshavanje {\eng BIOS}-a. {\eng BIOS} sada ima ulogu da pronadje
+medijum koji sadrzhi program koji c1e uchitati jezgro operativnog sistema u ram
+memoriju rachunara. Taj program se naziva {\eng Bootloader}.
+
+{\eng\url{https://wiki.osdev.org/Boot_Sequence}}
+
+\subsection{{\eng Bootloader}}
+\smallskip
+{\eng Bootloader} je program koji se nalazi u prvih 512bitova medijuma, i
+njegov zadatak je da uchita jezgro operativnog sistema u ram memoriju i preda
+mu dalje upravljanje.
+
+{\eng\url{https://wiki.osdev.org/Bootloader}}
+
+\section{{\eng ELF}}
+\medskip
+{\eng ELF} je format binarni fajl koji se sastoji od tachno odredjenih sekcija
+i koji mozhe da se pokrene.
+
+{\eng\url{https://wiki.osdev.org/ELF}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\chapter{Korish\/c1eni alati}
+\bigskip
+U daljem tekstu se mogu videti neki od alata korish\/c1enih u kreiranju ovog rada.
+
+Svi korish\/c1eni alati poseduju {\eng GPLv2} ili {\eng GPLv3} licencu. {\eng
+GNU Public Licence} je licenca otvorenog koda koja dozvoljava modifikovanje i
+distribuiranje koda sve dok taj je taj kod javno dostupan.
+
+Jedini program sa liste koji nije {\eng GNU}-ov je {\eng QEMU} virtualna mashina.
+
+Operativni sistem korish\/c1en u izradi ovog projekta je {\eng Artix Linux}.
+{\eng Artix Linux} je {\eng GNU/Linux} distribucija bazirana na {\eng Arch Linux}-u.
+Vec1ina korish\/c1enih programa je vec1 kompajlovana i spremna za upotrebu i
+nalazi se u oficijalnim repozitorijima.
+
+Za programe koji su morali biti manuelno kompajlovani date su instrukcije u
+daljem tekstu.
+
+\section{{\eng Binutils}}
+\medskip
+Izvorni kod softvera se mozhe nac1i na stranici
+{\eng\url{https://www.gnu.org/software/binutils/}},
+zajedno sa uput\/stvom za kompajlovanje i korish\/c1enje.
+
+Ovaj paket sadrzhi programe neophodne za kompajlovanje kao shto su asembler i linker.
+
+\subsection{Pre dodavanja {\eng LIBC}}
+\smallskip
+Iz razloga shto se ne koristi standardna biblioteka vec1 samostalno napisana
+specificno za ovaj projekat, potrebno je manuelno kompajlovati {\eng GNU Binutils}.
+Medjutim, postoji moguc1nost korish\/c1enja vec1 spremnog paketa koji se za
+distribucije bazirane na {\eng Arch Linux}-u mozhe nac1i na stanici
+{\eng\url{https://aur.archlinux.org/packages/i686-elf-binutils/}}. Pojedine distribucije
+vec1 imaju ovaj paket kompajlovan, ali je preporuka manuelno kompajlovati da bi
+se izbegla nekompatibilnost, a i prosto iz razloga shto c1e nakon formiranja
+nashe {\eng C} biblioteke biti neophodno kompajlovati ovaj program za svaki
+sistem posebno.
+
+Za one koje zhele sami da kompajluju dat je deo instrukcija koji se razlikuje
+od uput\/stva datog na zvanichnom sajtu a tiche se konfigurisanja pre kompilacije.
+
+\begin{minipage}{\textwidth}\eng\lstinputlisting[]{include/binutils/binutils1}\srb\end{minipage}
+\subsection{Posle dodavanja {\eng LIBC}}
+\smallskip
+Nakon dodavanja nashe {\eng C} biblioteke potrebno je kompajlovati {\eng GNU
+Binutils} tako da tu biblioteku i koristi prilikom kompajlovanja nasheg
+operativnog sistema.
+\textbf{Napomena:} Potrebno je postaviti {\eng \$SYSROOT} na lokaciju gde se biblioteka nalazi.
+To je moguc1e uraditi na sledec1i nachin:
+
+\begin{minipage}{\textwidth}\eng\lstinputlisting[]{include/binutils/exportsysroot}\srb\end{minipage}
+
+Instukcije za kompajlovanje date su u nastavku:
+
+\begin{minipage}{\textwidth}\eng\lstinputlisting[]{include/binutils/binutils2}\srb\end{minipage}
+
+\subsection{{\eng GNU Asembler}}
+\smallskip
+Iako trenutno postoje mnogo popularnije alternative poput {\eng
+NASM(Netwide Assembler)} i {\eng MASM(Microsoft Assembler )} koji koriste
+noviju Intelovu sintaksu, ipak sam izabrao {\eng GASM} zbog kompatibilnosti sa
+{\eng GCC} kompajlerom. {\eng GASM} kosristi stariju {\eng AT\&T} sintaksu koju
+karakterishe: obrnut poredak parametara, prefiks pre imena registara i
+vrednosti konstanti, a i velichina parametara mora biti definisana. Zbog toga
+c1e mozhda nekim chitaocima biti koristan program {\eng "intel2gas"} koji se za
+{\eng Arch Linux} mozhe nac1i na stanici {\eng\url{https://aur.archlinux.org/packages/intel2gas/}}.
+
+Ovaj program je korish\/c1en za kompajlovanje dela koda napisanog u asembleru.
+
+\subsection{{\eng GNU Linker}}
+\smallskip
+Ovaj program je korish\/c1en za linkovanje("spajanje") svog komapjlovanog koda
+u jednu binarnu datoteku koja predstavlja kernel.
+
+\section{{\eng GCC}}
+\medskip
+Izvorni kod softvera se mozhe nac1i na stranici
+{\eng\url{https://gcc.gnu.org/}},
+zajedno sa uput\/stvom za kompajlovanje i korish\/c1enje.
+
+
+{\eng\url{https://aur.archlinux.org/packages/i686-elf-gcc/}}
+
+{\eng GCC} je {\eng GNU}-ov set kompajlera.
+
+\subsection{Pre dodavanja {\eng LIBC}}
+\smallskip
+\begin{minipage}{\textwidth}\eng\lstinputlisting[]{include/gcc/gcc1}\srb\end{minipage}
+\subsection{Posle dodavanja {\eng LIBC}}
+\smallskip
+\begin{minipage}{\textwidth}\eng\lstinputlisting[]{include/gcc/gcc2}\srb\end{minipage}
+
+\section{{\eng GRUB}}
+\medskip
+Izvorni kod softvera se mozhe nac1i na stranici
+{\eng\url{https://www.gnu.org/software/grub/}},
+zajedno sa uput\/stvom za kompajlovanje i korish\/c1enje.
+
+{\eng GRUB} je {\eng bootloader} koji je korish\/c1en na ovom projektu. Plan je
+da u buduc1nosti {\eng GRUB} bude zamenjen sa mojim {\eng bootloader}-om, i da
+se kompletan kod bude moj.
+
+\section{{\eng QEMU}}
+\medskip
+Izvorni kod softvera se mozhe nac1i na stranici
+{\eng\url{https://www.qemu.org/}},
+zajedno sa uput\/stvom za kompajlovanje i korish\/c1enje.
+
+{\eng QEMU} je virtualna mashina u kojoj c1e jezgro biti testirano i
+prikazano zarad praktichnih razloga. {\eng QEMU} je odabran za ovaj projekat
+jer za razliku od drugih virutalnih mashina poseduje {\eng cli (command line
+interface)} iz koga se lako mozhe pozivati iz skripti kao shto su {\eng Makefile}-ovi.
+
+\section{{\eng Make}}
+\medskip
+Izvorni kod softvera se mozhe nac1i na stranici
+{\eng\url{https://www.gnu.org/software/make/}}
+zajedno sa uput\/stvom za kompajlovanje i korish\/c1enje.
+
+{\eng Make} nam omoguc1ava da sa lakoc1om odrzhavamo i manipulishemo izvornim
+fajlovima. Moguc1e je sve kompajlovati, obrisati, kreirati {\eng iso} fajl kao
+i pokrenuti {\eng QEMU} virtuelnu mashinu sa samo jednom kljchnom rechi u
+terminalu. Kreirani {\eng Makefile} za potrebe ovog projekta bic1e detaljno
+objasnjen u daljem tekstu.
+
+\section{Manje bitni alati}
+\medskip
+
+\subsection{{\eng git}}
+\smallskip
+Izvorni kod softvera se mozhe nac1i na stranici
+{\eng\url{https://git.kernel.org/pub/scm/git/git.git}}.
+
+{\eng Git} je program koji nam pomazhe da odrzhavamo izvodne fajlove i
+
+\subsection{{\eng xorriso(libisoburn)}}
+\smallskip
+{\eng\url{https://www.gnu.org/software/xorriso/}}
+
+Sluzhi za kreiranje {\eng ISO} fajlova koji se mogu "narezati" na {\eng CD}
+ili {\eng USB} flesh sa kojih se kasnije dizhe sistem.
+
+\subsection{{\eng GDB}}
+\smallskip
+{\eng\url{https://www.sourceware.org/gdb/}}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\chapter{Jezgro operativnog sistema}
+\bigskip
+
+\section{Pochetak}
+\medskip
+{\eng\url{https://wiki.osdev.org/Bare_Bones}}
+
+\subsection{Teorija}
+\smallskip
+\subsection{Implementacija}
+\smallskip
+
+\section{Ispis na ekran - {\eng VGA}}
+\medskip
+
+\subsection{Teorija}
+\smallskip
+\subsection{Implementacija}
+\smallskip
+
+\section{{\eng LIBC} pochetak}
+\medskip
+
+\subsection{Teorija}
+\smallskip
+\subsection{Implementacija}
+\smallskip
+
+\section{Globalni konstruktori, zashtita steka}
+\medskip
+{\eng\url{https://wiki.osdev.org/Calling_Global_Constructors}}
+
+{\eng\url{https://wiki.osdev.org/Stack_Smashing_Protector}}
+
+\subsection{Teorija}
+\smallskip
+\subsection{Implementacija}
+\smallskip
+
+\section{{\eng Global Desctiptor Table}}
+\medskip
+{\eng\url{https://wiki.osdev.org/GDT}}
+
+\subsection{Teorija}
+\smallskip
+\subsection{Implementacija}
+\smallskip
+
+\section{{\eng Interrupt Desctiptor Table}}
+\medskip
+{\eng\url{https://wiki.osdev.org/IDT}}
+
+\subsection{Teorija}
+\smallskip
+\subsection{Implementacija}
+\smallskip
+
+\section{{\eng IRQ} i {\eng PIC}}
+\medskip
+{\eng\url{https://wiki.osdev.org/IRQ}}
+{\eng\url{https://wiki.osdev.org/PIC}}
+
+\subsection{Teorija}
+\smallskip
+\subsection{Implementacija}
+\smallskip
+
+\section{Tastatura}
+\medskip
+
+\subsection{Teorija}
+\smallskip
+\subsection{Implementacija}
+\smallskip
+
+\section{{\eng PIT - Programmable Interval Timer}}
+\medskip
+{\eng\url{https://wiki.osdev.org/PIT}}
+
+\subsection{Teorija}
+\smallskip
+\subsection{Implementacija}
+\smallskip
+
+\section{{\eng Heap}}
+\medskip
+{\eng\url{https://wiki.osdev.org/Heap}}
+
+\subsection{Teorija}
+\smallskip
+\subsection{Implementacija}
+\smallskip
+
+\section{{\eng Paging}}
+\medskip
+{\eng\url{https://wiki.osdev.org/Paging}}
+
+\subsection{Teorija}
+\smallskip
+\subsection{Implementacija}
+\smallskip
+
+\section{Moj {\eng LIBC}}
+\medskip
+{\eng\url{https://wiki.osdev.org/Creating_a_C_Library}}
+
+\subsection{Teorija}
+\smallskip
+\subsection{Implementacija}
+\smallskip
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\chapter{Zakljuchak}
+Ovaj projekat je bio sjajna prilika da testiram granice svog znanja.
+
+\thispagestyle{empty}
+\mbox{}
+\clearpage
+
+\renewcommand\bibname{Literatura}
+\begin{thebibliography}{}
+\vspace*{15mm}
+\rm
+\bibitem{} {\eng\url{https://wiki.osdev.org/Expanded_Main_Page}}
+\bibitem{} {\eng\url{http://jamesmolloy.co.uk/tutorial_html/}}
+\end{thebibliography}
+\addcontentsline{toc}{chapter}{Literatura}
+
+
+\end{document}
|
