Franco Sartore ottobre 2006, febbraio 2010 v_03 Software di base: programmi di gestione dell Elaboratore: Programmi di Utilità Applicazioni: Programmi che svolgono attività specifiche di alto livello (Word Processor, Spreadsheet, Browser, ) Il è un insieme di programmi che interagiscono direttamente con l hardware permettendo all utente di gestire l elaboratore e le sue periferiche tramite funzionalità di alto livello In pratica il SO nasconde l hardware all utente permettendogli di utilizzarlo senza interagire direttamente con esso e quindi senza conoscerne tutti i dettagli Le principali funzioni di un Sistema operativo, sono: La gestione dei Processi La gestione della Memoria centrale La gestione delle Periferiche (I/O) L organizzazione e la gestione del File-System Interfaccia utente (Shell( Shell) Gestore degli I/O Gestore dei Processi KERNEL Gestore del File System Gestore della Memoria Centrale 1
Queste funzioni sono in genere fornite da moduli separati (per renderne più agevole la progettazione e lo sviluppo) I moduli fondamentali costituiscono il Kernel o Nucleo del Un Sistema Operativo mette sempre a disposizione dell utente un interfaccia chiamata Shell (guscio) che permette all utente di interagire con il SO stesso. Può essere a caratteri grafica (GUI, Graphic User Interface) : Gestione dei Processi : Gestione dei Processi Un Processo (Task) è un programma in esecuzione sull elaboratore Quando un SO è in grado di gestire più processi contemporaneamente è detto multitasking (Windows 2000, Windows XP, Windows 7, Linux, ) altrimenti è detto monotasking (MS-Dos,...) : Gestione dei Processi Nei SO multitasking il programma che distribuisce il tempo di CPU tra i processi attivi e ne regola l avvicendamento è chiamato Scheduler Negli elaboratori multi-processore lo Scheduler gestisce anche la cooperazione tra CPU : Gestione dei Processi Lo Scheduling può essere di tipo cooperativo (non preemptive): la CPU può essere assegnata ad un processo solo quando viene rilasciata dal processo attivo prelazionale (preemptive): il processo attivo può essere interrotto in qualunque momento e la CPU assegnata ad un altro processo 2
: Gestione dei Processi I SO multitasking prelazionali che mettono a disposizione la CPU, in rapida rotazione, di tutti i processi (simulandone l esecuzione contemporanea), si dice che operano in Time Sharing (divisione di tempo). : Gestione dei Processi Al Time Sharing è legata la possibilità per un SO multitasking di gestire anche più utenti contemporaneamente Nell uso comune quindi l espressione Time Sharing indica i Sistemi operativi dotati sia di multitasking che di multiutenza : Gestione della Memoria : Gestione della Memoria Ogni programma in esecuzione (Processo), dispone di un proprio spazio nella Memoria centrale (RAM ) in cui risiedono istruzioni e dati. Uno spazio di memoria condiviso da tutti i processi è riservato alle istruzioni e ai dati del. : Gestione della Memoria Quando la RAM non è sufficiente, una tecnica detta Memoria virtuale permette di parcheggiare temporaneamente sull Hard Disk in un area apposita detta di Swap (scambio), dati e istruzioni in quel momento non in uso : I File 3
: I File Un file è una sequenza ordinata e delimitata di Byte. Può contenere programmi, dati, testi, immagini, suoni, : I File Un File può essere volatile o persistente cioè registrato su una memoria di massa, ad accesso casuale (Hard Disk, Floppy disk) o sequenziale ( Nastro magnetico, CD-Rom, ) Un File può essere accessibile in lettura, scrittura, in entrambe le modalità : Hard Disk e File System L Hard Disk (ma anche il Floppy Disk) è una memoria di massa ad accesso casuale A basso livello l Hard Disk (ma anche il Floppy Disk) viene visto come un insieme di settori in genere di 512 Byte Il File System (Sistema di archiviazione) è la struttura mediante la quale il Sistema operativo nasconde all utente i settori, mettendogli a disposizione una sovrastruttura (di solito) gerarchica di Directory (Cartelle) e File Per ogni file o directory il File System gestisce un insieme di attributi come il nome, la data di creazione, il proprietario, 4
I File System che non prevedono il proprietario tra gli attributi sono detti Monoutente (Fat16: Dos, Windows 3.1; Fat32: Windows 9x/Me), quelli che lo prevedono sono detti Multiutente (NTFS: Windows NT/2000/XP/7; I FS di tutti i SO Unix) Il File System identifica ogni file o directory con un nome univoco, il nome completo del file o della directory In windows: Unità Disco:\directory\ \nomefile.estensione Es: c:\winnt\notepad.exe La parte del nome completo che non contiene alcun nome di directory (nel caso di un file) o che contiene solo il nome della directory cui siamo interessati è chiamata nome base e corrisponde a ciò che volgarmente si intende per nome del file o della directory C:\Documents and Settings\franco\Desktop\ff\francofile.txt La parte del nome completo che precede il nome base è chiamata path assoluto o (pathname assoluto) C:\Documents and Settings\franco\Desktop\ff\francofile.txt Quando un path non inizia dalla radice (origine) del file system è chiamato path relativo o (pathname relativo) franco\desktop\ff\francofile.txt L estensione, in genere di 3 caratteri, è la parte del nome che convenzionalmente individua il tipo di file. Può essere usata per associare automaticamente al file il programma che l ha generato 5
Contenuto del File Programma eseguibile: programma in linguaggio macchina Programma: codice oggetto Programma: codice sorgente Script di shell: comandi per l'interprete dei comandi Testo Testo elaborato con Word Processor Librerie di programmi File di stampa e/o files grafici File d archivio: File e/o directories, compresse per archiviazione o trasporto File audio File d animazione Estensione exe, com, bin [o nessuna] obj, o c, p, pas, f77, asm, bas bat, sh txt wp, tex, rtf, doc lib, h, dll ps, pdf, dvi, gif, jpg, jpeg, tif, tiff zip, arc, tar, sea, bin mid, wav, mp3 mov, avi Programmi e Linguaggi di Programmazione Dato un algoritmo un programma è la sua realizzazione (implementazione) in un particolare linguaggio di programmazione tramite una sequenza ordinata di istruzioni Un algoritmo è l insieme ordinato delle operazioni elementari da eseguire per risolvere un dato problema Un linguaggio di programmazione, è un insieme di notazioni formali in grado di rappresentare (implementare, descrivere) un algoritmo. Si chiama sintassi l insieme delle regole da rispettare per scrivere frasi corrette in un dato linguaggio Un linguaggio di programmazione si dice linguaggio assemblatore (Assembler) quando ad ogni istruzione corrisponde una e una sola operazione della CPU I linguaggi assemblatori sono chiamati linguaggi di basso livello (perché vicini alla CPU, ma lontani dal programmatore) 6
I linguaggi assemblatori sono: difficili, per specialisti producono programmi estremamente efficienti specifici per una data CPU I linguaggi più comunemente utilizzati sono linguaggi ad alto livello, più facili da apprendere, più vicini al programmatore. L insieme ordinato delle istruzioni scritte dal programmatore costituisce il codice sorgente del programma che prima di essere eseguito dalla CPU deve essere tradotto in codice eseguibile (una successione di 0 e 1) La traduzione del codice sorgente in linguaggio macchina (codice eseguibile) è effettuata da un programma traduttore Esistono due categorie principali di programmi traduttori: i Compilatori gli Interpreti i Compilatori: traducono tutto il programma loro sottoposto in linguaggio macchina. Ricevono in input uno o più file contenenti il codice sorgente e producono un file contente il programma eseguibile, che può essere mandato in esecuzione secondo le modalità previste dal Sistema Operativo (es. un doppio clic col mouse) gli Interpreti: traducono ed eseguono immediatamente ogni singola istruzione del programma sorgente 7
La modalità di traduzione è tipica di un dato linguaggio di programmazione: esistono Linguaggi Compilati e Linguaggi Interpretati. Per alcuni linguaggi sono possibili entrambe le modalità Alcuni linguaggi di ultima generazione (Java) non entrano pienamente in nessuna delle due categorie Programming Languages according to Kim Taylor from Griffith University, Australia Structural Programming Languages Java, C, C++, Visual Basic, Pascal, Turbo Pascal, Modula-2 Non-Structural Languages Fortran Scripting Languages Bourne Shell, C Shell, Perl Functional Programming Languages Prolog, LISP, Hope Query Languages MSQL Lite, SQL, DBQ/AG 8