Ciao, Paolo.
«Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.»
In realtà con il link statico l'eseguibile che si forma viene caricato in memoria 'serialmente' e completamente all'avvio,, con la tabella degli indirizzi, appunto, statica. Se il sistema non pagina è la garanzia delle migliori prestazioni possibili, dato che ogni 'chiamata' viene risolta con un accesso diretto e non con una indirezione passando attraverso il loader di sistema.
Quando giravano ancora i dinosauri ed io ero un giovane programmatore i 'guru' ci riempivano la testa su come segmentare il codice facendo in modo che la routines chiamate più spesso fossero in blocchi adiacenti et similia...
Nessuna certezza che sia davvero importante (specie con sistemi senza problemi di memoria), ma è una differenza.
Ciao, Marco.
"Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -- and a lot of courage -- to move in the opposite direction."
— E. F. Schumacher (mis-attributed to A. Einstein)
________________________________________________________________________________
Autore della patch R2 per Squeezelite e del plugin C-3PO. note libere
Logitech media Server 7.9 > miniPc + squeezelite-R2 / SB+ > "Lu Scalmentu" NOS R2R DAC by TubeOne/ AudioResearch DAC 1-20 >
Klimo Merlino Gold TPS > DIS Interconnect > Kent Gold > Reference > Monitor Audio Studio 20 SE
Ehm... Marco, stiamo parlando del KERNEL Linux. Che, anche se "modulare", resta comunque un kernel monolitico (non è un microkernel). Gira tutto in “kernel space” a “ring 0”. Non c'è nessun dynamic loader, né librerie, né altro... niente a che vedere con i normali “shared object” in user space!
https://en.wikipedia.org/wiki/Loadab...rating_systems
https://web.archive.org/web/20080726...lkm/index.html
Ciao, Paolo.
«Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.»
Che giri in memoria privilegiata o meno, non mi riferivo a quello, se ha un meccanismo (loader) per caricare/scaricare delle componenti (moduli) allora ha una tabella degli indirizzi dinamica ed un 'pezzo di software' che ogni volta che deve accedere ad un entry point prima verifica SE e DOVE fisicamente sta e quindi eventualmente lo carica e poi vi accede.
E' inevitabile, solo un eseguibile staticamente linkato può evitarlo, in quanto a partire dal byte 0 viene caricato sequenzialmente ed integralmente, quindi l'entry point 'X' sarà sempre e soltanto alla posizione 0+x byte.
Non ho letto tutto quello che hai linkato, ma a prima vista non mi pare in contraddizione, del resto non vedo modo in cui possa funzionare diversamente. Il discorso "Shared object" è tutta altra cosa, mai inteso riferirmi a quello.
In particolare
mi pare ripeta esattamente quanto ho scritto io, o sbaglio?Advantages
Without loadable kernel modules, an operating system would have to include all possible anticipated functionality already compiled directly into the base kernel. Much of that functionality would reside in memory without being used, wasting memory, and would require that users rebuild and reboot the base kernel every time they require new functionality. Most operating systems supporting loadable kernel modules will include modules to support most desired functionality.
Disadvantages
One minor criticism of preferring a modular kernel over a static kernel is the so-called fragmentation penalty. The base kernel is always unpacked into real contiguous memory by its setup routines; thus, the base kernel code is never fragmented. Once the system is in a state in which modules may be inserted, for example once the filesystems have been mounted that contain the modules, it is likely that any new kernel code insertion will cause the kernel to become fragmented, thereby introducing a minor performance penalty by using more TLB entries, causing more TLB misses.[citation needed]
Ciao, Marco.
"Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -- and a lot of courage -- to move in the opposite direction."
— E. F. Schumacher (mis-attributed to A. Einstein)
________________________________________________________________________________
Autore della patch R2 per Squeezelite e del plugin C-3PO. note libere
Logitech media Server 7.9 > miniPc + squeezelite-R2 / SB+ > "Lu Scalmentu" NOS R2R DAC by TubeOne/ AudioResearch DAC 1-20 >
Klimo Merlino Gold TPS > DIS Interconnect > Kent Gold > Reference > Monitor Audio Studio 20 SE
sono arrivato a 33 moduli
Alcuni di questi (attivi) li ho trovati nel kernel ma non riesco a "linkarli" staticamente...mi da o M o niente.codice:gentooplayer filippo # lsmod | wc -l 33 gentooplayer filippo # lsmod Module Size Used by i915 1261568 1 snd_usb_audio 180224 1 intel_gtt 20480 1 i915 snd_hwdep 16384 1 snd_usb_audio drm_kms_helper 135168 1 i915 snd_usbmidi_lib 32768 1 snd_usb_audio snd_rawmidi 32768 1 snd_usbmidi_lib snd_seq_device 16384 1 snd_rawmidi drm 327680 3 i915,drm_kms_helper snd_pcm 98304 2 snd_usb_audio snd_timer 32768 1 snd_pcm snd 73728 8 snd_usb_audio,snd_hwdep,snd_timer,snd_pcm,snd_ra wmidi,snd_usbmidi_lib,snd_seq_device ghash_clmulni_intel 16384 0 syscopyarea 16384 1 drm_kms_helper sysfillrect 16384 1 drm_kms_helper sysimgblt 16384 1 drm_kms_helper fb_sys_fops 16384 1 drm_kms_helper i2c_i801 20480 0 i2c_algo_bit 16384 1 i915 i2c_core 61440 5 drm,i915,i2c_i801,drm_kms_helper,i2c_algo_bit video 40960 1 i915 cbc 16384 0 sha256_generic 20480 0 libiscsi 53248 0 scsi_transport_iscsi 94208 1 libiscsi virtio_net 28672 0 virtio_ring 24576 1 virtio_net virtio 16384 1 virtio_net usb_storage 61440 0 scsi_transport_fc 61440 0 sg 36864 0 sd_mod 36864 2
e se premo Y mi da un msg che adesso non ricordo...
Ultima modifica di antonellocaroli : 15-11-2016 a 07:27
potrebbe essere perché questi "dipendono" (in modo non opzionale) da altri che sono compilati come moduli.
Se non sbaglio (è un mucchio di tempo che non configuro più un Kernel... :eeh ), è (o almeno era) anche possibile disabilitare completamente il meccanismo dei moduli e creare un kernel interamente statico (IIRC, dovrebbe essere l'opzione "CONFIG_MODULES").
Ciao, Paolo.
«Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.»
Ciao, Paolo.
«Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.»
Ci sono attualmente 2 utenti che stanno visualizzando questa discussione. (0 utenti e 2 ospiti)