|
Appunti informatica |
|
Visite: 1944 | Gradito: | [ Picolo appunti ] |
Leggi anche appunti:Generazione dei processi in unixGENERAZIONE DEI PROCESSI IN UNIX I processi vengono creati a mezzo della La storia di unixLa storia di UNIX Facciamo un po' di storia di UNIX, per capire perché ci Introduzione a unixINTRODUZIONE A UNIX Presentiamo di seguito alcune brevi nozioni sull'utilizzo |
INTRODUZIONE A UNIX
Presentiamo di seguito alcune brevi nozioni sull'utilizzo del noto SO UNIX. Ne approfitteremo per ricordare anche alcuni fondamentali concetti relativi ai SO o per introdurne di nuovi.
È opportuno dire subito che quando si è in linea su di una macchina UNIX, si può sempre accedere ad un help in linea tramite il comando MAN seguito dal nome del comando del quale si desiderano spiegazioni (come peraltro accade in DOS e WINDOWS).
Veniamo ai principali comandi per la gestione delle directory. Il carattere separatore delle directory è '/'.
MKDIR serve a creare una nuova directory. CDIR cambia directory. LS 'cataloga' la directory nella quale ci si trova, ossia mostra l'elenco dei file ivi contenuti (come la dir del DOS).
UNIX è un SO multiutente. Inoltre, è possibile organizzare gli utenti in GRUPPI DI UTENZA. La multiutenza ha reso necessario l'inclusione di meccanismi per la protezione dei file. È possibile associare ad ogni file degli specifici permessi di accesso. Essi vengono modificati mediante l'istruzione CHMOD seguita da una serie di numeri, che indicano il proprietario del file, il gruppo di utenza di cui egli fa parte e il mondo esterno. I 'permessi' riguardano la scrittura, la lettura e l'esecuzione dei files.
Le principali funzionalità esterne che un SO offre sono le seguenti :
GESTIONE DEI PROCESSI: creazione, terminazione, sincronizzazione e scambio di messaggi tra processi;
GESTIONE DELLA MEMORIA CENTRALE: allocazione della stessa ai vari processi presenti nel sistema, che, indipendentemente dal proprio stato, necessitano di aree private di memoria;
GESTIONE DELLA MEMORIA AUSILIARIA: i processi hanno sovente bisogno di scambiare informazioni con le memoria di massa, in particolare i dischi;
GESTIONE FILES: creazione, eliminazione e gestione di file e directory;
INTERPRETAZIONE DEI COMANDI: la cosiddetta shell del SO.
Veniamo ora il caso particolare di UNIX. Lo schema a seguire mostra la strutturazione delle sue varie componenti.
UTENTI
SHELL E COMANDI
COMPILATORI E INTERPRETI
interfaccia tra livello esterno e KERNEL: il suo attraversamento può avvenire solo attraverso SYSTEM CALL
FILE SYSTEM
SCHEDULAZIONE CPU (gestione dei processi)
KERNEL
GESTIONE DELLA MEMORIA
DRIVER (di terminali, nastri, etc.)
interfaccia tra KERNEL e HARDWARE
HARDWARE
CONTROLLORI DI CONTROLLORI DI CONTROLLORE DI
TERMINALI NASTRI & DISCHI MEMORIA
TERMINALI NASTRI, DISCHI MEMORIA
Le SYSTEM CALL possono essere classificate in tre categorie.
1) manipolazione dei files (in questo ambito ricadono anche quei dispositivi che vengono visti dal SO come files speciali);
2) controllo dei processi (incluse le loro intercomunicazioni);
3) manipolazioni di informazioni (ad esempio, le chiamate di sistema con le quali si chiede qual è la data o l'ora corrente, quanti utenti sono collegati, etc.).
Com'è noto, la parte che riguarda peculiarmente questo corso è quella della GESTIONE DEI PROCESSI. Consideriamo, per cominciare, una visione astratta (cioè, non legata ad un contesto particolare) dell'IMMAGINE DI UN PROCESSO IN MEMORIA. Anche in questo caso faremo ricorso ad uno schema.
TESTO Le istruzioni del programma.
DATI Rappresenta tutte le informazioni che sono utilizzate dal processo durante il
proprio ciclo di vita (dati globali e locali)
HEAP
Quest'area serve per l'allocazione dinamica della memoria, le variabili locali
(temporanee) e per i record di attivazione delle procedure richiamate
STACK
USER Quest'area è accessibile solo al KERNEL e contiene informazioni
BLOCK che concernono la gestione del processo.
Alla creazione di un processo corrisponde la creazione del suo descrittore. Esso consiste in una struttura dati che contiene tutte le informazioni fondamentali per la gestione del processo: il suo identificatore, il riferimento al padre, i puntatori all'area dati e all'area testo, quali sono i files che esso utilizza, etc.. In UNIX gli identificatori dei vari processi sono raccolti in una apposita tabella dei processi o PROCESS STRUCTURE[1] che contiene i seguenti identificatori:
PID = Process IDentifier
PPID = Parent Process IDentifier
PGID = Process Group IDentifier
UID e GID = identificatori dell'utente che ha lanciato il processo, usati per il
controllo dei permessi
DIRECTORY CORRENTE
PRIORITÀ (per lo scheduling dei processi)
TERMINALE da cui è stato lanciato
In UNIX il PID è un numero intero positivo che viene automaticamente associato al processo nel momento della sua creazione. La creazione di un processo avviene sempre da parte di un altro processo, che viene indicato come processo PADRE. Il PPID conservato nel descrittore ha lo scopo di identificarlo univocamente.
Quanto al PGID, esso si deve alla possibilità offerta da UNIX di dichiarare processi appartenenti ad uno stesso gruppo. Ad esempio, è conveniente raggruppare più processi che devono lavorare su uno stesso determinato file: uno che deve leggerlo, uno che lo elabora, uno che lo riscrive etc..
I comandi possono essere seguiti da opzioni, premettendo a queste ultime un trattino (-). Ad esempio, il comando % PS - AUX (il segno di percentuale non è altro che un prompt, cioè un simbolo usato dal SO per comunicare che si trova in attesa di comandi) permette di visualizzare tutte le informazioni relative ai processi di un determinato utente .
In LINUX c'è il comando TRACE che, dato un particolare processo, permette di seguire 'dal vivo' la catena di system call che il processo richiede:
% TRACE - P pid
Sembra di capire (anche dal seguito) che il descrittore, l'insieme delle informazioni relative ad un certo processo, sia un sottoinsieme della process structure, relativa all'insieme di tutti i processi, come una singola riga è sottoinsieme di una tabella. Dal Silberschatz-Galvin risulta però che 'process structure' è sinonimo di 'descrittore' (pag.579), o sbaglio?
Riporto testualmente ciò che segue subito dopo negli appunti dalle lezioni di De Carlini, il cui significate non sono riuscito a capire:
"Digitando questo comando (con eventuali opzioni) si ha a video l'elenco di tutti i propri processi con altre informazioni come :
USER PID %CPU %MEM SIZE RSS
text
data
stack "
Appunti su: |
|