X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=process.tex;h=9d1916f6eecce3af2871bbfbe1d842b7f578f42c;hp=0ad45f78eb246c474a3df77e8f770b1970cea91f;hb=2ee09e1100e6d070dbf5d4d13d900dba516d83de;hpb=c46df2fabf1fd8946892f9adf0771831a5c0f796 diff --git a/process.tex b/process.tex index 0ad45f7..9d1916f 100644 --- a/process.tex +++ b/process.tex @@ -1,6 +1,6 @@ %% process.tex %% -%% Copyright (C) 2000-2013 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 @@ -2698,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 @@ -2805,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