Commits

Paweł Wieczorek committed 7fc8230

* wzbogacono bibliografie

  • Participants
  • Parent commits 3d5c951

Comments (0)

Files changed (1)

File doc/index.tex

 
 Dokument stanowi opis realizacji biblioteki wątków użytkownika. Celem
 biblioteki było pokonanie wyzwania programistycznego polegającego
-na~zrealizowaniu wątków użytkownika z wywłaszczeniami bez użycia wstawek
-z~językiem maszynowym. Na zaimplementowany model miał wpływ ustandaryzowany
-interfejs biblioteki wątków - PTHREAD.
+na~zrealizowaniu wątków użytkownika z~wywłaszczeniami bez użycia wstawek
+jęza maszynowego. Na zaimplementowany model miał wpływ ustandaryzowany
+interfejs biblioteki wątków - PTHREAD \cite{PTHREAD}.
 
 \subsection{Budowa.}
 
 \T{setjmp} & \T{ucontext} \\\hline
 cvs & Linux & x86\_64 & 2.6.26-2 & OK & OK \\
 hera & Linux & x86 & 2.6.26-2 & OK & OK  \\
-macbeth & Darwin & x86 & 10.2.0 & NIE & OK  \\
+macbeth & Darwin & x86 & 10.2.0 & OK & OK  \\
 qemu1 & NetBSD & qemu-x86 & 5.0.1 & OK  & OK \\
 qemu2 & NetBSD & qemu-sparc & 4.0 & NIE & OK  \\
 tryglaw & Solaris & x86 & 5.10 & OK & OK  \\
 widziane po stronie jądra. Jednak ich tworzenie wymaga
 użycia specyficznych dla danego systemu wywołań, przez co~biblioteka nie
 mogłaby być przenośna - nawet między systemami UNIX-owymi. Lepiej się posłużyć
-w~takim wypadku systemową biblioteką wątków implementującą standard PTHREAD
+w~takim wypadku systemową biblioteką wątków implementującą standard PTHREAD\cite{PTHREAD}
 gdyż interfejs jest przenośny, a biblioteka dostarczona przez system
 użyje jego wewnętrznych mechanizmów.
 
 przed dostarczenie sygnału. Realizacja takich nakładek wydaje się  być prosta
 - powinna korzystać z nieblokujących deskryptorów oraz dodać dodatkowe zadanie
 administracyjne planisty sprawdzające operacje wej-wyj.
+
+
+\B{UWAGA!} Zgodnie z najnowszym standardem POSIX:2008
+niektóre funkcje otrzymują status \emph{przestarzałe} \cite{POSIX08}.
+Co oznacza,
+że wraz z przyszłym rozwojem systemów i standardu mogą one zniknąć,
+a w tym używane przez bibliotekę \T{setitimer} oraz \T{gettimeofday}.
+Obsługa czasu jest przygotowana na~modułowość, zatem obok obecnego pliku
+\T{unix\_time\_gettimeofday.c}, można dodać \T{unix\_time\_clock.c}
+używającą nowszego mechanizmu \T{clock\_gettime}. Do obsługi czasomierza
+należałoby jednak wprowadzić interfejs, który mógłby być implementowany
+przez obecnie używane \T{setitimer} oraz dodatkowy moduł, używający nowszego
+interfejsu \T{timer\_create}. Dzięki modułowości biblioteka mogłaby działać
+na starych oraz przyszłych systemach.
+
 \section{Zarządzanie wątkami.}
 
 Niniejszy rozdział opisuje interfejs biblioteki, każda omawiana stała i~funkcja
 ma przedrostek \T{pwuthread\_} lub \T{PWUTHREAD\_}.
-Ich odpowiedniki w~standardzie PTHREAD\cite{PTHREAD}, jeżeli istnieją, to~są
-mają przedrostki \T{pthread\_} lub \T{PTHREAD\_}. W~przytaczanych
+Ich odpowiedniki w~standardzie PTHREAD\cite{PTHREAD}, jeżeli istnieją,
+to~mają przedrostki \T{pthread\_} lub \T{PTHREAD\_}. W~przytaczanych
 fragmentach kodów przedrostki nie są obcinane.
 
 \subsection{Tworzenie wątków.}
 \end{verbatim} }
 
 Każdy wątek jest związany z obiektem \T{attr\_t} opisującym jego
-atrybuty. Obecnie w~implementacji jedyne ustawia len atrybuty to
+atrybuty. Obecnie w~implementacji jedyne ustawialne atrybuty to
 segment stosu, stąd też nie będą one omówione. 
 
 Za tworzenie wątku odpowiedzialna jest procedura \T{create}, która
 PTHREAD, nie jest używana wewnątrz~biblioteki. Procedurami \T{getspecific}
 i \T{setspecific} można odpowiednio pobierać i~zapisywać wartość kojarzoną
 z~kluczem przez właśnie działający wątek.
-
 Przykład wykorzystania znajduje się w \T{examples/ex03.c} oraz w~następnym
 podrozdziale.
 
