SISTEMI
OPERATIVI
SISTEMI OPERATIVI
SISTEMI OPERATIVI
Un sistema operativo è un componente software
- Lo spooling (Simultaneous Peripheral Operation On-Line) consiste nello spostamento dei dati in un buffer (o in un disco fisico) in attesa di essere spostati verso il dispositivo che li deve elaborare.
- Nei sistemi operativi time-sharing il tempo di CPU viene assegnato ai vari job secondo un determinato algoritmo di scheduling stabilito dal sistema operativo.
Interruzioni
- Le interruzioni permettono il ritorno del controllo al sistema operativo.
- Tipicamente viene utilizzata la Interrupt Description Table (IDT) che è un array che contiene gli indirizzi delle rispettive routine nel codice del sistema operativo.
- Un'architettura che gestisce gli interrupt deve fornire supporti per il salvataggio dell'indirizzo dell'istruzione successiva al programma interrotto (PC) e dei valori dei registri di CPU.
Processi
- Un processo è un'applicazione attiva su un sistema time-sharing.
- Ogni processo ha associato
- dati su cui opera
- un contesto di esecuzione
- Un processo può generare altri processi figli.
System Call
- Il meccanismo delle syscall fornisce un'interfaccia per l'accesso al software del sistema operativo.
- Alcuni linguaggi come il C consentono l'invocazione diretta delle system call.
- Generalmente invocare a livello applicativo una syscall significa avere nel codice delle istruzioni di trap.
- Istruzioni particolari che modificano il flusso di esecuzione del sist. operativo.
Programmi Unix
Quando utilizziamo un programma il sistema operativo riserva un'area di memoria chiamato "Address Space".
- [Text] - Routine macchina e librerie linkate staticamente
- [Data] - Variabili globali inizializzate
- [BSS] - Variabili globali non inizializzate
- [Heap] - Area per allocazione dinamica (malloc)
- Utilizzato quando stack e data non sono sufficienti
- [Stack] - Controllo di flusso e variabili locali
Memoria Logica
SCANF e PRINTF
SCANF
- Vuole una stringa di formato (%d) che identifica un numero generico di informazioni da consegnare dal chiamante e la relativa tipologia.
- Per ogni informazione da consegnare scanf vuole la relativa locazione in memoria dove effettuare la consegna.
- Quando viene invocata scanf crea una syscall offerta dal sistema operativo che preleva i dati e salva in un buffer (regola bufferizzata).
- Se il formato di dati in buffer è corretto vengono salvati in memoria.
- Il valore di ritorno di scanf indica il numero di informazioni realmente consegnate.
PRINTF
- Come scanf, utilizza una stringa di formato per definire il messaggio da produrre, salve i dati in un buffer.
- Per ogni argomento richiesto in input da parte di printf un ulteriore parametro.
- Il valore di ritorno di printf corrisponde al numero di byte effettivamente scritturate il messaggio prodotto.
Schema di Bufferizzazione
scanf() printf()
INPUT BUFFER OUTPUT BUFFER
STRUTTURE DATI DELLA LIBRERIA
SYSTEM OPERATIVO
LIBRERIE STANDARD
- Standard di linguaggio
- Definiscono servizi standard per la programmazione permettono la portabilità dei software su piattaforme differenti.
- Ogni funzione di libreria invocata su volta le system call proprie del sistema operativo su cui si opera
- es. printf() WINDOWS WriteFile()...
- UNIX write()
- Standard di sistema
- Definiscono i servizi offerti da uno specifico sistema.
- Set dove syscall set funzioni di libreria specifiche
SISTEMI UNIX → STANDARD
SISTEMI WINDOWS
Kernel
Con la denominazione Kernel di un sistema operativo si intende l’insieme dei moduli software
- Gestione delle interruzioni
- Gestione della memoria
- Comunicazione tra processi
- Scheduling
Nel Kernel sono implementate un numero ristretto di funzionalità
Il sistema operativo vero e proprio mette a disposizione moduli software aggiuntivi a quelli interni al Kernel
Come ad esempio programmi per l’interazione con l'utente
Ambiente
Tipicamente i programmi applicativi vengono compilati secondo regole canoniche tali da generare
- Eseguibili formati da
- Codice vero e proprio (main)
un set di moduli software chiamati ambiente di esecuzione
Le funzioni d'ambiente eseguono task preliminari per far sì che il codice applicativo esegua poi correttamente e sotto certe precondizioni
Utilizzo dell’ambiente
- Rapporto tra il sistema operativo e il codice di startup di un app.
- Come mezzo per pilotare l’esecuzione di specifiche funzioni
-
Sistemi operativi - Appunti teoria
-
Appunti Fondamenti di Informatica teoria - sistemi di operativi
-
Sistemi Operativi - Appunti Teoria Seconda Parte
-
Appunti Sistemi operativi