|
|
|
|
Strumenti |
30-12-2009, 14:35 | #41 |
Junior Member
Iscritto dal: Mar 2009
Messaggi: 27
|
molto interessante, qualche annetto fa avevo iniziato a scrivere un modulo Vesa per ItaliOS, solo che poi il progetto si è spento...vediamo se riesco a trovare i vecchi appunti ed a provare qualcosina...un po' di minima grafica a 640x480 l'avevo fatta, devo andare a ripescare tutto!
|
30-12-2009, 14:38 | #42 |
Senior Member
Iscritto dal: Sep 2009
Messaggi: 638
|
Cos'è, ha una brutta reputazione?
Cmq, cdimauro, ho dato un'occhiata ai Volume, interessante ma utile solo in un sistema come Windows che separa i dispositivi di memorizzazione in diverse unità. In questo caso *nix è più efficente perchè permette di montare un dispositivo in qualsiasi posizione, facendo credere alle applicazioni che sia tutto sulla stessa unità. E' utile ad esempio in un laboratorio di scuola: nei computer ci sono solo i file di "boot" (o al massimo tutti i file di sistema se la lan è lenta), e nel server centrale ce la home di ogni utente, che anche se cambia computer si trova tutto come era prima; adesso a scuola abbiamo solo un drive sul server (Z: ), se cambiamo computer perdiamo tutte le impostazioni e i file che sono sul desktop (si, basterebbe stare attenti, ma vuoi mettere la comodità di trovarti pure lo sfondo uguale? o più seriamente, ho personalizzato Dev-C++ sul mio computer, quelle volte che devo usarne un altro mi tocca risistemarlo.) Per simulare i Volume in *nix basterebbe fare in modo che, oltre a montare il dispositivo nella posizione predefinita (metti /media/cdrom0 o /mnt/cdrom0), crei anche un link simbolico con il nome del supporto (quindi inserendo un disco nominato "Lavoro", avrò /media/cdrom0 e /media/Lavoro). Tra l'altro questo succede già qui in Ubuntu con qualsiasi supporto, e penso con qualsiasi distro. Infatti i miei disci sono montati come /media/Riserva e /media/dati. Se dovessi creare una rete e mettere i dati di "Riserva" in un disco remoto, basterebbe montare questo disco remoto nella stessa posizione e riavrei tutto come prima. Più interessanti sono gli assigns, ma anche in questo caso si possono simulare o come variabili d'ambiente ( $BIN/firefox ) o come link simbolici ( /links/bin, /links/lib ... come fa GoboLinux). La cartella "/links" potrebbe essere anche un file system virtuale (come /proc) in modo che ogni volta che un programma accede alla cartella il systema fornisca il path più appropriato per quel programma (ad esempio un programma utente avrebbe /links/bin che punta a /bin o /usr/bin, un programma root punterà a /sbin). |
30-12-2009, 14:40 | #43 | |
Senior Member
Iscritto dal: Sep 2009
Messaggi: 638
|
Quote:
|
|
30-12-2009, 14:44 | #44 |
Senior Member
Iscritto dal: Apr 2008
Città: Varese
Messaggi: 406
|
Vero! Alla domanda: che OS vorresti? Risponde solo AmigaOS
__________________
IT Developer at Hardware Upgrade S.r.l. self.love(this.me()); |
30-12-2009, 14:48 | #45 |
Junior Member
Iscritto dal: Mar 2009
Messaggi: 27
|
Non ci sono arrivato ad entrare, perchè quando mi sono proposto per il modulo VESA, il progetto era sul finire perchè i principali progettisti non avevano tempo, infatti ci ho lavoricchiato poco, il tempo di cambiare la modalità video e passare a quella protetta per maggiori risoluzioni, algoritmi di rastrellizzazione di linee e qualche altra componente di base...poi essendo che il progetto si è fermato, mi sono fermato anche io.
|
30-12-2009, 14:53 | #46 | ||
Senior Member
Iscritto dal: Sep 2009
Messaggi: 638
|
Quote:
Quote:
Sarebbe utile una libreria per disegnare forme e testo, così almeno ci liberiamo di quel dannato modo video 80x25 che con tutti i messaggi di debug finisce subito |
||
30-12-2009, 15:14 | #47 |
Junior Member
Iscritto dal: Mar 2009
Messaggi: 27
|
devo fare una bella ricerca nei backup 2006/2007, vediamo cosa ritrovo...così se ne ho il tempo magari lo completo e lo provo prima di dartelo
|
30-12-2009, 15:26 | #48 |
Senior Member
Iscritto dal: Sep 2008
Messaggi: 1224
|
Molto interessante come progetto, anche se sembra molto difficile da realizzare.
Sono abbastanza ignorante, quindi prendi quello che scrivo considerando la mia ignoranza Perché non hai considerato l'idea di reimplementare le parti indispensabili del kernel Linux (intendo, per un funzionamento minimale), riguardanti la parte indipendente dalla piattaforma? Il kernel di per se è una cosa assurda veramente enorme, ma credo che reimplamentare solo una minima parte del kernel (ammesso che riesca a capire il funzionamento dei moduli) sia meno complicato che scrivere da zero un SO. Per il FileSystem, invece come intendi fare? E per la portabilità? Il kernel Linux utilizza le estensioni GNU e per questo, a meno di modifiche necessità dei compilatori della GCC per essere compilato. Intendi utilizzarle anche tu?
__________________
MacBook 6,1|2,26 Ghz C2D|2GB 1067 Mhz DDR3|GeForce 9400M|Mac OSX 10.6.2 Ultima modifica di M4rk191 : 30-12-2009 alle 15:36. |
30-12-2009, 15:46 | #49 | |
Senior Member
Iscritto dal: Sep 2009
Messaggi: 638
|
Quote:
1- Semplicemente perchè ho trovato che i sorgenti di Linux sono veramente complessi e un po' disordinati Diciamo che avrei dovuto prima capire come funzionava attualmente, poi capire su che parti intervenire e quindi riscriverle. Visto che avevo già in mente come si potesse scrivere, ho deciso di saltare le parti precedenti e scrivere subito del mio codice, che potevo facilmente capire e facilmente spiegare ad altri, fatto esattamente come volevo io. I moduli di Linux sono una buona cosa, ma volevo portare la modularizzazione anche più in là di come non faccia Linux. I suoi moduli non sono neanche troppo complicati, se qualche programmatore linux si interessasse non troverebbe difficoltà a adattarli; o al massimo saremo in grado di adattarli noi. 2- FileSystem: Se intendi per filesystem: Ext, fat, ntfs... in primo luogo useremo la fat12 perchè il sistema attualmente fà il boot da floppy, poi sistemeremo il VFS (virtual file system, in terminologia linux) che consente di avere un'interfaccia unica per il sistema e il VFS si preoccupa di caricare i moduli con le varie implementazioni dei filesystem. Se invece per filesystem intendi dire la disposizione delle cartelle di sistema (/bin, /etc, /usr, /var ...), io proporrei la via di GoboLinux (controlla wikipedia), ma cmq meno estremamente, conservando i nomi originali delle cartelle. 3- Portabilità: penso tu stia parlando della portabilità delle applicazioni, in questo caso il sistema sarà posix-compatibile quindi i programmi e le utilità GNU si compileranno senza problemi. GCC non avrà bisogno di modifiche perchè noi useremo il formato file eseguibili ELF, l'unica cosa che dovremo scrivere (o ricompilare) saranno le librerie dinamiche (quelle in /lib con estensione .so), che forniscono alle applicazioni le stesse funzioni, ma sotto lavorano diversamente in base al kernel e al sistema operativo. (Anche Windows ha una modalità che può eseguire applicazioni unix appunto avendo le librerie apposta per windows, anche se la cosa è più complicata di così) Chiedimi pure se qualcosa non ti è chiaro, sono felice di dare informazioni sul mio lavoro |
|
30-12-2009, 19:53 | #50 | ||||||
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26107
|
Tranquillo che il modo di usarlo si trova.
Quote:
Quote:
Ma ogni oggetto ha un comportamento diverso. Tant'è che, appunto, le cartelle le crei con mkdir e non con touch. Serve, insomma, una specializzazione precisa a seconda del tipo di oggetto che stai manipolando. Ridurre tutto alla metafora del file è una forzatura enorme che costringe a operazioni innaturali per gestire qualunque cosa. Giusto per fare un esempio completamente diverso, se devo gestire l'audio, per me non ha senso farlo tramite un apposito file "speciale" (come viene detto in gergo; che poi se si deve far ricorso a file "speciali", tanto vale trattarli direttamente come casi a se stante). Meglio avere delle apposite API che mi permettono di controllare con precisione quello che voglio ottenere. D'altra parte uno stream audio ha delle caratteristiche peculiari che lo differenziano da un file di testo. Non so se mi sono spiegato. Quote:
Anche. Quote:
Col primo si implementano meccanismi che consentono di identificare un preciso "mezzo", e difatti si fa largo (e obbligatorio) uso delle "etichette" assegnabili ai dischi (ma che nei vari s.o. non vengono utilizzati: si tratta soltanto di un'informazione addizionale utile a fini mnemonici all'utente). Tant'è che si possono referenziare dei dischi non presenti, e il s.o. chiederà poi, in maniera trasparente all'applicazione, di inserire il giusto disco per accedere alle informazioni richieste, occupandosi di gestire lock su file et similia. E' il sistema utilizzato dai giochi che giravano facendo uso del s.o. (normalmente il s.o. veniva barbaramente ucciso per prendere possesso di tutte le risorse della macchina), che permetteva loro di poter girare su qualunque media (floppy, hard disk, cd-rom, e... futuri). Ovviamente rispettando le linee guida dello sviluppo. Gli assign erano comodissimi per referenziare particolari risorse, assegnando loro un preciso nome, appunto. Nome a cui potevano essere attribuiti più percorsi / file. Era il classico esempio dei comandi (C: era il "volume" dedicato allo scopo), ma l'esempio migliore era rappresentato dai font, che spesso erano distribuiti su più dischi / media. Io li trovo ancora oggi dei meccanismi utili e comodi, ma soprattutto intuitivi anche per un utente non smaliziato (che non deve andar dietro a link simbolici sparsi sul filesystem, oppure alle famigerate variabili d'ambiente). Soprattutto erano strumenti del tutto trasparenti a livello applicativo. Quote:
Quote:
Tanto lo sai che gli spectrumisti hanno preso sempre mazzate dai commodiariani. E comunque, il mio C128 aveva sia l'8510 (erede del 6510) che lo Z80.
__________________
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 |
||||||
30-12-2009, 20:32 | #51 |
Senior Member
Iscritto dal: Sep 2009
Città: Nel mondo dei sogni
Messaggi: 4125
|
A volte penso che nascere in quest'epoca informatica non sia una cosa poi cosi positiva.
E' vero, all'epoca non c'era l'immensa mole di informazioni che abbiamo oggi e non c'era nemmeno internet come la conosciamo oggi, però il lato positivo è impagabile: ci si doveva fare le ossa e sbattere la testa per forza se volevi imparare e fare qualcosa. Darei tutto quello che ho per poter nascere 30 anni fa. |
30-12-2009, 20:47 | #52 | |
Senior Member
Iscritto dal: Apr 2008
Città: Varese
Messaggi: 406
|
Quote:
__________________
IT Developer at Hardware Upgrade S.r.l. self.love(this.me()); |
|
30-12-2009, 21:08 | #53 | ||||||
Senior Member
Iscritto dal: Sep 2009
Messaggi: 638
|
Quote:
Quote:
Quote:
Il kernel deve solo gestire i processi e l'allocazione di memoria, gestire le priorità e regolare l'accesso diretto all'hardware ai moduli sovrastanti. Un modo era appunto quello dei file, che dall'user mode passavano i dati in kernel mode. Diciamo che nel nostro, in cui anche i driver sono in user, usare le pipe è molto più efficente. Quote:
"che non deve andar dietro a link simbolici sparsi sul filesystem", io infatti ho proposto di avere una cartella centralizzata in cui avere i link a diverse zone del sistema, quindi invece di SYS: avrai /links/bin (o quello che è). E' cmq indipendente dall'applicativo. Cmq penso che tutto ciò sia ancora legato al filesystem, quindi al momento attuale non ci interessa troppo. E' solo una questione di gestione del path. Quando svilupperemo il VFS lì potremo inserirci tutto quello che vogliamo Quote:
Io sono troppo giovane per quel periodo, ma mi sembra che gli spectrummisti non sfigurassero troppo A parte lo Z80 (è italiano lo sapevi?), lo spectrum mi piace anche perchè ha un design pulito e ordinato (tranne per la memoria video ), e perchè il basic era vermente avanti (si potevano creare stream di dati, roba che solo il c++ si vantava di avere ) Quote:
|
||||||
30-12-2009, 22:33 | #54 |
Senior Member
Iscritto dal: Sep 2009
Città: Nel mondo dei sogni
Messaggi: 4125
|
Anche perchè, non dimentichiamo (e parlo come persona che *non* ha vissuto in quell'epoca): accendevi il pc e potevi fare due cose
1)caricavi i giochini 2)leggevi il manuale e iniziavi a programmare. Non c'era molta scelta. |
30-12-2009, 23:04 | #55 |
Senior Member
Iscritto dal: Dec 2001
Messaggi: 700
|
complimenti all'autore del thread
[ot] per quelli che rimpiangono i vecchi tempi della scena, c'era sicuramente molto entusiasmo e "ingenuità", il 90% degli scambi avveniva via lettere, il modem era un lusso per pochi (e se non boxavi o avevi qualcuno che ti forniva le calling card c'era bisogno di un mutuo per collegarsi) ma era veramente meglio? onestamente non penso ... forse da quando programmo per lavoro ho perso un pò della "poesia" del pioniere, ma sarebbe difficile rinunciare agli strumenti odierni. e la passione (e la competenza in misura minore) non si comprano certamente su wikipedia [/ot]
__________________
Le mie app per iphone: Wow Minis Match Tracker ||| Wow Minis Hit Calculator (in review ) Frieza#916 @ SC2 ||| Giullo @ Steam |
31-12-2009, 00:50 | #56 |
Senior Member
Iscritto dal: Sep 2009
Città: Nel mondo dei sogni
Messaggi: 4125
|
Eppure all'epoca anche se non c'erano vivevano benissimo, e hanno creato molto. In ogni caso la questione non è il cosa c'era e il cosa non c'era, ma quanto il fatto che c'era poca scelta e se volevi imparare sbattevi la testa fin quando non svenivi. E si imparava *veramente*. Al giorno d'oggi tutto il contrario. Risultato? Settore inflazionato come nessun altro.
|
31-12-2009, 07:33 | #57 | ||||||||
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26107
|
Quote:
Dall'altra è stato un incubo dover lavorare così a basso livello, quando oggi per risolvere problemi ci sono a disposizione strumenti di altissimo livello che in pochissimo tempo ti permettono di arrivare alla soluzione. Da programmatore l'unico "comandamento" a cui debbo obbedire è: risolvere i problemi col miglior compromesso possibile. E al momento sono anni e anni che non scrivo codice assembly et similia (al più mi faccio del male la notte lavorando in C ) e mi diverto pure (in modo diverso: astraendo e trovando soluzioni anche "belle" a vedersi). Quote:
Quote:
Comunque qui è più che altro una questione filosofica. C'è chi preferisce il paradigma "tutto come gerarchia di cartelle e file", e chi preferisce soluzioni specializzate. Quote:
Quote:
Quote:
Quote:
Quote:
L'importante, come dici tu, è affrontare le cose con passione.
__________________
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 |
||||||||
31-12-2009, 08:37 | #58 | |
Senior Member
Iscritto dal: Jul 2009
Messaggi: 1160
|
Quote:
Se proprio vuoi far qualcosa a basso livello sugli OS, guarda qualche progetto innovativo di università. Ad esempio il MIT: http://pdos.csail.mit.edu/ Non che io sia un grande fan del mondo accademico, però vorresti mettere la soddisfazione di ficcare 1000 righe del tuo codice in un progetto uscito dal MIT e finanziato dalla Darpa? Anche se poi 1 progetto sul 10 del MIT avrà una reale applicazione pratica, ma il tuo CV diventerebbe molto più interessante...
__________________
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 |
|
31-12-2009, 09:28 | #59 |
Senior Member
Iscritto dal: Jun 2005
Messaggi: 365
|
Leggo di obiettivi importanti, ma si sta parlando di un kernel che non ha ancora uno scheduler nè un'astrazione di processo o di file!
Come ho già detto all'inizio io se contribuisco con qualche linea lo faccio perchè mi diverto, senza nessuna pretesa... preferisco giocare così che con la playstation. Poi il mio codice è GPL, usatelo o buttatelo a vostra discrezione |
31-12-2009, 11:13 | #60 | ||||||||
Senior Member
Iscritto dal: Sep 2009
Messaggi: 638
|
Scorrere più in basso per leggere gli aggiornamenti
Quote:
Quote:
Qua in classe mia siamo in 2 ad essere appassionati (io e l'altro mio amico che sviluppa l'os) veramente, gli altri si lamentano perchè in sistemi studiamo l'assembly (e siamo in un istituto industriale!). C'è un mio compagno poi, promosso per miracolo penso, che non sa neanche che sistema operativo ha a casa! Forse pensavano che informatica volesse dire "impariamo ad usare Word ed Excel". Non dico che devono programmare in assembly, anche un linguaggio altissimo, metti python o altri, basta che sia data la possibilità. Cmq concordo con chi dice che è un bene avere gli strumenti moderni, io stesso non sarei in grado di usare Linux solo in interfaccia testo... Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
Non immagini quanto è difficile interfacciarsi all' hardware di un pc, tutti componenti con interfacce astruse e completamente diverse, vecchie di 20 anni e più (il chip DMA originale era molto più vecchio ed era studiato per l' 8080!!!) Ho dato una veloce occhiata a come interfacciarsi con le schede video VESA (il cui ultimo standard risale al '98, uuuu ), e bisogna o fare tutto in modalità reale con le Bios Extensions (VBE), o fare arzigogoli in modalità protetta per non dover usare la vm86. Scrivere un sistema operativo è facile, è interfacciarsi con questa cavolo di architettura che è impossibile!!! Per uno studente e la peggior cosa che possa esistere. Quindi, il prossimo progetto dopo il kernel sarà progettare una nuova architettura hardware, supersemplice e adatta per imparare a scrivere questo genere di applicazioni (ne riparleremo a tempo debito). Aggiornamenti Vedendo come si sono evolute le cose, ecco cosa ci serve per il kernel (in ordine di priorità): - Qualcuno che conosca bene la modalità protetta dal 386 e che sappia bene come impostare i vari segmenti ( che saranno cmq da 0 a 4gb ) settanto tutti i vari flag - Costruire una mmu un po' più perfezionata (forza Rikiji !) - Come caricare i file ELF (diciamo delle funzioni che permettano di caricare i diversi segmenti di cui è composto un programma e che permetta di individuare i simboli in modo da poter estrarre gli indirizzi delle funzioni contenute (necessarie pre gestire i moduli e librerie dinamiche) - Chiamate di sistema (o con gli int o con delle tabelle in cui ci sono gli indirizzi a funzione) - Semafori, lock e tutto quello che gli va dietro - Costruire uno scheduler - Costruire una semplice shell - Come programmare le schede video VESA (*) Mi sembra aver delineato abbastanza il percorso, sono accolti suggerimenti (*) Le schede video Vesa sono veramente delle brutte bestie, per questo lo facciamo alla fine, purtroppo dovremo accontentarci del 80x25 ancora per un po'. Oppure: Dopo essere stati caricati da grub ed essere in start.asm, tornare temporaneamente in modalità reale, abilitare una modalità grafica (p es 640x480) e poi tornare in protetta. Da li poi dobbiamo scrivere solo nel framebuffer che si trova ad 0xA0000 se non erro. |
||||||||
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 00:57.