fbpx
Skip to main content

[LA] Linux avanzato 2008

  • COM_EASYSOCIAL_GUEST_NAME
  • Avatar di COM_EASYSOCIAL_GUEST_NAME
  • Visitatori
  • Visitatori
17 Anni 1 Mese fa #84594 da COM_EASYSOCIAL_GUEST_NAME
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic [LA] Linux avanzato 2008
Ragazzi stavo cercando di fare ordine e farmi una lista del codice che bisogna vedere.
Potreste dirmi per favore se in questa lista c'e' qualcosa di troppo o qualcosa in meno rispetto a quello che bisogna sapere?
1)alberi chiamate della dispensa sulla sys_open
2)macro current & co.
3)generic_file_aio_read()
|
|--> __generic_file_aio_read()
     |
     |--> do_generic_file_read()
          |
          |--> do_generic_mapping_read()
		         |
			 |--> find_get_page()
			      |
			      |--> radix_tree_lookup()
4)nfs_do_write_page()
|
|--> nfs_page_async_flush()
     |
     |--> nfs_set_page_writeback()
          |
	  |--> test_set_page_writeback()
	       |
	       |--> radix_tree_tag_set()
5)generic_file_aio_read()
|
|--> __generic_file_aio_read()
     |
     |--> do_generic_file_read()
          |
          |--> do_generic_mapping_read()
		         |
			 |--> find_get_page()
			      |
			      |--> radix_tree_lookup()


manca qualcosa/c'e' qualcosa di troppo?

grazie 1000! ciao!

Si prega Accedi o Crea un account a partecipare alla conversazione.

Di più
17 Anni 1 Mese fa #84603 da Gabriele
Risposta da Gabriele al topic [LA] Linux avanzato 2008

Ragazzi stavo cercando di fare ordine e farmi una lista del codice che bisogna vedere.
Potreste dirmi per favore se in questa lista c'e' qualcosa di troppo o qualcosa in meno rispetto a quello che bisogna sapere?
1)alberi chiamate della dispensa sulla sys_open
2)macro current & co.
3)generic_file_aio_read()
|
|--> __generic_file_aio_read()
     |
     |--> do_generic_file_read()
          |
          |--> do_generic_mapping_read()
		         |
			 |--> find_get_page()
			      |
			      |--> radix_tree_lookup()
4)nfs_do_write_page()
|
|--> nfs_page_async_flush()
     |
     |--> nfs_set_page_writeback()
          |
	  |--> test_set_page_writeback()
	       |
	       |--> radix_tree_tag_set()
5)generic_file_aio_read()
|
|--> __generic_file_aio_read()
     |
     |--> do_generic_file_read()
          |
          |--> do_generic_mapping_read()
		         |
			 |--> find_get_page()
			      |
			      |--> radix_tree_lookup()


manca qualcosa/c'e' qualcosa di troppo?

grazie 1000! ciao!

a parte che ti studi 2 volte generic_file_aio_read?! :wink:
non saprei se ci chiede pure nfs_do_write_page(), a me non sembrava così importante da vedere il codice. della macro current che c'è da vedere?
penso che dovresti vedere anche le altre del radix_tree oltre lookup, tipo insert, extend e delete!
Domanda che non c'entra niente: ma il profiling dove sta? mi pare che in qualche orale degli anni passati l'abbia chiesto...

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • COM_EASYSOCIAL_GUEST_NAME
  • Avatar di COM_EASYSOCIAL_GUEST_NAME
  • Visitatori
  • Visitatori
17 Anni 1 Mese fa #84614 da COM_EASYSOCIAL_GUEST_NAME
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic [LA] Linux avanzato 2008

Forse sto diventando paranoico (forse?! :shock: ), ma a che livello di dettaglio la studiate la vsyscall? quando la chiede scende molto nello specifico?


guarda per me le chiamate di sistema sono ancora un'incognita.. Secondo me è la parte + difficile della teoria, almeno se si vuole imparare bene... Anche perchè le fonti sono varie e approfondiscono a livello diverso... La vsyscall in particolare può essere liquidata in 2 parole oppure imparando tutto l'articolo di sbudella... :(

pax, a te aveva chiese proprio questo (come fa il processore a settare di volta in volta tra sysenter e int 128)... A che livello di dettaglio gli rispondesti?
grazie ciao!


A me chiese di parlare delle chiamate di sistema, io ho fatto un discorso generale sulle VDSO, che sono la cosa più importante a parer mio, poi ho introdotto le due modalità, spiegando pregi e difetti di ognuna, poi lui mi ha interrotto e mi ha chiesto se sapevo come faceva il processore a capire se c'era l apossibilità di usare la int o la sysenter. io gli ha risposto che esiste il sep bit che lo fa,lui poi ha bofonchiato qualcosa che ho subito rimosso dalla mia testa, e poi mi ha chiesto come potevo fare per creare una chiamata di sistema e quale metodo, secondo me era il più adatto per un computer di certe caratteristiche...
Non chiede in dettaglio sbudella, ma ci sono alcune cose importanti, ad esempio il listato assembler della sysenter mi sembra, che a lui giovano parecchio....

Si prega Accedi o Crea un account a partecipare alla conversazione.

Di più
17 Anni 1 Mese fa #84629 da Gabriele
Risposta da Gabriele al topic [LA] Linux avanzato 2008
ma quando assembly invoca una funzione c, lo fa soltanto usando il nome del simbolo (tipo printf per una printf()) o usa call?

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • COM_EASYSOCIAL_GUEST_NAME
  • Avatar di COM_EASYSOCIAL_GUEST_NAME
  • Visitatori
  • Visitatori
17 Anni 1 Mese fa #84693 da COM_EASYSOCIAL_GUEST_NAME
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic [LA] Linux avanzato 2008

ma quando assembly invoca una funzione c, lo fa soltanto usando il nome del simbolo (tipo printf per una printf()) o usa call?


che intendi?
una funzione è una serie di istruzioni assembler. fare una call significa caricare in eip l'indirizzo iniziale di questa serie d'istruzioni.. è un salto che t'imposta in automatico alcuni registri... se disassembli la libc puoi vedere come sono realizzate alcune funzioni (incluse le wrapper function delle syscall)! (oppure scriviti un programma compilato con -static e disassembli quello è lo stesso)
ciao

Si prega Accedi o Crea un account a partecipare alla conversazione.

Di più
17 Anni 1 Mese fa #84700 da Gabriele
Risposta da Gabriele al topic [LA] Linux avanzato 2008

ma quando assembly invoca una funzione c, lo fa soltanto usando il nome del simbolo (tipo printf per una printf()) o usa call?


che intendi?
una funzione è una serie di istruzioni assembler. fare una call significa caricare in eip l'indirizzo iniziale di questa serie d'istruzioni.. è un salto che t'imposta in automatico alcuni registri... se disassembli la libc puoi vedere come sono realizzate alcune funzioni (incluse le wrapper function delle syscall)! (oppure scriviti un programma compilato con -static e disassembli quello è lo stesso)
ciao

intendo, se un file assembly invoca una funzione definita all'esterno del file, come ad esempio la printf(), lo fa con call printf, che carica l'indirizzo della printf in eip?

Si prega Accedi o Crea un account a partecipare alla conversazione.