|
|
|
|
Strumenti |
03-01-2010, 16:52 | #101 |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26107
|
No, AmigaOS non c'entrebbe nulla. Ma per lo più lo scriverei in Python.
Per quanto riguarda il driver VESA, ci sono due possibilità. La prima è mettere nel primo MB di memoria delle apposite routine 8086 per richiamare i servizi int 10h del VESA. L'uso sarebbe il seguente: - inizializzo un'opportuna zona di memoria coi dati condivisa e accessibile alla routine 8086; - richiamo una routine per lo switch in real mode (dal protected mode) passandogli l'indirizzo della routine 8086 da eseguire; - a questo punto viene eseguito il codice 8086 che richiama l'int 10h e memorizza nella zona di memoria "condivisa" i risultati; - la routine 8086 richiama un'opportuna routine di servizio per il ritorno alla modalità protetta (nel punto successivo alla chiamata). La seconda possibilità riguarda l'uso di task che gira in modalità Virtual 8086, che si occupa di eseguire il codice 8086 ivi compreso quello per richiamare i servizi VESA. In questo modo si eviterebbe lo switch del processo corrente dalla modalità protetta a quella reale, e poi il viceversa, perché verrebbe gestito tutto in maniera trasparente (e veloce, suppongo) dal processo Virtual 8086 e dal monitor Virtual 8086 (che gira in modalità protetta, ed è necessario per controllare il precedente processo). Non ho scritto un monitor Virtual 8086, per cui non ti saprei aiutare per questa soluzione, ma in ogni caso preferirei la prima, che è molto più semplice da implementare, per i seguenti motivi: - il codice per lo switch da e per la modalità reale è già disponibile; - non devi richiamare in continuazione i servizi VESA (per ottenere l'indirizzo del frame buffer richiami una sola volta l'apposito servizio durante l'inizializzazione del driver; idem se vuoi ottenere l'elenco di tutte le modalità VESA disponibili, che puoi recuperare e inserire in una lista alla partenza del driver; l'impostazione di una modalità VESA la richiami una volta ogni morte di papa, per cui puoi benissimo eseguire lo switch protected <-> real una tantum, quando serve). Quindi hai lavorato per Develer, suppongo. E magari mastichi qualcosina di Python.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
03-01-2010, 16:59 | #102 | |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26107
|
Quote:
Una volta realizzata l'apposita VM, penso che la strada dovrebbe essere tutta in discesa. Per lo meno utilizzando il più possibile codice Python. E sai perché? Perché dopo la VM metterei in piedi una shell interattiva Python che mi permetterebbe di sperimentare pezzi di codice dall'interno dello stesso s.o., senza quindi il classico processo di: - edita il file; - compila; - aggiorna la partizione della macchina virtuale; - fai partire la macchina virtuale; - esegui il codice. Ancora più interessante per me è la possibilità di scrivere facilmente una batteria di test sfruttando dei mock per simulare le parti critiche del s.o.. Insomma, non la vedo una cosa così difficile. Anzi.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
03-01-2010, 17:03 | #103 | |
Senior Member
Iscritto dal: Mar 2005
Città: Morimondo city
Messaggi: 5491
|
Quote:
__________________
Khelidan |
|
03-01-2010, 17:21 | #104 | |
Senior Member
Iscritto dal: Aug 2004
Città: Firenze - Campi B.
Messaggi: 2223
|
Quote:
Eh basta vedere con cosa è stato fatto il wizard per bertos.. Oppure il PyCon..
__________________
|
|
03-01-2010, 18:48 | #105 | ||
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26107
|
Quote:
In verità è da un bel po' che ci rifletto. Finito wpython magari faccio qualche esperimento, se ne ho ancora voglia. Quote:
Dev'essere stata una bella esperienza.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
||
03-01-2010, 18:54 | #106 |
Senior Member
Iscritto dal: Sep 2008
Messaggi: 1224
|
Scrivere un SO che richiede una VM, non porterebbe a tempi di bootstrap lunghissimi? Il sistema risultante non sarebbe esageratamente lento?
Sicuramente sarà possibile implementare funzionalità avanzate in pochissimo tempo rispetto ai metodi tradizionali, ma le prestazioni?
__________________
MacBook 6,1|2,26 Ghz C2D|2GB 1067 Mhz DDR3|GeForce 9400M|Mac OSX 10.6.2 |
03-01-2010, 19:14 | #107 | ||
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53963
|
Quote:
Quote:
In teoria con un compilatore JIT le prestazioni potrebbero comunque essere degne. Bisogna vedere come si andrebbe ad integrare l'uso di un compilatore JIT con il kernel. Sicuramente ci sarebbe un overhead non piccolo per il garbage collecting (se implementato) e per le peculiarità del linguaggio usato (un piccolo esempio può essere il bound checking nell'uso dei vettori, sempre presente nei linguaggi di alto livello). Fra gli altri problemi da gestire ci sarebbe sicuramente la gestione delle eccezioni del linguaggio. |
||
03-01-2010, 19:16 | #108 | ||
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26107
|
Quote:
Quote:
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
||
03-01-2010, 19:47 | #109 | ||||
Senior Member
Iscritto dal: Sep 2009
Messaggi: 638
|
Quote:
Quote:
Quote:
Quote:
Aggiornamento Mi servirebbero 2 favori: - Qualcuno che legga velocemente come funziona il caricamento dei moduli da GRUB (la versione 1) - Qualcuno che sappia leggere ed estrarre informazioni dai file ELF Per fare ---> Caricamento moduli e inizio framework per kernel modulare |
||||
03-01-2010, 20:01 | #110 | |
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
Quote:
lo sai perfettamente che i linguaggi managed sono il futuro anche nel settore dei sistemi operativi |
|
03-01-2010, 20:03 | #111 |
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
|
03-01-2010, 20:07 | #112 | |
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
Quote:
poi certo, prima di giudicare in queste cose bisogna fare solamente una cosa: provare, vedere, misurare ed infine confrontare. ok, in effetti sono 4 |
|
03-01-2010, 20:08 | #113 | ||
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26107
|
Quote:
Quote:
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
||
03-01-2010, 20:16 | #114 |
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
giustissimo, ma non vuol dire che non si possa risolvere. un buon inizio verso la soluzione a mio parere é fare la differenza tra vettore e buffer: chiamiamo vettore un array di dimensioni orientativamente piccole (per es. una dozzina di elementi) usato per scopi logici nel codice del programma, e chiamiamo buffer un array di dimensioni potenzialmente elevate il cui scopo é contenere dati, come ad esempio un'immagine, una sequenza audio o addirittura video (eventualmente tramite file mapping). é chiaro che il vettore deve essere gestito tramite bound checking mentre il buffer deve essere gestito tramite bulk operations efficienti (le stesse usate in NIO di Java).
|
05-01-2010, 12:40 | #115 |
Senior Member
Iscritto dal: Sep 2009
Messaggi: 638
|
[OT]
Cose come queste non dovrebbero succedere in un sistema operativo "avanzato" http://z80fan.altervista.org/immagin...oken-small.png Possibile causa: il driver proprietario nvidia (lo schermo lampeggiava come se fosse stavo fuori sincronia, quindi presumo un errore nel driver) Altro: mi sono sparite le icone del desktop ! Forse un bug nel server X. Altro ancora: certe volte il sistema non risponde più ai comandi del mouse e tastiera, anche se il puntatore si muove correttamente. Sempre un possibile bug di X. [/OT] Ultima modifica di Z80Fan : 05-01-2010 alle 12:43. Motivo: sistemato link |
05-01-2010, 13:36 | #116 | |
Senior Member
Iscritto dal: Jul 2009
Messaggi: 1160
|
Quote:
__________________
Web2.0 Guides And Tutorials SLR: Canon 6D ZOOM: Canon EF 24-105mm f/4L IS USM FISSI: - Canon EF 28mm f/1.8 USM - Canon EF 40mm f/2.8 STM - Canon EF 50mm f/1.4 USM - Canon EF 100mm f/2 USM - Canon EF 200mm f/2.8L USM II ALTRO: Canon 430 EX II |
|
05-01-2010, 13:42 | #117 |
Senior Member
Iscritto dal: Sep 2009
Messaggi: 638
|
Io intendevo Ubuntu, infatti ho anche specificato "server X"
|
05-01-2010, 13:58 | #118 |
Senior Member
Iscritto dal: Aug 2002
Messaggi: 4371
|
Domanda da ignorante al cubo: come mai generalmente quando si progetta un OS vedo spesso che si usa un linguaggio "vecchio" e non OOP come C?
E' solo per questioni di prestazioni o ci sono anche altri motivi? Ad esempio perchè non in C++, Java, Python, Ruby ecc.? Tnx. |
05-01-2010, 14:06 | #119 | |
Senior Member
Iscritto dal: Sep 2008
Messaggi: 1224
|
Quote:
__________________
MacBook 6,1|2,26 Ghz C2D|2GB 1067 Mhz DDR3|GeForce 9400M|Mac OSX 10.6.2 |
|
05-01-2010, 14:27 | #120 | |
Senior Member
Iscritto dal: Sep 2009
Messaggi: 638
|
Quote:
Il c++ è compilato, quindi non ha questo problema, ma ha molte particolarità che non vanno bene per la scrittura di un kernel, ti rimando a questa pagina http://wiki.osdev.org/C%2B%2B. Sostanzialmente sono i vari costruttori e distruttori e gli operatori new e delete che necessitano un supporto del sistema operativo, si possono bypassare ma non avevo voglia. Il C è cmq un'ottima scelta per scrivere un sistema operativo, anzi, è stato fatto apposta per scrivere sistemi operativi (lo hanno inventato per scrivere la primissima versione di Unix, viste le limitazioni del BCPL e del B). Oltre a non avere troppi fronzoli come linguaggio, ti permette di avere un elevato controllo sull'hardware, senza modifiche da parte di un interprete. Cmq un sistema operativo lo puoi scrivere in qualsiasi linguaggio, anche in Basic, basta che hai un compilatore che te lo traduce. Il nostro kernel sarà scritto in C, ma questo non vuol dire che anche i moduli debbano essere scritti in C. Dopo aver finito il kernel base si può scrivere qualsiasi macchina virtuale Java-Python-Ruby per scrivere i moduli (per la felicità di cdimauro e RyUzAkI ) |
|
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:46.