Cosa è un sistema operativo? • È un programma (o un insieme di programmi) che agisce come intermediario tra l’utente e l’hardware ddeell ccoommppuutteerr:: – fornisce un ambiente di sviluppo e di esecuzione per i programmi applicativi – fornisce una visione astratta dell’HW – gestisce efficientemente le risorse del sistema di calcolo SO e Hardware • SO interfaccia programmi applicativi o di sistema con le risorse HW: – CPU – memoria volatile e persistente – dispositivi di I/O – connessione di rete – dispositivi di comunicazione - … • SO mappa le risorse HW in risorse logiche, accessibili attraverso interfacce ben definite: – processi (CPU) – file system (dischi) – memoria virtuale (memoria)… Componenti principali SO • Quali sono le componenti di un SO? – gestione dei processi – gestione della memoria centrale – ggeessttiioonnee ddii mmeemmoorriiaa sseeccoonnddaarriiaa ee ffiillee system – gestione dell’I/O – interfaccia utente/programmatore Processo • Processo = programma in esecuzione – programma è un’entità passiva (un insieme di byte contenente le istruzioni che dovranno essere eseguite) • • iill processo èè un’’enttiittàà attttiiva: – è l’unità di lavoro/esecuzione all’interno del sistema. Ogni attività all’interno del SO è rappresentata da un processo Processo = programma + contesto di esecuzione (PC, registri, …) Gestione dei processi • In un sistema multiprogrammato: più processi possono essere simultaneamente presenti nel sistema • Compito cruciale del SO – creazione/terminazione dei processi – sospensione/ripristino dei processi – sincronizzazione/comunicazione dei processi – gestione del blocco critico (deadlock) di processi Gestione Memoria Centrale • HW di sistema di elaborazione è equipaggiato con un unico spazio di memoria accessibile direttamente da CPU e dispositivi • CCoommppiittoo ccrruucciiaallee ddii SSOO – separare gli spazi di indirizzi associati ai processi – allocare/deallocare memoria ai processi – memoria virtuale - gestire spazi logici di indirizzi di dimensioni complessivamente superiori allo spazio fisico – realizzare i collegamenti (binding) tra memoria logica e fisica Gestione I/O • Gestione dell’I/O rappresenta una parte importante di SO: – interfaccia tra programmi e dispositivi – ppeerr ooggnnii ddiissppoossiittiivvoo:: ddeevviiccee ddrriivveerr – routine per l’interazione con un particolare dispositivo – contiene conoscenza specifica sul dispositivo (ad es., routine di gestione delle interruzioni) Gestione file system • Ogni sistema di elaborazione dispone di uno o più dispositivi per la memorizzazione persistente delle informazioni (memoria secondaria) • CCoommppiittoo ddii SSOO – fornire una visione logica uniforme della memoria secondaria (indipendente dal tipo e dal numero dei dispositivi): – realizzare il concetto astratto di file, come unità di memorizzazione logica – fornire una struttura astratta per l’organizzazione dei file (direttorio) – Effettuare operazioni su file e direttori Interfaccia Utente • Ogni sistema di elaborazione dispone di uno o più SO che presenta un’interfaccia che consente • l’interazione con l’utente – interprete comandi (shell): l’interazione avviene mediante una linea di comando – interfaccia grafica (graphical user interface, GUI): l’interazione avviene mediante interazione mouse-elementi grafici su desktop; di solito è organizzata a finestre Shell • Programma che permette di far interagire l’utente (interfaccia testuale) con SO tramite comandi – resta in attesa di un comando… – … mmaannddaannddoolloo iinn eesseeccuuzziioonnee aallllaa pprreessssiioonnee ddii <ENTER> • In realtà shell è un interprete comandi evoluto – potente linguaggio di scripting – interpreta ed esegue comandi da standard input o da file comandi Differenti Shell • La shell non è unica, un sistema può metterne a disposizione varie – Bourne shell (standard), C shell, Korn shell, … – L’implementazione della bourne shell in Linux è bash (/bin/bash) – OOggnnii uutteennttee ppuuòò iinnddiiccaarree llaa sshheellll pprreeffeerriittaa – La scelta viene memorizzata in /etc/passwd, un file contenente le informazioni di tutti gli utenti del sistema • La shell di login è quella che richiede inizialmente i dati di accesso all’utente – Per ogni utente connesso viene generato un processo dedicato (che esegue la shell) Ciclo di esecuzione shell loop forever <LOGIN> do <ricevi comando da file di input> <interpreta comando> <esegui comando> while (! <EOF>) <LOGOUT> end loop Accesso al sistema: login • Per accedere al sistema bisogna possedere una coppia username e password – NOTA: UNIX è case-sensitive • Il SO verifica le credenziali dell’utente e manda in esecuzione la sua shell di preferenza, posizionandolo in un direttorio di partenza – Entrambe le informazioni si trovano in /etc/passwd • Comando passwd – È possibile cambiare la propria password di utente, mediante il comando passwd – Se ci si dimentica della password, bisogna chiedere all’amministratore di sistema (utente root ) Uscita dal sistema: logout • Per uscire da una shell qualsiasi si può utilizzare il comando exit • Per uscire dalla shell di login – llogoutt – CTRL+D (che corrisponde al carattere <EOF>) – CTRL+C • Per rientrare nel sistema bisogna effettuare un nuovo login Comandi • Ogni comando richiede al SO l’esecuzione di una particolare azione • I comandi principali del sistema si ttrroovvaannoo nneellllaa ddiirreeccttoorryy //bbiinn • Possibilità di realizzare nuovi comandi (scripting) • Per ogni comando, shell genera un processo dedicato alla sua esecuzione Comandi come filtri • comandi UNIX si comportano come FILTRI – un filtro è un programma che riceve un iinnggrreessssoo ddaa uunn iinnppuutt ee pprroodduuccee iill rriissuullttaattoo ssuu uno o più output Standard Standard FILTRO Output Input Default: tastiera Standard Error Default: monitor Manuale • esiste un manuale on-line (man), consultabile per informazioni su ogni comando Linux. Indica: – formato del comando (input) e risultato atteso (output) – ddeessccrriizziioonnee ddeellllee ooppzziioonnii – possibili restrizioni – file di sistema interessati dal comando – comandi correlati – eventuali bug • per uscire dal manuale, digitare :q (sta per quit) Formato Comandi • tipicamente: nome –opzioni argomenti • esempio: ls –l temp.txt • convenzione nella rappresentazione della sintassi comandi: – se un’opzione o un argomento possono essere omessi, si indicano tra quadre [opzione] – se due opzioni/argomenti sono mutuamente esclusivi,vengono separati da | arg1 | arg2 – quando un arg può essere ripetuto n volte, si aggiungono dei puntini arg... File • File come risorsa logica costituita da sequenza di bit, a cui viene dato un nome • Astrazione molto potente che consente di ttrraattttaarree aalllloo sstteessssoo mmooddoo eennttiittàà ffiissiiccaammeennttee diverse come file di testo, dischi rigidi, stampanti, direttori, tastiera, video, ... – Ordinari • archivi di dati, comandi, programmi sorgente, eseguibili, … – Directory • gestiti direttamente solo da SO, contengono riferimenti a file – Speciali • dispositivi hardware, memoria centrale, hard disk, ... Nomi File • È possibile nominare un file con una qualsiasi sequenza di caratteri (max 255), a eccezione di ‘.’ e ‘..’ • ÈÈ ssccoonnssiigglliiaabbiillee uuttiilliizzzzaarree ppeerr iill nnoommee ddii ffiillee ddeeii caratteri speciali, ad es. metacaratteri e segni di punteggiatura • Ad ogni file possono essere associati uno o più nomi simbolici (link) ma ad ogni file è associato uno e un solo descrittore (i-node) identificato da un intero (i-number)
Description: