Sistema Operativo PDF
Document Details
Uploaded by Deleted User
Università degli Studi della Campania Luigi Vanvitelli
Dott. Silvio Pardi
Tags
Related
Summary
Questo documento presenta una lezione sul sistema operativo, coprendo argomenti come la sua architettura, i componenti principali e le funzionalità di base di un sistema moderno.
Full Transcript
CORSO DI LAUREA IN TECNICHE DI RADIOLOGIA MEDICA PER IMMAGINI E RADIOTERAPIA CORSO DI: INFORMATICA Lezione N°4 Anno Accademico 2017/2018 Dott. Silvio Pardi Cos’è un Sistema Operativo Un moderno calcolatore consiste di Uno o...
CORSO DI LAUREA IN TECNICHE DI RADIOLOGIA MEDICA PER IMMAGINI E RADIOTERAPIA CORSO DI: INFORMATICA Lezione N°4 Anno Accademico 2017/2018 Dott. Silvio Pardi Cos’è un Sistema Operativo Un moderno calcolatore consiste di Uno o più processori single o multicore Molta memoria RAM (4-8 Giga per processore) Disco fisso Stampante Vari dispositivi di input/output La gestione di tutte le varie componenti necessita di uno strato software che prende il nome di Sistema Operativo o Operating System (OS). Components of a simple PC Outside world Video Hard drive USB Network controller controller controller controller CPU Computer internals (inside the “box”) Memory Priamide della Memoria Capacità Tempo di accesso < 1 KB Registers 1 ns Better 1 MB Cache (SRAM) 2–5 ns 256-512 MB Main memory (DRAM) 50 ns 1 TB Magnetic disk 5 ms Better > 1 TB Magnetic tape 50 sec L’obiettivo è creare una memoria molto ampia con una bassa latenza ovvero un tempo di accesso ridotto Soluzione: spostare dati tra livelli di memoria sempre più vicini alla CPU, creando l’illusione di avare un unica grande memoria con latenza estremente bassa. Cos’è un Sistema Operativo Un sistema operative è un programma che svolge il ruolo di intermediario tra l’utente e l’hardware che compone il computer. Gli obiettivi di un Sistema operativo sono: Controllare ed eseguire programmi Rendere il computer utilizzabile semplicemente Semplificare la configurazione Usare l’hardware in maniera efficiente. Cos’è un Sistema Operativo Movie WEB BROWSER TEXT EDITOR Email Palyer SOFTWARE USER MODE Interfaccia Utente KERNEL MODE Sistema Operativo Hardware Cos’è un Sistema Operativo Movie WEB BROWSER TEXT EDITOR Email Palyer SOFTWARE USER MODE Interfaccia Windows a finestre KERNEL MODE Windows 7,8,10 PC ASUS/ACER/HP/IBM/DELL Cos’è un Sistema Operativo Movie WEB BROWSER TEXT EDITOR Email Palyer SOFTWARE USER MODE GNOME/KDE KERNEL MODE Ubuntu/RedHat, Suse, CentOS PC ASUS/ACER/HP/IBM/DELL Cos’è un Sistema Operativo Movie WEB BROWSER TEXT EDITOR Email Palyer SOFTWARE USER MODE Interfaccia Drug and Drop KERNEL MODE Android/MACOS Samsung S7, Iphone X, Huawei, Nokia Servizi forniti da un sistema operativo Strumenti per la creazione di nuovi programmi Editors, compilatori, debugger. Strumenti per l’esecuzione e gestione di programmi Gestione della memoria Accesso in lettura e scrittura ai file Risolulzione di conflitti nella contesa di risorse. Sistemi di protezione per l’accesso ai dati. Visione classica di un sistema operativo 1. Resource Manager – Gestisce ed alloca le risorse hardware per le varie ttività. 2. Control program – Controlla l’esecuzione dei programmi utente e delle operazioni dei dispositive di Input ed Output (I/O) 3. Command Executer – Forinisce un ambiente per l’esceuzione di comandi dati dall’utente. Visione Moderna dei Sitemi Operativi: Virtual Machine Il sistema operativo è l’interfaccia tra l’utente e l’hardware che nasconde all’utilizzatore finale la complessità dell’hardware sottostante. Costruisce rappresentazioni di alto livello (virtuali) di risorse fisiche di basso livello (le cartelle per rappresentare aree di spazio disco, I file per rappresentare dati in memoria) OS è una collezione di software eseguiti dall’hardware che rappresentano la macchina fisica in maniera semplice, nascondendo la complessità delle operazioni di basso livello e consentendone l’utilizzo. Visione Moderna dei Sitemi Operativi: Virtual Machine Per pilotare l’hardware di un Hard Disk, di una stampante, di un monitor occorre parlare il linguaggio specifico dell’elemento in questione. Leggere un area di memoria da un disco occorre far ruotare i dischi andare con la testina nel settore e nella traccia relativi quindi iniziare la lettura. L’obettivo dei sistemi operativi è quindi nascondere queste operazioni agli utenti, facendo si che possano utilizzare l’hardware senza preoccuparsi delle operazioni di basso livello. La componente software che pilota uno specifico dispositivo si chiama DRIVER. I sistemi operativi gestiscono l’hardware attraverso i driver per conto dell’utente Cos’è un Sistema Operativo Programmi Utenti Beautiful Interface Sistema Operativo Interfacce mostruose HARDWARE Visione Moderna dei Sitemi Operativi Nella sua accezzione più estesa il sistema operativo si compone delle seguenti componenti: Kernel CLI (Command Line Interface) Utilities Il Kernel Il Kernel (nucleo) rappresenta la parte di sistema operativo che esegue la vera comunicazione con l’hardware e tutte le funzioni di controllo e di gestione delle risorse. Il Kernel contiene al suo interno i driver o li carica esternamente attraverso delle componenti aggiuntive chiamate moduli. Il Kernel è il cuore del sistema operativo La CLI (Command Line Interface) La CLI (Command Line Interface) è il primo software esterno al Kernel esso viene utilizzato dall’utente per inviare comandi alla macchina usando le interfacce semplificate. La command line è resa disponibile tramite dei software chiamati software di Shell (dall’ inglese conchiglia). La shell fornisce attende le istruzioni da riga di comando su una linea chiamata prompt. La shell a volte fa parte del Kernel stesso a volte fa parte del set di Utilities base del Sistema Operativo La CLI (Command Line Interface) Shell DOS di un sistema windows Prompt Shell Linux di un sistema ubuntu Prompt Le Utilities Sono i software base che accompagnano il sistema opearativo per svolgere compiti base quali ad esempio Verificare lo stato della rete Verificare lo stato dell’hard disk e l’occupazione dello spazzio Visualizzare l’occupazione della CPU o della memoria Installare altri software. Odierni sistemi operativi Sitemi proprietari: WINDOWS MAC OS Sistemi UNIX Berkeley Software Distribution (BSD) FeeBSD OpenBSD FreeNAS LINUX Redhat Centos Debian Ubutntu Suse ANDROID (linux embedded) Sitema Operativo Windows Microsoft Windows chiamato così per la sua caratteristica interfaccia grafica a finestre. Nasce come ambiente grafico al di sopra del sistema operativi MS-DOS e PC DOS. Diventa successivamente un sistema operativo a se con un kernel proprio a partire dalla versione WIN95-WindowsNT È software proprietario utilizzato per PC, Server, e smartphone. Alcune caratteristiche: E’ un sistema installabile su molti tipi di hardware E’ sistema è multitasking e multiutente. I file system utilizzati sono di tipo fat, fat32 e NTFS. Ha una cartella di sistema Windows 32 protetta ai utenti. Registro di sistema: database con le impostazioni, opzioni del sistema, Applicazioni Installate Unità a disco indicate con le lettere maiuscone C, D, E. I file di default vengono salvati nella cartella predefinita Documents and Settings. Mac OS MacOS in passato noto come Mac OS X è il sistema operativo proprietario sviluppato da Apple per i computer Macintosh. Combina l’interfaccia originaria del Mac OS, aggiornata negli anni, con l'architettura di un sistema operativo di derivazione UNIX della famiglia BSD. Alcune caratteristiche: E’ dedicato per hardware MAC (PC, Server Telefonini) E’ sistema è multitasking e multiutente. L’utente amministratore si chiama root macOS include tutte le più comuni utility di UNIX, Unix e software libero Unix è stato progettato nei Bell Laboratories (AT&T Corp.). sviluppato da Ken Thompson e Dennis Ritchie negli anni 70. Nel 1983 Richard Stallman lanciò un progetto GNU ("GNU's Not Unix"), per creare un sistema operativo UNIX like con l’obiettivo di fosse software libero, ossia garantisse completa libertà di utilizzo e modifica da parte di utenti e sviluppatori. Nel 1991 Linus Torvalds completò il lavoro e nacque GNU/Linux. Linux di fatto costituisce un Kernel che viene poi utilizzata da diversi gruppi per creare il proprio sistema operativo (ovvero la propria DISTRIBUZIONE di Linux) aggiungendo le utilities di controno. Unix e software libero Esistono molte distribuzioni di linux, alcune sono totalmente free, alter come RedHat hanno una parte Community e una parte proprietaria. / (directory root) |_ /home L’obiettivo di distribuzioni come RedHat o Suse è fornire |_ /usr supporto Enterprise alle aziende per software non |_ /lib commerciale come Linux |_ /etc Alcune caratteristiche: |_ /tmp E’ installabile su tutti i tipi di hardware |_ /var |_ /boot E’ sistema è multitasking e multiutente. |_ /dev L’utente amministratore si chiama root |_ /mnt I file system utilizzati sono di tipo ext3, ext3, xfs |_ /proc |_ /opt Vaire cartelle di sistema Cartella /etc on le configurazioni ed opzioni del sistema Unità a disco venngo «montate» sotto directory nominate dall’utente (defautl /mnt) SISTEMA OPERATIVO WINDOW 10 SISTEMA OPERATIVO MAC OS X SISTEMA OPERATIVO LINUX CON INTERFACCIA GRAFICA KDE SISTEMA OPERATIVO LINUX UBUNTU CON INTERFACCIA GRAFICA GNOME Il Sitema Operativo User Utilities Shell Kernel Hardware L’evoluzione dei sistemi operativi Devono adattarsi ai nuvi hardware Nuovi schermi Nuove schede grafiche Nuovi tipi di periferiche Nuovi tipi di porte Concetti Principali Processi Sincronizzazione Scheduling Deadlock Gestione della Memoria Gestionde dell’ I/O File systems Sicurezza e Protezione Sistemi distribuiti Programmi Un programma è un software che possiamo eseguire all’interno di un calcolatore, ad esempio il calcolo di una funzione il calcolo di una serie La correzione di un imagine La compressione di un file I programmi attivi in un computer vengono detti anche processi, job, o task Input/Output Input/Ouput o semplicemente I/O rappresentano le attivà di lettura e scrittura che vengono svolte da un calcolatore. Entrambe possono avvenire da o verso sistemi diversi Input: Da tastiera Da scanner Lettura da disco Ouptut Stampante Schermo Scrittura su disco Ci si riferisce a tutte queste attività come attività di I/O differenziandole dale attività di calcolo puro svolte dale CPU First generation: direct input Esecuzione di un programma per volta Inserimento del programma nel computer Esecuzione Prelievo dell’output Problemi: Molto tempo sprecato La CPU e la maggior parte delle risorse hardware risultano praticamente inutilizzate durante la prima e la terza fase. Rende I computer molto costosi Occorre ottimizzare l’utilizzo delle risorse Seconda generazione: batch systems a) Si portano le schede perforate per la registrazione su nastro b) Si scrive il contenuto delle schede su un nastro magnetico c) Si inserisce l’input nel calcolatore sotto forma di nastri d) Si esegue la computazione copiando l’output ancora su nastro e) Si portano i nastri alla stampante f) Si stampano i risultati Il concetto di Spooling I bach system originariamente utilizzavano sistemi a nastri In seguito i nastri sono stati sostituiti dai dischi L’operatore legge le schede riversandole nei dischi attaccati al computer Computer legge i jobs dai dischi Computer scrive il risultato dei job su disco L’operatore stampa direttamente i risultati I dischi consentono di implemetare il concetto di Simultaneous Peripheral Operation On-Line (spooling) Computer può sovrapporre le attività di I/O di un job con l’esecuzione di un altro Migliore utilizzazione delle CPU Un solo job attivo per volta Terza generazione: multiprogramming Più processi in memoria contemporaneamente Il Sistema Operativo protegge ogni job dall’altro processo 3 per evitare interferenze, Le risorse (time, hardware) vengono divise tra più processo 2 processi Partizionamento Non c’è interattività Della Memoria processo 1 L’utente sottomette un job Computer lo esegue L’utente recupera l’output successivamente Operating system Timesharing Il paradigma del Multiprogramming consente l’esecuzione di più job sulla stessa macchina. Ma tuttavia se un processo in esecuzione è impegnato in attività di I/O la CPU non lavora e il tempo di CPU viene ad essere sprecato. Utilizzo della CPU Proc 1 I/O Proc 1 I/O Proc 1 End Proc1 Proc 2 I/O Proc 2 End Proc2 TEMPO Timesharing Il time sharing è il paradigma di utilizzo delle risorse che prevede la possibilità di dedicare la CPU a più processi dedicando una finestra temporale a ciascuno di essi. In questo modo è possibile ottimizzare l’utilizzo delle risorse di calcolo Utilizzo della CPU Proc 1 I/O Proc 1 I/O Proc 1 End Proc1 Proc 2 I/O Proc 2 End Proc2 TEMPO Timesharing Ogni utente ha l’impressione che la macchina stia lavorando per il suo processo. In verità c’è una divisione temporale delle risorse. Passare da un processo all’altro è chiamato context switching Utilizzo della CPU Proc 1 I/O Proc 1 I/O Proc 1 End Proc1 Proc 2 I/O Proc 2 End Proc2 TEMPO Il Multitasking Con il termine multitasking si riferisce alla capacità di un calcolatore di eseguire più processi contemporaneamente in maniera indipendente dal numero degli utenti che lavorano sulla macchina o dal numero di processori o core. Oggi tutti i sistemi operativi moderni offrono degli ambienti multitasking che consentono di eseguire più programmi, magari tenendone qualcuno attivo o qualcuno in background. Il time-sharing è dunque uno dei modi per realizzare il multitasking. CPU internals Execute Fetch Decode unit unit unit Fetch Decode Execute Execute Buffer unit unit unit unit Fetch Decode unit unit Execute unit Pipelined CPU Superscalar CPU I moderni sistemi operativi Windows (7,8, 10) Linux RedHat Debian Ubuntu Suse Centos MacOS I Processesi I processi sono dei programmi in esecuzione: Spazio di memoria Uno stato (registeri, contatori, stack pointer) A I processi possono creare a loro volta dei sottoprocessi detti anche tread, o coroutine a secondo del metodo di programazione. Si crea B C D così un albero di relazioni. Nella figura A è il processo ROOT (radice) del TREE (albero) detto processo E F G padre A crea 3 child (Figli) processi: B, C, e D C crea 2 child : E and F D crea 1 child : G Il Sistema Operativo tiene traccia di tutti i processi in una tabella apposita Memoria di un processo 0x7fffffff I processi hanno tre segmenti di memoria: Stack Text: Codice del programma Data: I dati del programma Stack Informazioni delle chiamate Variabili automatiche Crescita dello spazio di memoria di un processo Text: resta costante Data Data Data: Cresce Stack: Decresce Text 0 Elaborazione dei processi Due modalità possibili Parallela Concorrente Elaborazione Parallela di un processo. L'elaborazione parallela dei processi consiste nell'eseguire interi processi o parti di essi in modalità parallela. Un processo può creare dei sotto processi figli attraverso la funzione chiamata FORK, che possono proseguire in maniera indipendente dal padre e da altri processi figli, quindi in parallelo. I processi figli hanno quindi un loro spazio di memoria e delle loro risorse. Esempio: Un processo crea tre immagini che invia in maniera parallela a tre stampanti diverse. Elaborazione Concorrente di un processo. Un elaborazione viene definita concorrente quando due o più processi accedono alle stesse risorse oppure quando la fine di un processo consente l’inizio di un altro processo. Il Sistema Operativo si occupa di risolvere le problematiche di contesa di accesso a risorse condivise impedendo che processi entrino in conflitto tra di loro. In tale ambito il sistema operativo garantisce la protezione della aree di lavoro dei processi ed evita l'interferenza tra questi ultimi, evitando così perdite di dati. Esempio: Due processi scrivono sulla stessa stampante, oppure un processo elabora un immagine prodotta da un processo precedente. Inter Process Comunication (IPC) Ogni processo agisce in maniera sequenziale. Tutto prosegue senza problem finquando il processo non vuole scambiare informazioni con un altro processo. Con il termine Inter-Process Communication o IPC alle tecnologie software il cui scopo è consentire a diversi processi di comunicare tra loro scambiandosi dati e informazioni. I processi possono risiedere sullo stesso computer o essere distribuiti su una rete. Tutti i sistemi operativi multitasking forniscono qualche meccanismo fondamentale di IPC Inter Process Comunication (IPC) Lo scambio di informazioni tra due o più processi viene realizzato attraverso due primitive: Send: che consente l'invio dell'informazione Receive: che consente di ricevere le informazioni Un esempio tipico di comunicazione tra processi in rete viene presentato nell'architettura client/server. Deadlock Il deadlock o stallo è una condizione che si verifica quando uno o più processi rimangono indefinitamente in stato di attesa, a causa del non verificarsi delle condizioni necessarie per loro proseguimento. Esempio Nel sistema sono presenti due stampanti. Due processi P1 e P2 si sono assicurati una stampante ciascuno ed entrambi richiedono di utilizzare anche l’altra. Esempio leggi Ferroviarie del Kansas Testo della legge stato del Kansas inizi XX secolo: “When two trains approach each other at a crossing, both shall come to a full stop and neither shall start upon again until the other has gone ” “Quando due treni convergono ad un incrocio, entrambi devono fermarsi e nessuno dei due può ripartire prima che l’altro si sia mosso” Risoluzione dei deadlock In un codice il deadlock deve essere evitato del programmatore scrivendo il codice accuratamente. In un sistema multitasking il sistema operativo può agire in vari modi intervenendo sulle politiche possesso e di attesa per una risorsa. Inserire criteri di prelazione o di priorità Scheduling Quando ci troviamo difronte a un calcolatore con più CPU, con più core o a lavorare su un insime di calcolatori, la potenza di calcolo può essere gestita tramite delle code (queue in inglese). Le code forniscono una lista di processi da mandare in esecuzione. Se dei processi devono utilizzare il core interamente o anche più core contemporaneamente si deve eseguire una distribuzione sapiente dei processi sulle CPU/core. Tale processo si chiama Scheduling. I sistemi che lavorano in questo modo si dicono sistemi batch che sono alternativi ai sistemi interattivi. Scheduling Lo scheduling è l’attività di distribuire processi sulle CPU o core disponibili di un calcolatore o di più calcolatori. Gli obiettivi dello scheduling sono: Massimizzare l’utilizzo dei processori High throughput Massimizzare il numero di processi completati nell’unità di tempo. Low response time Diminuire il tempo tra la sottomissione di un job e la sua esecuzione completa Queuing Diagram for Scheduling Caratterizzazione di regole/policy di Scheduling Selection Funcion: La funzione che determina quale tra i processi disponibili deve entrare in esecuzione Decision mode: specifica l’istante temporale in cui viene applicata la funzione di selezione: Nonpreemptive Una volta che un processo è iniziato, esso proseguirà fino al termine di esso Preemptive Processi attivi possono essere interrotti e sospesi e poi riattivati. Previene il monopolio di una CPU da parte di un processo Dispatcher Il dispatcher è la funzione che assegna il controllo della CPU al processo selezionato per andare in esecuzione. Le funzioni del dispatcher includono: Switching context Memory Jumping saltare nell’area di memoria del processo La latenza del dispacther deve essere minima. I cilci di CPU ed I/O Un processo richiede alternativamente l’uso del processore e l’uso di risorse di I/O Ogni ciclo consiste di un burst di uitlizzo della CPU seguito da un attività di I/O burst Un processo termina con un CPU burst Scheduling Algorithms First-Come, First-Served Scheduling Shortest-Job-First Scheduling Priority Scheduling Round-Robin Scheduling First Come First Served (FCFS) Selection function: Il processo che ha atteso di più in coda è il prossimo ad andare in esecuzione. Decision mode: non-preemptive Un processo gira fino al termine Shortest Job First (Shortest Process Next) Selection function: Il processo che richiede minor tempo di utilizzo della CPU viene eseguito per primo. Decision mode: non-preemptive Occorre tuttavia stimare apriori il tempo di utilizzo della CPU da parte del processo. Shortest Job First (Shortest Process Next) Problemi E’ possibile che job lunghi non vadano mai in eseruzione La mancanza di preemption è sconsigliata. SJF/SPN incorpora implicitamente delle priorità I job più brevi hanno la precedenza. Priorities Si implementa creando delle code multiple ognuna con uno specifico livello di priorità Lo scheduler predilige job ad alta priorità rispetto ai job in bassa priorità. I processi a bassa priorità rischiano di non essere mai eseguiti. Per alleviare questo problema le priorità cambiano in maniera dinamica privilegiando i job che stanno da molto tempo in coda. Round-Robin Selection function: La stessa del FCFS Decision mode: preemptive Un processo viene eseguito per un certo period di tempo ( tipicamente 10 - 100 ms)