2020-01 [seminár] rúry, výpis priečinka

Zdroj
ručne priradené
Pridané

Pozrieť na YouTube →

Preber si túto prednášku so svojou AI

Skopíruj pripravený podklad a vlož ho do ChatGPT, Claude alebo inej AI — bude ťa učiť alebo skúšať len z tejto prednášky.

Otvoriť AI: ChatGPT · Claude · Gemini

Zhrnutie prednášky

Seminár sa venuje mechanizmu rúr (pipe) v operačnom systéme, ktorý slúži na komunikáciu medzi procesmi presmerovaním výstupu jedného programu na vstup druhého. Na príklade príkazu ls | grep x je demonštrované, ako sa pomocou systémového volania pipe vytvoria dva súborové deskriptory – čítací a zapisovací, a ako sa cez systémové volanie dup a close presmerujú štandardné vstupy a výstupy procesov na tieto konce rúry. Vysvetľuje sa princíp, že shell musí najprv vytvoriť rúru a až potom dvakrát zavolať fork, aby vznikli samostatné procesy pre ls a grep, pričom tabuľka súborových deskriptorov sa pri forku kopíruje, ale samotná rúra ako objekt v systéme je len jedna a zdieľaná. Zdôrazňuje sa abstrakcia operačného systému – samotné procesy (ls, grep) nevedia, či zapisujú na terminál, do súboru alebo do rúry. Na konkrétnom programe pipe1.c je ukázaná praktická implementácia zápisu a čítania dát cez rúru v rámci jedného procesu.

  • - Rúra (pipe) má dva konce – čítací a zapisovací súborový deskriptor.
  • - Systémové volanie pipe vytvorí rúru a vráti dva nové deskriptory, treba kontrolovať návratovú hodnotu na chyby.
  • - Príklad ls | grep x demonštruje presmerovanie výstupu jedného procesu na vstup druhého cez buffer.
  • - Shell musí vytvoriť rúru a dvakrát zavolať fork (pre ls a pre grep), aby zostal zachovaný aj pôvodný shell.
  • - Presmerovanie deskriptorov sa robí kombináciou systémových volaní close a dup.
  • - Tabuľka súborových deskriptorov sa pri forku kopíruje, ale samotná rúra je jeden zdieľaný objekt v systéme.
  • - Procesy pripojené na deskriptory nevedia, či ide o terminál, súbor alebo rúru – princíp abstrakcie OS.

Zhrnutie pripravené s pomocou AI z prepisu videa.