-
Io mi c'ero imbattutto all'inizio dell'anno...Scritto daaltgutente che non utieneil 2013-09-23 17:46:33.0 alle 2013-09-23 17:46:33.0Trollate totali: 11540...e mi ero anche sentito scemo ad implementare qualcosa del genere.
Ma voi per esempio la sapevate questa?
Sapevatela su rieducational FdT.
http://stackoverflow.com/questions/4123609/allocat...
http://gcc.gnu.org/onlinedocs/gccint/Stack-Checkin...
Mi sembrava che una cosa cosi` fosse una toppa, che qualcosa non andasse nel S.O., piu` che altro, e invece... e` pratica diffusa e anche necessaria, pare. Solo che non si vede mai, se non ci si mette a scrivere compilatori & Co.
MMMMah!
A me me pare 'na strunzata, pero` serve.
-
Re: Io mi c'ero imbattutto all'inizio dell'anno...Scritto da: altg
> ...e mi ero anche sentito scemo ad implementare qualcosa del genere.
> Ma voi per esempio la sapevate questa?
No.
> Sapevatela su rieducational FdT.
>
> http://stackoverflow.com/questions/4123609/allocat...
> http://gcc.gnu.org/onlinedocs/gccint/Stack-Checkin...
>
> Mi sembrava che una cosa cosi` fosse una toppa, che qualcosa non andasse nel S.O., piu` che altro, e invece... e` pratica diffusa e anche necessaria, pare. Solo che non si vede mai, se non ci si mette a scrivere compilatori & Co.
>
> MMMMah!
> A me me pare 'na strunzata, pero` serve.
Perché dovrei allocare in stack una cosa grossa grossa quando posso allocarla in heap?Young professional woman and busy mom.-
Re: Io mi c'ero imbattutto all'inizio dell'anno...Scritto daaltgutente che non utieneil 2013-09-23 22:00:15.0 alle 2013-09-23 22:00:15.0Trollate totali: 11540> > ...e mi ero anche sentito scemo ad implementare qualcosa del genere.
> > Ma voi per esempio la sapevate questa?
> No.
>
> > Sapevatela su rieducational FdT.
> >
> > http://stackoverflow.com/questions/4123609/allocat...
> > http://gcc.gnu.org/onlinedocs/gccint/Stack-Checkin...
> >
> > Mi sembrava che una cosa cosi` fosse una toppa, che qualcosa non andasse nel S.O., piu` che altro, e invece... e` pratica diffusa e anche necessaria, pare. Solo che non si vede mai, se non ci si mette a scrivere compilatori & Co.
> >
> > MMMMah!
> > A me me pare 'na strunzata, pero` serve.
>
> Perché dovrei allocare in stack una cosa grossa grossa quando posso allocarla in heap?
No no, darebbe malfunzionamenti anche con una cosa piccola (come il call frame con le locali di una subroutine). Si tratta di spostare lo stack pointer, quando si alloca il call frame. Non vai fisicamente a toccare le locazioni coinvolte, quindi il sistema, a quanto pare, non puo` rendersi conto che quella memoria va considerata allocata. E l'unico modo per evitare questo e` effettuare un "push" all'inizio di ogni nuova pagina, che su IA-32 e` lunga 4 KB. Se scavalchi il confine tra le pagine spostando lo stack pointer, ma non pushi niente, all'accesso con istruzioni che non siano push/pop tipo quelle che accedono alle locali, ti prendi un page fault.
-
Re: Io mi c'ero imbattutto all'inizio dell'anno...Scritto da: altg
> > > ...e mi ero anche sentito scemo ad implementare qualcosa del genere.
> > > Ma voi per esempio la sapevate questa?
> > No.
> >
> > > Sapevatela su rieducational FdT.
> > >
> > > http://stackoverflow.com/questions/4123609/allocat...
> > > http://gcc.gnu.org/onlinedocs/gccint/Stack-Checkin...
> > >
> > > Mi sembrava che una cosa cosi` fosse una toppa, che qualcosa non andasse nel S.O., piu` che altro, e invece... e` pratica diffusa e anche necessaria, pare. Solo che non si vede mai, se non ci si mette a scrivere compilatori & Co.
> > >
> > > MMMMah!
> > > A me me pare 'na strunzata, pero` serve.
> >
> > Perché dovrei allocare in stack una cosa grossa grossa quando posso allocarla in heap?
>
> No no, darebbe malfunzionamenti anche con una cosa piccola (come il call frame con le locali di una subroutine). Si tratta di spostare lo stack pointer, quando si alloca il call frame. Non vai fisicamente a toccare le locazioni coinvolte, quindi il sistema, a quanto pare, non puo` rendersi conto che quella memoria va considerata allocata. E l'unico modo per evitare questo e` effettuare un "push" all'inizio di ogni nuova pagina, che su IA-32 e` lunga 4 KB. Se scavalchi il confine tra le pagine spostando lo stack pointer, ma non pushi niente, all'accesso con istruzioni che non siano push/pop tipo quelle che accedono alle locali, ti prendi un page fault.
Che cosa complicata.
E adesso: pubblicità!
Nelle opzioni utente puoi trovare il nuovo stile largo e fluido del fdt, leggi più post con meno spazio!* il baco della sidebar aperta dopo il salvataggio lo conosco
**Modificato dall'autore il 23.09.2013 22:13**Young professional woman and busy mom.-
Re: Io mi c'ero imbattutto all'inizio dell'anno...Scritto daaltgutente che non utieneil 2013-09-23 23:06:11.0 alle 2013-09-23 23:06:11.0Trollate totali: 11540> > > > ...e mi ero anche sentito scemo ad implementare qualcosa del genere.
> > > > Ma voi per esempio la sapevate questa?
> > > No.
> > >
> > > > Sapevatela su rieducational FdT.
> > > >
> > > > http://stackoverflow.com/questions/4123609/allocat...
> > > > http://gcc.gnu.org/onlinedocs/gccint/Stack-Checkin...
> > > >
> > > > Mi sembrava che una cosa cosi` fosse una toppa, che qualcosa non andasse nel S.O., piu` che altro, e invece... e` pratica diffusa e anche necessaria, pare. Solo che non si vede mai, se non ci si mette a scrivere compilatori & Co.
> > > >
> > > > MMMMah!
> > > > A me me pare 'na strunzata, pero` serve.
> > >
> > > Perché dovrei allocare in stack una cosa grossa grossa quando posso allocarla in heap?
> >
> > No no, darebbe malfunzionamenti anche con una cosa piccola (come il call frame con le locali di una subroutine). Si tratta di spostare lo stack pointer, quando si alloca il call frame. Non vai fisicamente a toccare le locazioni coinvolte, quindi il sistema, a quanto pare, non puo` rendersi conto che quella memoria va considerata allocata. E l'unico modo per evitare questo e` effettuare un "push" all'inizio di ogni nuova pagina, che su IA-32 e` lunga 4 KB. Se scavalchi il confine tra le pagine spostando lo stack pointer, ma non pushi niente, all'accesso con istruzioni che non siano push/pop tipo quelle che accedono alle locali, ti prendi un page fault.
>
> Che cosa complicata.
Ne ho viste di peggio, in questi giorni in cui sto rendendo tutto thread-safe.
Prima avevo una tasklist nella heap interface, che faceva garbage collection di 1 thread.
Ora devo allocare una tasklist per thread.
Prima potevo usare una globale per descrivere lo stato success/failed di una chiamata.
Ora ho dovuto usare qualcosa di thread-safe e su IA-32 ho optato per il Direction Flag.
Prima potevo avere puntatori globali ai contesti delle closures.
Ora devo caricare il registro di riserva col puntatore al contesto.
E cosi` via in una supercazzola di modifiche grandi e piccole affinche` tutto quel che puo` girare in multithreading passi dallo stack, dai registri, dalla heap, o dai flag del core in uso. E tutto il resto sia protetto da spin-locks su test-and-set atomici, oppure mutexes con parking e unparking e gestione della coda di prenotazione.
Altro che stack probes.
Ma chi me l'ha fatto fare di metterci il multithreading?
Comunque, la complicazione e il brain-straining sono per me.
Una volta fatti gli strumenti giusti, l'uso e` abbastanza semplice.
> E adesso: pubblicità!
> Nelle opzioni utente puoi trovare il nuovo stile largo e fluido del fdt, leggi più post con meno spazio!* il baco della sidebar aperta dopo il salvataggio lo conosco
E ai primi 50 utenti che attivano l'opzione,
in regalo la cazzuola laser di Shpalman!
**Modificato dall'autore il 23.09.2013 23:08**
-
-
-
-