a.Gestiune clock
-reporne?te ceasul;
-planificг apelurile funcюiilor interne ale nucleului pe baza timerelor interne;
-furnizeazг posibilitatea schiюгrii execuюiei proceselor оn modul nucleu ?i utilizator;
-calculeazг timpii statistici pentru proces ?i sistem;
-urmгre?te timpul;
-trimite semnale de alarmг la procesele care solicitг acest lucru;
-treze?te periodic procesul оncгrcгtor (trimite periodic semnale de wake up la procesele depuse оn memorie);
-controleazг planificarea proceselor;
Unele operaюii sunt fгcute la fiecare оntrerupere de ceas, pe cвnd altele sunt fгcute dupг cвteva impulsuri de ceas. Rutina de tratare a оntreruperii de ceas ruleazг cu nivelul de execuюtie al procesului setat high, previne apariюia altor evenimente (cum ar fi оntreruperile de la dispozitivele periferice) atunci cвnd el este activ.Program care utlizeazг ^apelul alarm:
^#include <sys/types.h>
^ #include<sys/stat.h>
^ #include<sys/signal.h>
^ main( argc, argv)
^ int argc;
^ char *argv[];
{
^extern unsigned alarm();
^extern wakeup();
^struct stat statbuf;
^time_t axtime;
^if(argc!=2)
{
^printf(" doar un argument
");
^exit(); }
^axtime=(time_t) 0;
^for(;;)
{
/* gгse?te timpul de acces la fi?ier */
^if(stat(argv[1], [and]statbuf)==-1)
{
^printf(" fi?ierul [procent]s nu este acolo
", argv[1]);
^exit(); }
^if(axtime!=statbuf.st_atime)
{
^printf("fi?ierul [procent]s a fost accesat
", argv[1]);
axtime=statbuf.st_atime;
}
^signal(SIGALRM, wakeup); /* reset pentru alarmг */
^alarm(60);
^pause(); /* stг оn sleep pвnг apare un semnal */
}
^}
^wakeup() { }