-\noindent\B{UWAGA!} Należy zwrócić uwagę, że nie istnieje możliwość aby wątek
+
+\B{UWAGA!} Należy zwrócić uwagę, że nie istnieje możliwość aby wątek
     pobrał wartość kojarzoną z~danym kluczem przez inny wątek, zatem należy
     uważać na~wycieki pamięci! Przykładowo załóżmy, że z~danym kluczem kojarzymy
     wskaźnik na~dynamicznie przydzieloną tablicę i~jest to~jedyne miejsce
 w~zachowaniu. W tym celu zostały użyte odpowiedniki procedur \T{sigsetjmp}
 oraz \T{siglongjmp} których zachowywanie maski sygnałów można kontrolować.
 
+Opis użytych mechanizmów znajduje się w \cite{SIGNAL}.
 
 {\small\begin{verbatim}
 
 \subsubsection{Tworzenie kontekstu procesora za pomocą \I{ucontext}.}
 
 W standardzie POSIX zdefiniowane są gotowe procedury służące do~zarządzania
-kontekstem procesora.
+kontekstem procesora \cite{UCONTEXT}.
 
 {\small\begin{verbatim}
 #include <ucontext.h>
 \subsection{Planista.}
 
 Kluczowym elementem biblioteki jest program planisty, który zarządza wątkami.
-Planista wykorzystuję semantykę sygnałów na systemie UNIX, gdzie dostarczenie
+Planista wykorzystuje semantykę sygnałów na systemie UNIX, gdzie dostarczenie
 sygnału wywłaszcza działający proces i~uruchamia w nim obsługę sygnału.
 Podczas inicjalizacji biblioteki jest instalowany czasomierz, który co
-bardzo mały kwant czasu wysyła do procesu sygnał \T{SIGALRM}, jego obsługa
+bardzo mały kwant czasu wysyła do procesu sygnał \T{SIGALRM}
+\cite{ITIMER}, jego obsługa
 uruchamia podprogram planisty, który zmienia obecnie działający wątek.
 
 Program planisty przypisuje wątkom ustalone stany, które głównie znaczą
 Rozwijana do dziś biblioteka wątków. Implementuje interfejs \emph{PTHREAD}
 oraz własny. Jej autorom udało się zapewnić działanie na~bardzo wielu
 platformach, a~w~tym także na systemie Microsoft Windows. Biblioteka obsługuje
-koopertywny model zarządzania wątkami.
+koopertywny model zarządzania wątkami \cite{PTH}.
 
  \item[PTL] -
 Nie rozwijana dziś biblioteka wątków, implementująca interfejs \emph{PTHREAD}.
 ją bardzo praktyczną. Biblioteka posiadała innowacyjny debugger do~wątków,
 mianowicie program używający biblioteki stawał się także serwerem. Przygotowany
 program mógł się do niego podłączyć i~monitorować stan wątków. Biblioteka
-obsługuje model wątków, opierający się o wywłaszczenia.
+obsługuje model wątków, opierający się o wywłaszczenia \cite{PTL}.
 
  \item[BSD] -
 W niektórych systemach wywodzących się z BSD dostępnych jest wiele różnych bibliotek implementujących
 
 
 \begin{thebibliography}{}
+\bibitem{PTHREAD} IEEE Std 1003.1-2004 (POSIX:2004). Threads\newline
+\xurl{http://www.opengroup.org/onlinepubs/000095399/functions/xsh_chap02_09.html}\newline
+\xurl{http://www.opengroup.org/onlinepubs/000095399/basedefs/pthread.h.html}
+
+\bibitem{SIGNAL} IEEE Std 1003.1-2004 (POSIX:2004). Signals\newline
+\xurl{http://www.opengroup.org/onlinepubs/000095399/functions/xsh_chap02_04.html}\newline
+\xurl{http://www.opengroup.org/onlinepubs/009695399/functions/sigaction.html}\newline
+\xurl{http://www.opengroup.org/onlinepubs/000095399/functions/sigaltstack.html}
+
+\bibitem{UCONTEXT} IEEE Std 1003.1-2004 (POSIX:2004). Ucontext\newline
+\xurl{http://www.opengroup.org/onlinepubs/009695399/basedefs/ucontext.h.html}
+
+\bibitem{ITIMER} IEEE Std 1003.1-2004 (POSIX:2004). Interval timer\newline
+\xurl{http://www.opengroup.org/onlinepubs/009695399/functions/getitimer.html}
+
+\bibitem{POSIX08} IEEE Std 1003.1-2008 (POSIX:2008). Rationale for System Interface. Introduction.\newline
+\xurl{http://www.opengroup.org/onlinepubs/9699919799/xrat/V4_xsh_chap01.html}
+
 \bibitem{PTH} The GNU Portable Thread\newline
 \xurl{http://www.gnu.org/software/pth/}
+
 \bibitem{PTL} Portable Thread Library\newline
 \xurl{http://www.media.osaka-cu.ac.jp/~k-abe/PTL/}
-\bibitem{PTHREAD} Single UNIX Specification version 3, IEEE Std 1003.1-2001. Threads\newline
-\xurl{http://www.opengroup.org/onlinepubs/000095399/functions/xsh_chap02_09.html}\newline
-\xurl{http://www.opengroup.org/onlinepubs/000095399/basedefs/pthread.h.html}
+
+
+
 \end{thebibliography}