Processi. C. Baroglio a.a

Documenti analoghi
Esame Laboratorio di Sistemi Operativi Cognome Nome Mat.

Laboratorio di Algoritmi e Strutture Dati

Lab. di Sistemi Operativi - Esercitazione - Comandi Shell

Controllo di processi

Sistemi Operativi Anno Accademico 2011/2012. Segnali: Interrupt software per la gestione di eventi asincroni

Sistemi Operativi. Corso di Laurea Triennale in Ingegneria Informatica. Esercitazione 2. Editor Utenti Permessi

L hardware da solo non è sufficiente per il funzionamento dell elaboratore È necessario introdurre il software:

Fortran in pillole : prima parte

Sistema Operativo (Software di base)

Ogni PC, per iniziare a lavorare, ha bisogno di un sistema operativo. Infatti questo è il primo programma che viene eseguito e che permette

SendMed Client v Manuale d uso-

Il DOS diagramma di flusso. I comandi del DOS. I comandi: vista funzionale. Parametri. Opzioni. I comandi: sintassi

Business Communications Manager Telefono Internet i2004 Scheda per l'utente

Lezione 2: Comandi avanzati della Shell di Unix

Lettura da tastiera e scrittura su monitor

MODULO HOTEL: INSTALLAZIONE E MANUALE UTENTE

Uso del terminale in ambiente UNIX

Business Communications Manager Telefono Internet i2002 Scheda per l'utente

Comandi filtro: sed. Se non si specificano azioni, sed stampa sullo standard output le linee in input, lasciandole inalterate.

portineria Centralino di Terraneo Istruzioni d uso per l utente 10/02 - NC PART. B9576C

Lab. di Sistemi Operativi - Esercitazione n 2 - a.a. 2012/2013

Utilizzo di Fiery WebSpooler

Interfaccia a Linea di Comando di Windows (Prompt dei comandi) Dott. Ing. Giuseppe Serano

Corso di Linguaggi di Programmazione + Laboratorio

Esercitazione. Excel: le macro. C.1 Registrazione di macro

Video e Tastiera con le interruzioni software del BIOS e di MSDOS

PREMESSA. Procedure di protezione che, ovviamente, dovranno essere riabilitate al termine dell'installazione.

Guida Linux. Molto rapida

IL PRIMO PROGRAMMA IN C

1 DESCRIZIONE DELLE FUNZIONI REGISTRAZIONE UTENZE INTERNET Caricamento utente internet (data entry)... 3

I THREAD O PROCESSI LEGGERI

03/06/2015 GUIDA RAPIDA DELL APPLICAZIONE SID GESTIONE FLUSSI SALDI VERSIONE 1.0.5

Guida rapida. Versione 9.0. Moving expertise - not people

Video Scrittura (MS Word) Prima Parte

Shell BASH. Variabili Redirezione

LEZIONE 4. Per semplificarne la comprensione della tastiera possiamo suddividere i tasti in diversi gruppi in base alla funzione che possono svolgere:

1. Riconoscimento. Figura 1 Modulo Home

Shell di Linux e Comandi Utente

Manuale utente. Versione 6.9

AXO - Architettura dei Calcolatori e Sistema Operativo. organizzazione strutturata dei calcolatori

Manuale versione Mobile (Smartphone Tablet)

Lena Cota Guido Corso di Informatica - II livello. Esplora Risorse. Lavorare con il file system

Configurazione di una LAN in ambiente Windows

Sistemi Operativi 1. Mattia Monga. 11 marzo Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia

INDICE. Vista Libretto Pt. Coordinate 2. Inserimento e modifica dei punti di coordinate note 4. Inserimento e modifica dei punti di orientamento 5

Il formato delle ricette Convenzioni tipografiche Versioni, ultima edizione ed errata corrige

NAS e Multimedia. Descrizione

Variabili e Istruzioni

Formattazione e partizionamento

SEDE OPERATIVA Via A. De Gasperi, 127/A Merate (LC) TEL. 039/ Manuale

