Planovani procesu a cteni po eofu

Alexandr Malusek malusek na hroch.ujf.cas.cz
Neděle Květen 24 21:38:47 CEST 1998


tobiska na ure.cas.cz (Suma Petr Tobiska) writes:

> narazil jsem na zajimavou vec: kdyz si prelozim nasledujici programek:
> ---- eofak.c
> #include <stdio.h>
> int main()
> {   while( getchar() != '\n' ); }
> ----- koned eofak.c
> a presmeruju mu na stdin prazdny soubor
> echo -ne "" > nic; a.out < nic
> sezere veskery volny idle time (po vypsani topem asi 97%).

To je v poradku, protoze getchar() vraci pri cteni na konci souboru
EOF (= -1), takze v cyklu while se neustale vola funkce getchar() a ta
vzdy vraci -1. Cteni EOF lze testovat napr. takto:

#include <stdio.h>
int main()
{
  int c;
  while( (c = getchar()) != EOF )
   if (c == '\n')
     break;
  return 0;
}

> Jak to je s planovanim takoveho procesu a jak ovlivnuje vykonost
> systemu?

S timto procesem se zachazi jako s kazdym jinym.

$ vmstat 1
 procs                  memory    swap        io    system         cpu
 r b w  swpd  free  buff cache  si  so   bi   bo   in   cs  us  sy  id
 1 0 0  5116 14912  4016 16972   0   0    0    5  105   13  34  66   0
 1 0 0  5116 14912  4016 16972   0   0    0    0  106   13  32  68   0
 1 0 0  5116 14912  4016 16972   0   0    0    0  105    9  32  68   0
                                                            ^^  ^^
Proces procesor plne zatezuje, pricemz priblizne 32% casu se travi v
uzivatelskem modu a 68% casu v systemovem modu (pri vykonavani
systemoveho volani read()).

> Kde se da najit nejaka literatura (mam pujcene Principy OS Unix od
> Bacha, ale nevim, jak presne to je v linux, napr. jak je to presne se
> signaly ( neco jako sighold v BSD )).

Linux (mimo jine) implementuje signaly podle POSIXu, viz
sigaction(2). Normu POSIXu ale nemam, takze nevim, jestli
kompletne. RH (http://www.redhat.com/) prodava knihu Linux Application
Development - je tam i kapitola venovana zpracovani
signalu. (Mimochodem, prodava ji i nekdo v CR?)

Jinak rozdily mezi implementaci BSD, SVR4, ... signalu jsou popsany v
knize UNIX Internals, Uresh Vahalia, Prentice Hall, ISBN
0-13-101908-2.

--
A. Malusek  (malusek na ujf.cas.cz)
UJF AV CR


Další informace o konferenci Linux