Torna indietro   Hardware Upgrade Forum > Software > Programmazione

realme 12X 5G: ottimo compromesso a meno di 200 euro
realme 12X 5G: ottimo compromesso a meno di 200 euro
Il realme 12X 5G offre buoni potenti, design accattivante, display fluido a 120Hz, fotocamera principale da 50MP, grande batteria e ricarica rapida a un prezzo competitivo nel mercato della fascia medio-bassa. Lo abbiamo provato e vi raccontiamo tutto nella nostra recensione completa
Recensione Apple iPad Pro M4: è più potente di un MacBook Air M3
Recensione Apple iPad Pro M4: è più potente di un MacBook Air M3
Il nuovo iPad Pro ha ora un processore M4 che nessun altro prodotto Apple possiede oggi, è più potente di un MacBook Air base, è più sottile di un iPod del passato e lo schermo ha ora un OLED incredibile. Mancano solo delle app veramente ''Pro'' per fare il salto definitivo e sostituire davvero un MacBook.   
Recensione Kobo Clara Colour: il primo eReader a colori. Che spettacolo!
Recensione Kobo Clara Colour: il primo eReader a colori. Che spettacolo!
Kobo Clara Colour è il primo eReader dell’azienda insieme al Libra Colour a proporre agli utenti un display E INK a colori. È senza dubbio affascinante, con alcuni vantaggi che sono sicuramente tutti inerenti alla lettura dei fumetti o libri illustrati. Farà effettivamente la differenza sul mercato? Cerchiamo di scoprirlo in questa nostra recensione.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 26-12-2009, 11:27   #1
Z80Fan
Senior Member
 
L'Avatar di Z80Fan
 
Iscritto dal: Sep 2009
Messaggi: 638
[C/C++] Programmare un Sistema Operativo

[EDIT: Questa presentazione è un po' vecchia e non rispecchia gli sviluppi fatti (ce ne sono stati alcuni molto importanti), per i sorgenti aggiornati scorrere un po' in giù questo post.]

Salve a tutti !

Io e un mio amico stiamo scrivendo un kernel che dovrebbe essere compatibile a livello di API con Linux. Ovviamente non intendiamo sviluppare tutte le Api subito, ma almeno quelle base per poter avere almeno bash, poi ci sarà tempo per ampliare
Lo stato attuale del Kernel è questo:
  • Si avvia da un floppy (tramite grub)
  • Ha il supporto per gli interrupt base (timer, keyb)
  • Ha una piccola libreria per gestire lo schermo (ancora in modo testo 80x25)
  • Supporto per il floppy impostato (ci sono ancora dei dettagli da sistemare, qualche controllo in più sugli errori e aggiungere il supporto DMA ISA) (la periferica peggiore che abbia mai programmato ) [EDIT: Ho deciso di tralasciare il floppy per via della sua difficoltà di programmazione, vedere pag. 10]
Non ancora inclusa nel kernel ma programmata e testata separatamente è una libreria per la gestione della FAT12 praticamente finita (basta aggiungere una funzione per caricare in un buffer file più grandi di un settore, e al massimo il supporto per i nomi lunghi) [EDIT: Inclusa e funzionate]

Il sistema di sviluppo è GNU/Linux (Ubuntu ma non è importante), con compilatore gcc, utility make e assemblatore nasm.

Gli obiettivi per la versione 1.0 sono i seguenti:
  • Supporto alle API di base POSIX e che permettano di far eseguire qualche programma standard GNU (es. Bash, gcc, ...)
  • Supporto all'hardware di base del pc ( floppy, PIC, APIC, PCI, HDD, DMA, qualche altra sigla ...)
  • Supporto alle modalità video VESA
  • Tutta l'infrastruttura per avere un kernel "modulare"
  • Completo supporto alla specifica "multiboot"