ASSOCIA CONTATTI DI DAVID TÄNZER. Manuale Utente ASSOCIAZIONE, RIMOZIONE ASSOCIAZIONI, RICERCA ASSOCIAZIONI E SALVATAGGIO DI ELEMENTI DI OUTLOOK

Il Sistema Operativo. Informatica Sistema Operativo 1

Introduzione Concetti Generali Pratica su Access Link utili. ECDL - Database. European Computer Driving Licence - Modulo 5 - Database LEZIONE 1

GUIDA OPERATIVA CGM MEF. 1 of 11. EFFEPIEFFE Srl

Corso di Laurea Ingegneria Informatica Laboratorio di Informatica

Manuale d istruzioni per l uso della web-mail di ANDI

Primi passi col linguaggio C

Cosa è un sistema operativo?

Esercitazione sui grafi di precedenza, fork/join, cobegin/coend.

MANUALE UTENTE PROCEDURA PLANET WEB INTERPRISE (II edizione)

EXCEL RIFERIMENTI ASSOLUTI E RELATIVI

Algoritmi e basi del C Struttura di un programma

1. Introduzione. 2. Installazione di WinEMTFree. 3. Descrizione generale del programma

CAMPUS RGS LINEE GUIDA PROGRESSIONI ECONOMICHE 2016

Guida. > Introduzione. > Accesso e prima overview. > Ricerca Prodotti. > Ricerca Ricambi. > Ricerca News

La Back Office Console consente di costruire lo scheletro degli schema.

Ambiente di sviluppo STEP 7 Micro/Win

Corso di Informatica

File System I parte. File System

Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova.

File di script. I File di Script Corso 2D - R.Virili 1

GENERATORE DI MATRICI COMMUTATIVE

File System. File system gerarchico. Proteggere la propria home directory ... / = Root nodi interni: directory foglie: directory vuote o file

Telecomando mobile HP (solo in determinati modelli) Guida utente

Manuale d uso. Servizio Segreteria Telefonica Memotel. per Clienti Fibra

Modi di esecuzione user / kernel

L INTERFACCIA GRAFICA DI EXCEL

Corso ForTIC C2 LEZIONE n. 8. Cos'è la shell Le variabili d'ambiente L'uso della shell per la realizzazione di semplici script

Tipi di pulsante, caselle di controllo e altri controlli sulla barra degli strumenti Moduli

I Metacaratteri della Shell Unix

3. Le routine evento in Access 2000/2003

Selezionare e spostare le icone

Mod DS A LBT 8563 SOFTWARE DI PROGRAMMAZIONE PER MODULO DI CHIAMATA E CENTRALINO 2VOICE

Utilizzo del sistema operativo

Installazione dell SDK sotto Windows

Modifica delle impostazioni della stampante 1


Informatica WINDOWS. Francesco Tura F. Tura

+ - Alimentazione Da 8VDC/ MAX 12VDC

