Proces

Z MiS
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
(Vytvoření stránky.)
 
(Otázky: Doplnění otázky: počet běžících aplikací.)
 
(Nejsou zobrazeny 4 mezilehlé verze od 1 uživatele.)
Řádka 11: Řádka 11:
 
== Jaké data zahrnujeme? ==
 
== Jaké data zahrnujeme? ==
 
* Identifikátor procesu (PID)   číslo, pod kterým OS s procesem pracuje.
 
* Identifikátor procesu (PID)   číslo, pod kterým OS s procesem pracuje.
* Kód programu, načtený v paměti
+
* UID a GID uživatele a skupiny, s jejímiž právy proces běží.
 +
* Kód programu, načtený v paměti.
 
** Instrukce, které se mají provést. Načteme je z binárního souboru programu (na Windows ze souboru <code>.exe</code>)
 
** Instrukce, které se mají provést. Načteme je z binárního souboru programu (na Windows ze souboru <code>.exe</code>)
 
* Data, uložená v&nbsp;paměti  
 
* Data, uložená v&nbsp;paměti  
Řádka 22: Řádka 23:
 
* Procesy navzájem nemohou sdílet proměnné (každý má svou přidělenou paměť). To je ale někdy omezující.
 
* Procesy navzájem nemohou sdílet proměnné (každý má svou přidělenou paměť). To je ale někdy omezující.
 
* Proces tedy můžeme rozdělit do více ''vláken'' (''thread''), které běží také nezávisle a&nbsp;mají svůj stav, ale sdílí spolu obsah proměnných v&nbsp;paměti.
 
* Proces tedy můžeme rozdělit do více ''vláken'' (''thread''), které běží také nezávisle a&nbsp;mají svůj stav, ale sdílí spolu obsah proměnných v&nbsp;paměti.
 +
* Rozdělení procesů na více vláken může zefektivnit výpočet:
 +
** Pokud čekáme na data z&nbsp;disku, můžeme například provádět další výpočet, pokud k&nbsp;němu data nepotřebujeme.
 +
** Každé vlákno může běžet na jiném jádru procesoru.
  
 +
 +
== Otázky ==
 +
# Kolik procesů právě běží ve vašem počítači? Jak to zjistíte?
 +
# Kolik procesů může běžet v&nbsp;jednom okamžiku? Jak to zjistíte?
 +
# Jak je možné, že můžu na počítači spustit několik desítek zároveň běžících aplikací?
 +
# Pokud můžou vlákna sdílet proměnné, není to narušení pravidla, že procesy paměť sdílet nemůžou?
 +
#: Kdybych chtěl sdílet paměť mezi procesy, můžu v&nbsp;každém procesu vytvořit vlákno a&nbsp;tyto dvě vlákna sdílet paměť můžou.
 +
#: V&nbsp;čem je tato úvaha nesprávná?
 +
# Jak může rozdělení procesu na více vláken zrychlit výpočet, když se všechny instrukce stejně nakonec musí provést v&nbsp;jednom procesoru.
 +
#: Analogie: Mám jednoho pracovníka (procesor) a&nbsp;1000&nbsp;cihel, které musí přenosit (instrukcí).
 +
#: Pracovník přece bude mít stejné množství práce bez ohledu na to, jestli mu to napíši jako jeden úkol přenést 1000&nbsp;cihel (jedno vlákno), nebo jako čtyři&nbsp;úkoly přenést 250&nbsp;cihel (čtyři vlákna).
 +
#: V&nbsp;čem je tato úvaha nesprávná?
  
 
== Související stránky ==
 
== Související stránky ==
 
* [[Komunikace mezi procesy]]
 
* [[Komunikace mezi procesy]]

Aktuální verze z 18. 9. 2023, 10:35


Obsah

Co je proces?


Jaké data zahrnujeme?


Vlákno


Otázky

  1. Kolik procesů právě běží ve vašem počítači? Jak to zjistíte?
  2. Kolik procesů může běžet v jednom okamžiku? Jak to zjistíte?
  3. Jak je možné, že můžu na počítači spustit několik desítek zároveň běžících aplikací?
  4. Pokud můžou vlákna sdílet proměnné, není to narušení pravidla, že procesy paměť sdílet nemůžou?
    Kdybych chtěl sdílet paměť mezi procesy, můžu v každém procesu vytvořit vlákno a tyto dvě vlákna sdílet paměť můžou.
    V čem je tato úvaha nesprávná?
  5. Jak může rozdělení procesu na více vláken zrychlit výpočet, když se všechny instrukce stejně nakonec musí provést v jednom procesoru.
    Analogie: Mám jednoho pracovníka (procesor) a 1000 cihel, které musí přenosit (instrukcí).
    Pracovník přece bude mít stejné množství práce bez ohledu na to, jestli mu to napíši jako jeden úkol přenést 1000 cihel (jedno vlákno), nebo jako čtyři úkoly přenést 250 cihel (čtyři vlákna).
    V čem je tato úvaha nesprávná?

Související stránky

Osobní nástroje
Jmenné prostory
Varianty
Akce
Výuka
Navigace
Nástroje