• Aucun résultat trouvé

interuption, Multiprogrammation, Spooling, Hiérarchie de mémoire, Mémoire virtuelle, Caches, Multi-tâches interactif (quantum), Systèmes distribués (sockets), JVM Bootstrap: Mini-chargeur pour charger le chargeur, maintenant dans le BIOS

N/A
N/A
Protected

Academic year: 2022

Partager "interuption, Multiprogrammation, Spooling, Hiérarchie de mémoire, Mémoire virtuelle, Caches, Multi-tâches interactif (quantum), Systèmes distribués (sockets), JVM Bootstrap: Mini-chargeur pour charger le chargeur, maintenant dans le BIOS"

Copied!
1
0
0

Texte intégral

(1)

Système d'exploitation: Une couche de logiciel qui gère le matériel afin d'offrir les services requis par les autres programmes.

Objectifs OS: Ergonomie (gère parallélisme), Efficacité (+débit: gestion ressources, -temps de passage), Évolutif(tailles disquettes, +adressage) Fonctions OS: Gestion périph. (Interruptions), Gestion des fichiers (Espace, lien nom-adresse, sécurité), Gestion Mem(espace, sécurité), Interface

usager(shell ou fenêtres), Gestion parallélisme(process), Comm entre process(télécom, réseau), Protection et partage(bits de protection, Comptes usager), Performance(comptabilité, mesure), Utilitaires(librairies math, compilateur, assembleur, éditeur de liens, date/time), Boot

 Abstraction des ressources et partage des ressources ||| Offrir machine abstraite aux applic. + Gérer ressources(Driver/Partage/Sécurité) Niveaux d'abstraction: Humain  Application  OS interface  TrustedOS  Hardware

deamon: user space application qui implémente une fonction de l'OS.

Historique: Eniac(1950, 200octets, 5k add/s), IBM1401(1960, 16k, disque 10meg@100ms, modem 300cps), Next(1985, 3M) Évolution:Chargeurs & Bootstrap, IOCS (pilotes), Fichiers, Shell, Monoprogrammation BATCH,

!!!EFFICACITÉ!!!  Parallélisme/process: ES complexes: canaux (DMA) & interuption, Multiprogrammation, Spooling, Hiérarchie de mémoire, Mémoire virtuelle, Caches, Multi-tâches interactif (quantum), Systèmes distribués (sockets), JVM Bootstrap: Mini-chargeur pour charger le chargeur, maintenant dans le BIOS. BIOS=Bootstrap+chargeur+IOCS(pilotes)

Parallélisme: ES complexes: canaux (DMA) & interuption, Multiprogrammation, Spooling (politiques!), Hiérarchie de mémoire, Mémoire virtuelle, Caches, Multi-tâches interactif (quantum), Systèmes distribués, JVM

Multiprogrammation: Mais (plus de mémoire, plus de périphériques pas partageables)

Besoins(Protection mémoire, Parallélisme [Canaux], Commutation de tâche, Interruptions) Multiplexage (mémo): CPUtime, MEMspace

Hardware pour OS: [ protection et efficacité ] DMA, Bootstrap, Protection mémoire (Registres spéciaux),

Instructions privilégiées (mode système/usager), Aide à la commutation (Interruptions), Switch PSW, Test&Set,

Protection mémoire:Base (RB), Limite (LIM),  Registre M/U (maître/usager) pour les protèger.

Context switching (commutation de tâche): Sauvegarder sur pile (SP:stack pointer), Charger autre... RB+LIM (système) +CO+SP+... (usager) Instruction XPSW (...)

version bridée avec PSW source et PSW destination pré-déterminés pour mode usager.

PSW: Process States Words, (registres critiques, pour le matériel) / PCB: Process Control Block. (descripteur de process, pour le système) Vecteur d'interruption: Zone mémoire fixe avec un mot par type d'interruption où l'OS doit mettre l'adresse d'une méthode pour la traiter.

