[SYS1] Systemes d’exploitation (1)

Systeme d’exploitation

Architecture d’un ordinateur

CPU
RAM
Dev
Dev
...

CPU : Execute des instructions

Registres : petites zones de memoire temporaire (8 bytes)

Kernel (Noyau de systeme d’exploitation)

Le kernel = 1 seul process qui tourne, comment faire pour reprendre la main pendant l’execution des programmes et gerer leur scheduling ?

Fichiers

i-node ou inode : Contient toutes les informations d’un fichier

Informations recuperables avec stat/fstat

Numero d’inode : Adresse qui permet de retrouver le fichier sur le disque

On se balade dans un directory avec opendir, readddir, closedir

Comment on execute un programme ?

Programme : fichier qui contient du code

Process : Un programme chose qui s’execute (la plupart du temps) -> programme en cours d’execution

Sous Linux, on ne sait pas creer un nouveau process

syscall fork() : duplique le process courant
syscall wait(), waitpid() : Attend que le process duplique se termine
syscall execve() : Creer un nouvel espace memoire dans le process courant

pit_t pid = fork();
if (pid < 0)
    err(1, "unable to fork.");

if (pid)
{
    int rc = waitpid(pid/*...*/);
    // error checking/retry/etc
    return;
}

char *argv[] = 
{
    "rm",
    "toto.pyc",
    NULL
};

execvp(argv[0], argv);
err(1, "error"); // if execve is successful, this should not be read