Sei sulla pagina 1di 18

INTRODUZIONE

SISTEMI OPERATIVI
ESEMPI

Gli esempi del libro sono scaricabili al link


http://www.apuebook.com/code3e.html
DEFINIZIONE

Software che controlla le risorse hardware del


computer e fornisce un ambiente nel quale
possono girare i programmi.
Architettura UNIX
Log in

Quando si effettua il login, il SO va a leggere i dati


contenuti in /etc/passwd

samuele:x:1000:1000:Samuele,,,:/home/samuele:/bin/bash

login name, encrypted password, numeric user ID, numeric


group ID a comment field, home directory , and shell
program
Shell UNIX

Bash: è fornita in tutti gli ambienti Linux.

E' conforme allo standard POSIX

Supporta le funzionalità delle shell C e Korn

Compatibile con la shell Bourne


File System
● Disposizone gerarchica di directory e file

● La directory principale è chiamata root,


etichettata con il carattere /

● Una directory è un file che contiene directory


entries

● Ogni directory entry contiene il filename ed


attributi del file (ad es. file o directory)
Filename
● Si possono usare tutti i caratteri ad eccezione
del carattere / e null;

● Per portabilità lo standard POSIX.1 raccomanda


di usare letters (a-z,A-Z), numbers (0-9), period
(.), dash (-), and underscore ( _ ).

● Alla creazione di una directory vengono generati


2 file: . (dot) , .. (dot-dot).
Pathname

● Sequenza di uno o più filenames, separati da /

● Pathname assoluto: inizia con il carattere / e il


path parte dalla directory root

● Pathname relativo:Si riferisce ai file nella


directory attuale (working directory)

Esempio: ls1
Input & output
● File descriptors: Numero intero non negativo
che rappresenta un file aperto da un processo e
sul quale il processo può effettuare operazioni di
input/output.

● Descrittori aperti di default

● Terminale: ./a.out < infile > outfile

Esempi: mycat, getcputc


Programmi & Processi

● Un programma è un eseguibile che risiede nel


disco o nella memoria

● Un processo è un istanza in esecuzione di un


programma.

● In unix ogni processo ha un ID (pid)

● Le funzioni principali sui processi sono: exec,


fork, waitpid

Esempio: hello, shell1


Thread

● In genere ogni processo contiene un solo thread

● In alcuni casi all'interno di un processo ci


possono essere più thread (parallelismo)

● I thread dello stesso processo condividono


spazio di indirizzamento, fil descriptors e stack

● Ogni thread ha un ID locale al processo


Error Handling

● Per la gestione degli errori i sistemi UNIX si


avvalgono di 2 operazioni:
● Ritorno di funzione negativo

● La variabile errno settata al tipo di errore

● Tutti i possibili valori di errno sono definiti


all'interno di <errno.h>

● errno ha sempre valori positivi, e non è mai


resettata, quindi controllare il valore solo se la
funzione ritorna valori negativi
User Identification

● Ad ogni utente è assegnato un user ID ed un


group ID

● Il superadmin ha userID= 0

● I gruppi sono usati per raggruppare utenti con gli


stessi privilegi

Esempio: uidgid
Segnali

● Tecnica usata per notificare ad un processo


l'avvenuto evento ( ad esempio divisione per 0)

● Quando avviene un segnale il processo può:


● Ignorare il segnale

● Eseguire le operazioni di default

● Eseguire una funzione fornita dall'utente

Esempio: shell2
System Calls

● Sono il punto di accesso per il kernel

● Ogni chiamata di sistema in UNIX ha una


funzione con lo stesso nome implementata nelle
librerie standard.
System Calls
System Calls