1.1: introduzione ai sistemi operativi - vito asta - home page · classificazione dei sistemi...

41
1.1.1 1.1: Introduzione ai Sistemi Operativi Definizione e ruolo di un Sistema Operativo Classificazione dei Sistemi Operativi Componenti e servizi di un Sistema Operativo Implementazione di un Sistema Operativo Chiamate di sistema Software di base La programmazione di sistema

Upload: vanduong

Post on 18-Feb-2019

230 views

Category:

Documents


1 download

TRANSCRIPT

1.1.1

1.1: Introduzione ai Sistemi Operativi

● Definizione e ruolo di un Sistema Operativo

● Classificazione dei Sistemi Operativi

● Componenti e servizi di un Sistema Operativo

● Implementazione di un Sistema Operativo

● Chiamate di sistema

● Software di base

● La programmazione di sistema

1.1.2

Cos'è un Sistema Operativo● Un Sistema Operativo (S.O.) è un programma (o un insieme di 

programmi) che agisce da intermediario tra l'hardware e l'utente.

● Scopi di un S.O.:

– Eseguire programmi dell'utente e rendere più facile la soluzione dei suoi problemi

– Rendere il calcolatore conveniente ed efficiente da usare● N.B. ­  convenienza (facilità d'uso) ed efficienza sono spesso in 

contraddizione!● Componenti di un S.O.:

– Kernel (o Nucleo)

– Software di base● Programmi di sistema● Programmi applicativi di base

● N.B. ­ alcuni identificano il S.O. col solo kernel.

1.1.3

Componenti di un Sistema di Calcolo● Hardware

– Fornisce le risorse di calcolo basilari: CPU, memoria, dispositivi di I/O.

● Kernel

– Controlla e coordina l'uso dell'hardware tra i vari programmi per tutti gli utenti; è la parte di un S.O. sempre in memoria e sempre pronta a eseguirsi.

● Software di base

– Le sue componenti definiscono i modi in cui le risorse del sistema vengono usate per risolvere i problemi computazionali degli utenti.

● Compilatori, sistemi di data base, sistemi di automazione d'ufficio, programmi di calcolo scientifico, video games, etc.

● Utenti

– Persone, macchine, altri calcolatori.

1.1.4

Componenti di un Sistema di Calcolo ­ Schema

1.1.5

Classificazione dei Sistemi Operativi● Sistemi batch (a lotti)

– Monoprogrammati

– Multiprogrammati

● Sistemi interattivi (a partizione di tempo)

● Sistemi personali (PC)

● Sistemi dedicati

– Sistemi transazionali

– Sistemi per il controllo dei processi

● Sistemi di sviluppo

● Sistemi paralleli, distribuiti

● Sistemi real­time

1.1.6

Sistemi Batch Monoprogrammati● Sistema batch monoprogrammato: un utente alla volta dispone 

dell'intero sistema

● Lettore di schede ­ sistema di calcolo ­ stampante; operatore (≠ utente)

● Memory layout:

Batch Monitor

1.1.7

Sistemi Batch Monoprogrammati (Cont.)● Parti del Batch Monitor:

– Interprete di schede di controllo ­ legge ed esegue istruzioni sul da farsi

– Caricatore (loader) ­  carica in memoria programmi di sistema ed applicazioni

– Device driver ­   conoscono caratteristiche e proprietà di ogni periferica

● Problemi:

– Basse prestazioni: I/O e CPU non possono sovrapporsi; lettore di schede molto lento (rapporto CPU / I/O >= 103 ­­  oggi è ancora maggiore)

– Turnaround time alto  (tempo tra sottoposizione e terminazione di un job)

● Soluzione: operazione off­line

– velocizzazione del ciclo globale caricando job in memoria da nastri

–  lettura da schede e stampa effettuate off­line.

1.1.8

Sistemi Batch Multiprogrammati● Multiprogrammazione = capacità di gestire più di un job (o processo ­  v. 

oltre) simultaneamente

● Sovrapposizione dell'I/O di un job con le fasi CPU di altri

● Memory layout:

● Spooling ­­ i job vengono letti in un pool di job (su disco)

● Analogamente per l'output generato.

1.1.9

Multiprogramming: Capacità Necessarie

● Job Scheduling ­­  il sistema sceglie tra vari job pronti ad essere caricati in memoria (dal pool di job)

● Memory Management ­­  allocazione della memoria ai vari job

● CPU scheduling ­­  il sistema sceglie tra vari job pronti ad eseguirsi

● Protezione ­­  routines di I/O fornite dal sistema

– I programmi non possono accedere direttamente ai dispositivi, altrimenti si genererebbero conflitti

● Allocazione di dispositivi.

1.1.10

Due concetti Fondamentali● To schedule = predisporre un ordine, scadenzato nel tempo, di esecuzione 

di operazioni di vari tipi. È un concetto perfettamente generale.

● In un S.O. si ritrovano diversi algoritmi di scheduling, applicati a varie operazioni:

– Scheduling dei job (sistemi batch)

– Scheduling della CPU (a chi allocare la CPU dopo il job attuale)

– Scheduling del disco (in che ordine effettuare operazioni di I/O su disco).

● Ogni algoritmo, compresi i meccanismi di scheduling, va deciso sempre in funzione di un'opportuna metrica prestazionale del sistema o sottosistema:

– CPU scheduling: ad es., ottimizzare l'uniformità del tempo di risposta

– Disk scheduling: ad es., ottimizzare il tempo di completamento delle operazioni di I/O.

● La scelta di quale metrica adottare è un aspetto di politiche di implementazione, in mano al progettatore di sistema (non sempre c'è una soluzione univoca).

1.1.11

Sistemi a Partizione di Tempo● Detti anche sistemi interattivi.

● Partizione di tempo = time­sharing (o multitasking): estensione logica della multiprogrammazione; scheduling CPU abbastanza veloce da permettere ai job (o task) di interagire con gli utenti simultaneamente.

● CPU multiplexata tra vari task, ubicati in memoria RAM e su disco 

– CPU allocata a un task solo se questo è in memoria.

● Ciascun task è swappato dentro e fuori, da memoria a disco e viceversa

– Swap­in, swap­out

– To swap = scambiare, barattare

● Input dei programmi non più da schede o da disco, ma da tastiera: meccanismo di comunicazione on­line tra sistema e utente.

● Capacità necessarie: file­system on­line perchè gli utenti accedano a codice e dati.

1.1.12

Sistemi a Partizione di Tempo (Cont.)● Stati dei task (diagramma semplificato):

RunningCPU

RAM

DISK

Swap­in Swap­out

Scheduling CPU

1.1.13

Sistemi Personali● Personal Computer (PC) = sistema di calcolo dedicato ad un singolo 

utente.

● Tecnologia apparsa negli anni '80; resa possibile dall'enorme abbassamento dei costi hdw e sfw.

● Dispositivi di I/O tipici: tastiera, mouse, schermo grafico, piccole stampanti, scanner, modem, etc.

● Metrica prestazionale principale: convenienza e prontezza d'uso

● Inizialmente sistemi mono­task, senza protezione di memoria

– Un errore di un programma utente può compromettere il S.O. in memoria

● Oggi possono adottare tecnologie sviluppate per grandi sistemi, anche se molte caratteristiche (es. protezione dei file) non sono strettamente necessarie.

– Windows XX ; Linux (Red Hat, Mandrake, etc.)

1.1.14

Sistemi Transazionali● S.O. concepito intorno ad una specifica applicazione.

● L'utente non può creare nuovi programmi, ma deve scegliere in un menu predefinito di operazioni.

● Esempi:

– Sistemi di prenotazione

– Sistemi bancari (movimentazione conti correnti)

● Transazione = un'interazione tra utente e S.O.

1.1.15

Sistemi di Controllo di Processi● Obiettivo:

– Acquisire periodicamente dati (da sensori e/o dispositivi locali o remoti)

– Analizzare i dati

– Emettere segnali di comando a dispositivi attuatori.

● Sistemi transazionali con interfaccia sintetica (⇒requisiti di tempo più stringenti).

● Due categorie:

– Sistemi ad anello aperto● Operatore che analizza dati acquisiti e prende decisioni● Esempio: controllo di traffico aereo.

– Sistemi ad anello chiuso● Senza intervento umano● Esempio: controllo di centrali telefoniche.

1.1.16

Sistemi di Sviluppo● Sistemi pseudo­dedicati (a metà tra sistema general­purpose e sistema 

dedicato)

● Obiettivo:

– Consentire lo sviluppo agevole di applicazioni su microprocessore dedicato, integrate in dispositivi di vario tipo (embedded applications).

● I programmi così generati vengono poi memorizzati in memorie permanenti a sola lettura (ROM ­ Read­Only Memory).

– Interagire con dispositivi dedicati (ICE ­  In­Circuit Emulator) per la simulazione del sistema risultante finale e la messa a punto del software in ambiente operativo.

1.1.17

Sistemi Paralleli● Sistemi multiprocessore con più CPU, in stretta comunicazione tra loro.

● Le CPU condividono memoria e clock; comunicazione tra CPU attraverso memoria condivisa

● Vantaggi:

– Maggiore throughput (numero di job gestiti nell'unità di tempo)

– Economia● Periferiche, alimentatori etc. sono condivisi

– Maggior affidabilità● Degradazione controllata (graceful degradation)● Sistemi tolleranti i guasti (fault­tolerant).

1.1.18

Sistemi Paralleli (Cont.)● Due grandi categorie:

– Multiprocessing simmetrico (SMP ­ Symmetric MultiProcessing)● Ogni CPU gira su una copia identica del S.O.● Più processi possono girare contemporaneamente senza degradazione 

delle prestazioni● La maggior parte dei S.O. Moderni (incluso Linux) supportano l'SMP.

– Multiprocessing asimmetrico● Ad ogni CPU è assegnato un compito specifico; il master processor 

coordina il tutto e alloca lavoro per i vari slave processor● Soluzione comune ai sistemi molto grandi (mainframe).

1.1.19

Architettura SMP

1.1.20

Sistemi Distribuiti

● Distribuiscono il carico di lavoro (workload) tra più CPU.

● Ogni CPU ha la propria memoria locale, e spesso propri dispositivi di I/O (macchine fisicamente distinte che cooperano).

● Le CPU comunicano tra loro tramite bus ad alta velocità, o linee dati.

● Chiamati anche sistemi debolmente accoppiati (in contrapposizione a sistemi strettamente accoppiati, cioè i sistemi paralleli).

● Vantaggi:

– Condivisione di risorse

– Velocizzazione e parallelizzazione del calcolo ("divide et impera");

– Condivisione del carico (i job sono spostabili ad una CPU meno carica)

● Comunicazione ⇒reti di calcolatori.

1.1.21

Sistemi in Tempo Reale● Includono (e talvolta con essi si identificano) i sistemi di controllo di 

processi.

● Applicazioni dedicate, con limite massimo ai tempi di risposta ad eventi esterni

– es.: controllo di esperimenti scientifici, trattamento di immagini mediche, etc.

● Due categorie:

– Sistemi hard real­time● Tempi di risposta definiti rigorosamente● In antitesi ai sistemi time­sharing; non sono supportati dagli O.S. general­

purpose● Dati memorizzati e gestiti in RAM o in ROM; assenza di dischi.

– Sistemi soft real­time● Task con tempi di risposta critici hanno maggior priorità, e trattengono la 

CPU finchè completano un'operazione● Applicabilità: robotica, controllo di processi lenti; multimedia, realtà virtuale.

1.1.22

Standardizzazione e Sistemi Aperti● Primi anni '80 ­ avvento di UNIX = primo S.O. indipendente dall'hardware

● Tecnologia dei sistemi aperti (Open Systems)

– Tutti (o quasi) i venditori di calcolatori propongono una versione di UNIX

– Compatibilità software tra sistemi di marche diverse ⇒ il personale lavora su macchine, S.O., applicazioni diverse, ma con una preparazione tecnica unica.

– Benefici:  integrazione delle applicazioni, portabilità, interoperabilità.

● POSIX = standard (ISO 1003) per la definizione delle caratteristiche di un S.O. aperto (cioè interoperabile) ­ in pratica, una definizione generale delle caratteristiche di UNIX.

– Standardizzazione dell'interfaccia, non dell'implementazione

– Interfaccia = comandi, chiamate di sistema, servizi offerti etc.

– Tutti gli UNIX moderni sono POSIX­compliant; molti S.O. non­UNIX hanno delle API POSIX­compliant.

– LINUX è nato come un progetto "per un S.O. POSIX­compliant".

1.1.23

Componenti e Servizi di un S.O.● Gestione dei processi

● Gestione della memoria primaria (RAM)

● Gestione della memoria secondaria (dischi)

● Gestione del sistema di I/O

● Gestione dei file­system

● Sistema di protezione

● Networking

● Interprete di comandi (interfaccia utente)

1.1.24

Gestione dei Processi● Un processo è un programma in esecuzione, in un proprio ambiente di 

lavoro. Un processo ha bisogno di risorse per svolgere il compito assegnatogli, tra cui tempo CPU, memoria, file, dispositivi di I/O.

● Risorsa = qualunque oggetto (reale o astratto) che può condizionare l'avanzamento dei processi.

● Un S.O. ha normalmente delle chiamate di sistema che permettono a processi di creare altri (sotto)processi, che si eseguono in modo asincrono rispetto al processo padre.

● Programma= entità passiva (il contenuto di un file eseguibile); processo = entità attiva: un programma in esecuzione + proprio PC (program counter) + ambiente di lavoro.

● Il S.O. è responsabile delle seguenti attività per la gestione dei processi:– Creazione e terminazione di processi

– Sospensione e ripresa dell'esecuzione (CPU scheduling)

– Fornire meccanismi per● sincronizzazione dei processi •  comunicazione tra processi

1.1.25

Gestione della Memoria Primaria● La memoria primaria (RAM) è un grande array di byte, ciascuno col 

suo proprio indirizzo. È un deposito di dati ad accesso veloce, condiviso da CPU e periferiche.

● Dispositivo di memorizzazione volatile: perde il contenuto in caso di caduta dell'alimentazione.

● Il S.O. è responsabile delle seguenti attività riguardo la gestione della memoria:– Tener traccia di quali parti di RAM sono attualmente in uso e da chi

– Decidere quali processi caricare in memoria, quando si crea disponibilità di spazio (job scheduling)

– Allocare e deallocare spazio di memoria quando necessario.

1.1.26

Gestione della Memoria Secondaria● Memoria primaria: volatile, e troppo limitata per far spazio 

permanentemente a tutti i dati e programmi ⇒ il calcolatore deve fornire della memoria secondaria a supporto della memoria primaria.

● I sistemi attuali utilizzano quasi tutti dei dischi come mezzo di memorizzazione secondaria on­line, per programmi e per dati.

● Il S.O. è responsabile delle seguenti attività riguardo la gestione dei dischi:– Gestione dello spazio libero

– Allocazione di spazio secondo le richieste

– Decidere l'ordine di esecuzione delle letture e scritture da/a disco (disk scheduling).

1.1.27

Gestione del Sistema di I/O

● Il sistema (o sottosistema) di I/O del kernel consta di– Un sistema di bufferizzazione e caching dei dati

– Un'interfaccia generica per i device driver

– Driver per specifiche periferiche hardware.

● In UNIX, le peculiarità delle periferiche sono nascoste al Kernel interno:– Sono note soltanto ai device driver

– Le periferiche sono presentate dal sottosistema di I/O in una forma 'canonica' 

– Ad es., un disco è visto sempre come un array di blocchi di dimensione fissa, indipendentemente dalla reale geometria del disco (tracce, cilindri, etc.) e dalla dimensione dei settori fisici.

1.1.28

Gestione dei File System● Il S.O. fornisce una vista logica uniforme della memorizzazione di 

informazioni; fa astrazione delle proprietà fisiche dei dischi e definisce un'unità logica di raggruppamento delle informazioni, il file.

● Un file è una collezione di informazioni correlate definito dal suo creatore. Normalmente i file rappresentano programmi (in forma sorgente o in linguaggio macchina) e dati.

● I file sono generalmente organizzati in cartelle (directory), per agevolarne l'uso. Un insieme di file e cartelle residenti in un volume fisico costituisce un file system.

● Il S.O. è responsabile delle seguenti attività riguardo la gestione dei file system:– Creazione e distruzione di file

– Creazione e distruzione di directory

– Supporto di primitive per la manipolazione di file e directory

– Allocazione di spazio a un file– Mappatura dei file nella memoria secondaria– Backup di file su supporti stabili (non volatili) e rimovibili.

1.1.29

Sistema di Protezione

● Protezione: meccanismo per disciplinare l'accesso da programmi, processi, utenti  alle risorse del sistema e degli utenti.

● Il meccanismo di protezione deve:– Distinguere tra uso autorizzato e non autorizzato– Specificare i controlli imposti– Fornire un sistema di autenticazione degli utenti– Fornire un sistema di imposizione di questo meccanismo.

● UNIX fornisce diversi meccanismi, tra cui:– UID, GID (User IDentity, Group Identity)– Autenticazione degli utenti mediante password– Bit di protezione per file e periferiche– Bit di protezione per oggetti IPC (InterProcess Communication)– Gestione dei segnali (interrupt software tra processi) basato sull'UID– ...

1.1.30

Networking

● Un sistema distribuito è un insieme di processori centrali (CPU) che non condividono memoria, periferiche, o clock. Ogni processore ha la propria memoria locale.

● I processori nel sistema complessivo sono connessi mediante una rete di comunicazione.

● Un sistema distribuito fornisce accesso per gli utenti a varie risorse del sistema globale, su tutta la rete.

● Il sottosistema di networking di un S.O.– Deve prendere in conto strategie di connessione e di instradamento 

(routing), e vari aspetti di sicurezza e contesa di risorse

– In molti casi generalizza l'accesso alla rete sotto forma di accesso a file (dal punto di vista dei processi utente); i dettagli di networking (protocolli etc.) sono nascosti nel codice dei device driver.

1.1.31

Interprete di Comandi

● È l'interfaccia finale tra l'utente e il S.O.● In origine era parte del Kernel vero e proprio; poi (con MULTICS, e poi 

UNIX) è stato implementato come un programma separato, che si esegue a livello utente.

● Molti comandi vengono dati al S.O. tramite 'istruzioni di controllo' (o comandi di utente) che si occupano di– Creazione e gestione di processi

– Gestione dell'I/O

– Gestione dello spazio in memoria secondaria

– Gestione dello spazio in memoria primaria

– Accesso ad un file system

– Protezione

– Networking

1.1.32

Interprete di Comandi (Cont.)

● Il programma che legge e interpreta le istruzioni di controllo è chiamato in vari modi:– Interprete di schede di controllo (control­card interpreter)– Interprete di riga di comando, o di linguaggio di comando (command line 

interpreter, o command language interpreter, o CLI)– Shell (in UNIX)

    La sua funzione è di  prelevare il prossimo comando ed eseguirlo.● Gli interpreti possono essere:

– Basati su schede perforate,– Con interfaccia a carattere,– Con interfaccia grafica ad icone e mouse,

      e così via.● Le interfacce grafiche a icone e mouse sono particolarmente 

ergonomiche e molto facili da usare, specialmente per utenti non specialisti; le interfacce a carattere (riga di comando) sono molto potenti e versatili.

1.1.33

Servizi di un S.O.

Servizi = funzionalità messe a disposizione dell'utente, per aiutarlo e assisterlo nel suo lavoro.

● Esecuzione di programmi ­­ capacità del sistema di caricare un programma in memoria e farlo eseguire.

● Operazioni di I/O ­­ dato che i programmi utente non possono (e non debbono) eseguire operazioni di I/O direttamente, il S.O. deve fornire qualche mezzo per effettuare dell'I/O.

● Manipolazione di file­system ­­ capacità di leggere, scrivere, creare, rimuovere, e rinominare dei file.

● Comunicazione ­­ scambio di informazioni tra processi che si eseguono sulla stessa macchina, o su sistemi differenti uniti insieme da una rete. Implementato tramite memoria condivisa (shared memory) o passaggio di messaggi (message passing).

● Rivelazione di errori ­­ assicurare un corretto comportamento di calcolo controllando errori nella CPU, RAM, dispositivi di I/O, o programmi d'utente.

1.1.34

Altre Funzionalità

Esistono poi altre funzionalità, concepite non per aiutare e servire l'utente,  ma per assicurare operatività ed efficienza al sistema.

● Allocazione di risorse ­­  allocare risorse a più utenti o a più processi che si eseguono contemporaneamente.

● Contabilizzazione (accounting) ­­ tenere traccia e memorizzare quali utenti utilizzano quante risorse e di che tipo, per rifatturare i costi a terze parti o per accumulare statistiche d'uso.

●  Protezione ­­ assicurare che tutti gli accessi alle risorse di sistema siano controllate (file, regioni di memoria, periferiche, CPU, etc.).

1.1.35

Implementazione di un S.O.● Al livello più alto, il progetto di un S.O. è influenzato da

– Scelta dell'hardware (ad es. Intel 80x86, Motorola 68xxx/88xxx, SUN Sparc/UltraSpark, MIPS, etc.)

– Tipo di sistema: batch/time­sharing, single/multiuser, mono/multitask, distribuito, real­time, general­purpose.

● Obiettivi:– Dell'utente ­­ il S.O. deve essere pratico da usare, facile da imparare, 

affidabile, sicuro, e veloce.

– Del sistemista ­­ il S.O. deve essere facile da progettare, da implementare e da manutenere; deve essere flessibile, affidabile, privo di errori, ed efficiente.

● Dagli obiettivi scelti si derivano appropriate metriche prestazionali, che verranno utilizzate per l'individuazione degli algoritmi da adottare.

● Naturalmente, non c'è soluzione univoca: questo è un compito creativo. L'ingegneria del software (software engineering) fornisce principi generali, utili da applicare in questo campo.

1.1.36

Implementazione di un S.O. (Cont.)● Tradizionalmente, i S.O. erano scritti in linguaggio assembler.● Oggi possono essere scritti in linguaggi di alto livello; UNIX ha aperto la 

strada a questa tendenza.● Il codice scritto in un linguaggio di alto livello:

– È molto più veloce da scrivere– Può essere scritto da meno persone, quindi può essere più coerente (Unix: 

in origine, 2 persone ­­  Ken Thompson e Denis Ritchie).– È più compatto– È più facile da capire e da correggere (debugging).

● Un S.O. scritto in linguaggio di alto livello è molto più facile da portare (adattare ad un nuovo hardware).

● Kernel UNIX originale: 10,000 righe in C, 1,000 in assembler; 200 per efficienza, 800 impossibili da scrivere in C (MMU, codice di avvio di un interrupt hardware, etc.).

1.1.37

Chiamate di Sistema● Le chiamate di sistema (system calls) forniscono l'interfaccia tra un 

programma che gira e il Kernel. ● Implementate come trap (interruzione software), che trasferisce il 

controllo dal programma utente al Kernel. Il Kernel agisce come una routine di servizio dell'interruzione, poi ripassa il controllo al programma utente.

● Trap è un'istruzione a livello linguaggio macchina, normalmente non disponibile da linguaggi di alto livello ⇒  funzioni intermedie di libreria.

● Passaggio da modo User a modo Kernel e viceversa.

Prog. Utente; User mode Kernel; Kernel mode

Load arg.strap 27

Code forsys.call 27

1.1.38

Principali Tipi di Chiamate di Sistema

● Controllo di processi– create process, terminate process; load, execute program; abort (core 

dump)– get/set process attributes– wait for time; wait event, signal event– allocate/free memory

● Manipolazione di file– create, delete, rename file; open, close; read, write, reposition (seek)– get/set file attributes

● Informazione sul sistema– get/set time or date– get/set system data (active processes, open files, etc.)– get/set process, file, or device attributes

1.1.39

Principali Tipi di Chiamate di Sistema (Cont.)

● Comunicazioni– get host­ID, process­ID– create, accept, delete communication connection– send, receive messages– transfer status information– attach/detach remote devices

● Manipolazione di periferiche– request device, release device– read, write, reposition– get/set device attributes– logically attach/detach devices

1.1.40

Software di Base● I sorgenti del Kernel sono spesso meno del 5% dei sorgenti complessivi di una 

distribuzione.

● Distinzione non netta tra programmi di sistema e programmi applicativi.

● Il software di base fornisce un ambiente standard per lo sviluppo e l'esecuzione di programmi, e più in generale per l'utilizzazione pratica del sistema. Può essere diviso in varie categorie:

– Programmi a complemento delle funzionalità del  kernel (lilo, init, ...; daemons)– Interfaccia utente (sh, ksh, bash, ...)– Librerie di funzioni standard di uso comune (libc, libm, libcrypt, ...)– Supporto per linguaggi di programmazione (cc, as, ld, ar, pc, perl, python, javac, ...)– Caricamento, esecuzione e profiling di programmi (sh, adb, sdb, prof, time, ...)– Modifica di file (ed, vi, emacs, ...)– Manipolazione di file (cp, mv, rm, mkdir, ...)– Informazione sullo stato del sistema (date, ls, who, df, du, ...)– Comunicazioni (telnet, ftp, mutt (e­mail), netscape, rlogin, rcp, rsh, ping, ...)

● N.B. ­  La maggior parte degli utenti vede (e giudica) un S.O. dai programmi di sistema, non dalle chiamate di sistema.

1.1.41

La Programmazione di Sistemi● Tre livelli principali di programmazione:

– Indipendente dal S.O. e dall'hardware● Massima portabilità (a livello sorgente)

– Programmi applicativi: calcolo scientifico, applicazioni gestionali, automazione d'ufficio, etc.

● Standardizzazione di linguaggi come C, C++, Fortran, etc.● Uso di sole librerie standard● Java: il bytecode (risultato della compilazione) è portabile.

– Dipendente dal S.O., indipendente dall'hardware ­  programmazione di sistema● Accesso diretto ai servizi dell'O.S. ⇒ uso diretto delle chiamate di sistema.● Uso di librerie specifiche● Esempio: programmazione concorrente in Unix● Programmi molto più sofisticati (ma meno portabili)

– Dipendente dal S.O. e dall'hardware● Livello riservato a pochi specialisti

– Esempio: scrittura di device driver per periferiche specifiche