Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Sistema operativo....
Forum - C/C++ - Sistema operativo....

Avatar
tasx (Dev Team)
Expert


Messaggi: 439
Iscritto: 15/12/2008

Segnala al moderatore
Postato alle 14:31
Sabato, 21/02/2009
Da poco tempo ho scoperto il mondo Linux e attualmente sto provando molte distro.
Col tempo mi è sorta una domanda:
quali sono le conoscienze fondamentali per sviluppare un "mini sistema operativo", non intendo livello windows o ubuntu ma semplicemente qualcosa tipo una riga di comando con poche opzioni.
Ecco alcuni miei dubbi:
_quale linguaggio?
_esistono degli ide?
_è un lavoro immenso?

Ringrazio in anticipo...
:k:

Ciao a tutti
tasx


... sei un proxy che perde i pacchetti ...
PM Quote
Avatar
vincent_vega (Normal User)
Newbie


Messaggi: 4
Iscritto: 20/02/2009

Segnala al moderatore
Postato alle 15:21
Sabato, 21/02/2009


La teoria è quando si sa tutto ma non funziona niente.
La pratica è quando funziona tutto ma non si sa il perché.
In ogni caso si finisce sempre a coniugare la teoria con la pratica:
non funziona niente e non si sa il perché.
PM Quote
Avatar
tasx (Dev Team)
Expert


Messaggi: 439
Iscritto: 15/12/2008

Segnala al moderatore
Postato alle 17:13
Sabato, 21/02/2009
ok, però non hai risposto alle mie domande. ;)


... sei un proxy che perde i pacchetti ...
PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 18:02
Sabato, 21/02/2009
Testo quotato

Postato originariamente da tasx:
quali sono le conoscienze



Le conoscenze (senza i) sono ben diverse se intendi scrivere un vero (anche se piccolo) Sistema Operativo, oppure solamente una Shell interprete di comandi.

Testo quotato

Ecco alcuni miei dubbi:
_quale linguaggio?



Per il Sistema Operativo, C e Assembler, per l'interprete dei comandi, C / C++ o altri (ne ho visto scritte anche in C# ...).

Testo quotato

_esistono degli ide?



IDE ... per fare cosa? L'IDE e' uno strumento che ti aiuta "in genere" a scrivere programmi in uno o piu' linguaggi, non e' qualcosa di "dedicato" ai Sistemi Operativi.

Testo quotato

_è un lavoro immenso?



Se parliamo del Sistema Operativo, è un lavoro sicuramente vasto e complesso. Devi pensare alla gestione dell'hardware, agli interrupt, alla gestione dell'allocazione della memoria, alla gestione dei processi, allo scheduler ... e  tanto tanto altro.

Se parli solamente della Shell interprete dei comandi, la cosa e' piu' semplice. Ma devi avere gia' un Sistema Operativo completo da cui partire.


Ultima modifica effettuata da theprogrammer il 21/02/2009 alle 18:07


- Se le mie risposte non vi soddisfano, ignoratele, altrimenti un "grazie" e' molto gradito ...

"Dai un pesce (programma) a un uomo e lo nutrirai per un giorno. Insegnagli a pescare (programmare) e lo nutrirai per tutta la vita." (niente pappa pronta)
PM Quote
Avatar
tasx (Dev Team)
Expert


Messaggi: 439
Iscritto: 15/12/2008

Segnala al moderatore
Postato alle 19:22
Sabato, 21/02/2009
Grazie per le delucidazioni, ma se volessi solo far partire il computer facendoli scrivere sullo schermo "ciao mondo" e poi farlo spegnere alla pressione di un tasto  c'è qualche tutorial(preferibilmente in italiano)??


... sei un proxy che perde i pacchetti ...
PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 19:32
Sabato, 21/02/2009
Testo quotato

Postato originariamente da tasx:

... c'è qualche tutorial(preferibilmente in italiano)??



No ... tanto meno in italiano.

Per avviare (solo) un computer devi prevedere tante cose ... lascia perdere.


- Se le mie risposte non vi soddisfano, ignoratele, altrimenti un "grazie" e' molto gradito ...

"Dai un pesce (programma) a un uomo e lo nutrirai per un giorno. Insegnagli a pescare (programmare) e lo nutrirai per tutta la vita." (niente pappa pronta)
PM Quote
Avatar
tasx (Dev Team)
Expert


Messaggi: 439
Iscritto: 15/12/2008

Segnala al moderatore
Postato alle 19:41
Sabato, 21/02/2009
ok, grazie di tutto. :k:


... sei un proxy che perde i pacchetti ...
PM Quote
Avatar
eddiewrc (Member)
Expert


Messaggi: 560
Iscritto: 30/04/2006

Segnala al moderatore
Postato alle 12:49
Domenica, 22/02/2009
direi che scrivere un sistema operativo non è il classico esercizietto che si può fare per imparare... io per l'università sto scrivendo un sistema per macchine MIPS e ti assicuro che non è cosa semplice.
innanzitutto utilizziamo una macchina virtuale (micro mps, disponibile su sourceforge) e un cross compiler per testare il codice. (la vm è pensata apposta per semplificare un pochettino l'utilizzo degli indirizzi di memoria)
con tutta probabilità il nostro SO si limiterà esclusivamente al kernel, cioè uno scheduler (che stiamo scrivendo ora) ed un nucleo predisposto all'esecuzione effettiva dei processi.
-bootloader, alcune syscall sono già implementate tramite ROM virtuale
-è necessaria una conoscenza ASSOLUTA del C, delle  strutture dati (anche solo nel nostro scheduler usiamo: hash,heap, doubly linked lists e liste singolarmente concatenate circolari).) ovviamente ci sono puntatori dappertutto, il che significa che conviene scrivere le cose giuste al primo colpo, perchè debuggare è praticamente impossibile!
-non è programmazione C normale... è programmazione C concorrente!

il nostro progetto si limita alla scrittura di un kernel, che è la parte centrale di un OS. salendo nei livelli di astrazione un os come quelli che siamo abituati a vedere comprendono: un file system, uno stack tcp-ip, tante altre cose e come ultimo livello l'interfaccia verso l'utente, cioè una shell!

ovviamente bisogna anche conoscere le cose dal punto di vista teorico, per citare qualche concetto: preemption, race condition, semafori, algoritmo del banchiere, kernel monolitico - microkernel, funzionamento degli interrupt, syscall, message passing ecc..

se vuoi un buon libro ti consiglio: "operating system concepts" di Galvin, Gagne e un tipo impronunciabile che nn scrivo xchè sbaglierei il suo cognome.
ciao!


La conoscenza non ha mai fatto del male a nessuno. Caso mai hanno fatto del male quelli che hanno impiegato MALE la loro conoscenza. La conoscenza deve essere libera e quando dico libera intendo "free as freedom" e non "free as a free beer".
PM Quote
Avatar
tasx (Dev Team)
Expert


Messaggi: 439
Iscritto: 15/12/2008

Segnala al moderatore
Postato alle 9:30
Lunedì, 23/02/2009
Grazie mille, ora credo di aver capito quant'è difficile.


... sei un proxy che perde i pacchetti ...
PM Quote