Interruptions: E/S (Changement d'état périph. [fin, erreur, ...], Horloge)

Erreurs (Usager [division par 0 / adressage illégal / instruction illégale], Machine [panne, parité])

Note: Trap pe ou Supervisor Call (SVC) une des instructions illég. permet demander service (mis code et param. ds registres).

Masquage: registre pour masquer avev un bit par type d'interruption OU 3 modes: Usager / Système / Noyau (Noyau = Système+non-interruptible)

PSW: État vu du matériel

PCB: [table 6.3]  PSW (...), Ident(PID), Relations(PPID [parent], proprio [UID/GID], enfants+threads), Ressources(mem, fichiers, périph, tampons), Variables shell ($HOME,$PWD), Comptabilité(priorité, #E/S, tempsCPU, heureDébut), État grossier (Actif/Attente(pkoi), Libre(mort) Process: Création, Lancement, Mort, Arrêt/Reprise (volontaire[service?] involontaire[fin quantum])

Thread: TCB // Proc léger; partage mem et ressrc, parall ds même proc. // UserThread: illim, si bloque switch PCB | KernelThread: lim, si bl. sw TCB Synchro: (...) Compétition+Collaboration... Attendre résultat. BUG: instruction atomique!?

Solution d'inhiber interruption pas Ok si + d'un CPU ET perte de temps (attente active) ET besoin instruction privilégiée pour inhiber.

mutex: mutual exclusion

Sémaphore (Dijkstra 1965): P(wait) V(signal) et INIT Garanties: atomique et ok multiproc. || Ne peut en connaître directement la valeur Producteur – Consommateur:

var: sema msg init 0, place init n, mutex init 1;

prod:cycle cons:cycle

--- P(msg)

--- P(mutex)

<produire> x  get du tampon

--- V(mutex)

P(place) V(place)

P(mutex) ---

<put x dans tampon> <consommer x>

V(mutex) ---

V(msg) ---

--- ---

end end

Implantation sémaphore:

Lecteur – Rédacteur: (Readers&Writers)

var: int NL=0; sema accesBD init 1, accesNL init 1;

lire: écrivain:

P(accesNL) P(accesBD)

NL++; <écriture>

if NL == 1 then P(accesBD) V(accesBD) V(accesNL)

---

<lecture>

--- P(accesNL) NL--;

if NL == 0 then V(accesBD) V(accesNL)

sema: record int N;

boolean lock = false;

end;

P(s) { V(s) {

Label: while lock.TAS() do …; while lock.TAS() do …;

if N <= 0 { N++;

lock = false; lock = false;

goto Label; }

} N--;

lock = false;

}

fork&co: fork (copie+go) [pid=fork(); =0 pour fils] // execl et execv (switch sur nouveau code) // system (appel via shell [bloque en attendant retour]

wait: retourne -1 s'il n'y a plus de fils et bloque tant qu'un processus ne sort pas... waidpid...

fork: 1-Allocation de PCB2 2-Duplication mem usager 3-Copie PCB 4-PCB2  «Prêt» 5-Dispatch

exec:1-Allouer espace pour CODE 2-Charger «p2» 3-Nettoyer DATA 4-Initialiser CO + Stack (SP) 5-Dispatch write(1, STRING_TO_WRITE, strlen(STRING_TO_WRITE));

char* getenv(const char* name)

int rand(void) void srand(unsigned int seed)

int pthread_create(pthread_t* thread, pthread_attr_t* attr, void* (*start_routine)(void*), void * arg) int pthread_join(pthread_t th, void** thread_return)

void pthread_exit(void* retval) time(NULL): wallclock clock(): CPU

kill –SIGNAL pid // kill(pid,sig) // void signal( int signum, void (*handler)(int) ) ex.: sigset( SIGINT, handlerINT ); // signal=prochain, sigset=permanent DIAGRAMME DES ÉTATS GROSSIERS: P.222

Références

Documents relatifs

Nous n’apprenons pas seule- ment qu’il y avait un camp spécial SS dans le Hunsrück, 30 km à l’est de Trèves, qui remplissait plusieurs fonctions de 1939 à 1945:

Et puis, dans cette optique de la responsabilité éthique et éditoriale qu’implique la numérisation des savoirs, nous nous sommes demandés comment la

Elle permet de combiner la minimisation de la latence d’accès aux données grâce aux mémoires caches privées et la réduction du nombre de défauts de cache en autorisant, comme

Valgrind est un programme approprié pour notre analyse mais nous avons vu précédemment que les outils existants ne permettent pas de la réaliser en un temps raisonnable ; nous

Comme dit précédemment, lorsqu'un processus souhaite accéder à une page mémoire, l'adresse virtuelle doit être traduite en adresse physique.. Cette transformation

Lorsque les pages candidates au remplacement sont locales au processus souffrant du défaut de page et que le nombre de cadres alloué est fixe, les expériences montrent que:. Si peu

Les directives médicales anticipées consistent en un écrit par lequel une personne majeure et apte à consentir à des soins indique, à l’avance, les soins médicaux qu’elle

« photographie absolue » (la photo jamais prise), la photographie se présente sans ambiguïté comme déclencheur de tout le projet. On pourrait certes penser que de l’album