Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Appian: non solo low code. La missione è l’ottimizzazione dei processi con l'IA
Appian: non solo low code. La missione è l’ottimizzazione dei processi con l'IA
Abbiamo partecipato ad Appian World 2024, evento dedicato a partner e clienti che si è svolto recentemente nei pressi di Washington DC, vicino alla sede storica dell’azienda. Nel festeggiare il 25mo anniversario, Appian ha annunciato diverse novità in ambito intelligenza artificiale
Lenovo ThinkVision 3D 27, la steroscopia senza occhialini
Lenovo ThinkVision 3D 27, la steroscopia senza occhialini
Primo contatto con il monitor Lenovo ThinkVision 3D 27 che grazie a particolari accorgimenti tecnici riesce a ricreare l'illusione della spazialità tridimensionale senza che sia necessario utilizzare occhialini
La Formula E può correre su un tracciato vero? Reportage da Misano con Jaguar TCS Racing
La Formula E può correre su un tracciato vero? Reportage da Misano con Jaguar TCS Racing
Abbiamo visto ancora una volta la Formula E da vicino, ospiti di Jaguar TCS Racing. In questa occasione però curve e rettilinei erano quelli di un circuito permanente, molto diverso dagli stretti passaggi delle strade di Roma
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: 53963
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


Appian: non solo low code. La missione è l’ottimizzazione dei processi con l'IA Appian: non solo low code. La missione è ...
Lenovo ThinkVision 3D 27, la steroscopia senza occhialini Lenovo ThinkVision 3D 27, la steroscopia senza o...
La Formula E può correre su un tracciato vero? Reportage da Misano con Jaguar TCS Racing La Formula E può correre su un tracciato ...
Lenovo LEGION e LOQ: due notebook diversi, stessa anima gaming Lenovo LEGION e LOQ: due notebook diversi, stess...
Nothing Ear e Ear (a): gli auricolari per tutti i gusti! La ''doppia'' recensione Nothing Ear e Ear (a): gli auricolari per tutti ...
NOW aumenta di 5€ (o di 10€) il pass per...
Torna la friggitrice ad aria Cecotec 5.5...
JEDEC aggiorna le specifiche DDR5 e port...
Amazon multata per 10 milioni dall'Antit...
I nuovi MacBook Pro con chip M3 e M3 Pro...
Prezzi bomba per i realme 12 Pro 5G e re...
Dipartimento della Difesa USA e Intel Fo...
Optimus, il robot umanoide di Tesla, in ...
Il 5 maggio torna la Maratona Fotografic...
Teatro dei Vitellini - Regia di Gian Pao...
Phi-3 Mini, il modello IA di Microsoft c...
D-Wave annuncia la disponibilità ...
AWS aggiorna Amazon Bedrock con nuove fu...
Sonos: in arrivo un restyling completo p...
La Russia ha condannato il direttore del...
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: 08:04.


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