Sei sulla pagina 1di 3

FondamentidiInformatica

diGiorgioDavanzo

Sistemi Operativi
Sistema Operativo
Il Sistema Operativo (SO) un programma che gestisce e coordina le risorse disponibili, sia hardware (es: accessoad un disco) che software (es: pi programmi che voglionoessereeseguiti contemporaneamente). Il SO permette anche di condividere le risorse: se due programmi vogliono accedere in contemporanea al disco rigido, sar il sistema operativo a fare da mediatoretra i due, senza che questiseneaccorgano. Interfaccia Utente: il SO serve anche a creare programmi uniformi: si occupa lui di disegnarele finestre, pulsanti, eccin modo che tutteleapplicazionisianoesteticamentesimiliogniSOmoderno ha due interfacce utente:unanongrafica(stileDOS),dettaterminale,edunagrafica(stilewindows) dettaappuntointerfacciagrafica. Architettura CPU: i SO sonopredispostiperalcunetipologiediCPU(RISC/CISC,32/64bit,ecc).A volte,lostessoSOvienericompilatoperfunzionaresupiarchitetturediverse. API: il SO espone le proprie funzionalit tramite le Application Programming Interface, ovvero dei punti di accesso richiamabili da altri programmi. Es: quando in Java scriviamo System.out.println(), linterprete sa in base al SO in cui si trova quale API richiamare per effettuare la stampa del testo sullo schermo. Ogni SO utilizza delle API diverse: questo il motivo per cui un programma compilatoperLinuxnonpuessereusatosuOSXoWindows.

Programmi e Kernel
Processi e Task: un programmain esecuzione viene chiamato processo, ed identificato da un numero intero detto PID (Process ID) se avvio pi volte lo stesso programma, creer pi processi aventi lo stesso nome ma PID diverso. Ogni processo pu essere composto da pi task, ovvero elementi dello stesso processo che sono contemporaneamente in esecuzione e che possono compunicare tra di loro. Es: il processo Word ha un task che si occupa di leggere la tastiera, uno chesioccupadiscrivereavideoiltestoedunocheeseguecontinuamenteilcontrolloortografico. Path: una variabile stringa del sistema operativo al suo interno sonosalvati tutti ipercorsi in cui cercareilprogrammadaeseguirequandonevienespecificatosoloilnome. Kernel:ilkernelilnucleodelSO,permetteaivariprogrammidiaccedereallerisorse. Esecuzioneapplicazioni:ogniapplicazionepuessereeseguitainduecontesti, Kernel Space: accesso diretto alle risorse hardware (memoria, periferiche, ecc). Qui si possonofaredanniveri! UserSpace:laccessoallerisorseavvienetramiteilKernel Blue Screen of Death: messaggio dato da Windows quando qualcosa in esecuzione in Kernel Spacegeneraunerrore. Tipi di Kernel: ma cosa deve stare dentro allouserspaceecosadentroalkernelspace?Dipende dacosadecidedifareilproduttoredelSO.Cisonoduestrategie: Micro Kernel: il Kernel quanto pi piccolo possibile, ma pu essere espanso con laggiunta di altro codice.Problema:devocrearetantipuntidiaccessoalmiosistema,etanti elementiprodottidaaltridovrannopoteraccedereadelementidelicatidelKernel. Kernel Monolitico: il Kernel contienequante pi cose possibile. Problema: seunodiquesti elementi di rompe, tutto il Kernel si rompe. Vantaggi: quasi tutte le periferiche funzionano senzacomponentiaggiuntivi. Drivers: i drivers (moduli in linux) sono le aggiunte al Kernel che permettono di comunicare con dispositivi Hardware. Sono moltodelicati,perchpossonoaccedereadareedelcomputercon cuisi possonocreareproblemi. SequenzadiavviodelPC:

FondamentidiInformatica 1. 2. 3. 4. 5.

diGiorgioDavanzo

ilprogrammabasedellaschedamadre(bios)vienelettoedeseguito ilbiosvaacercareneidispositiviilMasterBootRecord nelMasterBootRecordvienelettounpiccolissimoprogramma,dettoBootLoader ilBootLoadervaaleggeredaunapartizioneilkerneldelSOelocaricainmemoria ilSOcaricalinterfacciagrafica.

Principali Sistemi Operativi


Windows: in realt caduto in disuso per essere precisi, tutti i sistemi operativi moderni di Microsoft sono figli diWindows NT, nato per i server.Usaunmicrokernel(anchesenellaversione NT reclamizzato come ibrido, ma pi marketing che sostanza). Fino alla versione Windows7 erasoloperprocessorix86,mentrewindows8supportaancheprocessoriARM(Windows8RT) Unix: moltovecchio(1970circa)ancoramoltoinusoperch haprodottoduefigliimportanti:Linuxe OSX.UsaunKernelMonolitico. Mac OS X: figlio di Unix, con cui compatibile quasi totalmente. Fino al 2005 solo per CPU powerPC(RISCdellaIBM),madal2006laproduzionepassataalleCPUIntel(quindiCISC). Linux: sviluppato da Linus Torvald nel 1991, ispirandosi ad Unix. Pu essere eseguito sostanzialmente su ognipiattaforma esistente (cellulari, pc intel, pc arm, ecc).Il codice sorgente disponibilieemodificabile. Android:basatosuLinux,iprogrammisonoquasituttisviluppatiinJava iOS:basatosuUnix,iprogrammisonoquasituttisviluppatiinC++

Gestione delle Risorse


