Introduzione a Unix ● la storia ● la struttura – il sistema operativo – il file system – directories, files, inodes,... – i programmi.

Slides:



Advertisements
Presentazioni simili
PROCESS MANAGEMENT: STRUTTURE DATI
Advertisements

Da Unix a Linux Alessio Coraci V Dp.
Introduzione a Linux Dr. Giovanni Stracquadnio
Posix Capabilities POSIX STANDARD SEZIONE IMPORTANTE.
Operating System Concepts
1 Il file system di Unix Caratteristiche generali dei FS comunemente usati da Unix/Linux.
Sistema Operativo e Compilatore
TCP_Wrapper Le richieste per un determinato servizio (ad. es. telnet, ftp, rsh, etc.) vengono soddisfatte soltanto se lindirizzo IP del richiedente rientra.
Organizzazione della Memoria (Unix) Text contiene le istruzioni in linguaggio macchina del codice eseguibile, può essere condiviso in caso di processi.
1 File System ed Input/Output UNIX Implementazione del File System Caratteristiche del File System Unix/Linux System Call relative al File System Linput/output.
1 LINUX: struttura generale The layers of a UNIX system. User Interface.
Sistemi Operativi - Introduzione 1 Informazioni utili Per avere una distribuzione linux sul proprio pc: 1.
Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX La shell Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica.
Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX La shell Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica.
Il Sistema Operativo (1)
Il Sistema Operativo: il File System
1 Amministrazione del sistema Creazione degli account al sistema. Comandi per la gestione degli utenti File per la gestione degli utenti, password shadow.
1 Il file system di Unix Caratteristiche generali dei FS comunemente usati da Unix/Linux.
1 Il file system di Unix Caratteristiche generali dei FS comunemente usati da Unix/Linux.
1 SC che operano su processi Getpid, fork, exec, wait, waitpid, exit, dup, dup2.
1 Amministrazione dei processi nel sistema operativo Unix (Bach: the Design of the Unix Operating System (cap: 6, 7, 8)
Il sistema Linux: principi di progettazione
Basi di Unix: introduzione Kernel il fulcro del sistema. Comunica con l’hardware (processore, memoria, disco fisso) Shell interfaccia tra l’utente e il.
1 File System ed Input/Output UNIX Caratteristiche del FS Unix Implementazione Il file system di Linux Organizzazione dell’ I/O.
Ancora sulla shell. Shell e comandi La shell e' un programma che interpreta i comandi dell'utente. I comandi possono essere dati da terminale, oppure.
Corso di Laboratorio primo modulo Introduzione all'uso di un sistema operativo. Introduzione all'uso della shell (bash). Java – –Introduzione – –Tipi di.
1.1 Corso di Sistemi Operativi: Programmazione di Sistema Corso di Laurea in Informatica, Università di Firenze Anno accademico 2010/2011 Prof. Luca Ferrari.
1 Processi e Thread Processi Thread Meccanismi di comunicazione fra processi (IPC) Problemi classici di IPC Scheduling Processi e thread in Unix Processi.
Esempi di Sistemi Operativi: DOS Nel file system di DOS i path names hanno la seguente forma C:\TEMP\DirA\DirB\elab.pdf Si utilizzano due nomi speciali.
Il sistema operativo UNIX Presentazione realizzata da: Deri Claudio,Granata Luca,Brunetti Enrico.
Script bash I file di comandi in Linux. BASH  Bourne Again Shell  Modalità interattiva o batch (file di comandi)  Ambiente di programmazione “completo”
Corso gratuito di Linux. Linux User Group Mantova
Introduzione a GNU/Linux. GNU/Linux Caratteristiche Compatibile con UNIX ® Multitasking Multiutente Libero.
1 Alberto Pollastro, !#/bin/bash Novara, GalLUG - Gruppo Utenti Linux Galliate - #!/bin/bash Alberto Pollastro.
Orientamento. Il Kernel Il Kernel è un programma scritto in linguaggio vicino all'hardware che ha il compito di fornire ai processi in esecuzione sul.
User Mode Linux. Cos'è user mode linux ● User mode linux è un kernel linux che gira come un'applicazione nello spazio utente.
Il Sistema Operativo. Sistema Operativo (Software di base) Il sistema operativo è un insieme di programmi che opera sul livello macchina e offre funzionalità.
IL SISTEMA OPERATIVO (seconda parte) PROGRAMMI UTENTE INTERPRETE COMANDI FILE SYSTEM GESTIONE DELLE PERIFERICHE GESTIONE DELLA MEMORIA GESTIONE DEI PROCESSI.
Corso di Elementi di Informatica
A cura dell’Ing. Buttolo Marco
Introduzione all'Open Source
I comandi principali di Linux
Sistemi e Applicazioni per l’Amministrazione Digitale
Comparazione File System Domenico Chiefali a.k.a. JDaemon
Compilazione del kernel Linux
Il Sistema Operativo Gestione dei Processi
I PROCESSI.
Corso LAMP Linux Apache Mysql Php
Programmazione per la Musica | Adriano Baratè
Terza Lezione → Navigare nel file System → parte 2
PROGRAMMAZIONE BASH - INTRODUZIONE
I PERMESSI IN LINUX.
Seconda lezione → Navigare nel File System
INTRODUZIONE ALLA SHELL
* Il Sistema Operativo GNU/Linux * Sistema Operativo e Applicazioni
PROGRAMMAZIONE BASH – ISTRUZIONE IF
Tipi di Shell sh – Bourne shell csh – C shell ksh – Korn shell
Laboratorio Informatico
Corso di Ingegneria del Web A A Domenico Rosaci 1
Alessandro Brunengo Mirko Corosu INFN – Sezione di Genova
Corso propedeutico base di informatica
© 2007 SEI-Società Editrice Internazionale, Apogeo
Processi e thread in Windows 2000
File System ed Input/Output
LINUX: struttura generale
Sommario comandi su files e directories
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Introduzione ai DBMS I Sistemi di Gestione di Basi di Dati sono strumenti software evoluti per la gestione di grandi masse di dati residenti su memoria.
File system Casi di studio (3).
Transcript della presentazione:

Introduzione a Unix ● la storia ● la struttura – il sistema operativo – il file system – directories, files, inodes,... – i programmi

Unix: la storia (1) ● 1965: Bell Labs, MIT, GE si accordano per lo sviluppo congiunto di Multics, un SO multiuser, multiprocess, con un file system gerarchico. ● 1969: AT&T affonda Multics. Ken Thompson e Dennis Ritchie progettano ed implementano su un PDP-7 la prima versione del file system Unix (il nome viene suggerito da Brian Kernighan). ● 1 Gennaio 1970: the epoch (unix start of time). ● 1971: il sistema gira su PDP-11 (16KB RAM, 8KB utente, 512KB disk).

Unix: la storia (2) ● le caratteristiche fondamentali: – orientato alla programmazione – interfaccia utente semplice – utilities semplici ma combinabili a piacere per ottenere funzioni complesse (cp, dd, sort, ls, find, cat,...) – file system gerarchico – multiuser, multiprocess – portabile (H/W architecture independent)

Unix: la storia (3) ● 1973: Unix viene riscritto in C (creato nel frattempo da Kernighan e Ritchie per scrivere Unix...) => la portabilità aumenta a dismisura. ● 1974: Unix viene concesso in licenza alle università – inizia il processo di sviluppo distribuito e collaborativo che ancora oggi è in corso. ● 1980: BSD (Berkeley Software Distribution). ●... ● 1992: Linux!!!

Riassumendo...

... e semplificando (!)

I principi di progetto ● time sharing (semplice scheduling a priorita'), multiprocesso, a memoria virtuale ● modulare (shell intercambiabile...) ● file system ad albero multilivello. Un file e' semplicemente un sequenza di byte ● file ~ I/O devices (dettagli H/W nel kernel) ● da programmatori per programmatori

La struttura (1) NO!! Yes!!

La struttura (2) ● SO stratificato: il nocciolo più interno è l'H/W; il kernel interagisce direttamente (è l'unico che può farlo) con lo H/W e fornisce servizi alle applicazioni utente. ● Le applicazioni non devono avere la minima conoscenza dei dettagli H/W, devono solo sapere come richiedere i servizi necessari al kernel (indipendenza da H/W => portabilità). ● Il colloquio con il kernel avviene mediante system calls standard (open file; read; close file; etc. etc.). ● Entità fondamentali: file (anche i devices lo sono) e processi.

Il kernel ● Implementa tutte le funzionalità tipiche del SO, nascondendo lo H/W e fornendo un'interfaccia astratta di alto livello agli utenti: – Processi (scheduling, priorità, time sharing,...) – Memoria virtuale (swapping, paging,...) – Filesystem (files, dirs,...) – Device drivers (rete, audio, video, dischi,...) ● Caricato al bootstrap, gira in maniera trasparente. ● Monolitico (sicurezza) o modulare (flessibilità).

La shell ● Command Line Interpreter (CLI) - è un programma particolare che fornisce le funzionalità utente di base: – creazione/cancellazione/copia file; – manipolazione permessi su file; – lancio/manipolazione altri processi (job control); – programmazione (interprete); –... ● Sh, ksh, bash, zsh (bourn shell family); csh, tcsh (c-shell family).

Il File system (1) et c binus r de v hom e grou p bi n zsh ttymous e gr1 carbon e / passwd

Il File system (2) ● Struttura gerarchica ad albero; la radice (/ = root) è il nodo principale. ● La struttura H/W (dischi, cd-rom, floppy) è completamente mascherata. ● Ogni nodo è un file o una directory, una collezione di altri file o directory (file speciali: link, socket, pipe,...). ● Ogni elemento è univocamente individuato dal suo pathname: /home/gr5/carbone, /etc/passwd, /dev/tty,... ●. => current working directory;.. => parent directory

file, directory, inode ● file: generici sequenze di byte senza struttura (ASCII, binari, etc. etc.). NON contiene informazioni sulla sua propria struttura (header, trailer,...). ● directory: file che contiene una lista dei file in esso contenuti sotto forma di nomi e inode numbers; ● inode: file speciale nel quale il kernel immagazzina le informazioni fondamentali su un file (permessi, proprietà, date di creazione e modifica, posizione fisica sul supporto). L'utente non ha necessità di accedere direttamente a queste informazioni, ci pensa il kernel a mantenerle e tradurle.

Questo file e' mio! ● utente: username (uid, gid) – uid = user id (< 65535) – gid = group id (< 65535) ● ogni file ha un proprietario ed uno schema di permessi: ugo = user, group, others – rwx—x--- => u tutto, g esecuzione, o nulla – rwxrwxrwx => tutto permesso a tutti ● root (0,0) e' il superuser (gode di tutti i privilegi)

File = I/O devices? ● File, directory, I/O devices: disk, tape, soundcard, ??? – # less /root/.mozilla/bookmarks.html – # tar cf /tmp/archivio /home/luka – # tar cf /dev/tape /home/luka – # dd if=/dev/sda of=/dev/sdb – # sox sample.wav -t ossdsp /dev/dsp – # dd if=/dev/zero of=/dev/null ● Di tutto questo si occupa il kernel tramite i device drivers (pezzi di codice che 'sanno' come parlare con i singoli device)

u**x file systemS ● Linux: – ext2, ext3 – ReiserFS – (hfs, jfs, xfs,...) ● Alcuni di questi implementano funzionalita' evolute di journaling (registrano le transazioni su disco e sono in grado di ricostruirle incaso di crash di sistema).

Processi ● istanze di esecuzione di singoli programmi (i.e.: sequenze di istruzioni) che allocano ed impiegano risorse (CPU, memoria, spazio disco, etc.) e possono comunicare tra di loro ● ogni processo e' univocamente individuato da un intero: pid = process id (< 65535) e dal suo proprietario ● anche i processi sono organizzati gerarchicamente => ogni processo e' figlio (child) di qualche altro processo; init(1) e' il padre (parent) di tutti i processi. Il parent crea i suoi child ed e' (tra le altre cose) responsabile del rilevamento della loro fine 'serena': fork – exec - wait

fork – exec - wait paren t chil d paren t fork() exec( ) exit( ) wait( ) exit value (un processo di cui nessuno raccoglie il valore d'uscita diventa uno zombie) pipe (IPC)

fork() ● unica funzione che ritorna due valori differenti: il pid del child al parent, 0 al child. ● il child e', inizialmente, una copia conforme del parent: stesso spazio di indirizzi del processo originale (stesse variabili con lo stesso valore etc.). La successiva exec() carica in memoria un programma nuovo e lo sostituisce al processo originale. ● parent & child possono comunicare tramite una pipe (la forma piu' primitiva di IPC = interprocess communication)

Uno sguardo d'insieme