|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Sep 2008
Messaggi: 1271
|
Programmazione kernel
Qualuno di voi si è mai addentrato nella programmazione del kernel? intendo anche piccoli moduli.
In questi giorni per curiosità ho voluto dare uno sguardo al kernel Linux e al kernel XNU (tra l'altro non sapevo che parte di OSX fosse open source). Mi sono spaventato della loro complessità, non tanto per le righe i codice, quanto per il numero di file in cui è diviso il kernel, anche escludendo il filesystem e i driver, anche il nucleo del kernel è diviso in decine di file, che si tratta di XNU o di Linux; non sarebbe stato meglio creare un solo file sorgente? magari creando un file di testo che indichi la riga in cui trovare ogni funzione. Vorrei capire il funzionamento del gestore della memoria o del gestore dei processi di un kernel, secondo voi ho qualche speranza di riuscirci?
__________________
MacBook 6,1|2,26 Ghz C2D|2GB 1067 Mhz DDR3|GeForce 9400M|Mac OSX 10.6.2 |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Mar 2005
Città: Morimondo city
Messaggi: 5491
|
Quote:
![]() ![]() un kernel in un unico file,questa mi mancava davvero...
__________________
Khelidan |
|
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
No.
![]() Quote:
![]()
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Sep 2008
Messaggi: 1271
|
Quote:
Per quanto riguarda la pazienza non c'è problema, visto che mi interessa moltissimo cpire il funzionamento del kernel, e poi tra poco andrò in vacanza e avrò tre mesi per studiarlo bene.
__________________
MacBook 6,1|2,26 Ghz C2D|2GB 1067 Mhz DDR3|GeForce 9400M|Mac OSX 10.6.2 |
|
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Feb 2006
Messaggi: 1304
|
Eseguibile != file != kernel
![]() Dunque; un kernel non è un eseguibile, ma più che altro "quello che esegue"... inoltre un eseguibile o una libreria o quello che è vengono sempre compilati a partire da TANTISSIMI file, a parte casi banali. D'altra parte, non riesco a capire come fai a ritenere più pratico avere un solo file da 2.000.000 righe rispetto a tanti file raggruppati per funzione e con nomi che ne descrivono il contenuto ![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Sep 2008
Messaggi: 1271
|
Quote:
io non direi. Inoltre trovo più comodo avere tutto in 20000000 di righe, perché hai tutto sottomano, e non devi aprire file su file. Mgari quando scrivi i moduli devi stare ttento che non ci siano bug per non mandare in blocco tutto, ma eseguendo i singoli moduli fuori dal kernel, credo si possa fare senza problemi. Ad ogni modo, sapete dirmi dove posso trovare qualche ddocumento che spieghi la gerarchia dei sorgenti del kernel Linux o del kernel XNU? PS: che senso ha chiamare kernel una parte del kernel? ![]() avrebbero potuto chiamarla core, tanto per non creare confusione ![]()
__________________
MacBook 6,1|2,26 Ghz C2D|2GB 1067 Mhz DDR3|GeForce 9400M|Mac OSX 10.6.2 |
|
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Aug 2005
Messaggi: 579
|
Vuoi capire come funziona il kernel?
Clicca qui: http://www.os-book.com/ Ma evita di fare affermazioni che buttano via anni e anni di ricerca e evoluzione tecnologica... |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
|
Io qualche device driver per linux l'avevo scritto taaaaanto tempo fa...
Se vuoi esplorare quell'aspetto c'è il mitico Linux Device Driver, che è a ufo. http://lwn.net/Kernel/LDD3/
__________________
-> The Motherfucking Manifesto For Programming, Motherfuckers |
![]() |
![]() |
#9 | |
Bannato
Iscritto dal: Mar 2004
Città: Roma
Messaggi: 2682
|
Quote:
![]() Per capire come funziona il gestore della memoria e dei processi comprati un bellibro di sistemi operativi e studiatelo tutto :-) |
|
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Mi viene in mente la stupenda comodità di un intero kernel in un singolo file. Milioni e milioni di righe, tempi di caricamento e salvataggio mostruosi, la RAM che muore sotto...
![]() E poi vorrei vedere con Linux in un unico file sorgente cosa si capirebbe di com'è fatto. ![]() ciao ![]()
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
![]() |
![]() |
#11 |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
minchia ragazzi, é del '91, ha appena 18 anni e non ha mai programmato in vita sua... e fategliela dire una cazzata
![]() |
![]() |
![]() |
#12 | |
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Quote:
![]()
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
![]() |
![]() |
#13 |
Member
Iscritto dal: Jul 2005
Messaggi: 291
|
Se vuoi spaventarti vai su questo sito e scaricati le slides, è un corso dato al secondo anno della specialistica in ingegneria informatica, per farti rendere conto un po della portata!!!
__________________
CPU: Intel Core 2 Quad Q6600 - Mobo: Asus P5E - RAM:4x2GB DDR2 - sk video: Power Color ATI Radeon HD3870 - HD:Western Digital 750GB |
![]() |
![]() |
#14 | |
Bannato
Iscritto dal: Mar 2004
Città: Roma
Messaggi: 2682
|
Quote:
![]() DOH ![]() |
|
![]() |
![]() |
#15 | |
Senior Member
Iscritto dal: Dec 2007
Città: brianza
Messaggi: 717
|
Quote:
__________________
AMD Ryzen 9700X MSI RX 480 Gaming X 8G ASRock B850 Pro-A Windows 11 Pro RAM DDR5 16GBx2 TEAMGROUP T-Create Expert 6000 MHz CL30 SSD Crucial T500 4TB case Corsair Carbide 200R |
|
![]() |
![]() |
#16 | |
Bannato
Iscritto dal: Mar 2004
Città: Roma
Messaggi: 2682
|
Quote:
![]() |
|
![]() |
![]() |
#17 |
Senior Member
Iscritto dal: Sep 2008
Messaggi: 1271
|
non sono cazzate, volendo un kernel potrebbe benissimo stare in un unico file, e per lo sviluppo basterebbe eseguire (e compilare) le varie parti fuori dal kernel; inoltre, altra cosa, non ho mai messo in dubbio i vantaggi della scomposizione in moduli, ho solo detto che per motivi didattici, con un apposito indice sarebbe stato più semplice avere il kernel in un unico file.
Terza e ultima cosa, non voglio studiarmi il kernel, non voglio studiarmi neanche un solo filesystem, ma gestore memoria e/o gestore processi. Non mi sembra impossibile, soprattutto considerando il fatto che non devo scrivere un kernel, non devo neanche scrivere un modulo del kernel, solo leggere. Ho chiesto se qualcuno si è mai interessato della scrittura di moduli del kernel, sperando che riportasse le proprie esperienze. Comunque grazie per i link.
__________________
MacBook 6,1|2,26 Ghz C2D|2GB 1067 Mhz DDR3|GeForce 9400M|Mac OSX 10.6.2 |
![]() |
![]() |
#18 |
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Io ho scritto, piu' di 10 anni fa, un modulo kernel per Minix per il supporto delle finestre multiple ciascuna per il proprio processo. L'utente sceglieva con i tasti funzione quale finestra di quale processo voleva vedere e il sistema si occupava di copiare sulla memoria video i dati.
Ma tutto in un file no... c'erano pezzi in assembly, pezzi in C, etc. Ah, ancora, circa 20 anni fa insieme ad un amico avevamo cambiato parti di kernel del Commodore 64/128, che si chiamava Kernal, e tra le altre cose avevamo supportato il Basic con keyword in piemontese (che faceva parte del Kernel su quella macchina) Non lo annovererei pero' tra le modifiche del Kernel piu' utili della storia, e nemmeno lo metto nel curriculum... In pratica potevi scrivere poi programmi stile: 10 BUTA a = 100 20 BUTA a = a+1 30 STAMPA a 40 SE a>200 ALURA SAUTA 60 50 SAUTA 20 60 STAMPA "Ciao" Un perfetto spaghetti code piemotese, direi che si potrebbe chiamare "Surgent ai Tajarin"
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. Ultima modifica di gugoXX : 11-05-2009 alle 15:27. |
![]() |
![]() |
#19 | |
Senior Member
Iscritto dal: Mar 2006
Messaggi: 2516
|
Quote:
![]() Solo per aprirlo ci vorrebbero un paio di minuti. Per cercare una parte in particolare(magari di poche linee di codice) ti ci vorrebbe mezza giornata ![]() Comunque per quello che vuoi sapere tu basta un libro di sistemi operativi qualsiasi, come per esempio lo stallings. Lì troverai a grandi linee le spiegazioni che cerchi |
|
![]() |
![]() |
#20 |
Bannato
Iscritto dal: Mar 2004
Città: Roma
Messaggi: 2682
|
Se ti interessa sapere come funziona un gestore dei processi o della memoria ti compri un qualsiasi libro di sistemi operativi e te lo leggi come quello di Paolo Ancilotti ed altri 3 professori edito da McGrowHill...però te lo devi studiare tutto perchè sapere come funziona il gestore dei processi e della memoria senza sapere come si interfaccia con il resto del sistema operativo ha molto poco senso.
Ahh...di codice ne vedrai molto poco a questo livello...saprai a grandi linee in linea teorica come funziona un generico sistema operativo e le strategie che può adottare a sviluppare ad esempuio vari tipi di scheduler di processi e vari tipi di gestione della memoria. Guarda te lo dico sinceramente...io al terzo anno di Informatica avrei grosse difficoltà a leggere il sorgente di un kernel e a capire cosa fà....e credo proprio che tra esami di programmazione, metodologie di programmazione e di progettazione sono qualche anno luce avanti a te... Tra l'altro dovresti avere anche delle salde basi di architetture degli elaboratori per addentrarti nel mondo dei SO e dovresti avere una discreta conoscienza di assembler... Non è per scoraggiarti...ma magari se hai poca esperienza inizia a leggerti un libro di SO per farti una cultura generale e come programmazione buttati su progetti più tranquilli e sicuramente più utili dal punto di vista didattico...per ora...poi se vorrai approfondire avrai tempo continuando gli studi ![]() Ciao Andrea |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 07:17.