Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
Appunti Sistemi Operativi
(Tenere ordinato)
Sistemi Operativi
26/06 Programmazione - 17/07: Programmazione
27/06 Scritto - 18/07: Scritto
Interrogio lunedì 16-18 / Aula A1
Francesco Arguola gitehub.io
Sistema Operativo
È modulo software, chi "maschera" l'hardware. Tutto il software viene eseguito
nell'hardware. Colleziona di moduli software: nello schema a piramide è
"impaginato" nelle celle sottostanti.
Base Software a disposizione sviluppano nuovi programmi.
Routine sistema operativo vengono utilizzate da altre routine,
da non recapitano in questo modo. Salto su un sistema del SO.
Utilities no software applicativo. Es. libreria di programmazione (stdio.h, stdio.acc).
Nemmeno software sistema operativo, dunque non privilegiato.
Sistemi Embeded scelto sistema operativo ad utile uso ed esegue sull'hardware.
Risorse virtuali
Fa finta non esiste funzionamento, dunque astrarre e virtualizzazione delle
risorse. Il SO comunica con l'hardware. Le risorse sono virtualizzate.
Tante risorse virtualizzate SO può distribuire qualunque risorse:
Hardware distribuisce anche la CPU, quindi permette l'esecuzione in
parallelo di più applicazioni. Più applicazioni attive, ed intervallo
d'llavoro: sistemi concessi accesso alle varie applicazioni (Time-Sharing).
Dice a tutti i programmi chi è disponibile di una CPU.
Elaborazione seriale
Esecuzione di uno singolo programma per volta. (Anni 40-50)
Output perforazione schede (Univac).
Sperco di tempo: latenza hardware perché non funziona relativamente
più con piccoli mancanzi di tempo in quando risorse ed
hardware non utilizzati. Memoria cancella in ritorbo hardware
Sistemi operativi Batch
Salvavano Sistema ⇢ Seguevano applicativo ⇢
⇣⇡ monitor
RAM divisa in monitor e applicativi opertivi. Il monitor stesso
gestisce l'esecuzione dei programmi ed isera chiamata al diversa
internazione automata con dispositivo hardware. Problemi:
fondamentali, e Programma ⇢ Interasata con Identistici.
Sistemi Operativi
Buffering (Concetto)
Utilizzo più memoria di quella che abbiamo a disposizione. Vado a sfruttare delle locazioni di memoria. Si crea uno "spacchettamento" in quanto sfrutto il dato che già possiedo a partire da un indirizzo, ma non abbiamo informazioni riguardo al limite di scrittura.
Sia il momento deprecato per questi motivi:
- Buffer interno - Numero di byte trovati tra l'input e il tipo di dato che si "spezza".
Sistemi operativi (Scanf - Printf)
Schema Buffered I/O - Esistono vari sistemi per immagazzinare parametri che verranno poi posti. Buffer della libreria memorizza temporaneamente dentro la struttura libreria.
Temporaneamente quanto? GCC: Linux fino a quando non essermi immerso. Un altro parametro
- Scanf - "accettare qualsiasi %X" -> L'input deve essere della forma "accettare qualsiasi "
- \n quando penso finito
fflush() - Servizio per gestire input ed output della libreria standard.
fflush(stdout) - Svuota l'output_buffer ed invia il suo contenuto al sistema operativo.
fflush(stdin) - Comportamento inimplementato (quanti input voglio eliminare?)
Viscere modifica vide elementi a ordine prima dell'input
#define - Direttiva al pre-compilazione (stringa:argomento -> denominazione) quando trova la stringa:argomento, sostituisce con la denominazione.
COULS compilazione
printf() - Valore return - numero di bytes scritti al termine dell'output beneficioso (1 byte carattere)
Uso alla funzione dei pattern (stringa, costanti)
Strutture - Costrutto che permette di accaponare minimi area di memoria inesorri a struttura eterogenea (formati diversi):
- Nome variabile, p.a
- Puntatore - p.p.a
(*p[i]) - Salto una struttura L puntatore ad una struttura
System Call
Funzione standard con parametri: puntatore o non puntatore
- Parametri gestiti preamble (es) concatenate (registro processo)
- Instruzioni al Sistema operativo per accedere alla locazione di memoria (Functorial - legge e ste)
Chiamata tramite syscall lecita a software esterno
Valore return syscall
Possaggi tramite syscall
- Hardware commun ferita CPU modalità kernel, accenna ad arriver in memoria prima inaccessibile
- Algoritmi (Stato dei registri da ripristinare)
- Informazioni: Scheduling, Time Sharing
- Eventi attesa (In caso di Wait)
- Running Queue: è la lista PCB applicazioni attualmente in esecuzione.
- In generale la lista PCB processi non verrà detta Job. A due processi: e scheduling. Viene bloccata diversa in particolare, in quanto le motivazioni dei vari possono essere differenti.
- Dimensione è limitata aiuta a diminuire la complessità computazionale, in quanto posso gestire applicazioni in un singolo dato, piuttosto che guardarle tutte.
- Pianificazioni RAM e pianificazioni CPU.
- Cambio-modo: da User mode a Kernel mode per una di un interrupt. Stessa applicazione in esecuzione, cambia la modalità di esecuzione. Siamo sempre nel contesto della stessa app.
- Cambio contesto: cambia il contesto dell’applicazione in esecuzione, dunque viene salvato l’attuale modo di esecuzione e viene ripassato quello di un nuova applicazione. È totalmente diversa.
- Kernel Daemons: Applicazioni che risuonano solamente in kernel mode.
- Diagramma stati: Linux (5 Slide).
- Contesto utente - > User, Dati, Stack Utente, Memoria condivisa.
- Contesto registri ->
- Contesto sistema->
Startup Unix
- Kernel caricato in memoria.
- Al riavvio processo init (‘ pid = 0’), che lancia l’esecuzione del processo ‘ simplda systemd’ (‘ pid=1’).
- Init legge alcuni file di configurazione nel numero di terminali da gestire. Su ogni terminale lancia a ‘getty’ che si impossessa delle attività di IO del terminale.
- Getty lancia login e credenziali controllo, e partiti a ‘shell’ (es. Bash) o Ambiente grafico oggi.
- Sysnetcall fork unica un esegue per creare un nuovo processo. Nuovo processo è un clone del padre, quindi teso contenendo di memoria. Entrambi i processi riposano dall’istruzione successione alla trap.
Sistemi Operativi
- Rappresentazione stringhe in Windows: (2 byte carattere a livello Kernel = TCHAR).
- ASCII
- Unicode = Minima condizione più ampio.
- TCHAR o Wchar in base a come è impostato l'ambiente di compilazione
Wchar_t onechar = L'X' = 2 byte carattere.
Mono Text - Rappresentazione dipende sempre dall'ambiente di compilazione
- Tchar_message (_T-text("Ciao a tutti"))
- Getenv (stringa) - > non conoscendo la rappresentazione, per questa funzione (API)
- Wprintf - > funzione che accetta stringhe codificate in Unicode. (Sempre L prima)
- Wcslen - > Uguale come sopra.
- TerminateProcess - > Terminazione processo con un codice di terminazione definito
Win32-console application - > Tipo di progetto. Starta attivano la console. Finestra eventi.
Variabili Ambiente - > Tutto sulle slide.
- Visible su Windows a partire da un indirizzo di memoria, consecutiva segnata da 0. Il termine è segnato con \0\0.
Threads
- Store Address Space
- Più tracce di esecuzione allo stesso tempo (sessione testo) - > multi-thread.
- Problema sincronizzazione - > singoli thread per l'accesso alla memoria.
- Solamente un thread maggiore, chiama un servizio bloccante, ma le altre tracce continuano a lavorare. - > Ottimo anche su single core.
- Due aree di stack separate per i loro thread, dunque anche due stack a livello di sistema.
- PCB sempre presente per volto al processo, ma anche TCB per ogni singolo thread.
Applicazione senza concorrenti. (Multi-Thread).
- Poca lavoro può essere lanciato su thread piuttosto che un processo.
- Thread con t x: - > Esiste una variabile per ogni thread
- Address space comunque disponibile a tutti i thread, dunque posso accedere alle variabili di altri thread tramite puntatori.
- Problema sincronizzazione!
Thread Windows - > Sempre entità, dunque oggetto