Il kernel sarà di tipo "modulare": all' avvio il bootloader caricherà un kernel minimale che successivamente caricherà i moduli vari per gestire il sistema ( filesystem, video, network, ecc).
TUTTI i moduli lavoreranno in User Mode, l'unico pezzo che sarà in kernel mode sarà un piccolo kernel (volevo evitare il termine "microkernel" per non generare confusione ), non accessibile direttamente dalle applicazioni, che verrà chiamato dai moduli sovrastanti per gestire operazioni privilegiate. Oltre a ciò gestirà il multitasking (quindi scheduler e quello che gli và dietro) e la gestione della memoria. Tutto il resto sarà in user mode, le chiamate di sistema non causeranno un switch perchè il gestore degli interrupt sarà anch'esso in user mode. Così si assicura una buona protezione.
Tutto ciò sembra un microkernel, ma, una volta che i moduli sono stati caricati e gli indirizzi delle funzioni sono stati inseriti in apposite tabelle, diventa di fatto un kernel monolitico, solo che lavora in user mode; poi si può sempre attuare qualche modifica e farlo diventare una specie di microkernel "orientato alle procedure" (come tra l'altro è, in misura minore, il kernel linux, che ha dei punti dove può essere interrotto)

La richiesta che faccio in questo forum è se qualcuno ha informazioni sull' hardware PC, tutorial, datasheet, pezzi di codice, esperienza diretta, per favore me lo faccia sapere, possibilmente qui sul forum cosicchè (è scritto giusto?) altri possano beneficiarne.

Se qualcuno ha voglia di contribuire alla codifica, posso dargli un compito specifico da portare avanti.

Spero di essere stato chiaro e di non essermi dilungato troppo
Saluti!


--- Download versione attuale: ---
Pagina su SourceForge dove poter scaricare i sorgenti aggiornati e le immagini disco

Versione 0.06: (in git corrisponde al branch cpp_conv)
- Tradotta gran parte del codice in C++
- Nuovi sistemi per gestione dispositivi e interrupt orientati agli oggetti

Versione 0.05:
- Ho dimenticato di aggiornare il post e ora non ricordo più cosa ho fatto...

Versione 0.04d3:
- Allocatore delle memoria completato

Versione 0.04d:
- Migliorato gestione della memoria:
- Paginazione funzionante
- Allocatore di pagine funzionante anche sotto paginazione
- Funzione per aggiungere pagine nuove allo spazio virtuale del kernel
- Allocatore di blocchi di dimensione arbitraria (kmalloc)
- Ora il kernel gira tutto in modalità paginata !

Versione 0.04c:
- Migliorato il supporto alle modalità video VESA
- Cominciata paginazione

Versione 0.04b:
- Sistemato supporto LFN della FAT12
- Inserita una sottospecie di shell

Versione 0.04a:
- Inserito supporto (incompleto) per VGA (non Vesa) 640x480x16 e 320x200x256

Versione 0.04:
- Inserito supporto RamDisk
- Inserito Device Manager
- Cominciato il parsing della tabella Multiboot
- Cominciato a gestire la modalità video VESA

Versione 0.03a:
- Implementato lettura da filesystem FAT12
__________________
| Il mio "OS" (thread su HWU) | |

Ultima modifica di Z80Fan : 24-01-2012 alle 23:51. Motivo: modifica titolo
Z80Fan è offline   Rispondi citando il messaggio o parte di esso
Old 26-12-2009, 14:22   #2
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53968
Molto interessante, complimenti.

Se tutto gira in user mode ti risulterà quindi facile anche testare i vari moduli direttamente sul sistema di produzione. Bello...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 27-12-2009, 15:23   #3
Rikiji
Senior Member
 
L'Avatar di Rikiji
 
Iscritto dal: Jun 2005
Messaggi: 365
Bello, anzi bellissimo!
Se mai pubblicherete il sorgente ci giocherò un po' di sicuro.
Non posso dirvi purtroppo "contribuirò allo sviluppo" perchè non ho tempo libero a sufficienza al momento per entrare in un progetto del genere, ma dalle funzionalità che hai descritto siete partiti bene
__________________
Rikiji è offline   Rispondi citando il messaggio o parte di esso
Old 28-12-2009, 13:50   #4
Ryuzaki_Eru
Senior Member
 
L'Avatar di Ryuzaki_Eru
 
Iscritto dal: Sep 2009
Città: Nel mondo dei sogni
Messaggi: 4125
Parteciperei volentieri nel tempo libero, ma le poche conoscenze di C che avevo sono chissà dove nel mio cervello
Ryuzaki_Eru è offline   Rispondi citando il messaggio o parte di esso
Old 28-12-2009, 16:20   #5
Z80Fan
Senior Member
 
L'Avatar di Z80Fan
 
Iscritto dal: Sep 2009
Messaggi: 638
Aggiunto link per download

Ragazzi grazie per tutti i complimenti!
Ho aggiunto il link per scaricare la prima versione del kernel.
Come è scritto nel README all'interno, è ancora sotto sviluppo e carente in molte parti, ma sono fiducioso nelle mie capacità
Fatemi sapere cosa ne pensate!

Bye Bye!
__________________
| Il mio "OS" (thread su HWU) | |
Z80Fan è offline   Rispondi citando il messaggio o parte di esso
Old 28-12-2009, 19:27   #6
Ryuzaki_Eru
Senior Member
 
L'Avatar di Ryuzaki_Eru
 
Iscritto dal: Sep 2009
Città: Nel mondo dei sogni
Messaggi: 4125
Ma non avevi detto che era in C? A me sembra scritto in C++.
Ryuzaki_Eru è offline   Rispondi citando il messaggio o parte di esso
Old 28-12-2009, 20:27   #7
khalhell
Senior Member
 
L'Avatar di khalhell
 
Iscritto dal: Nov 2006
Città: Andalo
Messaggi: 1038
Complimenti per il lavoro, specialmente le risposte agli errori con la parolaccia finale, fantastica!
__________________
WEB: www.botlab.it -- MOBO: X370PRO | CPU: Ryzen 1600 | VGA: GTX1070 |RAM: 16GBDDR4 | ALI: Seasonic 750w Gold | LCD: LG Flatron 24" | CASE: NZXT S340 Elite | NOTEBOOK: MacBook PRO | CELL: Iphone 11 | CONSOLE: Xbox360 | TRATTATIVE A BUON FINE: >10
khalhell è offline   Rispondi citando il messaggio o parte di esso
Old 28-12-2009, 20:38   #8
Tommo
Senior Member
 
L'Avatar di Tommo
 
Iscritto dal: Feb 2006
Messaggi: 1304
Ero partito come "no ancora un altro nabbo che vuole programmare il nuovo linux"
Ma invece vedo che avete messo su un bel progetto coi piedi per terra, molto interessante
A capire qualcosa di system programming sarebbe stato bello aiutare...

PS: ma non è un lavoro immane andare oltre la scrittina che lampeggia su schermo nero?
__________________
*ToMmO*

devlog | twitter
Tommo è offline   Rispondi citando il messaggio o parte di esso
Old 28-12-2009, 20:56   #9
Kralizek
Senior Member
 
L'Avatar di Kralizek
 
Iscritto dal: Feb 2003
Città: Stockholm (SE)
Messaggi: 1343
chiamate DanieleC88!!!
Kralizek è offline   Rispondi citando il messaggio o parte di esso
Old 29-12-2009, 00:56   #10
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
Quote:
Originariamente inviato da Ryuzaki_Eru Guarda i messaggi
Ma non avevi detto che era in C? A me sembra scritto in C++.
I due file in /fat sono .cpp, tutti gli altri in /kernel sono .c. E lui parlava del kernel.
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 29-12-2009, 08:18   #11
Z80Fan
Senior Member
 
L'Avatar di Z80Fan
 
Iscritto dal: Sep 2009
Messaggi: 638
Quote:
Originariamente inviato da Ryuzaki_Eru Guarda i messaggi
Ma non avevi detto che era in C? A me sembra scritto in C++.
Quote:
Originariamente inviato da ndakota Guarda i messaggi
I due file in /fat sono .cpp, tutti gli altri in /kernel sono .c. E lui parlava del kernel.
Come dice ndakota, i file del kernel vero e proprio sono in C, ma lo stile di programmazione (sempre del kernel) è cmq orientato al c++ (p.es i commenti // e la dichiarazione di un "oggetto" struttura senza precederlo con "struct", cioè scrivo "my_struct myvariabile;" invece di "struct my_struct myvariabile", e dichiaro la variabile iteratore di un for all'interno del for stesso; tutte cose vietate nel C se non nel C99 )

Quote:
Originariamente inviato da khalhell Guarda i messaggi
Complimenti per il lavoro, specialmente le risposte agli errori con la parolaccia finale, fantastica!
Questo perchè non mi sono ancora "espresso" pienamente nella scrittura dei commenti, poi vedrai che robe!

Quote:
Originariamente inviato da Tommo Guarda i messaggi
PS: ma non è un lavoro immane andare oltre la scrittina che lampeggia su schermo nero?
Sicuramente ma sono fiducioso nelle nostre capacità e (semmai il progetto prenda piede) nella possibilità di interessare alcuni programmatori Linux. Se poi a nessuno interesserà, me lo terrò per me come sistemino da usare su computer scrausi
__________________
| Il mio "OS" (thread su HWU) | |
Z80Fan è offline   Rispondi citando il messaggio o parte di esso
Old 29-12-2009, 09:24   #12
clockover
Senior Member
 
L'Avatar di clockover
 
Iscritto dal: Oct 2004
Messaggi: 1945
Sottoscrivo il thread perchè voglio seguire la cosa.... mi interessa
clockover è offline   Rispondi citando il messaggio o parte di esso
Old 29-12-2009, 09:29   #13
zulutown
Senior Member
 
Iscritto dal: Jul 2009
Messaggi: 1160
capisco a livello educativo fare una piccola prova.. per imparare.

ma poi sinceramente non condivido per nulla il "proseguire" negli sviluppi quando già esistono un milione di OS opensource che non aspettano altro che nuovi volenterosi programmatori
__________________
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
zulutown è offline   Rispondi citando il messaggio o parte di esso
Old 29-12-2009, 11:51   #14
Z80Fan
Senior Member
 
L'Avatar di Z80Fan
 
Iscritto dal: Sep 2009
Messaggi: 638
Quote:
Originariamente inviato da clockover Guarda i messaggi
Sottoscrivo il thread perchè voglio seguire la cosa.... mi interessa
Grazie!

Quote:
Originariamente inviato da zulutown Guarda i messaggi
capisco a livello educativo fare una piccola prova.. per imparare.

ma poi sinceramente non condivido per nulla il "proseguire" negli sviluppi quando già esistono un milione di OS opensource che non aspettano altro che nuovi volenterosi programmatori
Non posso che essere d'accordo con te.
Ma la mia idea di proseguire nel progetto è data da molti miei pensieri nati sopratutto da questi punti:
- Vedo sempre le cose in grande (grandissimo)
- I sorgenti di Linux sono veramente complicati allo stato attuale.
- Il kernel monolitico tutto in kernel mode è un'architettura vecchia, e con i vari moduli anche non-free (nVidia?), c'è il rischio di codice pericoloso.
- Avevo molte idee di come si fosse potuto scrivere
- Volevo fare in modo che Linux prendesse piede come OS, convincendo gli sviluppatori a mettersi d'accordo e creare degli standard che potessero veramente creare una totale compatibilità tra distro e una piattaforma uniforme su cui scrivere driver per incentivare anche gli sviluppatori di hardware (perchè senza driver non si và da nessuna parte)
Mettendo tutto ciò assieme, ho pensato "un codice è meglio di 1000 parole (), perchè non comincio a scrivere del codice per dare un'idea agli sviluppatori veramente bravi?"
L'idea finale è di creare un sistema operativo base, parecchio commentato e documentato, consistente in kernel, applicazioni di utilità, una shell e una primitiva interfaccia grafica, tutto senza eccessive funzionalità ma funzionante e con la base pronta, diciamo il "framework", e spedirlo a qualcuno di rilevante nella Linux Foundation (Torvalds?), per vedere se possa essere accettato.

Questa è la mia visione. Non siamo più negli "anni della rivoluzione", una persona non può più rivoluzionare il mondo. Tutto ciò può rimanere un sogno di un ragazzo che programma nel tempo libero, o può diventare una realtà di decine, centinaia, migliaia, milioni di persone. A voi la scelta.

(Tu mi dirai: "ma se loro sono programmatori veramente bravi, non ci avranno già pensato?" E io risponderò "Boh")

(caspita che poeta , ma va là, programmiamo per divertirci! )

(Come vedi Tommo, l'idea di partenza era tutt'altro che con i piedi per terra )

PS: so che esistono altri os open source, sono partito con linux perchè è quello il mio target; è anche vero che molti altri os open source rimangono a un livello base di funzionalità, pochi sono veramente seri (Haiku?).
__________________
| Il mio "OS" (thread su HWU) | |

Ultima modifica di Z80Fan : 29-12-2009 alle 12:55. Motivo: ps.
Z80Fan è offline   Rispondi citando il messaggio o parte di esso
Old 29-12-2009, 12:40   #15
Ryuzaki_Eru
Senior Member
 
L'Avatar di Ryuzaki_Eru
 
Iscritto dal: Sep 2009
Città: Nel mondo dei sogni
Messaggi: 4125
Quote:
Originariamente inviato da khalhell Guarda i messaggi
Complimenti per il lavoro, specialmente le risposte agli errori con la parolaccia finale, fantastica!

Quote:
I due file in /fat sono .cpp, tutti gli altri in /kernel sono .c. E lui parlava del kernel.
E' stata la prima cartella che ho avuto per le mani, poi sono dovuto uscire
Ryuzaki_Eru è offline   Rispondi citando il messaggio o parte di esso
Old 29-12-2009, 12:54   #16
Z80Fan
Senior Member
 
L'Avatar di Z80Fan
 
Iscritto dal: Sep 2009
Messaggi: 638
Quote:
Originariamente inviato da Ryuzaki_Eru Guarda i messaggi
Riga 97 del file main.c
__________________
| Il mio "OS" (thread su HWU) | |
Z80Fan è offline   Rispondi citando il messaggio o parte di esso
Old 29-12-2009, 13:00   #17
Ryuzaki_Eru
Senior Member
 
L'Avatar di Ryuzaki_Eru
 
Iscritto dal: Sep 2009
Città: Nel mondo dei sogni
Messaggi: 4125
C'era un main?
Ho guardato solo la cartella fat, al più presto guarderò gli altri file. Di sicuro c'è che ora dovrò trovare il tempo per rinfrescare e incrementare le mie conoscenze di C, la cosa mi stuzzica non poco
Ryuzaki_Eru è offline   Rispondi citando il messaggio o parte di esso
Old 29-12-2009, 13:05   #18
blackgin
Member
 
L'Avatar di blackgin
 
Iscritto dal: Oct 2007
Messaggi: 250
Buone le idee e bellissimo progetto
blackgin è offline   Rispondi citando il messaggio o parte di esso
Old 29-12-2009, 13:09   #19
Z80Fan
Senior Member
 
L'Avatar di Z80Fan
 
Iscritto dal: Sep 2009
Messaggi: 638
Quote:
Originariamente inviato da blackgin Guarda i messaggi
Buone le idee e bellissimo progetto
Grazie!
__________________
| Il mio "OS" (thread su HWU) | |
Z80Fan è offline   Rispondi citando il messaggio o parte di esso
Old 29-12-2009, 13:28   #20
clockover
Senior Member
 
L'Avatar di clockover
 
Iscritto dal: Oct 2004
Messaggi: 1945
Quote:
Originariamente inviato da Z80Fan Guarda i messaggi
Riga 97 del file main.c
Io le metterei in dialetto!

A parte gli scherzi, sto studiando da qualche mese Sistemi Operativi e vederne nascere da zero uno è un'opportunità per me di imparare!
clockover è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


realme 12X 5G: ottimo compromesso a meno di 200 euro realme 12X 5G: ottimo compromesso a meno di 200 ...
Recensione Apple iPad Pro M4: è più potente di un MacBook Air M3 Recensione Apple iPad Pro M4: è più...
Recensione Kobo Clara Colour: il primo eReader a colori. Che spettacolo!  Recensione Kobo Clara Colour: il primo eReader a...
ASUS Advanced BTF: basta cavi in vista, assemblare un bel PC è un gioco da ragazzi ASUS Advanced BTF: basta cavi in vista, assembla...
Recensione Logitech G PRO 60 X: la prima tastiera 60% del marchio convince solo a metà Recensione Logitech G PRO 60 X: la prima tastier...
My Hidden Ego, il progetto fotografico d...
La fotocamera istantanea Polaroid Go Gen...
SpaceX: il quarto tentativo di lancio di...
Rainbow Six Siege, Ubisoft annuncia l'ab...
Colla sulla pizza: Google rimuove manual...
Wolters Kluwer: alle imprese serve un pr...
Ionity presenta due nuovi abbonamenti pe...
Black Ops 6 sarà il primo Call of...
Meta Quest 2 costa solo 249€ su Amazon e...
QuObjects: lo storage compatibile S3 di ...
Il rapporto degli italiani con l'intelli...
Google indicizza i file EPUB: una nuova ...
Germania e saturazione solare: ecco cosa...
NAS Synology DS1621+ con 6 Hard Disk Iro...
L’IA generativa al centro di AWS Summit
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 03:14.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Served by www3v