Quei primi mille miliardi di secondi Pochi giorni fa, per la precisione alle 3, 46 minuti e 40 secondi del=20 mattino di domenica 9 settembre (nel fuso italiano), lo UNIX time_t ha=20 raggiunto quota un miliardo... 14/09/01 - Lettere - Nessuno sembra essersene accorto, ma cinque giorni fa,= =20 per la precisione alle 3, 46 minuti e 40 secondi del mattino di domenica 9= =20 settembre (nel fuso italiano), lo UNIX time_t ha raggiunto quota un=20 miliardo. Pare incredibile, ma la notizia non =E8 stata segnalata nemmeno da= =20 Slashdot! [pioppo@abulafia pioppo]$ date +%s 1000330629 Chi si =E8 imbattuto altre volte nel time_t sar=E0 abituato a vedere numeri= a 9=20 cifre che cominciano per 9... ben pochi ricorderanno i tempi in cui il=20 time_t cominciava per 8 (da maggio 95 a luglio 98) e praticamente nessuno=20 ricorder=E0 il 7 (da marzo 92 a maggio 95). Ok... piccola spiegazione per chi non ci sta capendo niente. Il time_t =E8= =20 una tipica convenzione UNIX per determinare un istante temporale con una=20 risoluzione di un secondo: infatti time_t esprime il numero di secondi che= =20 sono passati dalla mezzanotte del primo gennaio 1970 (data comunemente nota= =20 come "the epoch"... scelta appositamente perch=E9 UNIX venne scritto=20 quell'anno e vide la luce il successivo). Tutti i sistemi UNIX misurano il= =20 tempo e le date in questo modo utilizzando almeno 32 bit per il contatore e= =20 questo =E8 il motivo per il quale non c'=E8 mai stato un pericolo millennium= =20 bug su UNIX (ma ci saranno problemi nel 2038 quando il time_t arriver=E0 a= =20 2147483648 ovvero 2 elevato alla 31... per allora speriamo di avere tutti=20 quanti un processore a 64 bit o che almeno tutte le implementazioni UNIX=20 abbiano convertito il time_t da un signed long int ad un unsigned long int,= =20 regalandoci cos=EC un bit in pi=F9, pari a altri 68 anni di tempo utile). In realt=E0 l'epoch non =E8 sempre stata come =E8 adesso e UNIX ha avuto il= suo=20 millennium bug nei primi mesi di vita. Cito dalla home page di Dennis= Ritchie: "Abbiamo persino anticipato il millennium bug: il tempo veniva misurato in= =20 sessantesimi di secondo a partire dal primo gennaio 1971 come una quantit=E0= =20 a 32 bit. La sezione BUGS di time(II) riporta: "il lettore accorto noter=E0= =20 che 2^32 sessantesimi di secondo sono solo 2.5 anni". Pi=F9 tardi, questo=20 venne corretto pi=F9 di una volta dichiarando una nuova epoca, quindi=20 nuovamente nel 1973 imponendo le unit=E0 come secondi interi a partire dal= 1=B0=20 gennaio 1970". Questa mi sembra una buona occasione anche per andarsi a leggere la prima=20 versione dello "UNIX Programmers' Manual" datato 3 novembre 1971. Fu in quel manuale che venne deciso come devono essere fatte le "man page"= =20 (pagine di help sotto Unix) che tutti quanti usiamo ancora oggi! Buon miliardesimo secondo a tutti. Un pinguino al giorno leva il bug di torno My personal homepage =09 http://continue.to/fred Lavarone homepage: http://www.lavarone.com Linuxtrent http://linuxtrent.grinta.net/ -- PROSSIMA ASSEMBLEA: venerdi` 28 settembre 2001 20:30 a Madrano di Pergine. Per iscriversi (o disiscriversi), basta spedire un messaggio con SOGGETTO "subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxxxxxx