X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=process.tex;h=9d1916f6eecce3af2871bbfbe1d842b7f578f42c;hp=2e06276cc21cc13bd7609263e2ed4f590d325c24;hb=2ee09e1100e6d070dbf5d4d13d900dba516d83de;hpb=e2bece451ff1f495d624ca89ad9d065ddd392bc6 diff --git a/process.tex b/process.tex index 2e06276..9d1916f 100644 --- a/process.tex +++ b/process.tex @@ -1,6 +1,6 @@ %% process.tex %% -%% Copyright (C) 2000-2012 Simone Piccardi. Permission is granted to +%% Copyright (C) 2000-2014 Simone Piccardi. Permission is granted to %% copy, distribute and/or modify this document under the terms of the GNU Free %% Documentation License, Version 1.1 or any later version published by the %% Free Software Foundation; with the Invariant Sections being "Un preambolo", @@ -656,13 +656,13 @@ necessariamente adiacenti. Per la gestione da parte del kernel la memoria viene divisa in pagine di dimensione fissa. Inizialmente queste pagine erano di 4kb sulle macchine a 32 bit e di 8kb sulle alpha. Con le versioni più recenti del kernel è possibile -anche utilizzare pagine di dimensioni maggiori (di 4Mb, dette \textit{huge - page}), per sistemi con grandi quantitativi di memoria in cui l'uso di -pagine troppo piccole comporta una perdita di prestazioni. In alcuni sistemi -la costante \const{PAGE\_SIZE}, definita in \headfile{limits.h}, indica la -dimensione di una pagina in byte, con Linux questo non avviene e per ottenere -questa dimensione si deve ricorrere alla funzione \func{getpagesize} (vedi -sez.~\ref{sec:sys_memory_res}). +anche utilizzare pagine di dimensioni maggiori (di 4Mb, dette +\itindex{huge~page} \textit{huge page}), per sistemi con grandi quantitativi +di memoria in cui l'uso di pagine troppo piccole comporta una perdita di +prestazioni. In alcuni sistemi la costante \const{PAGE\_SIZE}, definita in +\headfile{limits.h}, indica la dimensione di una pagina in byte, con Linux +questo non avviene e per ottenere questa dimensione si deve ricorrere alla +funzione \func{getpagesize} (vedi sez.~\ref{sec:sys_memory_res}). Ciascuna pagina di memoria nello spazio di indirizzi virtuale è associata ad un supporto che può essere una pagina di memoria reale o ad un dispositivo di @@ -1831,8 +1831,9 @@ possibili si è poi provveduto ad un'azione opportuna, ad esempio per le tre opzioni che prevedono un parametro si è effettuata la decodifica del medesimo, il cui indirizzo è contenuto nella variabile \var{optarg}), avvalorando la relativa variabile (\texttt{\small 12-14}, \texttt{\small 15-17} e -\texttt{\small 18-20}). Completato il ciclo troveremo in \var{optind} l'indice -in \code{argv[]} del primo degli argomenti rimanenti nella linea di comando. +\texttt{\small 18-20}). Completato il ciclo troveremo in \var{optind} +l'indice in \code{argv[]} del primo degli argomenti rimanenti nella linea di +comando. Normalmente \func{getopt} compie una permutazione degli elementi di \param{argv} cosicché alla fine della scansione gli elementi che non sono @@ -1966,22 +1967,22 @@ queste ed ulteriori variabili si può ottenere con il comando \cmd{man 7 & \textbf{Linux} & \textbf{Descrizione} \\ \hline \hline - \texttt{USER} &$\bullet$&$\bullet$&$\bullet$& Nome utente\\ - \texttt{LOGNAME}&$\bullet$&$\bullet$&$\bullet$& Nome di login\\ + \texttt{USER} &$\bullet$&$\bullet$&$\bullet$& Nome utente.\\ + \texttt{LOGNAME}&$\bullet$&$\bullet$&$\bullet$& Nome di login.\\ \texttt{HOME} &$\bullet$&$\bullet$&$\bullet$& Directory base - dell'utente\\ - \texttt{LANG} &$\bullet$&$\bullet$&$\bullet$& Localizzazione\\ + dell'utente.\\ + \texttt{LANG} &$\bullet$&$\bullet$&$\bullet$& Localizzazione.\\ \texttt{PATH} &$\bullet$&$\bullet$&$\bullet$& Elenco delle directory - dei programmi\\ - \texttt{PWD} &$\bullet$&$\bullet$&$\bullet$& Directory corrente\\ - \texttt{SHELL} &$\bullet$&$\bullet$&$\bullet$& Shell in uso\\ - \texttt{TERM} &$\bullet$&$\bullet$&$\bullet$& Tipo di terminale\\ + dei programmi.\\ + \texttt{PWD} &$\bullet$&$\bullet$&$\bullet$& Directory corrente.\\ + \texttt{SHELL} &$\bullet$&$\bullet$&$\bullet$& Shell in uso.\\ + \texttt{TERM} &$\bullet$&$\bullet$&$\bullet$& Tipo di terminale.\\ \texttt{PAGER} &$\bullet$&$\bullet$&$\bullet$& Programma per vedere i - testi\\ - \texttt{EDITOR} &$\bullet$&$\bullet$&$\bullet$& Editor preferito\\ - \texttt{BROWSER}&$\bullet$&$\bullet$&$\bullet$& Browser preferito\\ + testi.\\ + \texttt{EDITOR} &$\bullet$&$\bullet$&$\bullet$& Editor preferito.\\ + \texttt{BROWSER}&$\bullet$&$\bullet$&$\bullet$& Browser preferito.\\ \texttt{TMPDIR} &$\bullet$&$\bullet$&$\bullet$& Directory dei file - temporanei\\ + temporanei.\\ \hline \end{tabular} \caption{Esempi delle variabili di ambiente più comuni definite da vari @@ -2205,6 +2206,10 @@ versione ``\textsl{sicura}'' da zero. % TODO opzioni in formato esteso +% TODO trattare il vettore ausiliario e getauxval (vedi +% http://lwn.net/Articles/519085/) + + \section{Problematiche di programmazione generica} \label{sec:proc_gen_prog} @@ -2694,30 +2699,26 @@ una variabile per poi ristamparne il contenuto leggendolo un byte alla volta. Il codice di detto programma, \file{endtest.c}, è nei sorgenti allegati, allora se lo eseguiamo su un normale PC compatibile, che è \textit{little endian} otterremo qualcosa del tipo: -\begin{Command} -[piccardi@gont sources]$ ./endtest -\end{Command} -%$ -\begin{Terminal} +\begin{Console} +[piccardi@gont sources]$ \textbf{./endtest} Using value ABCDEF01 val[0]= 1 val[1]=EF val[2]=CD val[3]=AB -\end{Terminal} +\end{Console} +%$ mentre su un vecchio Macintosh con PowerPC, che è \textit{big endian} avremo qualcosa del tipo: -\begin{Command} -piccardi@anarres:~/gapil/sources$ ./endtest -\end{Command} -%$ -\begin{Terminal} +\begin{Console} +piccardi@anarres:~/gapil/sources$ \textbf{./endtest} Using value ABCDEF01 val[0]=AB val[1]=CD val[2]=EF val[3]= 1 -\end{Terminal} +\end{Console} +%$ L'attenzione alla \textit{endianness} nella programmazione è importante, perché se si fanno assunzioni relative alla propria architettura non è detto che @@ -2801,7 +2802,7 @@ basterà scegliere una volta per tutte quale usare e attenersi alla scelta. % LocalWords: capability MEMLOCK limits getpagesize RLIMIT munlock sys const % LocalWords: addr len EINVAL EPERM mlockall munlockall flags l'OR CURRENT IFS % LocalWords: argc argv parsing questofile txt getopt optstring switch optarg -% LocalWords: optind opterr optopt ForkTest POSIXLY CORRECT long options NdA +% LocalWords: optind opterr optopt POSIXLY CORRECT long options NdA % LocalWords: option parameter list environ PATH HOME XPG tab LOGNAME LANG PWD % LocalWords: TERM PAGER TMPDIR getenv name SVr setenv unsetenv putenv opz gcc % LocalWords: clearenv libc value overwrite string reference result argument