|
2344 | 2344 | %%%%% |
2345 | 2345 |
|
2346 | 2346 | \begin{slide} |
2347 | | -\sltitle{Procesy, vlákna, programy} |
| 2347 | +\sltitle{Processes, threads, program} |
2348 | 2348 | \begin{itemize} |
2349 | | -\item \emsl{proces} je systémový objekt charakterizovaný svým |
2350 | | -kontextem, identifikovaný jednoznaèným èíslem (\emsl{process ID}, |
2351 | | -\emsl{PID}); jinými slovy \uv{kód a data v pamìti} |
2352 | | -\item \emsl{vlákno (thread)} je systémový objekt, který existuje uvnitø |
2353 | | -procesu a je charakterizován svým stavem. V¹echna vlákna jednoho procesu sdílí |
2354 | | -stejný pamì»ový prostor kromì registrù procesoru a zásobníku; \uv{linie |
2355 | | -výpoètu}, \uv{to, co bì¾í} |
2356 | | -\item \emsl{program} ... soubor pøesnì definovaného formátu obsahující |
2357 | | -instrukce, data a slu¾ební informace nutné ke spu¹tìní; \uv{spustitelný soubor |
2358 | | -na disku} |
| 2349 | +\item \emsl{process} is system object characterized by its context, |
| 2350 | +identified by a unique number (\emsl{process ID}, |
| 2351 | +\emsl{PID}); in other words \uv{code and data in memory} |
| 2352 | +\item \emsl{thread} is system object, that exists inside a process and |
| 2353 | +is characterized by its state. All threads within single process share |
| 2354 | +the same memory area sans registers and stack; \uv{line of execution}, |
| 2355 | +\uv{what is running} |
| 2356 | +\item \emsl{program} ... file with precisely defined format that contains |
| 2357 | +instructions, data and service informations needed for execution; |
| 2358 | +\uv{executable file on disk} |
2359 | 2359 | \end{itemize} |
2360 | 2360 |
|
2361 | 2361 | \begin{itemize} |
2362 | | -\item[$\circ$] \emsl{pamì»} se pøidìluje \emsl{procesùm}. |
2363 | | -\item[$\circ$] \emsl{procesory} se pøidìlují \emsl{vláknùm}. |
2364 | | -\item[$\circ$] vlákna jednoho procesu mohou bì¾et na rùzných procesorech. |
| 2362 | +\item[$\circ$] \emsl{memory} is assigned to \emsl{processes}. |
| 2363 | +\item[$\circ$] \emsl{processors} are assigned to \emsl{threads}. |
| 2364 | +\item[$\circ$] threads of single process can run on different processors. |
2365 | 2365 | \end{itemize} |
2366 | 2366 | \end{slide} |
2367 | 2367 |
|
2368 | 2368 | \begin{itemize} |
2369 | | -\item \emsl{\emph{kontext}} je pamì»ový prostor procesu, obsah registrù a datové |
2370 | | -struktury jádra týkající se daného procesu |
2371 | | -\item jinak øeèeno -- kontext procesu je jeho stav. Kdy¾ systém |
2372 | | -vykonává proces, øíká se, ¾e bì¾í v kontextu procesu. Jádro (klasické) |
2373 | | -obsluhuje pøeru¹ení v kontextu pøeru¹eného procesu. |
2374 | | -\item vlákna se dostala do UNIXu a¾ pozdìji, pùvodnì v nìm existovaly pouze |
2375 | | -procesy, které mìly z dne¹ního pohledu pouze jedno vlákno. Mo¾nost pou¾ít v |
2376 | | -procesu více vláken byla zavedena, proto¾e se ukázalo, ¾e je vhodné mít více |
2377 | | -paralelních linií výpoètu nad sdíle{}nými daty. |
2378 | | -\item pamì»ové prostory procesù jsou navzájem izolované, ale procesy spolu |
2379 | | -mohou komunikovat. Pozdìji se dozvíme, ¾e mohou i èásteènì sdílet pamì». |
2380 | | -\item procesy jsou entity na úrovni jádra, ale vlákna mohou být èásteènì nebo |
2381 | | -zcela implementována knihovními funkcemi. V pøípadì implementace pomocí |
2382 | | -knihovních fukncí to znamená, ¾e vlákna nemusí jádro vùbec podporovat. S vlákny |
2383 | | -je spojena men¹í re¾ie ne¾ s~procesy. |
2384 | | -\item systémový proces, který bì¾í na pozadí obvykle po celou dobu bìhu |
2385 | | -systému a zaji¹»uje nìkteré systémové slu¾by (\texttt{inetd}, \texttt{cron}, |
2386 | | -\texttt{sendmail}\dots) se nazývá \emph{démon} (angl. \emph{daemon}). Systém |
2387 | | -BSD tedy nemá ve znaku èerta, ale démona. |
| 2369 | +\item The \emsl{\emph{context}} is memory are of process, register contents and |
| 2370 | +kernel data structures relevant to given process. |
| 2371 | +\item In other words -- the context of a process is its state. When the system |
| 2372 | +is executing the process, one says that it runs in the process context. |
| 2373 | +The classic kernel handles interrupts in the context of interrupted process. |
| 2374 | +\item The threads were introduced to UNIX later, originally there were just |
| 2375 | +processes that from today's perspective had only single thread. The possibility |
| 2376 | +to use multiple threads was introduced because it was shown that it is |
| 2377 | +beneficial to have multiple lines of execution within the same process on |
| 2378 | +common shared data. |
| 2379 | +\item The memory areas of processes are isolated between each other however |
| 2380 | +processes can communicate or explicitly share memory. |
| 2381 | +\item While processes are kernel entities, threads can be partially or fully |
| 2382 | +implemented as user libraries. In the latter case this means that the kernel |
| 2383 | +does not have to support threading at all. Threads have smaller overhead than |
| 2384 | +processes. |
| 2385 | +\item A system process that is running for the whole time and provides some |
| 2386 | +system services (\texttt{inetd}, \texttt{cron}, \texttt{sendmail}\dots) is |
| 2387 | +called \emph{daemon}. BSD system mascot is not a devil but daemon. |
2388 | 2388 | \end{itemize} |
2389 | 2389 |
|
2390 | 2390 | %%%%% |
|
0 commit comments