SISTEMIOPERATIVI GiorgioGiacinto2015 Struttura dei Sistemi Operativi 2 SistemiOperativi GiorgioGiacinto2015 Panoramicadeiservizidel sistemaoperativo 3 GiorgioGiacinto2015 SistemiOperativi 4 SistemiOperativi Cos’èunachiamataal sistema? » IlSOmetteadisposizioneisuoiserviziai programmiutenteattraversofunzioni(C,C++…) ˃ Alcuneporzionipotrebberoesserescrittein assembly GiorgioGiacinto2015 » IlprogrammatoreinteragisceconilSOtramite API (ApplicationProgrammingInterface) ˃ Funzioniinlinguaggiodialtolivello(C,C++,…) ˃ SintassistandarddelleAPI(POSIX,Win32) » UnserviziodelSOtramiteAPIpuòcoinvolgere piùdiunachiamataalsistema 5 SistemiOperativi GiorgioGiacinto2015 Servizi delsistema operativo e chiamate alsistema Copia di dati da un file a un altro SistemiOperativi 6 API Unesempio GiorgioGiacinto2015 » read() - APIUNIX- Linux ˃ int fd – descrittorefiledacuileggere ˃ void *buf - bufferincuiscrivereidatiprovenientidaifile ˃ size_t count - numeromassimodibytedatrasferiredalfileal buffer Lafunzioneritornailnumerodibyteeffettivamenteletti 7 SistemiOperativi GiorgioGiacinto2015 Chiamataalsistemaopen() 8 SistemiOperativi GiorgioGiacinto2015 Libreria standard dellinguaggio C- write() 9 SistemiOperativi Categoriedichiamatedi sistema » Controllodeiprocessi » Gestionedeifile » Gestionedeidispositivi GiorgioGiacinto2015 » Gestionedelleimpostazionidibase » Comunicazione 10 SistemiOperativi GiorgioGiacinto2015 Esempichiamatedisistema UNIX- Win32 Windows UNIX Controllo dei processi CreateProcess() ExitProcess() WaitForSIngleObject() fork() exit() wait() Gestione dei file CreateFile() ReadFile() WriteFile() CloseHandle() open() read() write() close() Gestione dei dispositivi SetConsoleMode() ReadConsole() WriteConsole() ioctl() read() write() Gestione delle informazioni GetCurrentProcessID() SetTimer() Sleep() getpid() alarm() sleep() Comunicazione CreatePipe() CreateFileMapping() MapViewOfFIle() pipe() shmget() nmap() Protezione SetFileSecurity() InitializeSecurityDescriptor() SetSecurityDescriptorGroup() chmod() umask() chown() 11 SistemiOperativi GiorgioGiacinto2015 Esecuzione nel MS-DOS (a) All’avviamento del sistema (b) Durante l’esecuzione di un programma SistemiOperativi 12 GiorgioGiacinto2015 Esecuzione dipiù programmi nel sistema operativo FreeBSD 13 GiorgioGiacinto2015 SistemiOperativi 14 SistemiOperativi Programmidisistema » Programmiaccessori eprogrammidiutilità di sistema ˃ Gestione,modifica,backupdifile ˃ Informazionidistato ˃ Ambientidisupportoallaprogrammazione(compilatori, debugger,ecc.) GiorgioGiacinto2015 » Altriprogrammiinclusi nelsistema,manonparte delsistemainsensostretto ˃ Webbrowser ˃ Officeautomation ˃ Lettorimultimediali 15 GiorgioGiacinto2015 SistemiOperativi 16 SistemiOperativi Aspettidellaprogettazionee realizzazione » Scopi ˃ Campodiutilizzodelsistemaecategoriediutenti » Criteri(policy)emeccanismi GiorgioGiacinto2015 ˃ Cosa fareecomefarlo » Realizzazione ˃ Linguaggidialtolivelloelinguaggioassembly 17 GiorgioGiacinto2015 SistemiOperativi 18 SistemiOperativi Strutturasemplice » Èlastrutturatipicadeiprimisistemioperativi ˃ Progettatiadhoc perutilizzareinmodopiùagevolei sistemidicalcolo ˃ Riflettonolelimitazionidell’hardware ˃ Es.MS-DOSeprimeversioniUNIX » Caratteristichesalienti GiorgioGiacinto2015 ˃ Scarsamodularità + Progettatoinmodomonolitico ˃ PossibilitàdiaccessodirettoaI/Odeiprogrammi utente 19 SistemiOperativi Struttura semplice MS-DOS application program resident system program GiorgioGiacinto2015 MS-DOS device drivers ROM BIOS device drivers SistemiOperativi 20 GiorgioGiacinto2015 Struttura semplice UNIX 21 SistemiOperativi Strutturaastrati » Necessariosupportohardware » Suddivisioneinmoduli ˃ Ilsistemaoperativopuònascondere granpartedelle funzionalitàdibassolivello GiorgioGiacinto2015 + Maggiorsicurezzadelsistemadausiimpropri ˃ Aggiornamentoeaggiuntadifunzionalitàpiù agevole ˃ Iprogrammatoriinteragisconosoloconlefunzioni esposteadaltolivello(API) 22 SistemiOperativi Struttura astrati Modello “abuccia dicipolla” Problemi di progettazione: - numero degli strati - funzionalità presenti in ciascuno strato GiorgioGiacinto2015 - efficienza del sistema 23 SistemiOperativi Microkernel » Anni‘80:ikernel deisistemioperativieranodi dimensionielevate » Microkernel:individuarelefunzioniessenziali, implementandoilrestocomeprocessiutente Es.sistemaMach(CarnegieMellon) GiorgioGiacinto2015 » Icomponentiesternialmicrokernel sono implementaticomeprocessiserver ˃ Interagisconofradilorotramitescambiodimessaggi attraversoilmicrokernel + possibilefontedirallentamentidelsistema 24 SistemiOperativi Microkernel Application Program File System messages Interprocess Communication Device Driver user mode messages memory managment CPU scheduling kernel mode GiorgioGiacinto2015 microkernel hardware 25 SistemiOperativi Strutturamodulare » Modalitàdiprogettazionemutuatadalla programmazioneorientataaglioggetti ˃ kernel concomponentifondamentali ˃ funzionalitàintegrativerealizzaticomemoduli caricabilidinamicamente + ades.,supportoperfilesystem diversi GiorgioGiacinto2015 ˃ imodulipossonocomunicarefralorosenza l’interventodelkernel » Aspettipositividellastrutturaastratiea microkernel 26 SistemiOperativi Sistemi ibridi » ISOmoderninonseguonounmodelloin particolare ˃ Lefunzionalitàpossonoessererealizzateseguendo modellidiversi GiorgioGiacinto2015 + Scopo + Prestazioni + Esperienzautente 27 SistemiOperativi Struttura dei moderni SO Application programming interface Application binary interface Instruction Set Architecture Application programs Libraries/utilities Software Operating system Execution hardware GiorgioGiacinto2015 System interconnect (bus) I/O devices and networking Memory translation Hardware Main memory 28 SistemiOperativi GiorgioGiacinto2015 Struttura MSWindows 29 SistemiOperativi Struttura diMacOSX GiorgioGiacinto2015 https://developer.apple.com/library/mac/documentation/MacOSX/Conceptual/OSX_Technology_Overview 30 SistemiOperativi Struttura diiOS GiorgioGiacinto2015 https://developer.apple.com/library/ios/documentation/Miscellaneous/Conceptual/iPhoneOSTechOverview 31 SistemiOperativi GiorgioGiacinto2015 Struttura diAndroid 32 SistemiOperativi