Memoria: il SO tiene traccia delleareedi memoria usate dai vari programmi in questo modo, pu essere sicuro che un processo in ambiente User Mode non vada a scrivere sopra ad aree di memoriausatedaaltriprogrammi. Memoria Virtuale: spesso la memoria RAM delcalcolatorenonsufficientesiusanoquindianche i dispositivi di memorizzazione perestenderelacapacitdellaRAM(marallentandotuttodimolto).Il SO non espone alle applicazioni direttamente la RAM, ma una memoria virtuale i cuielementisono associatiallaRAMoadundiscorigido. Il tutto avviene in modo trasparente al programma: quando la RAM non basta pi, il calcolatore sposta lo spazio occupato da un processo non attivo suldiscosepoidovesseservirenuovamente quellareadimemoria,nelibererunaltraericopierdaldiscoallamemoria. MondoUnix:sicreauna(opi)partizionededicatasuldisco(swap) MondoWindows:sicreaun(opi)filesudisco Gestione File System: le applicazioni non sanno come fatto un filesystem si occupa di tutto il SO: basta dargli alcuni comandi essenziali (es: crea file, cancella file, ecc) ed il SO scriver le informazionicorrettenellatabelladelfilesystem. Unixewindowsgestisconoilfilesysteminmododiverso: windows associa una lettera ad ogni partizione, e crea un albero per ogni partizione. Le cartellesonoseparateusandoilsimbolo\ unix ha un unico albero, ed ogni partizione pu essere collegata (montata) in un punto diversodellalbero.Lecartellesonoseparateusandoilsimbolo/ Buffer: sono simili alla memoria cache dei processori: servono a migliorare la velocit di lettura/scrittura invece di scrivere direttamente sul disco, il file viene scritto in memoria e poi un programmaapartesioccupadispostareeffettivamenteidatisuldisco. Ecco perch i pendrive vanno espulsi prima di rimuoverli: quando il SO mi dice di avercopiato un file, mi comunica solo diaverlo messonelbuffer che lo scriver sul dispositivo. Se non lo disattivo primadirimuoverlo,potreistaccarloquandoilbuffersistaancorasvuotandoequindiperderedati. Spooler di stampa: analogo al buffer, ma dedicato alle stampanti. Invecedi dover attenderechela stampante abbia effettivamente terminato un lavoro prima di inviarne un altro, tutti i lavori vengono

FondamentidiInformatica

diGiorgioDavanzo

inseritiinunacoda(spool)chelimandapoiallastampante. Servizi e Demoni: sono dei programmi che vengono eseguiti automaticamente senza alcuna interazione con lutente (servizi il nome windows, demoni in Unix). In windows, i servizi sono eseguitidalprogrammasvchost.exe,chepucontenerepiservizialsuointerno. Impostazioni programmi: quasi tutti i SO le conservano in piccoli files di testo. Solo windows le raccoglie tutte in ununico file, chiamato Registro di Sistema. Il registro si accede con il comando regedit, e si presentacome un albero.Cisono impostazionicomuniatuttigliutenti(LocalMachine), altre legate al singolo utente. Le impostazioni dellutente corrente sono copiate al login in un ramo dellalberochiamatoCurrentUser.

Terminali, Emulatori e Virtualizzazione


Terminale: software che permette diaccedere ad un SO remoto.Inambientewindows,siutilizzalo standardRDP(RemoteDesktopProtocol). Emulatori: le API di un SO vengono riscritte per un altro SO. Questo permette di eseguire programmi compilati per un sistema operativo allinterno di un altro SO, purch larchitettura del calcolatoresialastessa.Emulatoriprincipali: Wine:permettedieseguireprogrammiWindowssuLinuxeOSX Cygwin: permette di eseguire programmiLinux su Windows (non esiste una cosa analoga periprogammidiOSX). Virtualizzazione: permette di eseguire un SO allinterno di un altro SO. Sono programmi che simulano un computer, di cui si pu configurare quasi tutto: numero di processori, memoriaRAM, harddiskcollegati,ecc.Isistemipiusatisono: XeneVmWare:perambitoprofessionale(Xenfattosoloperlinux) VirtualBox:perusononprofessionale HyperV:virtualizzazionefattadaMicrosoft(cheprimausavaVirtualPC) Parallels:fattoperOSX,indirizzatoallesecuzionediWindowssuOSX RicordiamocheJavaunsistemadivirtualizzazione:permettedieseguiresuivariSOilSOJava.

Sicurezza del Sistema Operativo


Privilegi: i SO gestiscono laccesso alle varie aree (kernel space, user space, ecc) in base ai privilegi assegnati allutente connesso. Solitamente, solo un Super User (amministratore per windows, root per Unix) pu eseguire delle operazioni a livello kernel,mentreunutentenormalepu solooperarenellouserspace. Virus:perchmoltopifacilescrivereunvirusperWindowspiuttostocheperUnixederivati? 1. Usando un micro kernel, deve dare la possibilit di espanderne il contenuto facilmente tramiteidrivers(es:esceunanuovastampante).Gliutentinormali,quindi, possonoinstallare dei pezzi di codice che hanno un accesso privilegiato al Kernel e poi eseguirli senza avere privilegi elevati. Es: installo il driver di una stampante che in realt un virus, edogni volta chestampoqualcosaquestopotrebbecorromperelamemoriadelpc. 2. Il codice sorgente del Kernel su cui si basano Linux e OS X open source: chiunque pu leggerlo,esecisonobug/erroripusegnalarliefarlicorreggere. Comunque, ormai ci sono pochi virus veri e propri (cio destinati a distruggere il pc o a renderlo inusabile),leminacceveresonoaltre(vedremopiavanti).