Il Sistema Operativo fa parte del software di base; e` costituito da un insieme di programmi che interagiscono e cooperano per:

Guida per l utente agli organigrammi cross-browser di OrgPublisher

Concetti Introduttivi. Il Computer

Guida alle sicurezze Internet Banking. (versione 5.0 Novembre 2016)

UNA CERTIFICAZIONE PER IL FUTURO

Visual basic base Lezione 03. Gli eventi

Dispense di Informatica Anno Scolastico 2008/2009 Classe 3APS. Dall'Algoritmo al Programma

Sistema operativo & file system 1

Manuale d uso DropSheep 4 imaio Gestione Pixmania-PRO Ver 1.1

730 Precompilato Vademecum Operativo

TERNA SRM- Aste On Line Manuale Fornitore

Transcript:

Processi C. Baroglio a.a. 2002-2003 1 Processi, flussi e pipe In Unix ogni processo è identificato da un numero intero, il Process IDentifier o PID per brevità. I processi sono generati o dall esecuzione di comandi, dall esecuzione di programmi oppure per iniziativa di altri processi che invocano la system call fork. Ogni processo comunica con il proprio ambiente attraverso tre flussi di dati: standard input, standard output e standard error. Il primo corrisponde di default alla tastiera ed è la sorgente dalla quale il processo preleva i dati da elaborare. Il secondo e il terzo corrispondono di default al monitor e sono utilizzati rispettivamente per comunicare il risultato dell elaborazione e per effettuare comunicazioni di servizio (verificarsi di errori, stampe di utilità). Il valore dei flussi standard può essere modificato. Consideriamo per esempio il comando ls, che sappiamo listare il contenuto di una directory. Se richiamo l esecuzione di ls senza ulteriori specifiche, il contenuto della working directory verrà inviato allo standard output, che corrisponde al monitor, e quindi verrà visualizzato all utente. Supponiamo di voler memorizzare il risultato del comando ls per un qualche uso futuro. A tal fine possiamo scrivere: ls > f ile risultato il simbolo di maggiore indica alla shell che lo standard output del processo corrispondente all esecuzione del comando deve essere ridirezionato sul file avente nome file risultato. Se tale file non esiste viene creato e il suo contenuto sarà il risultato di ls. Se invece esiste, il contenuto precedente verrà perso in quanto sarà sovrascritto dal risultato di ls. Per far sì che il risultato di ls venga appeso in fondo al file indicato e non sovrapposto al contenuto precedente occorre utilizzare >> anziché >. Ci sono situazioni in cui invece un processo produce molte stampe a video nelle quali l utente non è interessato. Per evitare di vederle scorrere nella finestra di lavoro l utente può ridirigere lo standard output del processo su di un file speciale, /dev/null, nel seguente modo: comando > /dev/null In questo caso l output non viene salvato, al contrario viene perso come se non fosse stato prodotto. 1

In maniera analoga è possibile ridirigere lo standard input di un processo. Alcuni processi di default elaborano dati digitati a tastiera da un utente. Qualora sia a disposizione un file di dati che potrebbe essere utile elaborare con il comando in questione. In questo caso è possibile utilizzare lo stesso programma ridirigendone lo standard input in questo modo: comando < f ile dati Questa soluzione è piuttosto frequente nel caso di programmi scritti in C: si scrive un programma che utilizza standard input e standard output e poi lo si utilizza anche su file di dati (e magari salvando i risultati su altri file), ridirigendo i flussi standard del processo. Non tutte le versioni di Unix consentono di ridirigere con un simbolo apposito il terzo ed ultimo flusso standard, lo standard error. In genere è possibile ridirigere sia lo standard output che lo standard error utilizzando > & anziché solo > (>> & anziché >>). In quei casi in cui si voglia separare i due flussi in uscita è possibile utilizzare il poco agevole (comando > output file) > &error f ile. Come abbiamo visto nell introduzione a Unix, il sistema operativo fornisce all utente un gran numero di piccoli programmi, ciascuno avente una funzionalità precisa, che possono essere combinati per realizzare compiti diversi. Il meccanismo che consente tale combinazione è la ridirezione dei flussi standard attraverso un oggetto chiamato pipe e simboleggiato dal carattere. In generale è possibile concatenare una sequenza qualsivoglia lunga di comandi nel seguente modo: comando 1 comando 2... comando N L effetto di pipe è di ridirigere lo standard output del comando (i-1)-mo nello standard input del comando i-mo. I comandi così composti costituiscono una pipeline di processi. Solo l output del comando N-mo verrà inviato al terminale. 2 Utenti e gruppi reali ed effettivi Ogni processo ha associati quattro identificatori: real user id, real group id, effective user id, effective group id. Questi identificatori hanno un ruolo fondamentale per tutti quei processi che per operare debbono accedere a dei file. Consideriamo, come esempio introduttivo, il comando passwd, che consente a ciascun utente di modificare la propria password. Questo programma utilizza due file, passwd (omonimo del comando) e shadow, che hanno associati i seguenti diritti di accesso: rw- r- - r- - root root /etc/passwd r- - - - - - - - root root /etc/shadow 2

Il file passwd può essere modificato solo dall utente root (amministratore di sistema) mentre il file shadow è un file di sola lettura, abilitata al solo utente root. Eppure gli utenti (che non sono root) riescono ad accedere a questi file quando utilizzando il comando passwd. Questo stato di cose apparentemente è in conflitto con quanto abbiamo visto riguardo i diritti di accesso a file e directory: nessun utente oltre a root dovrebbe poter modificare passwd e leggere shadow e, in effetti, se l utente provasse a modificare con un editor passwd o ad aprire shadow otterrebbe senza dubbio la segnalazione che l operazione non è consentita. Nel caso del comando passwd, invece, è come se le restrizioni fossero in qualche modo allentate specificamente per gli accessi necessari all attività di modifica della propria password. Il mistero comincia a svelarsi se eseguiamo ls -l /usr/bin/passwd (questa volta passwd è il nome del comando): r-s - - x - - x root root /usr/bin/passwd Possiamo osservare che i diritti di accesso associati all eseguibile in questione sono diversi da quelli a noi finora noti: compare una s della quale ancora non conosciamo il significato, che rende questo comando speciale. A parole questa configurazione specifica che quando un utente esegue il comando in questione acquisisce i diritti di accesso di root per il solo tempo necessario all esecuzione medesima. Volendo fare un discorso più preciso e generale, occorre tornare ai quattro identificatori associati a ciascun processo e capire che cosa sono e quali valori assumono i real/effective user/group id. Sia exe il nome di un file eseguibile. Siano utente1 e group1 i valori di UID e GID dell utente che lancia exe, producendo un processo P, che nel corso del proprio operato cercherà di accedere ad un file che chiameremo info. Il real user id di P è lo UID dell utente che lo ha generato (ovvero utente1). Analogamente il real group id di P è il GID dell utente che lo ha generato (group1, nel nostro esempio). L effective user id e l effective group id di P dipendono rispettivamente da due diritti di accesso speciali, che si chiamano set user id e set group id, associati all eseguibile exe. Se set user id è attivo, l effective user id di P sarà uguale all UID del proprietario del file eseguibile (nell esempio il proprietario di /usr/bin/passwd, cioè root); in caso contrario l effective user id di P sarà uguale al suo real user id (quindi utente1). In maniera del tutto analoga, se set group id è attivo, l effective group id del processo P sarà uguale al GID del proprietario di exe; in caso contrario sarà identico al real group id del processo (group1). La decisione di attivare o meno set user (group) id dipende dal proprietario di exe (di default sono disattivi). In entrambi i casi si utilizza chmod. L attivazione di set user id viene fatta con il comando chmod u+s exe, la sua disattivazione con chmod u-s exe, l attivazione di set group id con chmod g+s exe, la sua disattivazione con chmod g-s exe. Vediamo ora come questi quattro identificatori vengono utilizzati nel momento in cui il processo P cerca di accedere al file info. Come premessa ricor- 3

diamo che info, come tutti i file, avrà associato un proprietario e un gruppo di utenti. Valgono le seguenti regole, applicate nell ordine con cui sono elencate: 1. se l effective user id di P coincide con il proprietario di info, il processo acquisisce i diritti di accesso del proprietario di info (nel nostro esempio il processo originato dall esecuzione di /usr/bin/passwd acquisisce i diritti di accesso di root per i file passwd e shadow); 2. altrimenti se l effective group id di P e il gruppo di info concidono, P acquisisce i diritti di accesso del gruppo di utenti associato a info; 3. se nessuna delle due precedenti condizioni è valida, valgono le normali triple di diritti di accesso studiate nella sezione dedicata a file e directory; l accesso sarà consentito o meno a seconda della categoria di utenti nella quale ricadono real user id e real group id del processo P. 3 Processi in background e in foreground In questa sezione studieremo un meccanismo che consente di sfruttare la caratteristica di Unix di essere un sistema operativo multi-tasking, producendo più processi che eseguono in parallelo all interno dello stesso terminale. Fino ad ora abbiamo visto in modo implicito una sola modalità di avvio dei processi: l utente digita un comando, che viene letto dalla shell nel momento in cui viene premuto il tasto enter e da questa eseguito, al termine dell esecuzione (evidenziata dal riapparire del prompt sul terminale di lavoro) la shell si mette in ascolto di nuovi comandi. Questa modalità di esecuzione è detta di foreground. L esecuzione in foreground è caratterizzata dal fatto che il processo mantiene il controllo del terminale fino al suo termine. In altre parole, qualsiasi comando venga digitato prima del riapparire del prompt viene ignorato fino a quando il processo in esecuzione non termina, rilasciando il terminale. Esiste una seconda modalità di esecuzione in Unix: l esecuzione in background. Un processo eseguito in background non ha il controllo del terminale, quindi non impedisce l avvio di altri processi derivanti dall esecuzione di altri comandi. Tutti i tipi di shell forniscono degli strumenti per avviare processi in background, per controllarne l esecuzione e per modificare il tipo di esecuzione dei processi (passand da fore- a back-ground o viceversa). Vediamo gli strumenti offerti dalle shell di tipo csh. Le unità esecutive che le shell csh consentono di gestire (nel contesto di foree back-ground) sono dette job. Il concetto di job è un po diverso dal concetto di processo, corrisponde infatti a un gruppo di processi connessi da pipe: > cmd 1 cmd 2... cmd N Il job identifica l insieme degli N processi avviati (corrispondenti ciascuno ad un comando), ciascun processo avrà comunque un proprio PID. L avvio da linea 4

di comando di un singolo processo è un caso particolare, quello in cui l insieme contiene un solo elemento. Per avviare un job in background occorre terminare la linea di comando con il carattere & (e commerciale): > cmd 1 cmd 2... cmd N & Questa procedura produce come output immediato la stampa a video di un numero fra parentesi quadre che identifica il job avviato in background, dopodiché ricompare il prompt: la shell è pronta a eseguire in parallelo altri comandi. Su ogni terminale è possibile avviare molti job in background ma uno solo può eseguire in foreground. Le informazioni relative ai job in background sono mantenute in uno stack, che può essere visualizzato a video utilizzando il comando jobs: [1] Stopped (tty input) comando1 [2] - Stopped (tty input) comando2 comando3 [3] + Stopped (tty input) comando1 La cima dello stack corrisponde all elemento indicato con +. Un job in background non riceve input dalla tastiera però riversa su monitor le stampe inviate su stdout ed stderr, a meno di ridirezioni. Per passare in foreground un job attualmente in background si utilizza il comando fg in uno dei due seguenti modi: > fg > fg %n Il comando fg senza argomenti porta in foreground il job in cima allo stack (nell esempio il job numero 3), mentre utilizzando come argomento il simbolo % seguito da un numero si porta in foreground il job contraddistinto da quel numero. Per portare un job in background occorre eseguire due operazioni: innanzi tutto è necessario sospendere il processo attualmente in foreground utilizzando la combinazione di tasti control-z (equivale ad inviare un segnale di sospensione), in secondo luogo occorre eseguire il comando bg. 4 Uccisione dei processi Per uccidere un processo in foreground è sufficiente eseguire la combinazione di tasti control-c. In generale per uccidere un processo occorre conoscere il suo PID. È possibile uccidere qualsiasi processo eseguendo il comando: > kill 9 pid Il comando kill consente di inviare un segnale a un processo; -9 indica che si intende inviare un segnale SIGKILL il cui effetto è la terminazione del processo 5

del quale è stato indicato il PID. Per visualizzare l elenco dei processi e dei loro PID si utilizza il comando ps (vedi slide e manuale on-line). 6