PDA

View Full Version : [C] Programmare un Sistema Operativo


Pagine : 1 [2] 3

zulutown
02-03-2010, 10:18
Onestamente non sapevo che CentOS significasse questo.

eheh non si può sapere tutto :sofico:

Ryuzaki_Eru
02-03-2010, 10:25
eheh non si può sapere tutto :sofico:

Che poi diciamolo, chissene del nome :D

ndakota
02-03-2010, 12:49
Che poi diciamolo, chissene del nome :D

The most important thing in a programming language is the name. A language will not succeed without a good name. I have recently invented a very good name, and now I am looking for a suitable language. Donald Knuth

Magari lo stesso vale per i sistemi operativi :p

Ryuzaki_Eru
02-03-2010, 13:30
The most important thing in a programming language is the name. A language will not succeed without a good name. I have recently invented a very good name, and now I am looking for a suitable language. Donald Knuth

Magari lo stesso vale per i sistemi operativi :p


Leggende metropolitane :asd:

M4rk191
02-03-2010, 15:23
Io credo che se ComOS sta per Community Operative System è meglio cambiare nome :Prrr:

Z80Fan
02-03-2010, 15:39
qual è il link al tag 0.04 di svn
http://www.hwupgrade.it/forum/showthread.php?t=2112102
eccola.
Non ho tempo per queste cose. Sta sera che torno a casa ci guardo contento?

The most important thing in a programming language is the name. A language will not succeed without a good name. I have recently invented a very good name, and now I am looking for a suitable language. Donald Knuth
:asd:

Io credo che se ComOS sta per Community Operative System è meglio cambiare nome :Prrr:
Mannaggia a te!!

Z80Fan
02-03-2010, 16:44
qual è il link al tag 0.04 di svn
E poi, finchè non si sceglie il nome non posso creare un nuovo progetto su sourceforge.

M4rk191
02-03-2010, 17:12
Visto lo stato embrionale e la strada da fare, che ne dite di Utopia?

Sono stanco di vedere OS il cui nome finisce con OS.

Z80Fan
02-03-2010, 17:27
Visto lo stato embrionale e la strada da fare, che ne dite di Utopia?
Non sò, non mi convince...

Sono stanco di vedere OS il cui nome finisce con OS.
Anche io, anche io... :D

Z80Fan
02-03-2010, 17:40
Penso che anche questi abbiano avuto problemi a cercare un nome adatto :D
https://sourceforge.net/projects/osamos/
https://sourceforge.net/projects/yourass/
:asd:

Mantis-89
02-03-2010, 19:07
Visto che il sistema operativo è tuo dev'essere qualcosa che rispecchi i tuoi gusti, oppure che rispecchi la natura del progetto stesso.
Ti piace qualche spece di animale o insetto?
Sei affezzionato a qualche processore o altro OS in particolare? Prova a cercare qual'era il suo nome in codice..

Per esempio a me piacciono le mantidi religiose (ma c'è gia l'username :D ), e i gechi, quindi direi Geko (o GekOS :Prrr: ), oppure Sharptooth o ClawHammer (K6-III e Athlon 64)...

Z80Fan
02-03-2010, 19:22
Visto che il sistema operativo è tuo dev'essere qualcosa che rispecchi i tuoi gusti, oppure che rispecchi la natura del progetto stesso.
Ti piace qualche spece di animale o insetto?
Sei affezzionato a qualche processore o altro OS in particolare? Prova a cercare qual'era il suo nome in codice..

Per esempio a me piacciono le mantidi religiose (ma c'è gia l'username :D ), e i gechi, quindi direi Geko (o GekOS :Prrr: ), oppure Sharptooth o ClawHammer (K6-III e Athlon 64)...

Mmmh, come processore direi lo Z80 (si era capito? ;) ) ma è un po' corto per farci un nome (anche Zilog).
Dicendo che il mio computer preferito è lo Zx Spectrum e mi piace la musica dei Megadeth e Metallica, opterei per Megatallica (o Metaldeth) SpectriX (dove la X stà per eXtreme :cool: ), oppure Spectros. :sofico:

PS: da notare che se uniamo le lettere maiuscole del Megatallica SpectriX viene fuori MSX, standard di computer giapponese degli anni '80 :) Si nota la mia passione per il retrocomputing? :D

cdimauro
02-03-2010, 19:37
ZionOS

M4rk191
02-03-2010, 19:37
Mmmh, come processore direi lo Z80 (si era capito? ;) ) ma è un po' corto per farci un nome (anche Zilog).
Dicendo che il mio computer preferito è lo Zx Spectrum e mi piace la musica dei Megadeth e Metallica, opterei per Megatallica (o Metaldeth) SpectriX (dove la X stà per eXtreme :cool: ), oppure Spectros. :sofico:

PS: da notare che se uniamo le lettere maiuscole del Megatallica SpectriX viene fuori MSX, standard di computer giapponese degli anni '80 :) Si nota la mia passione per il retrocomputing? :D

Troppo complicati come nomi. Secondo me è meglio cercare una parola nonsense ma semplice da ricordare e con un suono gradevole. Google è l'esempio perfetto, non significa niente e rimane stampato in testa; restando in tema di SE anche bing è un nome seplice da ricordare. Secondo me è questa la strada da seguire.

Z80Fan
02-03-2010, 19:42
Troppo complicati come nomi. Secondo me è meglio cercare una parola nonsense ma semplice da ricordare e con un suono gradevole. Google è l'esempio perfetto, non significa niente e rimane stampato in testa; restando in tema di SE anche bing è un nome seplice da ricordare. Secondo me è questa la strada da seguire.

Anche questo è vero. Anche Linux e Gnu sono abbastanza semplici.

(Pensa che mi ero messo a disegnare il logo per Spectrix :D)

wingman87
02-03-2010, 19:50
A me Spectrix piace, però in effetti è un po' troppo complicato

Z80Fan
02-03-2010, 19:52
A me Spectrix piace, però in effetti è un po' troppo complicato

Già. lo "ctr" blocca la fluidità della pronuncia

Z80Fan
02-03-2010, 20:03
A parte il nome, cosa ne pensate di questo font?
http://z80fan.altervista.org/spectrix_logo.png
link (http://z80fan.altervista.org/spectrix_logo.png)

(lo so, le prime lettere sono troppo spesse e la 'e' è obrobriosa )

M4rk191
02-03-2010, 21:09
Io non vedo nulla. A parte questo, non credi che sia presto per pensare al logo? :D

CertainDeath
02-03-2010, 21:14
Z80 non si vede nulla :D

wingman87
02-03-2010, 21:53
Fate click col destro sul link, copiate l'indirizzo e incollatelo nella barra degli indirizzi. Così funziona.

Edit: dimenticavo... carino il font

Mattyfog
02-03-2010, 22:21
zilog è bello :)
scusate ma oltre al c si può usare anche il c++ per creare un os? o forse tutti i linguaggi possono essere usati per creare os ma solo alcuni sono adatti a questo scopo?

DanieleC88
02-03-2010, 22:41
zilog è bello :)
scusate ma oltre al c si può usare anche il c++ per creare un os? o forse tutti i linguaggi possono essere usati per creare os ma solo alcuni sono adatti a questo scopo?

Certo che si può usare anche il C++ (con qualche accorgimento). A livello teorico, andrebbe bene qualsiasi linguaggio.

Kralizek
02-03-2010, 22:47
A livello teorico, andrebbe bene qualsiasi linguaggio.

ocio che a quest'ora, se ti legge, cidimauro si fa una sega a quattro mani :P

cdimauro
02-03-2010, 22:56
:rotfl: Apprezzo lo stesso, anche con due sole mani. :sbav:

DanieleC88
02-03-2010, 23:11
ocio che a quest'ora, se ti legge, cidimauro si fa una sega a quattro mani :P

Scopriamo ora che cdimauro è più o meno così:

http://upload.wikimedia.org/wikipedia/en/0/0b/Meshuggah_-_obZen.jpg

:D

EDIT: suppongo però con un po' meno sangue.

Mendocino89
03-03-2010, 10:35
Già. lo "ctr" blocca la fluidità della pronuncia

Per quanto riguarda il nome sono dell'idea che deve essere qualcosa di molto semplice da memorizzare, ma anche molto difficile da storpiare.
Ad esempio fulminerei con gli occhi quelli che chiamano Ubuntu -> Ubunto.....

SpectriX suona molto bene, ma credo che quella X finale sia un po scontata...
Io continuerei a pensare a qualche alias di cpu, magari ne esce qualcosa di carino.

Per quanto riguarda lo Sharptooth sono daccordissimo...piace anche a me ! Ma Mendocino in quel periodo era il re !! :Prrr:

Certo che MendOS non si può sentire !!!:D


P.S.

Se ci pensi un attimo anche la Microsoft stessa adotta un doppio sistema di nominazione dei suoi OS.
Ad esempio XP è Whistler o Win 98 è Memphis.

Con ciò intendo che non necessariamente il nome che devi dare all'OS deve essre quello definitivo, sarebbe impensabile.
A mio avviso conviene trovare prima un nome di sviluppo.

fero86
03-03-2010, 12:09
@Daniele, nessuno ha la nostra abilitá nello scegliere i nomi di sistemi operativi :asd:

PS: mhauahuahauaha, dove piffero hai trovato quell'immagineh!! :rotfl:

cdimauro
03-03-2010, 13:09
Me lo sono chiesto anch'io, e non sono riuscito a trovare risposte, tranne una: i programmatori non sono persone normali. :asd:

Tommo
03-03-2010, 14:01
Mah io invece odio gli os con nomi che vogliono a tutti i costi sembrare fighi, o tecnici, o hardcore etc...
quindi devo dire che scarterei un pò tutti quelli proposti :D

Il nome sicuramente deve venire dalla novità che introduci, da quello che distingue il tuo OS dagli altri... qualcosa che lo descriva insomma ma sia anche sentibile fuori di ingegneria informatica :asd:

Quindi sono d'accordo con Mendocino89, intanto dagli un nome Work In Progress nerdazzo quanto ti pare, poi quando (se) l'OS avrà trovato la sua strada gli dai un nome migliore :asd:

zulutown
03-03-2010, 14:29
usare un nome italiano?
magari di città? di importante artista/scienziato italiano ecc?

Mattyfog
03-03-2010, 14:42
io voto sempre per zilog...
comunque cosa hai studiato per poter arrivare a scrivere tutto ciò?
beh ovviamente il linguaggio e poi?

WarDuck
03-03-2010, 14:51
ALF

http://push.ca/cfs-file.ashx/__key/CommunityServer.Components.UserFiles/00.00.00.21.76/ALF_5B00_1_5D00_.jpg

Another Linux Fork


:D

cdimauro
03-03-2010, 15:35
:rotfl: :rotfl: :rotfl:

Però non hai tutti i torti. :stordita:

DanieleC88
03-03-2010, 16:44
PS: mhauahuahauaha, dove piffero hai trovato quell'immagineh!! :rotfl:
È la copertina di un disco... E il tizio ne ha molteplici di braccia, perciò m'era venuta in mente. :p

M4rk191
03-03-2010, 19:44
ALF

Another Linux Fork


:D

Sei un genio! Questo è il tipico nome da progetto informatico, come Wine Is Not Emulator, Yet Another Compiler Compiler, GNU'S Not Unix. Anche se HURD imho detiene il primato :D

cdimauro
04-03-2010, 05:14
Di "longevità"? :fiufiu: :asd:

banryu79
04-03-2010, 09:06
E un nome ironico, no?
Che so, una roba tipo: CrashOS... LazyOS... ChaOS... :D

ndakota
04-03-2010, 12:51
Per continuare il filone di nomi proposti da banryu dico sOS :sofico:

Ryuzaki_Eru
04-03-2010, 18:02
Oppure SexOS :D

M4rk191
04-03-2010, 19:38
Di "longevità"? :fiufiu: :asd:

Pensandoci bene, Linux ha rovinato tutto. Il progetto GNU ha l'obiettivo di creare un clone UNIX libero e sono stati sviluppati compilatori, generatori di parses, lexer, DE, applicazioni di videoscrittura, di fotoritocco, multimediali etc.
ma manca ancora il kernel :asd:

fero86
04-03-2010, 23:42
ma manca ancora il kernel :asd: infatti, persino ReactOS sta essendo piu veloce, che é tutto dire... :stordita:

cdimauro
05-03-2010, 07:28
Pensandoci bene, Linux ha rovinato tutto. Il progetto GNU ha l'obiettivo di creare un clone UNIX libero e sono stati sviluppati compilatori, generatori di parses, lexer, DE, applicazioni di videoscrittura, di fotoritocco, multimediali etc.
ma manca ancora il kernel :asd:
Un dettaglio da nulla, insomma. :rotfl:

Comunque Linux non è abbastanza "libero"? :fagiano:

M4rk191
05-03-2010, 13:50
Un dettaglio da nulla, insomma. :rotfl:

Comunque Linux non è abbastanza "libero"? :fagiano:

E' libero ma credo integri i binari di qualche driver. Non so se i driver NVIDIA sono integrati nel kernel, ma dubito che il kernel non contenga codice proprietario.

cionci
05-03-2010, 13:53
E' libero ma credo integri i binari di qualche driver. Non so se i driver NVIDIA sono integrati nel kernel, ma dubito che il kernel non contenga codice proprietario.
No, non contiene codice proprietario ;)
I driver Nvidia e Ati sono distribuiti in forma mista sorgente e binario, di fatto viene compilata solamente l'interfaccia fra kernel e parte binaria.

B|4KWH|T3
05-03-2010, 15:05
Di "longevità"? :fiufiu: :asd:

Certo che la FSF tira fuori tutta la tua cattiveria :D

M4rk191
05-03-2010, 16:54
No, non contiene codice proprietario ;)
I driver Nvidia e Ati sono distribuiti in forma mista sorgente e binario, di fatto viene compilata solamente l'interfaccia fra kernel e parte binaria.
Spero che il progetto Nooveau (reimplementazione dei driver NVIDIA) abbia successo, così forse potremo avere driver liberi e non "preoccuparci" più di quelli binari :D
Certo che la FSF tira fuori tutta la tua cattiveria :D

Io trovo invece che i vari progetti, nati da progetto GNU, siano molto importanti, se non fondamentali per il movimento open source. Basta pensare a binutils, coreutils, gcc etc. che sono integrati in ogni sistema *NIX.

zulutown
05-03-2010, 17:16
cmq manca ancora il repo svn del progetto

Mantis-89
05-03-2010, 18:52
cmq manca ancora il repo svn del progetto

perchè prima dobbiamo decidere il nome..! XD

ndakota
05-03-2010, 20:33
Ormai questo progetto sta a cuore a tutti. Io sono al primo anno di informatica. L'anno prossimo avrò il corso di sistemi operativi. Forse, e dico forse, allora potrò dire qualcosa :D

cdimauro
06-03-2010, 05:42
No, non contiene codice proprietario ;)
I driver Nvidia e Ati sono distribuiti in forma mista sorgente e binario, di fatto viene compilata solamente l'interfaccia fra kernel e parte binaria.
Esattamente. Quindi non c'è alcun motivo di buttare tempo e risorse in un progetto che, è inutile girarci attorno, è un fallimento. :fagiano:
Certo che la FSF tira fuori tutta la tua cattiveria :D
E' il fanatismo che mi dà fastidio e non sopporto. "Casualmente" la FSF è un covo di fanatici liberticidi, per cui se capita qualche randellata se la meritano (e non hai idea delle mazzate che le arrivano da sviluppatori open source come quelli di OpenBSD :asd:).
Spero che il progetto Nooveau (reimplementazione dei driver NVIDIA) abbia successo, così forse potremo avere driver liberi e non "preoccuparci" più di quelli binari :D
Perché, se usi i driver binari finisci così: http://www.youtube.com/watch?v=MRtWtX-njwc ? :stordita:

Non mi capacito di quanto spreco esista nel mondo open source, e questo è soltanto l'n-esimo esempio.

C'è nVidia che, le si può dire quello che si vuole, ma per Linux tira fuori driver di indubbia qualità, che sfruttano bene l'hardware fornendo ottime prestazioni.

Ma alla comunità open source questo non sta bene: se non sono "liberi" sono "il male". Bisogna farne a meno. Quindi reinventare la ruota riscrivendoli da capo soltanto con sorgenti "liberi".

Come se una GPU moderna fosse programmabile come il Motorola 6845 delle vecchie Hercules e VGA... :rolleyes:

Così fra una decina d'anni, se tutto va bene, i fanatici del software libero potranno avere i loro driver non affetti dal morbo pernicioso delle multinazionali "liberticide".

E nel frattempo tutti gli altri staranno usando GPU di classe DirectX 16, che sono 20 generazioni avanti (arriva una nuova generazione di chip circa ogni 6 mesi)...

Ma vogliamo mettere il piacere di usare una GPU vintage coi driver liberi? :O Per tutto il resto c'è MasterCard... :Perfido:
Io trovo invece che i vari progetti, nati da progetto GNU, siano molto importanti, se non fondamentali per il movimento open source. Basta pensare a binutils, coreutils, gcc etc. che sono integrati in ogni sistema *NIX.
GNU non ha portato nulla che non esistesse già. Di progetti dello stesso tipo e addirittura public domain ce n'erano una trentina d'anni fa.

Il suo indiscutibile merito è stato quello di aver formato una filosofia e un'ampia comunità che ci sta dietro.

DanieleC88
06-03-2010, 11:50
Ormai questo progetto sta a cuore a tutti. Io sono al primo anno di informatica. L'anno prossimo avrò il corso di sistemi operativi. Forse, e dico forse, allora potrò dire qualcosa :D

Comincia a studiare per i fatti tuoi: non so come affrontano sistemi operativi lì da te, ma di solito i primi corsi più che altro teorici, non ti insegneranno a programmare un kernel.

Z80Fan
06-03-2010, 16:47
Ragazzi durante la mia assenza avete scritto tantissima roba, ne sono felice :D
Ora sono appena tornato dalla settimana bianca, leggerò con calma tutti i vostri commenti e vi risponderò al più presto :)

mindwings
07-03-2010, 10:20
@cdimauro
Un giorno forse, un giorno dirai del bene del software libero, senza portare alla ribalta sempre gli aspetti che tu consideri negativi. Rendiamoci conto che molti dei progetti che a te non stanno a cuore sono portati avanti e sviluppati su base volontaria. Io utilizzo i driver proprietari Ati ma non biasimo il lavoro svolto da chi sviluppa driver completamente open, per il semplice motivo che mi forniscono un alternativa qualora ne avessi la necessita'.
Non sottovalutare l'opensource che si rivela un'ottima palestra per imparare tantissime cose, tra cui perche' no lo sviluppo di driver. Anche Z80Fan si sta divertendo a scrivere ed imparare molte cose sui Sistemi opertivi( dove per imparare l'unico modo efficace e' sporcarsi le mani... ) anche lui sta buttando tempo e risorse ? Se ti da' fastidio il fanatismo, non fomentarlo.

Z80Fan
07-03-2010, 10:26
Io non vedo nulla. A parte questo, non credi che sia presto per pensare al logo? :D
Forse un pochino... ;)
Z80 non si vede nulla :D
Fate click col destro sul link, copiate l'indirizzo e incollatelo nella barra degli indirizzi. Così funziona.
Altervista stà rompendo un po' le scatole... boh
zilog è bello :)
scusate ma oltre al c si può usare anche il c++ per creare un os? o forse tutti i linguaggi possono essere usati per creare os ma solo alcuni sono adatti a questo scopo?
Certo che si può usare anche il C++ (con qualche accorgimento). A livello teorico, andrebbe bene qualsiasi linguaggio.
Esatto. Teoricamente (e praticamente) si potrebbe fare anche in Basic. Bisogna solo che il linguaggio permetta di accedere direttamente all'hardware e di compilarlo in certi modi (poichè ovviamente ci sono alcune differenze tra un'immagine di un programma e di un os). Non deve usare librerie esterne e non deve avere bisogno di un sistema operativo sotto per usare le funzioni base. Puoi dare un'occhiata a questa pagina:
http://wiki.osdev.org/Category:Languages
Con ciò intendo che non necessariamente il nome che devi dare all'OS deve essre quello definitivo, sarebbe impensabile.
A mio avviso conviene trovare prima un nome di sviluppo.
Quindi sono d'accordo con Mendocino89, intanto dagli un nome Work In Progress nerdazzo quanto ti pare, poi quando (se) l'OS avrà trovato la sua strada gli dai un nome migliore :asd:
Un po' come SuperKernel adesso...
Mah io invece odio gli os con nomi che vogliono a tutti i costi sembrare fighi, o tecnici, o hardcore etc...
quindi devo dire che scarterei un pò tutti quelli proposti :D
Tutti i gusti son gusti :D
io voto sempre per zilog...
comunque cosa hai studiato per poter arrivare a scrivere tutto ciò?
beh ovviamente il linguaggio e poi?
Bah, diciamo che devi conoscere molto bene come funziona un computer a bassissimo livello (e non dico l'architettura IBM, in generale), perchè così riesci a creare codice migliore e che la macchina "digerisce" bene. Sinceramente non sò dirti da dove ho iniziato, probabilmente la passione per il basso livello la ho sviluppata interessandomi di retrocomputing, poichè si trovano tantissimi schemi elettrici e spiegazioni, e sopratutto alcune architetture sono veramente eleganti (come lo ZX Spectrum, a parte il suo sistema video :D).
E poi devi almeno sapere cos'è un sistema operativo :D kernel, device drivers, moduli, processi, mmu ecc... su wikipedia trovi moltissima roba, e le informazioni si trovano accurate. Poi una veloce ricerca su internet ti rivela milioni di pagine, quindi non preoccuparti di rimanere senza documentazione :D
ALF
Another Linux Fork
:D
Ouch! :D (anche se non è proprio un fork a un progetto riscritto da capo ;))
Sei un genio! Questo è il tipico nome da progetto informatico, come Wine Is Not Emulator, Yet Another Compiler Compiler, GNU'S Not Unix. Anche se HURD imho detiene il primato :D
Infatti anche io pensavo a qualche acronimo del genere
Ormai questo progetto sta a cuore a tutti. Io sono al primo anno di informatica. L'anno prossimo avrò il corso di sistemi operativi. Forse, e dico forse, allora potrò dire qualcosa :D
Grande! Cmq non serve che aspetti, puoi cominciare subito a commentare ;)
C'è nVidia che, le si può dire quello che si vuole, ma per Linux tira fuori driver di indubbia qualità, che sfruttano bene l'hardware fornendo ottime prestazioni.

Ma alla comunità open source questo non sta bene: se non sono "liberi" sono "il male". Bisogna farne a meno. Quindi reinventare la ruota riscrivendoli da capo soltanto con sorgenti "liberi".
Ho tralasciato intenzionalmente i vari messaggi sulla libertà di Linux, cmq lascio un ultimo appunto sul commento di cdimauro per chiudere il semi-OT (anche perchè di sistemi operativi stiamo parlando e quindi non è un OT totale):
La qualità dei driver nVidia per linux è molto alta (parlo da possessore di GTX275), ed anche io abolisco il fanatismo di libertà alla Stallman ( e i vari aneddoti su di lui :D); cmq imho avere driver *molto* liberi (si possono anche tenere l'ultimissimo strato di accesso all'hardware) può aiutare sia noi che loro: se un driver è open source, può essere modificato per integrarsi meglio con eventuali grosse modifiche del kernel in tempi più brevi di quanto non possa fare nVidia (visto anche che ogni distro ha modifiche personalizzate) (esempio: certe volte mi si blocca temporaneamente il video, e lo schermo và come fuori sincronia, riesco a sbloccarlo solo andando in un terminale virtuale e poi ritornando, e a quel punto ho lo le finestre che erano aperte "sporche" come se le texture fossero state corrotte), e poi nVidia potrebbe avere una elevata quantità di persone che possono fare da beta-tester e debuggers praticamente gratis, che magari gli risolvono anche qualche bug su Windows se il codice in mezzo è uguale.
fine semi-OT
---
Cmq mentre ero via ho pensato a chiamare il kernel e il successivo os in 2 modi diversi, per il kernel ho pensato Brick, che in inglese significa "Mattone" e può riferirsi alla modularità del sistema, formato da tanti "mattoncini" quali sono i moduli, e magari si riesce a trovarci anche un bel acronimo ;)

Cmq provo a creare un progetto in SourceForge e vedo se si può anche cambiarli nome in futuro, per la felicità di Zulutown :D

khelidan1980
07-03-2010, 11:01
La qualità dei driver nVidia per linux è molto alta (parlo da possessore di GTX275), ed anche io abolisco il fanatismo di libertà alla Stallman ( e i vari aneddoti su di lui :D); cmq imho avere driver *molto* liberi (si possono anche tenere l'ultimissimo strato di accesso all'hardware) può aiutare sia noi che loro: se un driver è open source, può essere modificato per integrarsi meglio con eventuali grosse modifiche del kernel in tempi più brevi di quanto non possa fare nVidia (visto anche che ogni distro ha modifiche personalizzate) (esempio: certe volte mi si blocca temporaneamente il video, e lo schermo và come fuori sincronia, riesco a sbloccarlo solo andando in un terminale virtuale e poi ritornando, e a quel punto ho lo le finestre che erano aperte "sporche" come se le texture fossero state corrotte), e poi nVidia potrebbe avere una elevata quantità di persone che possono fare da beta-tester e debuggers praticamente gratis, che magari gli risolvono anche qualche bug su Windows se il codice in mezzo è uguale.
fine semi-OT

No mi spiace ma questo problema è imho imputabile solamente al metodo di sviluppo del kernel, se ci fossero api/abi stabili non ci sarebbero problemi di adattamento, o quantomeno non sarebbe un caos come lo è ora

cionci
07-03-2010, 11:05
se ci fossero api/abi stabili non ci sarebbero problemi di adattamento, o quantomeno non sarebbe un caos come lo è ora
Su questo non posso che darti ragione. Dovrebbero definire delle interfacce fisse per ogni tipo di periferica e cambiarle solo nel caso di major release.

Z80Fan
07-03-2010, 11:05
No mi spiace ma questo problema è imho imputabile solamente al metodo di sviluppo del kernel, se ci fossero api/abi stabili non ci sarebbero problemi di adattamento, o quantomeno non sarebbe un caos come lo è ora
Ok, cmq la seconda parte (riferita al debug) è ancora valida.

Su questo non posso che darti ragione. Dovrebbero definire delle interfacce fisse per ogni tipo di periferica e cambiarle solo nel caso di major release.
Vero. Forse una delle cause perchè ci sono poche case che creano i driver per Linux.

Z80Fan
07-03-2010, 14:49
Mi servirebbe che qualcuno dotato di sistema Linux mi compilasse i sorgenti di grub 0.97, e mi ritornasse gli eseguibili:
ftp://alpha.gnu.org/gnu/grub/grub-0.97.tar.gz
Questo perchè quando dò il ./configure mi dice che il mio objcopy (contenuto nei binutils) non supporta gli indirizzi assoluti, e mi dice di aggiornarlo, anche se ho la versione 2.20 e quella minima richiesta è la 2.10.
Se qualcuno ha la possibilità di farlo lo prego di avvisarmi, altrimenti dovrò provare a ricompilarmi anche objcopy.

Mendocino89
07-03-2010, 15:28
Mi servirebbe che qualcuno dotato di sistema Linux mi compilasse i sorgenti di grub 0.97, e mi ritornasse gli eseguibili:
ftp://alpha.gnu.org/gnu/grub/grub-0.97.tar.gz
Questo perchè quando dò il ./configure mi dice che il mio objcopy (contenuto nei binutils) non supporta gli indirizzi assoluti, e mi dice di aggiornarlo, anche se ho la versione 2.20 e quella minima richiesta è la 2.10.
Se qualcuno ha la possibilità di farlo lo prego di avvisarmi, altrimenti dovrò provare a ricompilarmi anche objcopy.

l'ho compilato sotto debian...che fo ??:D

Z80Fan
07-03-2010, 16:01
l'ho compilato sotto debian...che fo ??:D
Veramente non so di preciso ;) Dovresti trovare nella cartella stage1 il file stage1 di esattamente 512 byte, e in stage2 diversi file eseguibili con nomi x_stage1_5 o x_stage2. Comprimili e inviameli al mio indirizzo email.

Mendocino89
07-03-2010, 16:03
Veramente non so di preciso ;) Dovresti trovare nella cartella stage1 il file stage1 di esattamente 512 byte, e in stage2 diversi file eseguibili con nomi x_stage1_5 o x_stage2. Comprimili e inviameli al mio indirizzo email.

Si...trovati
il primo file è appunto di 512byte....che dici se li uploado nel mio profilo mediafire e ti linko il tutto ??

Z80Fan
07-03-2010, 16:05
Si...trovati
il primo file è appunto di 512byte....che dici se li uploado nel mio profilo mediafire e ti linko il tutto ??
Certamente, così non intasiamo la casella di posta.

Mendocino89
07-03-2010, 16:18
Certamente, così non intasiamo la casella di posta.

http://www.mediafire.com/?fjciizxuzdd

ho compresso tutta la dir grub-0.97...:D

Z80Fan
07-03-2010, 17:40
http://www.mediafire.com/?fjciizxuzdd
ho compresso tutta la dir grub-0.97...:D

Grazie, cmq ho sbagliato io, prima di compilare i sorgenti bisognava anche applicare questa patch :doh: :
http://www.smksoftware.co.za/cgi-bin/cgit/vbe_grub.git/tree/vbe_grub-0.97.patch
Potresti riprovare please?

Mendocino89
07-03-2010, 18:07
Grazie, cmq ho sbagliato io, prima di compilare i sorgenti bisognava anche applicare questa patch :doh: :
http://www.smksoftware.co.za/cgi-bin/cgit/vbe_grub.git/tree/vbe_grub-0.97.patch
Potresti riprovare please?

Aspetta qualche minuto...

Mendocino89
07-03-2010, 18:14
http://www.mediafire.com/?jzojwnm2mqw

Buon divertimento :D

Z80Fan
07-03-2010, 18:18
http://www.mediafire.com/?jzojwnm2mqw

Buon divertimento :D
Grazie, ora provo :)
Giusto per curiosità, come si invoca "patch" ?

Mendocino89
07-03-2010, 18:31
Grazie, ora provo :)
Giusto per curiosità, come si invoca "patch" ?

se ad esempio hai questa struttura:

/home/usr/Desktop/grub-0.97

piazzi il file patch sul desktop, avvii il terminale e da desktop dai il comando:

patch -p0 <nome.patch


Il programma controlla il contenuto della patch, si posiziona nella cartella contenente i sorgenti(grub-0.97) e li modifica.
dopodichè compili semplicemente.

Z80Fan
07-03-2010, 18:33
se ad esempio hai questa struttura:

/home/usr/Desktop/grub-0.97

piazzi il file patch sul desktop, avvii il terminale e da desktop dai il comando:

patch -p0 <nome.patch

dopodichè compili semplicemente.

Molto bene.
Cmq i tuoi binari funzionano benissimo, ora devo solo riconfigurarlo, grazie mille!

Mendocino89
07-03-2010, 18:35
Molto bene.
Cmq i tuoi binari funzionano benissimo, ora devo solo riconfigurarlo, grazie mille!

Ringrazia debian !
Il problema con i binutils è abbastanza diffuso, è un bug....

EDIT: funge sia su Debian che su Mandriva.

cdimauro
08-03-2010, 08:41
@cdimauro
Un giorno forse, un giorno dirai del bene del software libero, senza portare alla ribalta sempre gli aspetti che tu consideri negativi.
Guarda che io contribuisco pure al software open source (non necessariamente "libero"; mi scuso se ho pasticciato coi termini prima, ma spero che il concetto fosse chiaro).

Semplicemente mi danno fastidio il fanatismo, la chiusura mentale e lo spreco di risorse che vi gravita attorno.
Rendiamoci conto che molti dei progetti che a te non stanno a cuore sono portati avanti e sviluppati su base volontaria.
Questo non giustifica gli errori di cui sopra.
Io utilizzo i driver proprietari Ati ma non biasimo il lavoro svolto da chi sviluppa driver completamente open, per il semplice motivo che mi forniscono un alternativa qualora ne avessi la necessita'.
OK, anche se non mi viene in mente nessun caso per cui si potrebbero usare.
Non sottovalutare l'opensource che si rivela un'ottima palestra per imparare tantissime cose, tra cui perche' no lo sviluppo di driver.
Bisogna anche vedere con quali progetti "si fa palestra".

Esempio: ti piacciono i compilatori, vuoi vedere e imparare come funzionano, ti rivolgi a GCC & co. "perché posso guardare i sorgenti", e dopo giorni di sbattimenti capisci che è meglio prendere un bel libro sull'argomento e sperimentare per i fatti tuoi...
Anche Z80Fan si sta divertendo a scrivere ed imparare molte cose sui Sistemi opertivi( dove per imparare l'unico modo efficace e' sporcarsi le mani... ) anche lui sta buttando tempo e risorse ?
Mi sono già espresso sull'argomento. Lo ritengo uno spreco nella misura in cui si rifanno le stesse cose.

Un altro clone di Linux per me rimane tempo perso, tranne per imparare appunto.

Discorso diverso se finalmente si comincia a sperimentare su cose nuove, come dicevo un po' di messaggi fa, ma è difficile perché la mentalità che circola nell'ambiente è che i s.o. devono necessariamente derivare da Unix (o Posix, in generale).
Se ti da' fastidio il fanatismo, non fomentarlo.
Certo che mi dà fastidio, e lo farei sparire. Di certo non aiuta calare la testa e far finta di niente.
Ho tralasciato intenzionalmente i vari messaggi sulla libertà di Linux, cmq lascio un ultimo appunto sul commento di cdimauro per chiudere il semi-OT (anche perchè di sistemi operativi stiamo parlando e quindi non è un OT totale):
La qualità dei driver nVidia per linux è molto alta (parlo da possessore di GTX275), ed anche io abolisco il fanatismo di libertà alla Stallman ( e i vari aneddoti su di lui :D); cmq imho avere driver *molto* liberi (si possono anche tenere l'ultimissimo strato di accesso all'hardware) può aiutare sia noi che loro: se un driver è open source, può essere modificato per integrarsi meglio con eventuali grosse modifiche del kernel in tempi più brevi di quanto non possa fare nVidia (visto anche che ogni distro ha modifiche personalizzate) (esempio: certe volte mi si blocca temporaneamente il video, e lo schermo và come fuori sincronia, riesco a sbloccarlo solo andando in un terminale virtuale e poi ritornando, e a quel punto ho lo le finestre che erano aperte "sporche" come se le texture fossero state corrotte), e poi nVidia potrebbe avere una elevata quantità di persone che possono fare da beta-tester e debuggers praticamente gratis, che magari gli risolvono anche qualche bug su Windows se il codice in mezzo è uguale.
fine semi-OT
Il problema, come già detto prima, è che le GPU moderne sono mostri estremamente complessi. Le persone più titolate a realizzare driver sono gli ingegneri di nVidia, e questo anche a fronte di consistenti modifiche del kernel. Idem per il debug.

Di questo te ne accorgerai tu stesso quando dovrai realizzare di driver per il tuo s.o.. Per quanto detto finora, l'ideale dovrebbe essere rappresentato da una GPU di cui si abbia a disposizione tutta la documentazione necessaria.

Qui l'esempio di AMD/Ati è piuttosto eloquente: pur avendo rilasciato tutto ciò già da parecchio tempo, mettendo a disposizione alcuni suoi dipendenti e altri di Novell, la qualità dei driver open source per le Radeon è ancora anni luce indietro rispetto a quelli closed. E chissà come sarebbero ridotti senza l'aiuto fornito, appunto.

Nella vita bisogna imparare a essere meno idealisti e più pragmatici.
Cmq mentre ero via ho pensato a chiamare il kernel e il successivo os in 2 modi diversi, per il kernel ho pensato Brick, che in inglese significa "Mattone" e può riferirsi alla modularità del sistema, formato da tanti "mattoncini" quali sono i moduli, e magari si riesce a trovarci anche un bel acronimo ;)
Occhio che "mattone" può anche avere un'accezione negativa. :D
No mi spiace ma questo problema è imho imputabile solamente al metodo di sviluppo del kernel, se ci fossero api/abi stabili non ci sarebbero problemi di adattamento, o quantomeno non sarebbe un caos come lo è ora
Questo è un altro grosso problema. Grazie di averlo ricordato.
Ok, cmq la seconda parte (riferita al debug) è ancora valida.
Per me no, perché ci vuole gente qualificata per farlo.
Vero. Forse una delle cause perchè ci sono poche case che creano i driver per Linux.
Mi sembra anche normale. Immagina un produttore che debba tenere conto di tutto ciò: dovrebbe impiegare non poche risorse per realizzare driver di qualità, e per un s.o. avente avente meno dell'1% del mercato non è certo conveniente.

Rikiji
08-03-2010, 09:39
Come procede? E' un po' che non passo di qui :D

fero86
08-03-2010, 10:05
quotone da parte mia per cdimauro :O

in particolare su questo:

Un altro clone di Linux per me rimane tempo perso, tranne per imparare appunto.

Discorso diverso se finalmente si comincia a sperimentare su cose nuove, come dicevo un po' di messaggi fa, ma è difficile perché la mentalità che circola nell'ambiente è che i s.o. devono necessariamente derivare da Unix (o Posix, in generale). sono d'accordissimo, é una cosa che fa alquanto incazzare anche me (sfogo represso risalente ai tempi in cui diedi sistemi operativi 1 e laboratorio). non si capisce perché poi debba esserci questa maledetta inerzia tecnologica. perché non guardare al futuro, agli ambienti managed che lavorano in modalitá supervisor (o "ring 0" o "kernel mode" che dir si voglia) ?
Microsoft sta facendo ricerca con Singularity e una prossima versione di Windows potrebbe essere interamente managed, perché non avviare un progetto GPL del genere? Singularity é open source ma non credo che sia propriamente FOSS secondo la definizione GNU.

cdimauro
08-03-2010, 12:51
Le "definizioni" di GNU, FSF & compagnia bella le lascerei perdere, visto che hanno ridefinito perfino il concetto di libertà (sei "libero" solo nella misura in cui sei costretto a fornire i sorgenti delle modifiche che hai fatto a un progetto GPL :ciapet:). :D

Singularity è interessante, come pure il prossimo kernel "minimale" a cui sta lavorando Russinovich.

P.S. All'esame di sistemi operativi (credo fosse il '97, se non ricordo male) ho portato una tesina su AmigaOS. :cool:

DanieleC88
08-03-2010, 14:30
Singularity é open source ma non credo che sia propriamente FOSS secondo la definizione GNU.

Non sto intervenendo negli ultimi post perché già in passato con utenti come cdimauro ho scambiato le mie opinioni riguardanti il software libero e ciò che vi gravita intorno. Però negli ultimi interventi vedo che state facendo un bel minestrone misto di open source/free software, cose che sono a volte complementari, ma non per questo necessariamente coincidenti.

Un software è "open source" secondo la definizione dell'OSI se rispetta questi punti: http://www.opensource.org/docs/osd

Un software è invece "libero" secondo la definizione della FSF se rispetta questi punti: http://www.gnu.org/philosophy/free-sw.html

È facile vedere che la relazione che collega i due insiemi non gode di proprietà transitiva. :p

Detto questo, Singularity è open source. La sua licenza (http://singularity.codeplex.com/license) sembra rispettare i punti stabiliti dall'OSI - mi mette solo un po' in dubbio il punto due: «2. That if any of the Software is in binary format, you will not attempt to modify such portions of the Software, or to reverse engineer or decompile them [...]». Non è però software libero, e nessuno gli chiede di esserlo.

E continuo a non capire le critiche alla natura "virale" della GPL: se non vi piace, basta non usarla. :D

M4rk191
08-03-2010, 15:46
Discorso diverso se finalmente si comincia a sperimentare su cose nuove, come dicevo un po' di messaggi fa, ma è difficile perché la mentalità che circola nell'ambiente è che i s.o. devono necessariamente derivare da Unix (o Posix, in generale).

Io credo invece, che scrivere un OS senza partire da una base, sarebbe ancora più inutile, per due motivi:

1-Senza una base da cui partire, sarebbe difficile portare avanti un progetto, soprattutto considerando quanto è stato necessario per realizzare i moderni cloni open source di UNIX.

2-Linux che in ambiente desktop credo sia il clone UNIX più conosciuto, è (in confronto ad altri OS) poco diffuso. Un OS completamente nuovo, sarebbe difficile da pubblicizzare, mentre un fork di Linux o un "clone from scratch" avrebbe un impatto diverso. Quello che intendo dire è che se Linux fatica a diffondersi, che speranze può avere un OS di nuova concezione?
L'OS di Z80Fan viene scritto per fini didattici e non per conquistare il mercato, ma anche in questo caso, credo che risulterebbe difficile scrivere un OS da zero, senza averne un altro di riferimento.


Tornando completamente IT, il titolo del thread è "Programmare un SO" quindi presumo che oltre al kernel verranno in seguito scritti editor di testo, debugger e altre applicazioni di uso comune, giusto?

khelidan1980
08-03-2010, 16:09
Io credo invece, che scrivere un OS senza partire da una base, sarebbe ancora più inutile, per due motivi:

1-Senza una base da cui partire, sarebbe difficile portare avanti un progetto, soprattutto considerando quanto è stato necessario per realizzare i moderni cloni open source di UNIX.

2-Linux che in ambiente desktop credo sia il clone UNIX più conosciuto, è (in confronto ad altri OS) poco diffuso. Un OS completamente nuovo, sarebbe difficile da pubblicizzare, mentre un fork di Linux o un "clone from scratch" avrebbe un impatto diverso. Quello che intendo dire è che se Linux fatica a diffondersi, che speranze può avere un OS di nuova concezione?
L'OS di Z80Fan viene scritto per fini didattici e non per conquistare il mercato, ma anche in questo caso, credo che risulterebbe difficile scrivere un OS da zero, senza averne un altro di riferimento.


Tornando completamente IT, il titolo del thread è "Programmare un SO" quindi presumo che oltre al kernel verranno in seguito scritti editor di testo, debugger e altre applicazioni di uso comune, giusto?

se uno inzia a scrivere un so pensando alla diffusione di mercato meglio che lascia stare,mentre l'innovazione potrebbe essere la chiave giusta per imporsi, e sarebbe molto ma molto più stimolante lo sviluppo

Z80Fan
08-03-2010, 18:49
Mi sono già espresso sull'argomento. Lo ritengo uno spreco nella misura in cui si rifanno le stesse cose.
Un altro clone di Linux per me rimane tempo perso, tranne per imparare appunto.
Chiariamo: il progetto non vuole essere un kernel compatibile a livello binario con Linux, anzi, di Linux non c'è proprio niente, dato che non mi baso sui suoi sorgenti e non ho letto niente su come lavora internamente. Ho solo un'idea di massima su come è fatto (ad esempio che algoritmi usa, di schedulazione ecc...), quindi quello che verrà fuori sarà solo esternamente *simile* a Linux, giusto per facilitare eventuali porting di programmi e per riusare la eventuale conoscenza che qualcuno ha su Linux. Poi se metterò delle cose tipiche di Linux, sarà perchè mi ci trovo bene con loro.

Discorso diverso se finalmente si comincia a sperimentare su cose nuove, come dicevo un po' di messaggi fa, ma è difficile perché la mentalità che circola nell'ambiente è che i s.o. devono necessariamente derivare da Unix (o Posix, in generale).
1-Senza una base da cui partire, sarebbe difficile portare avanti un progetto, soprattutto considerando quanto è stato necessario per realizzare i moderni cloni open source di UNIX.
Come dice M4rk191, uno completamente a secco di esperienza di sistemi operativi non può pretendere di innovare da subito, e poi i sistemi Unix-like hanno molta documentazione e moltissimo software disponibile, questo può facilitare successivamente quando dallo sviluppo del kernel passeremo al sistema operativo (magari riusciamo a portare la shell bash, prima di scrivere la nostra innovativa versione)

Occhio che "mattone" può anche avere un'accezione negativa. :D
Ouch! :D

Come procede? E' un po' che non passo di qui :D
Abbastanza bene, spero che tu abbia dato un'occhiata ai nuovi sorgenti :D
Ora stò lavorando per interfacciarmi con il grub patchato che mi inizializza direttamente la modalità vesa, ma sembra che ho problemi di comunicazione (mi dice che la mem. video inizia a 0!)
Dovrò anche provvedere a un server svn su sourceforge sennò Zulutown mi spara :sofico:

Tornando completamente IT, il titolo del thread è "Programmare un SO" quindi presumo che oltre al kernel verranno in seguito scritti editor di testo, debugger e altre applicazioni di uso comune, giusto?
Si, toccherà fare anche quelle, a meno che non riusciamo a usare alcune già pronte. Cmq l'interfaccia grafica la faremo noi diversamente dal X server, quindi non tutto funzionerà subito (a meno che non provvediamo a una libreria che simula le chiamate X sul nostro manager)

Cmq ora finiamo l'OT sulla libertà di Linux ok?

M4rk191
08-03-2010, 20:08
Cmq l'interfaccia grafica la faremo noi diversamente dal X server, quindi non tutto funzionerà subito (a meno che non provvediamo a una libreria che simula le chiamate X sul nostro manager)


Leggendo su Wikipedia, cercando di capire di cosa si trattasse di preciso, ho letto che X è un gestore grafico per sistemi UNIX che non gestisce l'aspetto grafico, ma solo l'integrazione tra utente e server video. Mi chiedo, se sia assolutamente necessario un gestore grafico e se sia necessario distinguere il window manager dal gestore grafico. Inoltre OSX utilizza Quartz e X, SO *NIX usano esclusivamente X, mentre Windows cosa utilizza?

Z80Fan
08-03-2010, 20:21
Leggendo su Wikipedia, cercando di capire di cosa si trattasse di preciso, ho letto che X è un gestore grafico per sistemi UNIX che non gestisce l'aspetto grafico, ma solo l'integrazione tra utente e server video. Mi chiedo, se sia assolutamente necessario un gestore grafico e se sia necessario distinguere il window manager dal gestore grafico. Inoltre OSX utilizza Quartz e X, SO *NIX usano esclusivamente X, mentre Windows cosa utilizza?
Beh, è utile, perchè ti permette di far comunicare la applicazioni con un server unico indipendentemente da come verrà visualizzato. Per esempio, ci può essere compiz sopra, che allora fornisce l'accelerazione 3d e gli effetti grafici, o come detto Quartz. Gli so *nix non usano solo X, X è sotto e sopra c'è il desktop manager (gnome e kde + famosi) e poi ancora il windows manager (motif, metacity, compiz, quello proprio di kde...).
Windows usa un sistema centralizzato, che fà sia da "server X" che da desktop e window manager. Funziona benissimo anche questo modo, inizialmente X era stato sviluppato quando ancora si usavano i terminali stupidi per accedere ad un sistema remoto, quindi X si basa sulle connessioni di rete per inviare i messaggi alle applicazioni (oggi non più perchè il server bypassa il sistema di rete per non intasarlo). Diciamo che un sistema centralizzato è anche più veloce, poichè non ha diversi strati a cui passare le stesse informazioni, e si può creare una cosa simile alla connessione a distanza con qualche trick. L'unico problema su Windows è che lo fanno girare in kernel mode, per questo si possono bloccare _tutte_ le finestre quando una è in mona (e a me non sò perchè mi succede spesso in windows :D).
Quindi io per il nostro os penserei a una cosa simile ad entrambi: un server sotto che gestisce solo la comunicazione di eventi e cose del genere, ed un'altra chè avrà un collegamento diretto con quest'ultima per disegnare effettivamente le cose sullo schermo. Le applicazioni comunicheranno solo con il server. Per il momento non ci interessa avere la connessione a distanza, ma si può tranquillamente integrare sucessivamente (se lo si scrive bene ;))

Tommo
08-03-2010, 21:20
Interessante!
Comunque credo che nelle nuove versioni di windows il window manager è ben separato (DWM) e gira in user mode che io sappia, infatti da Vista SP1 non succede più il "blocco totale" :D

Mattyfog
08-03-2010, 21:30
anche se ci capisco poco seguo con molto interesse il thread... scusate ma se si sviluppasse un os partendo invece già da un kernel, che software bisognerebbe scrivere? cioè cosa offrirebbe già di suo il kernel e cosa mancherebbe? per caso a grabdi linee il kernel si interfaccia con l'hardware e bisognerebbe scrivere il software che infece si interfaccia fra utente e kernel e quindi appunto l'interfaccia?

B|4KWH|T3
08-03-2010, 22:55
Sulla Unixness o Posixness ( :eek: ):

Parlando da ignorante in materia (sono un bioinformatico): non sarebbe meglio sviluppare quest'os con le mani completamente libere e pensare poi alla compatibilità in futuro utilizzando una sandbox virtualizzata?

(scusate se ho detto una castroneria)

cdimauro
09-03-2010, 07:48
Interessante!
Comunque credo che nelle nuove versioni di windows il window manager è ben separato (DWM) e gira in user mode che io sappia, infatti da Vista SP1 non succede più il "blocco totale" :D
Esatto. Poi molto meglio avere un solo strato fra applicazione e driver. X lo toglierei di mezzo.
anche se ci capisco poco seguo con molto interesse il thread... scusate ma se si sviluppasse un os partendo invece già da un kernel,
Ce ne sono già qualche migliaio: le distribuzioni Linux. Inutile aggiungere confusione al caos.
che software bisognerebbe scrivere? cioè cosa offrirebbe già di suo il kernel e cosa mancherebbe?
Dipende dal kernel.
per caso a grabdi linee il kernel si interfaccia con l'hardware
Sono i driver / device che s'interfacciano con l'hardware.
e bisognerebbe scrivere il software che infece si interfaccia fra utente e kernel e quindi appunto l'interfaccia?
Le applicazioni, sì.
Sulla Unixness o Posixness ( :eek: ):

Parlando da ignorante in materia (sono un bioinformatico): non sarebbe meglio sviluppare quest'os con le mani completamente libere e pensare poi alla compatibilità in futuro utilizzando una sandbox virtualizzata?

(scusate se ho detto una castroneria)
No, hai fatto bene e seguirei la stessa strada. Intanto sviluppo un s.o. nuovo / innovativo. Se poi ci tengo così tanto alla compatibilità Unix/Posix, è sufficiente relegare a un'apposita libreria esterna questo strato di compatibilità (similmente a Cygwin per Windows).

Z80Fan
09-03-2010, 13:58
Interessante!
Comunque credo che nelle nuove versioni di windows il window manager è ben separato (DWM) e gira in user mode che io sappia, infatti da Vista SP1 non succede più il "blocco totale" :D
Allora sono proprio sfortunato, sul 7 mi succede abbastanza :D

No, hai fatto bene e seguirei la stessa strada. Intanto sviluppo un s.o. nuovo / innovativo. Se poi ci tengo così tanto alla compatibilità Unix/Posix, è sufficiente relegare a un'apposita libreria esterna questo strato di compatibilità (similmente a Cygwin per Windows).
Siiiii è quello che voglio fareee !!! Non leggete più quel primo messaggio del thread, le cose si sono evolute un pochino, e stò già facendo la mia strada, come ho scritto nel commento 329 ;)

jappilas
09-03-2010, 18:14
Leggendo su Wikipedia, cercando di capire di cosa si trattasse di preciso, ho letto che X è un gestore grafico per sistemi UNIX che non gestisce l'aspetto grafico, ma solo l'integrazione tra utente e server video.
sostanzialmente è il contrario, il server X è per design quello che renderizza le primitive grafiche e il testo e disegna le pixmap a schermo, per conto delle applicazioni ( oltre a gestire la clipboard primaria e le periferiche di ingresso e redirezionare gli eventi di input) - anche se la tendenza recente è di decentralizzare tali funzionalità (per avvalersi di caratteristiche dello stack grafico qali il compositing via opengl) sono comunque previste a livello di protocollo X
quindi per dirsi compatibile un server X11 deve comunque supportarle, e un sistema su cui esso sia il fulcro (e non un' opzione, come avviene su OSX ) dello stack grafico dovrà trascinarsele dietro fintantoche non verranno deprecate (se mai ciò avverrà)
Mi chiedo, se sia assolutamente necessario un gestore grafico e se sia necessario distinguere il window manager dal gestore grafico.
la tua perplessità è lecita, e condivisa da molti tra cui il sottoscritto - il fatto è che il design di un sistema X11 deriva da una parte dall' intento di separare ciò che è "policy" (quindi cosa fare in base all' input dell' utente, cosa presentare a schermo ecc) dall' infrastruttura di basso livello (routine di disegno, driver, ecc, il cosiddetto "meccanismo") e accentrare in un singolo punto quanto più possibile del codice infrastrutturale - cosa che allo stato attuale sarebbe fattibile definendo delle API corrette e implementando in librerie condivise le routine comuni tra più applicazioni, ed eventuali elementi ad uso del server grafico in moduli/plugin di quest' ultimo
ma quando si è pensato al sistema grafico X, il supporto alle librerie non era presente in molte delle varie versioni di unix dell' epoca, e ove era presente era ancora praticamente una novità , da cui la condivisione del codice attraverso un server centrale
d' altra parte all' epoca, non si sentiva il bisogno di GUI locali ricche, complesse e reattive come le attuali, complice anche il target del sistema operativo per cui X nasceva - dovendo disaccoppiare visualizzazione ed elaborazione dell' interfaccia ad uso di mainframe, server o sistemi distribuiti, un sistema grafico network transparent era considerato un compromesso accettabile, nonostante le latenze e i round trip che il design implicava...
detto ciò, è più che lecito che una struttura come quella che si è tramandata fino ad oggi appaia "strana", anacronistica e possiiblmente inefficiente, all' esterno - in effetti lo è

jappilas
09-03-2010, 19:34
Beh, è utile, perchè ti permette di far comunicare la applicazioni con un server unico indipendentemente da come verrà visualizzato. questo ce l' hai perchè il sistema grafico prevede una API che tutte le applicazioni usano, nonchè delle convenzioni (ad esempio per le coordinate schermo - peraltro il sistema di coordinate di X è considerato uno dei più illogici in circolazione) e un protocollo (non privo di ambiguità, rilevate da verifiche formali) a cui attenersi a prescindere dalla piattaforma - non è una prerogativa intrinseca di X
che mi risulti nessun programma s' interfaccia nativamente con il server X gestendo direttamente il socket(*) e il marshaling dei dati, si ha una libreria (Xlib, più recentemente XCB) che lo fa internamente e si usa la API esportata da questa
Per esempio, ci può essere compiz sopra, che allora fornisce l'accelerazione 3d e gli effetti grafici, o come detto Quartz. l' accelerazione 3d la fornisce il driver grafico, compiz fornisce solo gli effetti

Gli so *nix non usano solo X, X è sotto e sopra c'è il desktop manager (gnome e kde + famosi) e poi ancora il windows manager (motif, metacity, compiz, quello proprio di kde...).
Windows usa un sistema centralizzato, che fà sia da "server X" che da desktop e window manager. Funziona benissimo anche questo modo, diciamo che funziona meglio in questo modo ... ;)
inizialmente X era stato sviluppato quando ancora si usavano i terminali stupidi per accedere ad un sistema remoto, quindi X si basa sulle connessioni di rete per inviare i messaggi alle applicazioni (oggi non più perchè il server bypassa il sistema di rete per non intasarlo).
non è esatto
il server bypassa il sistema di rete non per non intasarlo quanto perchè nel tempo ci si è resi conto che non aveva molto senso che la GUI si appoggiasse allo stack di rete quand' anche fosse stata locale...
quindi il primo passo è stato passare a un diverso transport layer (socket unix domain) e usare un tipo di socket o l' altro a seconda dei casi (ui locale o remota) mantenendo la semantica di scrittura / lettura su socket per non dover rivoluzionare il resto della code base (che all' epoca era ancora quella del server MIT poi confluita in xfree, complessa e monolitica)

. Diciamo che un sistema centralizzato è anche più veloce, poichè non ha diversi strati a cui passare le stesse informazioninon si tratta di "strati", si tratta di altri processi user space, quindi paralleli all' X server, non sotto/sovrastanti, con cui questo comunica in senso orizzontale - il che implica passare per il kernel (che è l' unico che può scambiare dati tra due processi in spazi di indirizzamento separati) almeno due volte, una volta in un senso, una volta nell' altro

L'unico problema su Windows è che lo fanno girare in kernel mode, per questo si possono bloccare _tutte_ le finestre quando una è in mona (e a me non sò perchè mi succede spesso in windows :D).
fino a XP sì, ma il DWM di Vista e 7 è un servizio userspace, dire che gira in kernel mode sarebbe una bestialità...

Quindi io per il nostro os penserei a una cosa simile ad entrambi: un server sotto che gestisce solo la comunicazione di eventi e cose del genere, ed un'altra chè avrà un collegamento diretto con quest'ultima per disegnare effettivamente le cose sullo schermo. Le applicazioni comunicheranno solo con il server. prenderesti il peggio di un sistema come X senza risolvere nessuno dei problemi cronici di questo, solo per fare qualcosa che "assomigli ad entrambi senza essere nessuno dei due"? magari pensi anche che se in microsoft hanno risolto un problema in un certo modo, la loro soluzione va evitata perchè errata a priori...
anche se per un momento sono stato seriamente tentato di consigliarti di lasciar perdere, ma voglio provare a consigliarti come procedere - ovvero, come procederei io se si trattasse di un mio progetto
- parti dai requisiti - può sembrare banale ma fidati, non lo è, soprattutto non è banale analizzare e riconoscere i requisiti (al tempo stesso è fondamentale farlo per un sistema complesso e infrastrutturale come lo è una GUI)
quindi cosa vuoi ottenere?
window decoration fisse o modificabili?
window behaviour a sua volta fisso o modificabile?
imaging model (2d) quello standard del PDF e di librerie come Cairo o quartz, o qualcosa di diverso (tanti auguri)?
modello di IO per quanto riguarda le periferiche e in particolare la scheda grafica?
come vedi ne hai di cose a cui pensare...
- cerca di capire quale funzionalità vengono replicate nelle singole applicazioni ( ad esempio il rendering di testo e grafica - su frame buffer privati) e quali richiedono di essere centralizzate (ad esempio compositing, window management, cursore del mouse, input redirection)
- identificato tutto ciò che va centralizzato, analizza cosa va reso personalizzabile, e progetta delle API interne che consentano di implementarlo in uno singolo processo modulare con plugin
- parti dal kernel, non dalla gui - quando si progetta una sistema operativo nuovo, la gui è l' ultima cosa a cui pensare tra quelle della prima iterazione
spesso si dice che il il kernel è ciò che fa da tramite tra le applicazioni e l' hw - non è esatto, il kernel è ciò che consente a più applicazioni di condividere l' hardware in modo trasparente e sicuro, ma è anche l' elemento da cui dipendono le semantiche a cui le applicazioni si devono attenere ( tra cui il process model, il threading model, il security model, l' IO model, eccetera) e su cui queste andranno modellate quindi è la prima cosa da progettare e implementare...
a meno che non si voglia imitare un sistema preesistente basandosi sulle stesse semantiche e sulla stessa struttura di questo ( ma allora non si crea nulla di innovativo, si tratta di una mero esercizio per poter dire "lo so fare anch' io")
ma allora, consiglierei quantomeno di prendere come modello un kernel più elegante e moderno del solito *nix.. chessò, VMs, NT...

- ottimizza per il caso locale - siccome mi pare di capire che stia pensando a un sistema desktop e non il solito clone di un OS per server basato su una concezione già obsoleta, sarebbe un buon punto di partenza fare come se la rete non esistesse , e i servizi locali (same machine) fossero basati su meccanismi di IPC più efficienti (come LRPC (http://pages.cs.wisc.edu/~sschang/OS-Qual/process/LRPC.htm), "active contexts (http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.51.7045&rep=rep1&type=pdf)" le doors (http://en.wikipedia.org/wiki/Doors_(computing)) o al più messaggi come quelli di binder (http://developer.android.com/reference/android/os/Binder.html)) che non i soliti socket con read() bloccante e marshaling dei dati

Z80Fan
10-03-2010, 08:42
questo ce l' hai perchè il sistema grafico prevede una API che tutte le applicazioni usano, nonchè delle convenzioni (ad esempio per le coordinate schermo - peraltro il sistema di coordinate di X è considerato uno dei più illogici in circolazione) e un protocollo (non privo di ambiguità, rilevate da verifiche formali) a cui attenersi a prescindere dalla piattaforma - non è una prerogativa intrinseca di X

che mi risulti nessun programma s' interfaccia nativamente con il server X gestendo direttamente il socket(*) e il marshaling dei dati, si ha una libreria (Xlib, più recentemente XCB) che lo fa internamente e si usa la API esportata da questa
Se è per questo non usano neanche Xlib, usano solo le librerie di alto livello come le gtk ecc...

non è esatto
il server bypassa il sistema di rete non per non intasarlo quanto perchè nel tempo ci si è resi conto che non aveva molto senso che la GUI si appoggiasse allo stack di rete quand' anche fosse stata locale...
Era circa quello che volevo dire io, avrei dovuto scrivere (oggi non più perchè il server bypassa il sistema di rete per non intasarlo quando lavora in locale).

prenderesti il peggio di un sistema come X senza risolvere nessuno dei problemi cronici di questo, solo per fare qualcosa che "assomigli ad entrambi senza essere nessuno dei due"?
Io non voglio copiare nessuno per forza, prendo le cose che mi sembrano utili (immaginandole solo per sentito dire: non mi sono mai interessato di andare a vedere il protocollo X), e poi non ho descritto pienamente la mia idea, ho scritto 2 righe solo perchè era venuto fuori l'argomento:
"un'altra chè avrà un collegamento diretto con quest'ultima per disegnare effettivamente le cose sullo schermo."
intendevo dire qualche sorta di plugin o modulo che veniva inglobato nel server all'avvio o quando l' utente vuole cambiare; non è un programma vero e proprio, solo un insieme di funzioni che istruiscono il server su come disegnare i vari elementi sullo schermo: ad esempio un modulo base potrebbe disegnare un rettangolo quando viene chiamata la funzione "disegnaPulsante", una versione più avanzata potrebbe caricare da file una immagine, scriverci sopra il testo del pulsante e poi disegnare quello. Oppure il server si potrebbe preoccupare solo di copiare i buffer di ogni finestra nel framebuffer e lasciare alle applicazioni (e attraverso librerie caricate da queste ultime) il compito di disegnarci sopra.
Queste cmq sono solo idee, non dovete prenderle seriamente, anche perchè non c'è ancora uno scheduler e un gestore di memoria!

- parti dal kernel, non dalla gui - quando si progetta una sistema operativo nuovo, la gui è l' ultima cosa a cui pensare tra quelle della prima iterazione
Difatti ho scritto quelle due righe solo perchè è venuta fuori la discussione, non ho nessuna intenzione di sviluppare una gui adesso. Ora stò lavorando sulla SVGA (si, ho lasciato perdere il VESA) non per cominciare la gui, ma per avere un terminale testuale con risoluzione maggiore per avere a schermo le centinaia di messaggi di debug che sono abituato a mettere, tutto qui.

Cmq grazie per gli altri consigli, saranno utili quando arriveremo effettivamente alla gui ;)

cionci
10-03-2010, 08:48
Quando in un futuro arriverai a scrivere un ambiente grafico... Ti ricompili e modifichi direttamente il gestore di framebuffer delle librerie Qt e vai a scrivere il window manager direttamente tramite le Qt. Poi se ci fosse da pensare ad una qualsiasi struttura alternativa....avrai sicuramente tempo.
Nota che per arrivare a quei livelli dovrai già avere un compilatore funzionante, quindi un porting della libreria standard...campa cavallo !!!

jappilas
10-03-2010, 11:42
Se è per questo non usano neanche Xlib, usano solo le librerie di alto livello come le gtk ecc...certo, ma le GTK, o le Qt, sono framework applicativi alternativi (le applicazioni si appoggiano all' uno o all' altro), installabili parallelamente (per quanto le applicazioni per l' uno o per l' altro poi non possano fare a meno di restare inconsistenti tra lor quanto a look and feel) e differenti funzionalmente e architetturalmente, ma non sono librerie *di sistema*
non costituiscono il minimo comun denominatore della piattaforma dalla prospettiva di qualsiasi applicazione - minimo comun denominatore costituito invece nel caso di *nix da X, opengl, glibc, ecc, a cui sia GTK che Qt si apoggiano a loro volta, e che è ciò che tu devi studiare e reimplementare se vuoi programmare un sistema operativo

come diceva cionci, per avere una tua gui library puoi convertire le Qt facendo un port del motore di rendering sul tuo sistema grafico, una volta che avrai sviluppato quest' ultimo ;)
Io non voglio copiare nessuno per forza, prendo le cose che mi sembrano utili (immaginandole solo per sentito dire: non mi sono mai interessato di andare a vedere il protocollo X),
hmmm... la prima cosa da fare quando si affronta un progetto del genere dovrebbe essere fare ricerca esaustiva su cosa altri hanno concepito, le loro soluzioni e il loro razionale - di modo da avere una base di partenza, magari anche di codice ma soprattutto una base per poter fare scelte tecniche informate, e ed evitare di ripetere eventuali errori del passato ...
intendevo dire qualche sorta di plugin o modulo che veniva inglobato nel server all'avvio o quando l' utente vuole cambiare; non è un programma vero e proprio, ah ok - ti chiedo scusa, non mi era chiaro
solo un insieme di funzioni che istruiscono il server su come disegnare i vari elementi sullo schermo: ad esempio un modulo base potrebbe disegnare un rettangolo quando viene chiamata la funzione "disegnaPulsante", una versione più avanzata potrebbe caricare da file una immagine, scriverci sopra il testo del pulsante e poi disegnare quello.
una gui deve consentire ad ogni applicazione di girare restando "all' oscuro" della posizione (coordinate) della/e sua/e finestra/e, della presenza di finestre appartenenti ad altre applicazioni, e possibilmente del window manager stesso (a parte quando questo genera comandi di minimizzazione/chiusura, ecc che l' applicazione deve gestire), al tempo stesso deve consentire all' utente di manipolare le finestre di tutte le applicazioni attive da un unico punto (praticamente e programmaticamente) e alle applicazioni di gestire gli eventi di input (con particolare riguardo a quelli provenienti dal mouse riferiti alla propria finestra)
quindi un server centrale che implementi: mouse input e puntatore (accelerato o meno); pick correlation (data la posizione del cursore risalire alla finestra e quindi all' applicazione); selezione dell' applicazione focused e redirezione dell' input da tastiera; window management; ci vuole, e tale server dovrà quantomeno avere nozione delle surface/window grafiche istanziate, loro posizione e dimensione - poi una seconda pick correlation potrà essere attuata dal toolkit per risalire dalla posizione in coordinate finestra al widget selezionato - oppure si potrà dare al server centrale nozione delle aree occupate dai singoli widget, ma non del loro contenuto, per il motivo che segue;
MA, se lo incarichi anche di disegnare gli elementi grafici della gui invece che farlo internamente all' applicazione (o toolkit), avrai un round trip applicazione -> kernel -> server -> kernel -> applicazione, per ogni operazione grafica (se poi a più basso livello impieghi primitive di IPC che costringano a fare continua serializzazione/deserializzazione (come nel caso dei socket e della shared memory posix - style), avrai una gui a maggior ragione inefficiente, per cui subottima); peraltro, eseguire il rendering dei widget e dei capi di testo in un processo centrale, con la necessità di inviare a questo dati (magari sensibili, pensa a un numero di serie o di carta di credito da mostrare in un text field) provenienti da applicazioni scorrelate (ma non più privati una volta replicati nello spazio di indirizzamento del server), implica problematiche di sicurezza da non trascurare
(per la cronaca un tempo anche X prevedeva un set di widget standard gestiti e renderizzati dal server - poi l' athena widget kit guarda caso è stato deprecato per tutta una serie di motivi)

per questo ti dicevo parti dal kernel e pensa a progettare quello in funzione di un risultato d' insieme che vuoi raggiungere, possibilmente studiando accorgimenti e paradigmi il più differenziati ed eterogenei possibili e magari anche non legati alla tradizione unix ...
Oppure il server si potrebbe preoccupare solo di copiare i buffer di ogni finestra nel framebuffer e lasciare alle applicazioni (e attraverso librerie caricate da queste ultime) il compito di disegnarci sopra.
già meglio, però è possibile eliminare la copia, se progetti le primitive di comunicazione e il sosttosistema di IO in modo adeguato...
Queste cmq sono solo idee, non dovete prenderle seriamente, anche perchè non c'è ancora uno scheduler e un gestore di memoria!
peraltro soprattutto la gestione della memoria, connessi (e in parte dipendenti) a come si vuole progettare la IPC ...
Difatti ho scritto quelle due righe solo perchè è venuta fuori la discussione, non ho nessuna intenzione di sviluppare una gui adesso. Ora stò lavorando sulla SVGA (si, ho lasciato perdere il VESA) non per cominciare la gui, ma per avere un terminale testuale con risoluzione maggiore per avere a schermo le centinaia di messaggi di debug che sono abituato a mettere, tutto qui.avendo già implementato un terminale testuale ti troverai a dover gestire il caso di accessi concomitanti ( e su modalità video / risoluzioni differenti) alla gpu da parte delle applicazioni e del server grafico, affrontando un problema che in linux è stato risolto solo di recente con il kms, questo va detto
Cmq grazie per gli altri consigli, saranno utili quando arriveremo effettivamente alla gui ;)
il design della gui (intesa come stack grafico) inficia in parte il design del kernel (se sviluppi questo in base alle funzionalità che vuoi concedere ai livelli superiori - identificare le quali è il primo passo) o è inficiato dalle peculiarità/ limitazioni /idiosincrasie del kernel e del modello di IPC e I/O - per cui i consigli volevano servire anche prima ;)

Z80Fan
12-03-2010, 16:26
x Japillas:
Grazie, hai dato consigli molto utili :)

x cdimauro (o chi ne sapesse):
Quale è il vantaggio di avere una memoria video organizzata planarmente (a piani di bit) ? Cioè ogni bit che rappresenta le informazioni sul colore di quel bit sono memorizzati in "verticale" attraverso i vari piani invece che linearmente come in una memoria convenzionale.

e poi, conosci i nomi di tool di sviluppo per Amiga e dove posso procurarmeli? Mi interessa sopratutto un assemblatore e una lista delle porte di IO/indirizzi dove sono mappate le periferiche e qualche tutorial anche.
Voglio provare di persona la bontà dell' Amiga verso un programmatore di basso livello rispetto alla orribile architettura IBM :D

CertainDeath
12-03-2010, 16:44
Z80 al momento io mi sto occupando di un progetto di creazione di un OS Linux Based basato su LFS(Linux from the Scratch) ed è davvero un gran macello!
Se ti va di darmi una mano fammi sapere :)

Z80Fan
12-03-2010, 16:59
Z80 al momento io mi sto occupando di un progetto di creazione di un OS Linux Based basato su LFS(Linux from the Scratch) ed è davvero un gran macello!
Se ti va di darmi una mano fammi sapere :)
Avevo già sentito LFS, ma non avevo mai indagato a fondo, praticamente hai preso solo il kernel e ci stai aggiungendo tutti i programmi da metterci sopra per completare l'OS?

CertainDeath
12-03-2010, 18:12
Più o meno si.. è basato su Kernel Linux.
Il problema è che sto avendo difficolta nella compilazione di alcuni sources.

Z80Fan
12-03-2010, 18:17
Più o meno si.. è basato su Kernel Linux.
Il problema è che sto avendo difficolta nella compilazione di alcuni sources.
Interessante... tipo che sorgenti non riesci a compilare? Penso non il kernel, quello si compila veramente semplicemente (hai provato il tool grafico per la configurazione? :D)

CertainDeath
12-03-2010, 18:25
Qual è il tool grafico? dimmi un pò il nome..
I sorgenti che non riesco a compilare sono quelli di Binutils


Ecco la guida che sto seguendo:
http://www.linuxfromscratch.org/lfs/view/stable/chapter05/binutils-pass1.html

In sintesi dovrei eseguire

../binutils-2.20/configure \
--target=$LFS_TGT --prefix=/tools \
--disable-nls --disable-werror

Ma invece...

bash: /binutils-2.20/configure: No such file or directory

Z80Fan
12-03-2010, 18:33
Qual è il tool grafico? dimmi un pò il nome..
I sorgenti che non riesco a compilare sono quelli di Binutils


Ecco la guida che sto seguendo:
http://www.linuxfromscratch.org/lfs/view/stable/chapter05/binutils-pass1.html

In sintesi dovrei eseguire

../binutils-2.20/configure \
--target=$LFS_TGT --prefix=/tools \
--disable-nls --disable-werror

Ma invece...

bash: /binutils-2.20/configure: No such file or directory
Hai controllato se esiste il file configure? forse si chiama configure.sh
Prova a fare ls -l ../binutils-2.20 e scrivere il risultato.

DanieleC88
12-03-2010, 18:40
bash: /binutils-2.20/configure: No such file or directory

Mi sa che hai sbagliato il percorso, non è che mancano i due punti?

CertainDeath
12-03-2010, 18:42
Ora vediamo insieme ragazzi, se mi potete dare una mano.

drwxr-xr-x 5 root root 20480 2010-03-12 18:53 bfd
drwxr-xr-x 5 root root 4096 2010-03-12 18:53 binutils
-rw-rw-rw- 1 501 501 418833 2009-10-16 09:42 ChangeLog
-rwxrwxrwx 1 501 501 3707 2009-08-22 13:48 compile
drwxr-xr-x 2 root root 4096 2010-03-12 18:53 config
-rwxrwxrwx 1 501 501 45612 2009-08-17 06:10 config.guess
-rw-r--r-- 1 root root 22492 2010-03-12 19:10 config.log
-rw-rw-rw- 1 501 501 25088 2008-11-27 18:14 config-ml.in
-rwxrwxrwx 1 501 501 14979 2008-03-13 20:27 config.rpath
-rwxr-xr-x 1 root root 30375 2010-03-12 19:10 config.status
-rwxrwxrwx 1 501 501 34157 2009-08-17 06:10 config.sub
-rwxrwxrwx 1 501 501 439149 2009-09-02 09:05 configure
-rw-rw-rw- 1 501 501 103906 2009-10-16 13:52 configure.ac
-rw-rw-rw- 1 501 501 18002 2005-07-14 03:24 COPYING
-rw-rw-rw- 1 501 501 35147 2007-07-17 15:50 COPYING3
-rw-rw-rw- 1 501 501 7639 2007-07-17 15:50 COPYING3.LIB
-rw-rw-rw- 1 501 501 25291 2005-07-16 04:36 COPYING.LIB
drwxr-xr-x 2 root root 4096 2010-03-12 18:53 cpu
-rwxrwxrwx 1 501 501 18615 2009-08-22 13:48 depcomp
drwxr-xr-x 2 root root 4096 2010-03-12 18:53 elfcpp
drwxr-xr-x 2 root root 4096 2010-03-12 18:53 etc
drwxr-xr-x 6 root root 4096 2010-03-12 18:53 gas
drwxr-xr-x 4 root root 4096 2010-03-12 18:53 gold
drwxr-xr-x 3 root root 4096 2010-03-12 18:53 gprof
drwxr-xr-x 8 root root 4096 2010-03-12 18:53 include
-rwxrwxrwx 1 501 501 13663 2009-08-22 13:48 install-sh
drwxr-xr-x 2 root root 4096 2010-03-12 18:53 intl
drwxr-xr-x 7 root root 4096 2010-03-12 18:53 ld
drwxr-xr-x 4 root root 4096 2010-03-12 18:53 libiberty
-rw-rw-rw- 1 501 501 259988 2009-03-01 19:57 libtool.m4
-rw-rw-rw- 1 501 501 1768 2008-09-29 17:28 ltgcc.m4
-rw-rw-rw- 1 501 501 249625 2009-08-31 18:59 ltmain.sh
-rw-rw-rw- 1 501 501 5707 2008-09-29 17:28 lt~obsolete.m4
-rw-rw-rw- 1 501 501 11938 2008-09-29 17:28 ltoptions.m4
-rw-rw-rw- 1 501 501 4372 2008-09-29 17:28 ltsugar.m4
-rw-rw-rw- 1 501 501 701 2008-09-29 17:28 ltversion.m4
-rw-rw-rw- 1 501 501 4078 2009-08-19 04:53 MAINTAINERS
-rw-r--r-- 1 root root 401158 2010-03-12 19:10 Makefile
-rw-rw-rw- 1 501 501 26836 2009-10-16 09:42 Makefile.def
-rw-rw-rw- 1 501 501 1782383 2009-10-16 13:50 Makefile.in
-rw-rw-rw- 1 501 501 63643 2009-09-02 09:05 Makefile.tpl
-rw-rw-rw- 1 501 501 1087 1999-05-03 09:28 makefile.vms
-rw-r--r-- 1 501 501 668275 2009-10-16 13:53 md5.sum
-rwxrwxrwx 1 501 501 11419 2009-08-22 13:48 missing
-rwxrwxrwx 1 501 501 2179 1999-08-08 19:46 mkdep
-rwxrwxrwx 1 501 501 3538 2009-08-22 13:48 mkinstalldirs
-rwxrwxrwx 1 501 501 384 2005-09-07 02:42 move-if-change
drwxr-xr-x 3 root root 12288 2010-03-12 18:53 opcodes
-rw-rw-rw- 1 501 501 1719 1999-05-03 09:28 README
-rw-rw-rw- 1 501 501 961 2009-08-22 19:08 README-maintainer-mode
-rw-r--r-- 1 root root 13 2010-03-12 19:10 serdep.tmp
-rw-rw-rw- 1 501 501 1044 2009-09-01 15:38 setup.com
-rw-rw-rw- 1 501 501 10696 2008-06-19 01:20 src-release
-rwxrwxrwx 1 501 501 2265 2005-07-14 03:24 symlink-tree
drwxr-xr-x 2 root root 4096 2010-03-12 18:53 texinfo
-rwxrwxrwx 1 501 501 6179 2009-08-22 13:48 ylwrap

Z80Fan
12-03-2010, 18:46
Si penso sia come dice Daniele, forse hai solo dimenticato i 2 punti all'inizio del comando

CertainDeath
12-03-2010, 18:47
certaindeath@Destroyer:/media/lib/binutils-build$ ../binutils-2.20/configure \
> --target=$LFS_TGT --prefix=/tools \
> --disable-nls --disable-werror
bash: ../binutils-2.20/configure: Nessun file o directory



Guardate i 2 punti ci sono

Z80Fan
12-03-2010, 18:53
certaindeath@Destroyer:/media/lib/binutils-build$ ../binutils-2.20/configure \
> --target=$LFS_TGT --prefix=/tools \
> --disable-nls --disable-werror
bash: ../binutils-2.20/configure: Nessun file o directory


Guardate i 2 punti ci sono
Ok ok nel tuo output di prima sembrava che mancassero.
Prova a fare un
cd ../binutils-2.20
e poi ./configure \ --target ecc...

CertainDeath
12-03-2010, 19:06
Niente mi sta facendo impazzire..

certaindeath@Destroyer:/media/lib/binutils-build/binutils-2.20$ /configure \ --target=$LIB_TGT --prefix=/tools \ --disable-nls --disable-werror
bash: /configure: Nessun file o directory
certaindeath@Destroyer:/media/lib/binutils-build/binutils-2.20$

cionci
12-03-2010, 19:13
E certo hai scritto /configure senza il punto.

Z80Fan
12-03-2010, 19:13
Niente mi sta facendo impazzire..

certaindeath@Destroyer:/media/lib/binutils-build/binutils-2.20$ /configure \ --target=$LIB_TGT --prefix=/tools \ --disable-nls --disable-werror
bash: /configure: Nessun file o directory
certaindeath@Destroyer:/media/lib/binutils-build/binutils-2.20$


Questa volta il punto lo hai dimenticato :D
dovevi dare
./configure
non
/configure
il punto all'inizio indica la cartella corrente, quindi il comando è interpretato come "esegui il file configure che si trova nella cartella corrente"

CertainDeath
12-03-2010, 19:19
Avete ragione, errore mio pardon.

certaindeath@Destroyer:/media/lib/binutils-build/binutils-2.20$ ./configure \ --target=$LIB_TGT --prefix=/tools \ --disable-nls --disable-werror
configure: error: invalid variable name: ` --target'


Ma perchè ora questo?

||ElChE||88
12-03-2010, 19:20
Leva quei \

Z80Fan
12-03-2010, 19:22
Avete ragione, errore mio pardon.

certaindeath@Destroyer:/media/lib/binutils-build/binutils-2.20$ ./configure \ --target=$LIB_TGT --prefix=/tools \ --disable-nls --disable-werror
configure: error: invalid variable name: ` --target'


Ma perchè ora questo?
mmmh, il comando lo hai scritto tutto sulla stessa riga? in questo caso non devi mettere le \
Prova a dare il comando senza le barre, cioè:
./configure --target=$LIB_TGT --prefix=/tools --disable-nls --disable-werror

CertainDeath
12-03-2010, 19:26
Grande! :D Credimi e da stamattina che stavo là vicino :muro:

Z80 è ufficiale IO TI AMO:D

fero86
12-03-2010, 19:32
Voglio provare di persona la bontà dell' Amiga verso un programmatore di basso livello rispetto alla orribile architettura IBM :D madonna ragazzo, ma quanto cacchio di tempo hai? :|
non per essere distruttivo, ma sicuro di non trascurare troppo la figa? :D

Z80Fan
12-03-2010, 19:32
Z80 è ufficiale IO TI AMO:D
Ouch! :D Spero che tu sia una bella ragazza di 18 anni :asd:

EDIT: Cmq aspetta un altro po', il programma devi ancora compilarlo ... :D

Z80Fan
12-03-2010, 19:34
madonna ragazzo, ma quanto cacchio di tempo hai? :|
Tanto ;)
non per essere distruttivo, ma sicuro di non trascurare troppo la figa? :D
Non ho ancora trovato la ragazza, il fato non mi aiuta: all' itis siamo tutti maschi :cry:

CertainDeath
12-03-2010, 19:36
Per questo io sono andato al Liceo :D
Non a caso sono fidanzato da 3 anni :D :D
Già occupato Z80 :sofico:

Mendocino89
12-03-2010, 19:36
Tanto ;)

Non ho ancora trovato la ragazza, il fato non mi aiuta: all' itis siamo tutti maschi :cry:

Una sventura di tutti noi poveri frequentatori di istituti tecnici industriale...:D

cdimauro
12-03-2010, 19:37
x Japillas:
Grazie, hai dato consigli molto utili :)
Fanne tesoro, perché meritano.
x cdimauro (o chi ne sapesse):
Quale è il vantaggio di avere una memoria video organizzata planarmente (a piani di bit) ? Cioè ogni bit che rappresenta le informazioni sul colore di quel bit sono memorizzati in "verticale" attraverso i vari piani invece che linearmente come in una memoria convenzionale.
I vantaggi sono l'occupazione di memoria (che poi è il motivo per cui sono nati i bitplane) e, nel caso di uno schermo che fa uso di palette, della possibilità di realizzare effetti speciali agendo soltanto su uno o più bitplane.

Ad esempio un effetto tipo immersione nell'acqua di una parte del corpo di uno personaggio la si può realizzare scegliendo opportunamente la palette e facendo in modo che settando i bit di un bitplane quella parte assuma delle tonalità acqua-marina.
e poi, conosci i nomi di tool di sviluppo per Amiga e dove posso procurarmeli? Mi interessa sopratutto un assemblatore e una lista delle porte di IO/indirizzi dove sono mappate le periferiche e qualche tutorial anche.
Come assemblatore io usavo l'Hi-Soft DevPac, che era a pagamento (all'epoca mi costò un patrimonio; divisi le spese con altri due ragazzi appassionati di programmazione). Può darsi che riesci a trovarlo come abandonware.

Un assemblatore gratuito estremamente gettonato da programmatori e cracker era il Seka assembler.

A me non piaceva, ma qui, al solito, è una questione di gusti, e io sono sempre stato molto particolare. :D

Per quanto riguarda la programmazione dell'hardware, ma in generale la programmazione dell'Amiga, trovi tutto, ma proprio tutto ciò che ti può servire qui (http://eab.abime.net/showthread.php?t=28085).

Con questi libri puoi rivoltare l'hardware come un calzino, oppure studiare il funzionamento di AmigaOS, fino ad arrivare alla scrittura di device driver, filesystem e librerie condivise o di sistema.

Per i 68000 personalmente ti consiglio leggerti gli user manual di Motorola. Quello del 68000 in particolare lo trovi qui (http://www.freescale.com/files/32bit/doc/ref_manual/MC68000UM.pdf?fpsp=1).

Visto che hai già esperienza di assembly, a mio avviso ti dovrebbe bastare. Poi l'architettura 68000 è di una semplicità unica: s'impara al volo.
Voglio provare di persona la bontà dell' Amiga verso un programmatore di basso livello rispetto alla orribile architettura IBM :D
Occhio che corri il rischio di rimanere assuefatto. E magari finisci per abbandonare il tuo s.o. per dare una mano a quelli di AROS (http://aros.sourceforge.net/it/) per completarlo (o magari per farne il porting su altro hardware). :fiufiu: :D
E certo hai scritto /configure senza il punto.
Ecco, questa è una cosa che ho sempre odiato dei s.o. Unix-like. Ma se il comando si trova già nella cartella corrente, perché non deve andare cercare prima nel attuale e poi, eventualmente, negli altri? :muro:

CertainDeath
12-03-2010, 19:46
Ma se devo dare questo comando

case $(uname -m) in
x86_64) mkdir -v /tools/lib && ln -sv lib /tools/lib64 ;;
esac

devo metterlo tutto sulla stessa riga?
Perchè cosi ovviamente da errore.
E anche se lo metto sulla stessa riga mi dice

bash: errore di sintassi vicino il simbolo non atteso ")"

M4rk191
12-03-2010, 19:56
Tanto ;)

Non ho ancora trovato la ragazza, il fato non mi aiuta: all' itis siamo tutti maschi :cry:

Quanti anni hai?

Z80Fan
12-03-2010, 20:11
Occhio che corri il rischio di rimanere assuefatto. E magari finisci per abbandonare il tuo s.o. per dare una mano a quelli di AROS (http://aros.sourceforge.net/it/) per completarlo (o magari per farne il porting su altro hardware). :fiufiu: :D
Eh eh eh... No cmq il mio kernel lo finirò (diciamo, almeno arriverò ad un punto dove potrò avere strumenti di sviluppo adeguati), volevo conoscere l'Amiga solo per curiosità mia.

Ecco, questa è una cosa che ho sempre odiato dei s.o. Unix-like. Ma se il comando si trova già nella cartella corrente, perché non deve andare cercare prima nel attuale e poi, eventualmente, negli altri? :muro:
Perchè nella cartella corrente ci potrebbe essere ad esempio un programma di nome "ls" che in realtà è un virus: così se l'utente digita ls per ottenere il listing della directory in realtà fà partire il virus. Cmq si può ottenere il comportamento "alla dos" impostando come percorso di ricerca nel path anche la cartella corrente "." .

Ma se devo dare questo comando

case $(uname -m) in
x86_64) mkdir -v /tools/lib && ln -sv lib /tools/lib64 ;;
esac

devo metterlo tutto sulla stessa riga?
Perchè cosi ovviamente da errore.
E anche se lo metto sulla stessa riga mi dice

bash: errore di sintassi vicino il simbolo non atteso ")"

No, quello penso sia da mettere in uno script: penso che il comando sia "se c'è la stringa x86_64 nell'architettura (ritornata dal comando uname -m), allora esegui il comando mkdir ecc...
Cmq se tu sai di voler eseguire il codice, scrivi solo mkdir -v /tools/lib && ln -sv lib /tools/lib64

Quanti anni hai?
18 da un mese

Mattyfog
12-03-2010, 20:14
Ok devo dire che anche io, anche se un po' troppo alla cavolo, mi sto interessando molto all'informatica.. ma tu dove hai imparato tutto ciò??

M4rk191
12-03-2010, 21:00
Hai la mia età e scrivi un kernel? :eek:

DanieleC88
12-03-2010, 22:27
Hai la mia età e scrivi un kernel? :eek:
Ma allora non vi ho insegnato niente? :D

ndakota
12-03-2010, 22:41
Ma allora non vi ho insegnato niente? :D

:rotfl: :rotfl:

M4rk191
13-03-2010, 11:56
Ma allora non vi ho insegnato niente? :D

Cosa? :confused:

DanieleC88
13-03-2010, 12:32
Cosa? :confused:
Aspetta Kralizek e capirai.

ndakota
13-03-2010, 12:49
Cosa? :confused:

Il caro DanieleC88, qui presente, ha aperto un thread analogo a questo alla tenera età di 14 anni :D

M4rk191
13-03-2010, 13:15
Il caro DanieleC88, qui presente, ha aperto un thread analogo a questo alla tenera età di 14 anni :D

Si è concluso in un nulla di fatto?

ndakota
13-03-2010, 13:18
No, qualcosa ha fatto :p Non so di preciso a che punto sia arrivato.

M4rk191
13-03-2010, 14:05
A quella (o questa) età in genere non si hanno le conoscenze adatte, com'è possibile riuscire anche solo ad iniziare a scrivere un kernel?

I compilatori, ad esempio, si studiano nel corso di laurea magistrale, e credo sia necessaria una conoscenza dei compilatori per scrivere alcune parti di un SO.

WarDuck
13-03-2010, 14:19
A quella (o questa) età in genere non si hanno le conoscenze adatte, com'è possibile riuscire anche solo ad iniziare a scrivere un kernel?

I compilatori, ad esempio, si studiano nel corso di laurea magistrale, e credo sia necessaria una conoscenza dei compilatori per scrivere alcune parti di un SO.

Per scrivere codice non è l'età che conta.

Il problema è COME lo fai e come trovi soluzioni ad eventuali problemi, e questo ovviamente non te lo insegna nessuno.

Sicuramente l'università ti da la forma-mentis per affrontare alcune di queste problematiche in maniera più efficacie.

Per scrivere un sistema operativo devi comprendere i principi di funzionamento e l'architettura di un calcolatore. In genere è necessaria una buona conoscenza di linguaggi di basso livello.

Chiaramente se vuoi scrivere codice più o meno efficiente dovresti conoscere anche le principali strutture dati, i loro pro ed i loro contro per trovare quella o quelle ideali per risolvere un dato problema.

Riuscire a capire il funzionamento di un kernel base già sarebbe un buon traguardo, e soprattutto aiuterebbe ad avere una visione completa di quello che si vorrebbe cercare di fare/migliorare.

Non puoi pensare di migliorare qualcosa o di farla ex-novo senza conoscere le soluzioni tecniche che hanno adottato altri prima di te.

Z80Fan
13-03-2010, 20:35
Stò trafficando con la modalità VGA 640x480 a 16 colori planare, ma la paletta me ne fà impostare solo 7, tutti gli altri non vengono cambiati...
Cmq già 8 sono abbastanza, tempo di implementare l'algoritmo di Bresenham per fare un demo carino e poi metto sul server l'immagine "floppy" già pronta con grub da dare in pasto alla macchina virtuale (visto che qualcuno me la ha chiesta)

cdimauro
13-03-2010, 20:41
Mi sembra molto strano. Ai miei tempi (1987-1990 :D) riuscivo a cambiare tutta la palette della VGA a 16 colori (poi sono passato alla 320x200 a 256 colori :fagiano: , che mi era più congeniale per quello su cui lavoravo).

DanieleC88
13-03-2010, 23:22
Si è concluso in un nulla di fatto?
Chiaramente sì, a quell'età non avevo né le conoscenze teoriche né (dopo un po') la voglia di continuare un progetto che era evidentemente una follia.

Ma mi sono divertito. :D

Z80Fan
14-03-2010, 10:07
Mi sembra molto strano. Ai miei tempi (1987-1990 :D) riuscivo a cambiare tutta la palette della VGA a 16 colori (poi sono passato alla 320x200 a 256 colori :fagiano: , che mi era più congeniale per quello su cui lavoravo).
Ho scoperto che i colori sono sparsi in giro per la palette (ad esempio, il 7° colore che mi rimaneva sempre nero in realtà si trova intorno all'19-20. Penso sia per mantenere la comatibilità con le precedenti schede come ega e cga. Stasera mi metto a cercare gli altri 8 colori che mi mancano.

Cmq ho dato un'occhiata ai documenti sull' Amiga, sono veramente utili! Ho anche trovato il Devpac, ma solo il programma, ora devo trovare il disco degli Include.

fero86
14-03-2010, 13:17
Tanto ;)

Non ho ancora trovato la ragazza, il fato non mi aiuta: all' itis siamo tutti maschi :cry: eh, ma non puoi mica "tartassarti" per sempre per colpa del fato :stordita:

fai come Ortolani, che si faceva accompagnare alla disco dal babbo del Mei che ci stavano un sacco di polle e di cubiste cubane di Cuba :)
(tratto da "I miei ragguardevoli sabato sera")

EDIT - e comunque la vita da single puó essere condita di sesso molto di piu di quella da fidanzato, fidati :stordita:



Per questo io sono andato al Liceo :D
Non a caso sono fidanzato da 3 anni :D :D vai in un liceo per cercare fica? tu, devi essere un fottuto genio :mbe:
non ci avevo mai pensato :mbe:



Ma allora non vi ho insegnato niente? :D MHUAUAHAHAHAH :rotfl:

cdimauro
14-03-2010, 20:01
Ho scoperto che i colori sono sparsi in giro per la palette (ad esempio, il 7° colore che mi rimaneva sempre nero in realtà si trova intorno all'19-20. Penso sia per mantenere la comatibilità con le precedenti schede come ega e cga. Stasera mi metto a cercare gli altri 8 colori che mi mancano.
Aspetta. Prima hai parlato di modalità VGA a 16 colori, e in questa la palette dei colori va da 0 a 15, esattamente come con l'EGA (a 640x350), con cui condivide tutto (a parte la risoluzione).

Se poi mi parli delle modalità a 256 colori, per queste la palette era organizzata in maniera diversa (ma non ricordo bene; mi pare che erano i primi 8 e gli ultim 8 che mappavano i 16 colori standard e predefiniti di CGA/EGA/VGA, ma non ci metto la mano sul fuoco dopo tanto tempo).
Cmq ho dato un'occhiata ai documenti sull' Amiga, sono veramente utili!
Studiali bene che qualche nuova idea per il tuo s.o. originale può venire fuori. :)
Ho anche trovato il Devpac, ma solo il programma, ora devo trovare il disco degli Include.
Il DevPac aveva anche gli Include, che io ricordi (altrimenti come si faceva a compilare? :D).

Mattyfog
14-03-2010, 20:18
eh, ma non puoi mica "tartassarti" per sempre per colpa del fato :stordita:

fai come Ortolani, che si faceva accompagnare alla disco dal babbo del Mei che ci stavano un sacco di polle e di cubiste cubane di Cuba :)
(tratto da "I miei ragguardevoli sabato sera")



Ortolani quello di ratman? ;) ;) ;) ;) ;)
Fine OT

Sempre interessante il thred comunque :stordita:

Mendocino89
15-03-2010, 11:31
Sempre interessante il thred comunque :stordita:

Assolutamente...
se poi uno ne capisce di C/C++ si va a leggere direttamente i sorgenti !

Se solo ci capissi cosa !! Io e i linguaggi C-Like non siamo andati mai daccordo.

Al momento sono uno scrutatore non votante!!! (cit.)

:D

Z80Fan
15-03-2010, 18:16
Aspetta. Prima hai parlato di modalità VGA a 16 colori, e in questa la palette dei colori va da 0 a 15, esattamente come con l'EGA (a 640x350), con cui condivide tutto (a parte la risoluzione).

Se poi mi parli delle modalità a 256 colori, per queste la palette era organizzata in maniera diversa (ma non ricordo bene; mi pare che erano i primi 8 e gli ultim 8 che mappavano i 16 colori standard e predefiniti di CGA/EGA/VGA, ma non ci metto la mano sul fuoco dopo tanto tempo).

Si io stò lavorando sulla modalità 640x480 16 colori 4 piani, ma penso che la palette sia sempre di 256 entry, di cui solo 16 utilizzate. ebbene, ho cercato di modificare solo le prime 16, ma solo i primi 6 colori e l'8 cambiano, gli altri non si muovono.
Poi ho scoperto che proseguendo con la palette riuscivo a modificare il 7 colore, quindi ora stò cercando gli altri posti dove sono mappati i restanti 8 colori. Non so se mi sono spiegato.

Il DevPac aveva anche gli Include, che io ricordi (altrimenti come si faceva a compilare? :D).
Ho trovato solo un floppy con il compilatore e gli esempi (Devpac 3.18), quando avvio l'assemblazione mi dice "Inserire disco Include31" (che io non ho)

Mattyfog
15-03-2010, 18:39
Io sto prendendo in mano il mio manuale di 1200 pagine :P
raga, ma se si programmasse un os per cellulari, non sarebbe poi trasportabile da cellulare a cellulare facilmente vero?

Z80Fan
15-03-2010, 19:33
Io sto prendendo in mano il mio manuale di 1200 pagine :P
raga, ma se si programmasse un os per cellulari, non sarebbe poi trasportabile da cellulare a cellulare facilmente vero?
Temo proprio di no (almeno, così credo). Magari tra telefoni delle stesso produttore, e della stessa serie, ma un OS generale sarebbe impossibile da fare visto che esiste l'hardware più disparato. Tecnicamente parlando sarebbe possibile, ma bisognerebbe prevedere il caso peggiore (tipo uno con 1 mb di ram, e anche meno), e bisognerebbe scriverlo con estrema modulabilità, in modo che ogni specifico telefonino abbia i suoi driver.
Si esistono Symbian e Android per citarne alcuni, ma penso che per usarli siano i produttori che adeguano l'hardware al software, non non abbiamo questo potere ;)

M4rk191
15-03-2010, 19:36
Io sto prendendo in mano il mio manuale di 1200 pagine :P
raga, ma se si programmasse un os per cellulari, non sarebbe poi trasportabile da cellulare a cellulare facilmente vero?

Manuale di cosa?

M4rk191
15-03-2010, 19:45
Temo proprio di no (almeno, così credo). Magari tra telefoni delle stesso produttore, e della stessa serie, ma un OS generale sarebbe impossibile da fare visto che esiste l'hardware più disparato. Tecnicamente parlando sarebbe possibile, ma bisognerebbe prevedere il caso peggiore (tipo uno con 1 mb di ram, e anche meno), e bisognerebbe scriverlo con estrema modulabilità, in modo che ogni specifico telefonino abbia i suoi driver.
Si esistono Symbian e Android per citarne alcuni, ma penso che per usarli siano i produttori che adeguano l'hardware al software, non non abbiamo questo potere ;)

Sono d'accordo. Da ignorante, posso solo dire che quasi la totalità dei cellulari utilizza processore ARM-based, quindi volendo, si potrebbe compilare i sorgenti una sola volta (senza utilizzare le eventuali istruzioni o estensioni caratteristiche di un'architettura) e poi eseguirle su ogni terminale. E' però vero che uno smartphone, ad esempio, può offrire connettività Bluetooth o Wi-fi, mentre un altro può può offrire solo una delle due o non offrire affatto connettività wireless, inoltre, c'è da considerare il chipset, di cui si dovrebbero conoscere le specifiche, per interfacciare il software. Come ha detto cesare di mauro nel caso di Symbian e Android sono i produttori HW che si adattano al SW e non viceversa, per cui, il tuo SO dovrebbe diventare appetibile per i produttori :sofico:

Z80Fan
15-03-2010, 19:52
75331
Ecco il favoloso 640x480, con i suoi mitici 16 colori :D

Veramente strana la cosa:
I primi 6 colori (dal nero al magenta scuro) sono mappati correttamente dal 0 al 5, il 7° colore (indice 6) è mappato all'indice 20, l'8° colore (indice 7) è al posto giusto, e gli altri colori partendo dal grigio chiaro (indice 8) sono mappati a tutti di seguito a partire dall'indice 56.


Boh.

cdimauro
15-03-2010, 19:56
Si io stò lavorando sulla modalità 640x480 16 colori 4 piani, ma penso che la palette sia sempre di 256 entry, di cui solo 16 utilizzate. ebbene, ho cercato di modificare solo le prime 16, ma solo i primi 6 colori e l'8 cambiano, gli altri non si muovono.
Poi ho scoperto che proseguendo con la palette riuscivo a modificare il 7 colore, quindi ora stò cercando gli altri posti dove sono mappati i restanti 8 colori. Non so se mi sono spiegato.
Ti sei spiegato, ma mi sembra un'altra scheda grafica, non una VGA. :D

Io non ricordo assolutamente di questi problemi.
Ho trovato solo un floppy con il compilatore e gli esempi (Devpac 3.18), quando avvio l'assemblazione mi dice "Inserire disco Include31" (che io non ho)
Da qui (http://amigadev.elowar.com/) dovresti prendere i sorgenti degli include dall'ultimo link (ADCD v2.1).

Z80Fan
15-03-2010, 20:26
Ti sei spiegato, ma mi sembra un'altra scheda grafica, non una VGA. :D

Io non ricordo assolutamente di questi problemi.
Forse è solo colpa della macchina virtuale

Da qui (http://amigadev.elowar.com/) dovresti prendere i sorgenti degli include dall'ultimo link (ADCD v2.1).
No non ci sono i sorgenti, solo i manuali (in puro stile Unix devo aggiungere ;)).

cdimauro
15-03-2010, 20:43
Forse è solo colpa della macchina virtuale
A questo punto penso di sì, perché io ricordo che funzionava benissimo la modifica dei primi 16 colori della palette.
No non ci sono i sorgenti, solo i manuali
Ho visto. OK, questo fine settimana recupero l'hd esterno, rimonto l'immagine del mio vecchio HD dell'Amiga, estraggo gli include e te li faccio avere.
(in puro stile Unix devo aggiungere ;)).
E' in stile AmigaGuide. :cool:

rеpne scasb
16-03-2010, 09:03

Z80Fan
16-03-2010, 13:16
Non e' strano e' normale. Il BIOS della scheda grafica VGA a 640x480x4 (12h), setta tali anomali indici per retrocompatibilita' con la scheda grafica EGA. E' possibili modificare tale configurazione intervenendo sullo "Attribute controller register" alla porta 3C0h registri 0h/0Fh (Palette register). Per ogni indice e' necessario specificare un color DAC register (solo 6 bit). Per default le aatribuzioni sono:

0h,1h,2h,3h,4h,5h,14h,7h,38h,39h,3Ah,3Bh,3Ch,3Dh,3Eh,3Fh

Se li vuoi in ordine devi scrivere nei registri 03C0h/0h-0Fh:

0h,1h,2h,3h,4h,5h,6h,7h,8h,9h,0Ah,0Bh,0Ch,0Dh,0Eh,0Fh

P.S. *Ricordati che l'Attribute controller utilizza un sistema di accesso flip/flop, e non ad indirizzamento indicizzato (index=reg+1h).

Hey grazie! Oggi che torno a casa dò un'occhiata.

Z80Fan
16-03-2010, 18:40
Grande! Ora i colori sono ai posti giusti! :D
Grazie anche della routine, anche se non ho dovuto usarla.

Aggiornamenti vari:
Anche se il sistema VGA non è completamente a posto (volevo creare anche il codice di inizializzazione e di registrazione del device), vi carico i sorgenti attuali e anche l'immagine floppy col kernel nuovo e grub caricati, così se qualcuno vuole provare a fare modifiche e compilare, può usare direttamente il mio Makefile che in un colpo solo compila e aggiorna anche l'immagine.

Nuovi Sorgenti (scaricabili anche dalla prima pagina):
http://z80fan.altervista.org/kernel/SuperKernel-v0.04a.tar.bz2

Immagine Floppy (da montare sulla VM):
http://z80fan.altervista.org/kernel/ImmaginiDischi/floppy-grub-kernel-0.04a.tar.bz2

Ho pure provato ad eseguire questo codice sulla macchina reale, con scarsi risultati :( Cioè entra nella modalità grafica (nn sò se 640x480, ma in qualche grafica entra), ma mostra righe e colori strani. Penso che il framebuffer non sia nella posizione tradizionale.
Dovrò riprovare con il sistema VESA e vedere se riesco a risolvere quei problemini di comunicazione tra kernel e grub, perchè avere la modalità vesa funzionante sarebbe una cosa fantastica (1024x768 e più senza muovere un dito :D)

Z80Fan
16-03-2010, 19:11
x repne scasb (se segue ancora il thread)

Visto che sembra che tu conosca bene la VGA, sai anche come ottenere un 640x480 a 256 colori lineare e non planare (se è fattibile)?

cdimauro
16-03-2010, 20:00
Non ci sarebbe lo spazio, perché occupa 300KB e con la VGA ne hai soltanto 256KB.

In teoria si potrebbe arrivare a 640x400, ma non ricordo che nella VGA standard ci si possa arrivare.

Fino a 360x480 sì.

In alternativa, senza VESA potresti provare a riconoscere il chipset e programmarlo opportunamente.

rеpne scasb
16-03-2010, 20:11

Z80Fan
16-03-2010, 20:18
In alternativa, senza VESA potresti provare a riconoscere il chipset e programmarlo opportunamente.
Eh... magari con VirtualBox e Bochs ancora ancora, ma non c'ho voglia di reverse-engineering-are la mia gtx275 per visualizzare una scritta a 256 colori :D

In standard VGA non e' possibile (servirebbe un clock a 50.35 Mhz in tweaked x13). Sei costretto a passare attraverso lo standard VESA (4F02h/xxxxh). Per il modo video 640x480x8 poni 101h in BX (se vuoi fare le cose per bene devi passare attraverso la 4F00h (scan video modes) e la 4F01h (mode info)). Ricordati che per aprire un modo video con l'indirizzamento lineare devi settare ad uno il bit 14 di BX, altrimenti avrai un modo video segmentato (VBE>=2.0). La base dell'indirizzamento lineare la leggi attraverso la 4F01h.
Ok, quindi è proprio fisicamente impossibile. Peccato, e peccato ancora visto che non posso usare le chiamate del bios in modalità protetta, mi tocca sperare che grub quando gli faccio la richiesta me la setti bene la modalità :(

rеpne scasb
16-03-2010, 20:26

Z80Fan
16-03-2010, 20:46
E perche' mai: hai cercato la PMID nella ROM della VGA?
Eh eh, il mitico punto di ingresso in modalità protetta... si ho dato un'occhiata alla specifica vbe3, e ho visto che richiedeva di scorrere l'immagine, copiarla in un'area di memoria e creare descrittori e segmenti apposta...
Avevo proprio provato la VGA date la (relativa) difficoltà con questo tipo di entry point e dati i pochi risultati con il Vesa settato da grub, ma vista l'altra (relativa) difficolta con la VGA e la sua (per gli standard odierni) obsolescenza, mi toccherà riprovare :)

Visto che tu sei bravo con l'assembly (dal tuo nick-name non si capiva proprio :D), non è che puoi creare una semplice routine per tornare in modalità reale (o in irreale se vuoi) subito dopo l'entrata di grub e prima di fare tutte le nostre inizializzazioni solo per chiamare il bios vbe e settare la modalità grafica? Sarebbe molto più semplice visto che tanto non vogliamo dover fare cose complesse una volta in esecuzione, ci basta solo un framebuffer dove scrivere, e poi, se dovessimo in futuro compilarlo per l' amd64, non avremo problemi.

rеpne scasb
16-03-2010, 21:35

rеpne scasb
16-03-2010, 22:02

banryu79
17-03-2010, 08:45
Visto che tu sei bravo con l'assembly...

@Z80Fan:
per dovere di cronaca: repne scasb è una lei non un lui :)

Kralizek
17-03-2010, 09:42
@Z80Fan:
per dovere di cronaca: repne scasb è una lei non un lui :)

e mi permetto di aggiungere che, in fatto di programmazione (per il resto non posso giudicare), ha le palle cubiche di titanio :P

Tesinevb
17-03-2010, 09:58
Non sono in grado di scrivere una "semplice" routine. Sono in grado di scrivere una "complessa" routine. Considera che e' necessario:

1) Disabilitare gli interrupt (CLI + NMI).
2) Assicurarsi che la paginazione sia abilitata
3) Trasferire il contollo ad un indirizzo lineare che sia uguale ad un indirizzo fisico
4) GDT e IDT in "identity mapped"
5) Pulire il bit PG nel registro CR0
6) Merrere 0h in CR3 per svuotare la TLB
7) Trasferire il controllo in un segmento leggibile con limite 0FFFFh (CS)
8) SS/DS/ES/FS/GS con selettore (0FFFFh/0/0/1/1/??)
9) Esecuzione di LIDT
10) Ripulire di nuovo PG
11) JMP su indirizzo in real-mode
12) Settare SS/DS/ES/FS/GS opportunamente.
13) STI + riabilitazione NMI

seguo il 3d:

E' un piacere leggerti,fenomena... ciao da okay

astorcas
17-03-2010, 15:15
Z80Fan posso chiederti a quali risorse ti affidi per lo sviluppo?

M4rk191
17-03-2010, 15:37
e mi permetto di aggiungere che, in fatto di programmazione (per il resto non posso giudicare), ha le palle cubiche di titanio :P

Sicuramente, ricordo un programma in C per la risoluzione di schemi sudoku, molto leggibile e ben indentato :sofico:

A parte gli scherzi, sembra che ne sappia molto. Sperando di entrare all'uni a settembre, spero di imparare anch'io qualcosa che mi permetta di dedicarmi alla programmazione.

Z80Fan
17-03-2010, 16:40
Non sono in grado di scrivere una "semplice" routine. Sono in grado di scrivere una "complessa" routine. Considera che e' necessario:
Beh, avevo detto "semplice" così per dire, sò che non è una passeggiata indolore ;)

1) Disabilitare gli interrupt (CLI + NMI).
2) Assicurarsi che la paginazione sia abilitata
3) Trasferire il contollo ad un indirizzo lineare che sia uguale ad un indirizzo fisico
4) GDT e IDT in "identity mapped"
5) Pulire il bit PG nel registro CR0
6) Merrere 0h in CR3 per svuotare la TLB
7) Trasferire il controllo in un segmento leggibile con limite 0FFFFh (CS)
8) SS/DS/ES/FS/GS con selettore (0FFFFh/0/0/1/1/??)
9) Esecuzione di LIDT
10) Ripulire di nuovo PG
11) JMP su indirizzo in real-mode
12) Settare SS/DS/ES/FS/GS opportunamente.
13) STI + riabilitazione NMI
1) Si possono disabilitare gli NMI ???
2) Perchè devo avere la paginazione per forza abilitata?
3) E' già così nel nostro caso (no paginazione)
4) Idem, 2 segmenti code e data da 0 a 4gb
6) Cos'è la TLB?
7-13) Non c'è problema
Cosa ne pensi di questo codice? (Per lo meno per i punti 9-10-11-12-13)
http://wiki.osdev.org/Real_mode

Grub? Mi permetto di darti un consiglio: scriviti il boot-loader da solo.
P.S. Se proprio hai difficolta puoi settare modo video prima di GRUB all'interno dell'MBR, ma ti sconsiglio questa procedura.
E perchè? è già pronto e supporta una linea di comando e molti file system, oltre a diversi dispositivi (e ci carica i moduli lui)
Avevamo provato a fare un bootloader, ma non funzionava :( Non eseguiva la chiamata all'interrupt 0x13.

@Z80Fan:
per dovere di cronaca: repne scasb è una lei non un lui :)
Vabbè, spero non si sia offesa ;)

Z80Fan posso chiederti a quali risorse ti affidi per lo sviluppo?
Principalmente uso http://wiki.osdev.org, ha abbastanza informazioni (anche se qualche volta sbagliate, vedi il controller floppy, che ora hanno sistemato per fortuna). Per tutto il resto cerco di volta in volta info su quello che mi serve. Libri cartacei non ne uso, cerco tutto su internet.
Mi piacerebbe dare un'occhiata a "Moderni sistemi operativi" di Tanenbaum

rеpne scasb
17-03-2010, 17:11

rеpne scasb
17-03-2010, 17:34

Z80Fan
17-03-2010, 18:00
Appunto, non sai di preciso quel che fa. Non conosco questo "grub" ne l'ho mai utilizzato ma "secondo me", la fase di lancio del sistema operavito e' "critica", e necessita di un controllo assoluto.
Beh, mi carica il kernel seguendo le indicazioni contenute nel file elf, quindi il kernel è caricato in memoria nella posizione corretta. Per la specifica multiboot, lascia il sistema nello stato di inizializzazione eseguito dal bios, in modalità protetta con le interruzioni disabilitate e con una gdt temporanea che il kernel deve obbligatoriamente sostituire al più presto (come facciamo noi).
Quindi non fà molto, mi serve solo per caricare il kernel in formato elf e togliermi molte rogne.
In questo particolare caso che mi serve per forza essere in modalità reale per settare la modalità grafica, è uno svantaggio essere già in protetta, ma se riesco a farlo fare a lui (lo ho dovuto compilare con una patch che aggiungeva questa funzionalità), mi è molto più semplice senza dover trafficare con le rogne imposte da questa architettura (che personalmente a me non piace per niente, ho mai detto che ho cominciato a progettare un processore? Sono riuscito anche a farne una versione provvisoria a 2 bit :D)

Poi se voglio sapere esattamente cosa fà, mi guardo i sorgenti ;)

Che problema avevi?
Non caricava i settori che gli chiedevo, e continuava a rientrarmi nel bootloader a 7c00. Non trovo più i sorgenti purtroppo. Sarà stato cmq un errore subdolo.

Per approfondimenti ed una corretta implementazione di consiglio di leggere: IA32 Intel Architecture Software Developer's Manual - Volume 3: System Programming Guide - Sezione 9.9.2: Switching Back to Real-Address Mode. (Order number: 253668-014)
Ok grazie, cercherò di trovarne la versione da scaricare direttamente da Internet (come ho fatto con i manuali per l' AMD64) invece che dover stare a ordinare il disco.

cionci
17-03-2010, 18:04
Appunto, non sai di preciso quel che fa. Non conosco questo "grub" ne l'ho mai utilizzato ma "secondo me", la fase di lancio del sistema operavito e' "critica", e necessita di un controllo assoluto.

E' il boot loader di Linux ;)

rеpne scasb
17-03-2010, 18:12

Z80Fan
17-03-2010, 18:22
Cos'e' questo Linux? :Prrr:

"*** Opinione personale ***"

Linux....e meglio che non dico nulla, per non offendere le menti sensibili. Ma intanto modifico la mia firma.

Non c'è niente di male, è un sistema operativo come gli altri.

E trovo molto utile Wikipedia !

:Prrr:

rеpne scasb
17-03-2010, 18:42

Z80Fan
17-03-2010, 18:48
Non e' come gli altri sistemi operativi. E' il sistema operativo della liberta', mi ricorda (attenzione e' scurrile): http://www.youtube.com/watch?v=u-NRmT0R5eg

Ma anch'io la trovo utile, quando non mi ricordo la data di nascita di Verdi. Ma ha anche effetti collaterali, tipo quello di generare persone che pensano di aver letto il "Signore degli anelli" solo perche' hanno consultato la relativa pagina su Wikipedia. Non sei esperto in nulla se leggi "solo" wikipedia. Wikipedia: la scorciatoia della cultura.

Allora specifichiamo, se con "Linux" e con "Wikipedia" intendiamo la definizione data da fanboy e utonti che non sanno neanche di quello che parlano, allora anch'io sarei tra i primi che dicono Basta!.

Cmq ho scaricato i manuali Intel, stò dando un'occhiata proprio adesso.

rеpne scasb
17-03-2010, 18:52

Z80Fan
17-03-2010, 19:03
E qual'e' questa definizione? Sono curiosa.

Ad esempio chi dice che Linux è perfetto perchè è open source e libero, non ha bug, gira 3000% più veloce di Windows anche su un pc IBM da 4.77 Mhz, quel genere di definizioni, o date da persone estremiste che condannano come il diavolo il modello chiuso del software (vedi Stallman, che potrebbe aver fatto anche cose "buone", ma per tutto il resto è un buffone (imho) ). Poi Linux non è nato come kernel che doveva uccidere tutti gli eretici nel mondo chiuso, ma era un semplice progettino di un ragazzo che aveva poco da fare o che aveva buone idee, e le ha volute condividere con gli altri. Se poi qualcuno la usato come strumento per supportare la sua religione, quello è un altro discorso.

Io non uso Linux perchè sono contro il modello chiuso o contro le multinazionali, lo uso solo perchè lo ho trovato un sistema operativo all'altezza delle mie esigenze e perchè Windows non mi soddisfava completamente. Magari ho sacrificato un po' di facilità per altre funzioni che mi sono tornate utili per sviluppare il kernel (ad esempio trattare un'immagine floppy come una periferica senza usare programmi esterni). Difatti, anche se sostengo il modello open source, non sono estremista, ho cmq l'altra partizione con Windows per giocare.

bobbytre
17-03-2010, 19:07
Ad esempio chi dice che Linux è perfetto perchè è open source e libero, non ha bug, gira 3000% più veloce di Windows anche su un pc IBM da 4.77 Mhz, quel genere di definizioni, o date da persone estremiste che condannano come il diavolo il modello chiuso del software (vedi Stallman, che potrebbe aver fatto anche cose "buone", ma per tutto il resto è un buffone (imho) ). Poi Linux non è nato come kernel che doveva uccidere tutti gli eretici nel mondo chiuso, ma era un semplice progettino di un ragazzo che aveva poco da fare o che aveva buone idee, e le ha volute condividere con gli altri. Se poi qualcuno la usato come strumento per supportare la sua religione, quello è un altro discorso.

Io non uso Linux perchè sono contro il modello chiuso o contro le multinazionali, lo uso solo perchè lo ho trovato un sistema operativo all'altezza delle mie esigenze e perchè Windows non mi soddisfava completamente. Magari ho sacrificato un po' di facilità per altre funzioni che mi sono tornate utili per sviluppare il kernel (ad esempio trattare un'immagine floppy come una periferica senza usare programmi esterni). Difatti, anche se sostengo il modello open source, non sono estremista, ho cmq l'altra partizione con Windows per giocare.

Ogni volta che lasci un messaggio su questo forum , tu stai usando linux --> http://www.hwupgrade.it/sito/storia/index3.html

eraser
17-03-2010, 19:08
E qual'e' questa definizione? Sono curiosa.

Quanto condivido la tua firma :p

eraser
17-03-2010, 19:10
Ogni volta che lasci un messaggio su questo forum , tu stai usando linux --> http://www.hwupgrade.it/sito/storia/index3.html

:confused:

Z80Fan
17-03-2010, 19:12
Ogni volta che lasci un messaggio su questo forum , tu stai usando linux --> http://www.hwupgrade.it/sito/storia/index3.html
Beh lo immaginavo.

Cmq ora basta parlare di Linux. Ognuno ha le sue opinioni, ed è libero di usare il sistema operativo che più gli aggrada.

rеpne scasb
17-03-2010, 19:29

rеpne scasb
17-03-2010, 19:38

cionci
17-03-2010, 19:45
Io non uso Linux perchè sono contro il modello chiuso o contro le multinazionali, lo uso solo perchè lo ho trovato un sistema operativo all'altezza delle mie esigenze e perchè Windows non mi soddisfava completamente.
Anche io sono della stessa idea. Odio gli estremismi di Stallman.

Z80Fan
17-03-2010, 19:52
Il problema che queste cose* non le dicono solo i "fanboy e utonti" (cit. da tuo precedente messaggio), le dicono pure quelli che sviluppano e ci sono "dentro" (chiaramente non tutti, non conosco "tutti", ma quelli che ho avuto modo di conoscere io**: si (persino in ambito universitario)).
Beh evidentemente stavano pubblicizzando il loro prodotto :D

Oltre a cio': ma dopo quasi 20 anni, sara' mai possibile che non esista qualcosa di nuovo da fare nel campo dei sistemi operativi? Linux cos'e', il sistema operativo definitivo?
Se è per questo, anche Windows è sempre Windows, pure MacOS (per lo meno dal 2000, da quando hanno cambiato architettura).
Per adesso ci sono questi tre e ce li dobbiamo tenere, se poi esce un sistema rivoluzionario che risolve tutti i problemi di Linux e lo soppianta in pieno, sarò ben lieto di provarlo.

* Perfezione - Il mo modo e' l'unico corretto e tutti gli altri sbagliano - C'e' un solo modo di fare le cose ed e' come le faccio io - Nessuna accettazione di critiche.
Non conosco come te persone che "sono dentro", ma penso che sia un problema loro se si sentono offesi se qualcuno gli dà un consiglio, non di Linux in generale (e poi parlare di "Linux" come sistema operativo è errato, Linux è solo il kernel, l'1% del sistema operativo, quindi in mezzo ci son tanti progetti e programmi con idee diverse su come fare le cose)

Ho capito che e' comodo e didatticamente stimolante, solo che quando lo si usa si da fiato ai tromboni dei signori sopracitati**.
Non capisco perchè "didatticamente": Linux e quello che gli và dietro forma un sistema operativo completo e direi abbastanza maturo, ne parli come se fosse un giocattolo o una moda passeggiera. Poi, come ho detto prima, io lo uso solo perchè mi fornisce strumenti che mi sono utili, se poi i signori sopracitati si sentono felici, ben per loro, a me non fà nessuna differenza se se ne parla male o bene, mi scoccia cmq quando se ne parla a sproposito, sia per ignoranza sia per tirare acqua al proprio mulino.

Sara' arrivata l'ora di cambiare?
E' per questo che stò scrivendo un sistema operativo :D

Pero' una cosa permettimi di chiedertela*: stai scrivendo l'ennesimo fork di Linux?
Tecnicamente non si tratta di un fork perchè non stò usando il suo codice e stò riscrivendo tutto da capo. No non ha nulla a che fare con Linux (a livello di codice e di funzionamento interno), l'unico punto di contatto pensavo di fare una libreria di "emulazione" giusto per compilare qualche programma già pronto per velocizzare lo sviluppo (che ne sò, magari la shell o il compilatore). Sicuramente a livello di ABI non sarà compatibile.

Tesinevb
17-03-2010, 19:54
Pero' una cosa permettimi di chiedertela*: stai scrivendo l'ennesimo fork di Linux?

* Non ho letto l'intero thread.

rep ti stimo non sai quanto!!!

...è un ragazzo (anche bravo) è vorrei tanto leggerti su questo "3d storico"...

x z80fan... "qui pro quò"... rep è come "il silenzio degli innocenti"... non creare flame Cmq ora basta parlare di Linux. Ognuno ha le sue opinioni, ed è libero di usare il sistema operativo che più gli aggrada.... perfetto!

rispondi pure ai quesiti di rep ma mantenete il "non flame" che vorrei leggere i quote di rep in merito al 3d...

ciao amici

by okay

Z80Fan
17-03-2010, 20:13
x z80fan... "qui pro quò"... rep è come "il silenzio degli innocenti"... non creare flame
rispondi pure ai quesiti di rep ma mantenete il "non flame" che vorrei leggere i quote di rep in merito al 3d...
Boh mi sembra di non stare creando flame, ho solamente risposto con le mie argomentazioni a una domanda che mi ha posto. Lungi da me cominciare flame nel mio stesso thread :D

Cmq son contento che repne sia entrata nel thread, così arrivano anche tutti i suoi ammiratori ;)

rеpne scasb
17-03-2010, 20:18

Tesinevb
17-03-2010, 20:21
Cmq ho scaricato i manuali Intel, stò dando un'occhiata proprio adesso.

ok

cosa ne pensi per il tuo os...

rеpne scasb
17-03-2010, 20:30

Mattyfog
17-03-2010, 21:01
Manuale di cosa?
C++ :D
Io sto prendendo in mano il mio manuale di 1200 pagine :P
raga, ma se si programmasse un os per cellulari, non sarebbe poi trasportabile da cellulare a cellulare facilmente vero?
Temo proprio di no (almeno, così credo). Magari tra telefoni delle stesso produttore, e della stessa serie, ma un OS generale sarebbe impossibile da fare visto che esiste l'hardware più disparato. Tecnicamente parlando sarebbe possibile, ma bisognerebbe prevedere il caso peggiore (tipo uno con 1 mb di ram, e anche meno), e bisognerebbe scriverlo con estrema modulabilità, in modo che ogni specifico telefonino abbia i suoi driver.
Si esistono Symbian e Android per citarne alcuni, ma penso che per usarli siano i produttori che adeguano l'hardware al software, non non abbiamo questo potere ;)Sono d'accordo. Da ignorante, posso solo dire che quasi la totalità dei cellulari utilizza processore ARM-based, quindi volendo, si potrebbe compilare i sorgenti una sola volta (senza utilizzare le eventuali istruzioni o estensioni caratteristiche di un'architettura) e poi eseguirle su ogni terminale. E' però vero che uno smartphone, ad esempio, può offrire connettività Bluetooth o Wi-fi, mentre un altro può può offrire solo una delle due o non offrire affatto connettività wireless, inoltre, c'è da considerare il chipset, di cui si dovrebbero conoscere le specifiche, per interfacciare il software. Come ha detto cesare di mauro nel caso di Symbian e Android sono i produttori HW che si adattano al SW e non viceversa, per cui, il tuo SO dovrebbe diventare appetibile per i produttori :sofico:

Beh ma scusate anche windows si adatta all'hardware: c'è chi ha il wireless e il bluetooth e chi no, tanto per fare un esempio.
Inoltre basterebbe impostare delle specifiche tecniche minime per eseguire l'os.
Certamente io non sono in grado di creare tutto ciò e per il momento non lo faccio ma mi chiedevo una cosa:
quello che stai creando tu (Z80Fan) è un kernel, giusto? Ecco, questo gira su ogni pc giusto? Allora perchè non si può fare un os che funzioni su ogni cellulare?

Kralizek
17-03-2010, 23:14
perchè quando dici "pc" hai già definito un paio di regole "architetturali" al quale attenerti. quando dici "smartphone" o "cellulare" non hai detto nulla :)

Mattyfog
18-03-2010, 06:48
e quindi non possiamo raggruppare neppure una certa categoria + potente di cellulari?
:cry:

M4rk191
18-03-2010, 14:39
Leggendo la firma di repne mi viene da chiedermi: in ambito desktop quale OS bisognerebbe utilizzare secondo lei?

Mac OSX al momento è l'unico OS per utenti desktop UNIX 03 compliant. Le distro Linux dovrebbero rispettare una modifica della single UNIX specification (LSB), mentre Windows non è UNIX. Si può obiettare che le distro Linux non rispettino lo standard, mentre per OSX e Windows il discorso non vale, e non vedo neanche cos'altro ci possa essere di "sbagliato" in un OS.
Trovo che sia molto semplice criticare un SO, senza pensare alla mole di lavoro che c'è dietro ad ognuno di essi. Pensare a quanto sia complicato un SO, dovrebbe far riflettere su quanto siano inutili le critiche che vi si muovono contro, soprattutto se non argomentate.

Z80Fan
18-03-2010, 15:02
Questo ti fa onore, e mi complimento.
Non lo sapevo, sono stata tratta in inganno dalle sue mature considerazioni (e' un complimento).
Quoto.
Beh, grazie (a entrambi)!

Beh ma scusate anche windows si adatta all'hardware: c'è chi ha il wireless e il bluetooth e chi no, tanto per fare un esempio.
Ok, ma quello si tratta solo di disattivare/attivare certe funzioni che non sono essenziali per il funzionamento dell'OS.

Inoltre basterebbe impostare delle specifiche tecniche minime per eseguire l'os.
Allora diventa come ho detto io, è l'hardware che si adatta al software ("se vuoi usare questo os devi avere una cpu arm talitali con minimo tot mb di ram..."); il discorso era fare un os che funzionasse su qualunque telefono.

quello che stai creando tu (Z80Fan) è un kernel, giusto? Ecco, questo gira su ogni pc giusto? Allora perchè non si può fare un os che funzioni su ogni cellulare?
Come ha già risposto Kralizek, per "pc" oggi si intende un sistema dotato di cpu x86, con un chipset di base predefinito, con porte di I/O definite ecc...
Quindi i pc sono molto più accumunati tra di loro di quanto non siano i cellulari. Se fossimo ancora negli anni '80 sarebbe lo stesso discorso con i computer poichè avremo Commodore, Sinclair, Tandy, Apple, per dirne alcuni, tutti con architetture completamente differenti (con la notevole eccezione dello standard giapponese MSX).

fero86
18-03-2010, 16:55
Leggendo la firma di repne mi viene da chiedermi: in ambito desktop quale OS bisognerebbe utilizzare secondo lei? uno fatto da te ad hoc :asd:

scherzi a parte, da quanto ho capito la motivazione della sua firma non é che tutti e tre quei sistemi operativi sono di cattiva qualitá ma la guerra religiosa che ci si monta sopra. i fanboy hanno effettivamente rotto (e io sono uno di loro :asd: dalla parte di Windows per l'esattezza :D) e spesso non apportano alcun contributo utile ad alcun confronto.

Mattyfog
19-03-2010, 08:14
Beh, grazie (a entrambi)!


Ok, ma quello si tratta solo di disattivare/attivare certe funzioni che non sono essenziali per il funzionamento dell'OS.


Allora diventa come ho detto io, è l'hardware che si adatta al software ("se vuoi usare questo os devi avere una cpu arm talitali con minimo tot mb di ram..."); il discorso era fare un os che funzionasse su qualunque telefono.


Come ha già risposto Kralizek, per "pc" oggi si intende un sistema dotato di cpu x86, con un chipset di base predefinito, con porte di I/O definite ecc...
Quindi i pc sono molto più accumunati tra di loro di quanto non siano i cellulari. Se fossimo ancora negli anni '80 sarebbe lo stesso discorso con i computer poichè avremo Commodore, Sinclair, Tandy, Apple, per dirne alcuni, tutti con architetture completamente differenti (con la notevole eccezione dello standard giapponese MSX).

ok quindi anche solo ad esempio le diverse porte miniusb/proprietarie già costituirebbero un problema?

Mendocino89
19-03-2010, 10:50
ok quindi anche solo ad esempio le diverse porte miniusb/proprietarie già costituirebbero un problema?

Con una richiesta del genere non fai altro che confermare il modo errato che hai di approcciarti al problema.
Il connettore di comunicazione/ricarica è l'ultimo dei tuoi problemi se vuoi sviluppare un kernel e quindi un sistema operativo per uno smartphone.

Fossi in te penserei prima di tutto a studiarmi l'architettura di un ben preciso modello e su di esso andrei a scrivere il software nella maniera piu modulare possibile (almeno per come la penso io), in modo di poter semplicemente sostituire un modulo del kernel nel caso in cui, ad esempio, al posto di un chip Wi-Fi Broadcomm venga montato un chip Ralink...

Mattyfog
19-03-2010, 10:53
Ma io non voglio fare un bel niente :P
Ok, capito comunque.
Grazie

Z80Fan
20-03-2010, 16:08
Ho steso una prima versione della procedura di andata e ritorno dalla modalità reale. Non mi ricordavo bene la sintassi dell'accesso alla memoria, perciò potrebbero esserci degli errori; è da considerare uno pseudocodice. In più non è finito, ci sono altre cose da inserire, ma più o meno il modello è quello.

formato programma in real mode:
+---------+ 0
| A |
+---------+
| CODE |
+---------+
| DATA |
+---------+
| STACK |
+---------+ 64k

A: 256 byte di dati vari di comunicazione kernel-procedura:
00: (4) indirizzo 32bit di ritorno
04: (2) selettore del segmento codice kernel
06: (2) selettore del segmento dati kernel
08: (2) selettore del segmento stack kernel
0A: (4) esp kernel

; Operazioni nel codice C:
; - Imposto seg. codice, limite 0xFFFF, offset= 0x8000
; - Imposto seg. dati, limite 0xFFFF, offset = 0x8000
; - copio nella memoria bassa a partire dall'offset che ho scelto sopra il codice
; da far girare in modalità reale
; - eseguo questa proc assembly:

[BITS 32]

JumpToReal:
cli ; tolgo interrupt

mov dword [seg.dati:0000], ReturnFromReal ; sintassi non sicura / salvo l'indirizzo di ritorno per la procedura dopo
mov ax, cs
mov word [seg.dati:0004], ax ; salvo il segmento codice
mov ax, ds
mov word [seg.dati:0006], ax ; salvo il segmento dati (gli altri sono uguali a ds)
mov ax, ss
mov word [seg.dati:0008], ax ; salvo il segmento stack
mov dword [seg.dati:000A], esp ; salvo lo stack pointer per ritrovare dopo lo stack del kernel

mov ax, seg.dati ;imposto il nuovo segmento dati
mov ds, ax
mov es, ax
mov ss, ax ; dove c'è anche lo stack

mov sp, 0xFFFF ;imposto il mio nuovo stack pointer

jmp far seg.codice:0x0100 ; non sono sicuro di questa sintassi (salto e non chiamo perchè lo stack non è in comune)

ReturnFromReal: ; qui la procedura salterà simulando un ritorno "ret"
; da questo punto la procedura sarà già tornata in modalità protetta

mov word ax, [seg.dati:0006] ; reimposto il segmento dati (gli altri sono uguali a ds)
mov ds, ax
mov es, ax
mov gs, ax
mov fs, ax

mov word ax, [seg.dati:0008] ; reimposto il segmento stack
mov ss, ax

mov dword esp, [seg.dati:000A] ; reimposto lo stack pointer del kernel

; impostare eax a un valore per il ritorno in C
; da notare che torniamo con gli interrupt disattivati, il kernel dovrà ricaricare la IDT prima di riattivarli
ret ; ritorno al kernel


; Il codice seguente verrà copiato in memoria bassa e richimato dal codice sopra

[BITS 16]
org 0x100

InizioCodice16Bit:

lidt [idt_real] ;nuova tabella dei descrittori (fatta in modo che si sovrapponga alla IVT reale)

; Disable paging (we need everything to be 1:1 mapped).
mov eax, cr0
mov [savcr0], eax ; save pmode CR0
and eax, 0x7FFFFFFE ; Disable paging bit & enable 16-bit pmode.
mov cr0, eax

jmp far 0x8000:GoRMode ; Perform Far jump to set CS.

GoRMode:
sti ; Restore interrupts -- be careful, unhandled int's will kill it.
; qui si fa la chiamata al bios
cli

; si registrano i risultati della comunicazione nell'apposita area

; si reimposta la modalità protetta

[BITS 32]
GoPMode:
; si prende cs dall'area di comunicazione e si fa un far jump per reimpostarlo
; ??? Si può usare un registro generale come selettore di segmento?
mov dword eax, [0]
mov word bx, [4]

jmp far bx:eax ; possibile?

; dati per la routine in reale
idt_real:
dw 0x3ff ; 256 entries, 4b each = 1K
dd 0 ; Real Mode IVT @ 0x0000

savcr0:
dd 0 ; Storage location for pmode CR0.

FineCodice16Bit:
db 0

Domanda: è possibile usare un registro generale come selettore di segmento in un far jump? Per un esempio vedere l'etichetta GoPMode cerso la fine del listato.

Z80Fan
20-03-2010, 18:54
Per caso qualcuno di voi ha provato il kernel con attiva la modalità VGA su hardware reale? Perchè a me non funziona, setta la modalità ma poi non si vede nulla, solo spazzatura. penso che la mia scheda imposti il framebuffer in un'altro posto.

cdimauro
20-03-2010, 19:14
Domanda: è possibile usare un registro generale come selettore di segmento in un far jump? Per un esempio vedere l'etichetta GoPMode cerso la fine del listato.
No, ma fare una jmp far [0] dovrebbe essere possibile.

Z80Fan
24-03-2010, 16:51
Uff ora capisco perchè molti homebrew OS rimangono in modalità testuale :(

Si può impostare la VGA in modo da avere una modalità testo con più righe e/o più colonne? Se si, la memoria continuerebbe a partire da B8000 ?

cdimauro
25-03-2010, 07:24
Con più righe sicuramente: almeno alla 80x50 dovresti arrivare tranquillamente, e sempre sfruttando il segmento B800. Mi sembra si dovesse impostare un font 8x8 allo scopo.

Ma se non ricordo male c'era un modo per arrivare ad avere 90 colonne anziché 80.

Purtroppo sono cose a cui ho lavorato una quindicina d'anni fa, e non ti posso fornire precisi dettagli.

Z80Fan
25-03-2010, 19:25
Con più righe sicuramente: almeno alla 80x50 dovresti arrivare tranquillamente, e sempre sfruttando il segmento B800. Mi sembra si dovesse impostare un font 8x8 allo scopo.

Ma se non ricordo male c'era un modo per arrivare ad avere 90 colonne anziché 80.

Purtroppo sono cose a cui ho lavorato una quindicina d'anni fa, e non ti posso fornire precisi dettagli.
Si a 90 dovrei arrivarci cambiando un bit in un registro, vedrò.
Proprio oggi ho avviato un vecchio computer con Slax, e mi ha fatto impostare una risoluzione testo di 132x90 o giù di li; forse è riuscito solo attraverso VESA?

cdimauro
25-03-2010, 20:01
Sì, sarà stata la VESA sicuramente.

Per il bit di cui parli, sarà forse quello relativo alla duplicazione dell'ottava colonna dei caratteri.

Mi spiace non poter essere preciso, ma purtroppo non ricordo bene.

rеpne scasb
26-03-2010, 18:18

Z80Fan
30-03-2010, 18:09
Non ho lavorato molto al kernel in questi ultimi giorni, mi son dedicato ad altro. Cmq pensavo oggi che chi dice di usare il BIOS invece di scriversi i driver da capo, ha ragione. Driver già pronti, semplici, documentati...
Riprendendo il discorso precedente, bisogna vedere come fare le chiamate al BIOS, uscire e rientrare dalla protetta o un task vm86: io pensavo nell'uscire e rientrare, dato anche il fatto che nelle estensioni a 64 bit non c'è la vm86 (oltre alla gestione a segmenti e il task-switching hardware), e implementare un sistema a 32 bit sotto solo per far girare un task vm86 prende troppo tempo (sopratutto di debug); dato che sono relativamente pochi i momenti in cui serve il BIOS (per le periferiche di cui non si riesce a scrivere un driver alternativo), non dovrebbe essere un problema.
Voi cosa ne pensate?

cdimauro
30-03-2010, 18:41
Meglio uscire e rientrare dalla modalità protetta: ti sbrighi molto prima (è tutto codice già esistente).

Per le finezze c'è sempre tempo.

Z80Fan
01-04-2010, 08:51
Sognando alte risoluzione e milioni di colori, mi son messo a scrivere seriamente un driver per la tastiera :D
Sto scrivendo anche una piccola shell, ma mi son imbattuto in un curioso fatto:
certe volte, la funzione per leggere dal device "keyboard", invece di fermarsi finché nel buffer non c'è un carattere, ritorna e mette nel buffer il codice dell'ultimo tasto premuto; la cosa curiosa è anche che non lo fa subito e velocemente (come se ci fosse un errore nel ciclo di attesa), ma lo fa dopo un numero variabile di secondi, e lo fa anche ripetutamente. Un esempio per chiarire le idee ;) :

Premo A
sullo schermo appare il debug che mi dice che ho premuto A
Premo B
debug B
Premo C
debug C
non premo niente
qualche secondo
debug C
qualche secondo
debug C
qualche secondo
debug C

Provando ulteriormente, ho scoperto che la pausa cambia se metto o tolgo i messaggi di debug in certi posti!

[EDIT] Falso allarme, il bug c'è solo sulle macchine virtuali ... -.-

Z80Fan
07-04-2010, 21:08
Ho cominciato a scrivere una specie di shell. Ora non fa molto, sopratutto manca delle funzioni di editing della riga (ora funziona solo il backspace), e sopratutto il driver della tastiera manca della mappa italiana completa dei tasti modificati da shift, alt e ctrl.

Tommo
07-04-2010, 21:49
E' lunga :D

cdimauro
08-04-2010, 07:40
Ho cominciato a scrivere una specie di shell. Ora non fa molto, sopratutto manca delle funzioni di editing della riga (ora funziona solo il backspace), e sopratutto il driver della tastiera manca della mappa italiana completa dei tasti modificati da shift, alt e ctrl.
Ma non fai prima a eseguire il porting di un linguaggio come Python, e a realizzare tutte le applicazioni che ti servono con dei semplici script?

Non è una battuta: Python ormai ha preso piede anche come strumento di amministrazione dei sistemi (http://oreilly.com/catalog/9780596515829).

Inoltre un bel po' di shell interattive per i programmi più disparati (ad esempio per FireBird (http://firebirdsql.org/index.php?op=devel&sub=python&id=pytools)) sono scritti con questo linguaggio (che tra l'altro ha una libreria nativa proprio per realizzare command line interattive).

Z80Fan
08-04-2010, 13:48
E' lunga :D
Meno di quanto credi ;)
Ma non fai prima a eseguire il porting di un linguaggio come Python, e a realizzare tutte le applicazioni che ti servono con dei semplici script?
Non è una battuta: Python ormai ha preso piede anche come strumento di amministrazione dei sistemi (http://oreilly.com/catalog/9780596515829).
Inoltre un bel po' di shell interattive per i programmi più disparati (ad esempio per FireBird (http://firebirdsql.org/index.php?op=devel&sub=python&id=pytools)) sono scritti con questo linguaggio (che tra l'altro ha una libreria nativa proprio per realizzare command line interattive).
Sapevo che prima o poi ne avremmo parlato :D
Non ho nessun problema a portare python, ma cmq, se il driver per la tastiera non comprende tutti i tasti, c'è poco da fare. Presumo poi che python abbia bisogno di un sistema per accedere ai file, per gestire la memoria... son tutte cose da fare prima di poter portare l'interprete (e le sue librerie).
Questa non sarà la shell definitiva (o si?), mi serviva solo un modo per rendere l'os più "interattivo", ora l'unica interattività sono i messaggi di debug colorati! ;)

cdimauro
08-04-2010, 16:07
OK, è troppo presto ancora. :stordita:

Mattyfog
11-04-2010, 21:38
Come mai non trovo il thread in prima pagina? :stordita:
Z80Fan forse il popolo non ti vuole più, da oggi :banned:
:asd:
Ah, ti ho scritto una mail ;)

Z80Fan
12-04-2010, 13:13
Come mai non trovo il thread in prima pagina? :stordita:
Z80Fan forse il popolo non ti vuole più, da oggi :banned:
:asd:
è vero, mi devo dare da fare !!! Riporterò il thread al suo vecchio splendore ! :D
(Ho perso un po' la voglia da quando ho ritrovato il cd di Stronghold Deluxe ed ho scoperto che gira divinamente sotto Wine ;))

Ah, ti ho scritto una mail ;)
Ricevuta :)

Z80Fan
12-04-2010, 18:04
Mentre pensavo ad usare la modalità testuale per usarla come una interfaccia grafica a bassa risoluzione, mi son venuti dei dubbi su come far comunicare i processi con i driver, e questi con il kernel:
Come previsto dal progetto del kernel (che solo io conosco :D), i driver dovranno girare in user mode. Mettiamo che scrivo un gestore delle finestre: questo è un processo che comunica con gli altri processi attraverso dei messaggi, e fin qui tutto bene; ma come comunica il gestore con il driver del video? Li faccio comunicare con messaggi, nonostante siano su un livello logico diverso? E poi, come fa un driver X a comunicare con le porte di I/O dei dispositivi che controlla se è in user mode? creo delle syscall che chiedono di leggere/scrivere sulle porte? lascio che i driver scrivano, catturo una eventuale eccezione, controllo se il driver ha il permesso di scrivere, e in caso affermativo procedere con la scrittura? So che l'ia32 ha il tss che contiene il bitmap delle porte di i/o che il processo è autorizzato a utilizzare, ma preferisco evitarla dato il fatto che è l'unica architettura ad usarla e nell' amd64 non c'è il tss e quindi questa funzionalità.

abenobashi
13-04-2010, 09:53
Davvero un bellissimo progetto. Se capirei qualcosa di più sulla programmazione relativa agli SO contribuirei volentieri. Anche se Linux devo ammettere che lo odio dopo la cavolta che mi ha fatto l'anno scorso. In pratica avevo un test su quel SO(facendo scuola di informatica ci fanno provare un po' di tutto) ed avevo fatto quasi tutto quello che ci aveva richisesto quindi mi aspettavo una bella nota e non so come mai quando il sore ci ha ridato l'HD del test mi sono ritrovato tutto come se fosse ripristinato e mi sono beccato una clamorosa insufficienza che alla fine dell' anno mi ha abbassato la media di 1 punto. Bom ora non ci penso più perchè oramai è acqua passata però fa sempre un po' rabbia. Comunque davvero complimenti per la determinazione sul progetto nonostante sia linux

Mantis-89
13-04-2010, 11:17
Se capirei qualcosa ....

"Se ne capissi"..

..ci aveva richisesto quindi mi aspettavo una bella nota e non so come mai quando il sore ci ha ridato... Bom ora non ci penso più ...



Comunque davvero complimenti per la determinazione sul progetto nonostante sia linux

Dove sta scritto che è Linux?

Comunque non è che hai fatto un installazione da live cd? e finita l'installazione hai continuato a lavorare dalla sessione live?

DanieleC88
13-04-2010, 11:41
Davvero un bellissimo progetto. Se capirei qualcosa di più sulla programmazione relativa agli SO contribuirei volentieri. Anche se Linux devo ammettere che lo odio dopo la cavolta che mi ha fatto l'anno scorso. In pratica avevo un test su quel SO(facendo scuola di informatica ci fanno provare un po' di tutto) ed avevo fatto quasi tutto quello che ci aveva richisesto quindi mi aspettavo una bella nota e non so come mai quando il sore ci ha ridato l'HD del test mi sono ritrovato tutto come se fosse ripristinato e mi sono beccato una clamorosa insufficienza che alla fine dell' anno mi ha abbassato la media di 1 punto. Bom ora non ci penso più perchè oramai è acqua passata però fa sempre un po' rabbia. Comunque davvero complimenti per la determinazione sul progetto nonostante sia linux

Mamma mia! Da incorniciare!!! :D

Z80Fan
13-04-2010, 17:58
Davvero un bellissimo progetto. Se capirei qualcosa di più sulla programmazione relativa agli SO contribuirei volentieri. Anche se Linux devo ammettere che lo odio dopo la cavolta che mi ha fatto l'anno scorso. In pratica avevo un test su quel SO(facendo scuola di informatica ci fanno provare un po' di tutto) ed avevo fatto quasi tutto quello che ci aveva richisesto quindi mi aspettavo una bella nota e non so come mai quando il sore ci ha ridato l'HD del test mi sono ritrovato tutto come se fosse ripristinato e mi sono beccato una clamorosa insufficienza che alla fine dell' anno mi ha abbassato la media di 1 punto. Bom ora non ci penso più perchè oramai è acqua passata però fa sempre un po' rabbia. Comunque davvero complimenti per la determinazione sul progetto nonostante sia linux

Grazie cmq dei complimenti! ;) Come ha detto Mantis, questo non è Linux, ma è un sistema operativo scritto completamente da zero (al massimo leggendo qualche tutorial). A proposito della tua "sventura", il prof per metterti l'insufficienza (e sopratutto contarla alla fine) deve essere proprio un bastardo , poteva almeno capire che se il disco era completamente vuoto della prova qualcosa non aveva funzionato, poteva metterti il voto ma alla fine non includerlo nella media (come la mia prof di sistemi che se hai gli altri voti buoni ti toglie il voto peggiore). ;)


Cmq, qualcuno ha risposte per il commento 465?

cdimauro
13-04-2010, 20:00
Davvero un bellissimo progetto. Se capirei qualcosa di più sulla programmazione relativa agli SO contribuirei volentieri. Anche se Linux devo ammettere che lo odio dopo la cavolta che mi ha fatto l'anno scorso. In pratica avevo un test su quel SO(facendo scuola di informatica ci fanno provare un po' di tutto) ed avevo fatto quasi tutto quello che ci aveva richisesto quindi mi aspettavo una bella nota e non so come mai quando il sore ci ha ridato l'HD del test mi sono ritrovato tutto come se fosse ripristinato e mi sono beccato una clamorosa insufficienza che alla fine dell' anno mi ha abbassato la media di 1 punto. Bom ora non ci penso più perchè oramai è acqua passata però fa sempre un po' rabbia. Comunque davvero complimenti per la determinazione sul progetto nonostante sia linux
Tranquillo, a me è capitato di molto peggio. Avevo un Maxtor da 520MB con tutti i dati del mio fido Amiga 1200, a cui però s'era bruciata al sezione video.

Mi serviva quindi backuppare in qualche modo il contenuto delle 4 partizioni, visto che c'era una montagna di roba (e tutti i miei esperimenti).

Un mio amico che da qualche tempo (se non ricordo male era il 1995) era passato a Linux (con la Slackware) mi fa: "non c'è problema, lo montiamo con Linux che legge le partizioni col filesystem dell'Amiga".

Io ero molto titubante, visto il valore della roba che c'era. Ma lui mi fa: "guarda, lo montiamo a sola lettura, così stai tranquillo che non succede niente".

Facciamo così e vedo montate le 4 partizioni. Faccio giusto qualche ls e qualche cat per assicurarmi che è tutto a posto, e poi spegniamo tutto.

Stacco il mio HD, e qualche giorno dopo lo rimonto. Ma "stranamente" non c'era più nulla. Zero. La partition table era stata brutalmente cancellata.

E qui puoi immaginare il mio terrore, ma soprattutto le mie bestemmie e la bassa opinione di Linux.

Però leggendo settori a caso qualche dato s'intravedeva. Comunque portiamo l'HD in un PC a cui era collegato un masterizzatore, e lanciamo il mitico PCTools, che ha un editor esadecimale e permette di accedere direttamente ai settori dell'HD. Sembra ci sia tutto (a parte la partition table, ovviamente).

A questo punto facciamo un'immagine dell'intero HD su un file da 520MB, che poi masterizziamo su un CD (tuttora leggibile, al contrario della spazzatura usa e getta che si trova oggi che dopo 1 mese che l'hai masterizzata non legge più nulla). Così almeno i dati li ho conservati.

Qui comincia la parte più "bella". Fortunatamente avevo comprato i famigerati Amiga Rom Kernel Manual, e in un'appendice trovo poche, ma utilissime, informazioni sulla struttura dei settori del filesystem Amiga (FastFileSystem).

Passo un paio di settimane di studio e programmazione "disperatissimi", e col mio fido Turbo Pascal 7 della Borland realizzo un programmino che fa la scansione dell'immagine dell'HD, riesce a riconoscere e ricostruire la struttura del filesystem e delle 4 partioni, permettendomi di visionare e copiare tutto (usando le API sui "long filename" del DOS esteso versione 7 disponibile con Windows '95 OS2).

Fine di un incubo. Anche perché non hai idea di tutto il lavoro che c'era in quel disco.

Ti senti ancora sfortunato? :D
Cmq, qualcuno ha risposte per il commento 465?
Il più titolato in materia è jappilas. Vediamo se trova il tempo per darti una mano.

Z80Fan
13-04-2010, 20:37
Tranquillo, a me è capitato di molto peggio. Avevo un Maxtor da 520MB con tutti i dati del mio fido Amiga 1200, a cui però s'era bruciata al sezione video.
[cut]

Ti senti ancora sfortunato? :D

Oddio! Siete poi riusciti a scoprire il perchè della rasatura?

cdimauro
13-04-2010, 20:49
No. Anche perché in quel periodo se mi trovavo davanti un PC con Linux una mazzata non gliela levava nessuno. :D

Z80Fan
13-04-2010, 20:55
No. Anche perché in quel periodo se mi trovavo davanti un PC con Linux una mazzata non gliela levava nessuno. :D
Immagino :D

DanieleC88
13-04-2010, 20:59
Vabbe' ma nel 1995... Non puoi avere la stessa opinione di Linux dopo 15 per una cosa del genere. :p

cdimauro
13-04-2010, 21:23
Certamente, avrei potuto cambiare opinione. Peccato che mi sono capitate altre sventure. :asd:

DanieleC88
13-04-2010, 21:24
Comincio a pensare di essere l'unico che si trova bene su Linux e senza avere mai problemi... :eekk:

:D

Kralizek
14-04-2010, 08:02
il rapporto con gli OS é strettamente personale... io mi trovavo da Dio con winMe ed ho fatto crashare macosx... con linux poi non ne parliamo...

Z80Fan
14-04-2010, 18:16
Comincio a pensare di essere l'unico che si trova bene su Linux e senza avere mai problemi... :eekk:

:D

Mi associo ;)

Z80Fan
21-04-2010, 16:37
up

Tesinevb
21-04-2010, 20:16
up

fai "up " per riportare in visione il 3d...

...invece, e io ci credevo molto, dovresti continuare con il tuo OS e i relativi problemi e allora sicuramente "rep" interverrebbe nel 3d... ti assicuro che leggere "rep" è come ascoltare o "fare musica"... è praticamente mitica...

Mendocino89
21-04-2010, 20:35
fai "up " per riportare in visione il 3d...

...invece, e io ci credevo molto, dovresti continuare con il tuo OS e i relativi problemi e allora sicuramente "rep" interverrebbe nel 3d... ti assicuro che leggere "rep" è come ascoltare o "fare musica"... è praticamente mitica...

Io ho il sospetto che la scrittura di quel kernel è andata a finire come il classico progetto "a perdita di tempo" di ogni programmatore che esista sulla faccia della terra....:Prrr: :D
Magari fra qualche mese lo riprende !:D

Z80Fan
21-04-2010, 20:58
fai "up " per riportare in visione il 3d...

...invece, e io ci credevo molto, dovresti continuare con il tuo OS e i relativi problemi e allora sicuramente "rep" interverrebbe nel 3d... ti assicuro che leggere "rep" è come ascoltare o "fare musica"... è praticamente mitica...

E chi ti dice che io non stia continuando il progetto? ;)
Si cmq in effetti in questi ultimi giorni non ho lavorato molto, ma solo perchè ho dovuto finire altre priorità.
Cmq la domanda al commento 465 non è ancora stata risposta.
Tranquillo che troverò altri problemi da risolvere così potrai di nuovo sentire la soave voce di rep :D

Z80Fan
29-04-2010, 18:21
Qualcuno ha esperienza nel VFS di Linux, o metodi simili di gestione di filesystems? Perchè volevo implementare per bene la fat12 che sto usando adesso, ma mi serviva sapere che funzioni sono necessarie principalmente per non dover riscrivere tutta l'interfaccia in un secondo momento.

Allego anche la versione corrente dei sorgenti, non ho lavorato molto, solo sistemato il Long File Name alla Fat e aggiunta quella sottospecie di shell.

Sorgenti versione 0.04b (http://z80fan.altervista.org/kernel/SuperKernel-v0.04b.tar.bz2)

Immagine floppy con kernel 0.04b (http://z80fan.altervista.org/kernel/ImmaginiDischi/floppy-grub-kernel-0.04b.tar.bz2)

Z80Fan
05-05-2010, 17:30
Ancora nessuno ha una risposta sul #465 ? So che c'è molto da fare ancora, ma quello è un punto chiave del kernel. Anche se non avete una risposta definitiva (e chi ce l'ha? ;)), presentate pure qualche idea.

(Sono tornato a pensarci visto che son capitato a leggere di PulseAudio (http://en.wikipedia.org/wiki/PulseAudio), un' altro sistema che sfrutta seriamente la comunicazione interprocesso e inter-livello)

Z80Fan
06-05-2010, 19:53
Stavo provando a creare una specie di vfs, ma mi accorgo sempre più che mi serve una gestione della memoria seria. Rikiji aveva già scritto un sistemino, però permette di allocare solo intere pagine da 4kb, mi servirebbe qualche sistema per avere una gestione più granulare. Qualche idea sui sistemi di gestione, magari con qualche nome di algoritmi che mi posso andare a vedere?

Z80Fan
10-05-2010, 15:50
5 post, e nessuna risposta? Mi sento ignorato :D

Per cambiare ring di funzionamento nell'ia32, devo per forza impostare un tss e fare un task switch?

DanieleC88
10-05-2010, 16:15
<profano>Mi sa di sì.</profano>

Z80Fan
10-05-2010, 16:53
<profano>Mi sa di sì.</profano>
Uff...un'altra maledizione verso l'Intel ;)
Cmq ho pensato ad una soluzione per gestire i driver: la mia idea originale era di farli girare in user mode, come dei normali processi, ma questo complicava l'accesso alle porte di I/O, perchè solo in kernel mode si possono fare gli accessi. Quindi ho pensato di far cmq girare i driver in kernel mode, ma tenendoli in un spazio di indirizzi virtuale, dove non sono direttamente a contatto con le strutture dati sensibili del kernel, e non le possono danneggiare in caso di bug. Praticamente sono processi in kernel mode.

cdimauro
10-05-2010, 21:51
Stavo provando a creare una specie di vfs, ma mi accorgo sempre più che mi serve una gestione della memoria seria. Rikiji aveva già scritto un sistemino, però permette di allocare solo intere pagine da 4kb, mi servirebbe qualche sistema per avere una gestione più granulare. Qualche idea sui sistemi di gestione, magari con qualche nome di algoritmi che mi posso andare a vedere?
E' passato troppo tempo da quando li ho studiati, ma intanto prova a spiegare meglio quali sarebbero queste tue esigenze di gestione più granulare. Magari viene in mente qualcosa.
Per cambiare ring di funzionamento nell'ia32, devo per forza impostare un tss e fare un task switch?
Sì.
Uff...un'altra maledizione verso l'Intel ;)
Cmq ho pensato ad una soluzione per gestire i driver: la mia idea originale era di farli girare in user mode, come dei normali processi, ma questo complicava l'accesso alle porte di I/O, perchè solo in kernel mode si possono fare gli accessi.
Se non ricordo male è possibile impostare una mappa di bit per ogni processo in modo da abilitare l'uso di particolari porte, e l'I/O in questo caso dovrebbe funzionare anche in user space.
Quindi ho pensato di far cmq girare i driver in kernel mode, ma tenendoli in un spazio di indirizzi virtuale, dove non sono direttamente a contatto con le strutture dati sensibili del kernel, e non le possono danneggiare in caso di bug. Praticamente sono processi in kernel mode.
Intanto vedi un po' se trovi qualche informazione su quanto t'ho scritto sopra.

In ogni caso x86 prevede 4 livelli di privilegio, per cui potresti benissimo far girare il kernel in ring 0, i driver in ring 1, e infine le applicazioni in ring 3.

eraser
11-05-2010, 00:18
In ogni caso x86 prevede 4 livelli di privilegio, per cui potresti benissimo far girare il kernel in ring 0, i driver in ring 1, e infine le applicazioni in ring 3.

Infatti se lo scordano in molti :D

Il fatto che sia Windows che Linux utilizzino solo due dei quattro ring (0-3) non significa che gli altri non possano venire utilizzati :D

cdimauro
11-05-2010, 06:44
In effetti è strano che nessuno ne faccio uso. O è questione di ignoranza, oppure semplicemente non vogliono sbattersi per sfruttare bene le caratteristiche dell'hardware su cui gira il s.o..

Comunque con x86-64 sono spariti (sostanzialmente) i segmenti e relativi livelli di privilegio. Peccato, perché da questo punto di vista l'ISA x86 era veramente ben fatta.

Mantis-89
11-05-2010, 09:52
Infatti se lo scordano in molti :D

Il fatto che sia Windows che Linux utilizzino solo due dei quattro ring (0-3) non significa che gli altri non possano venire utilizzati :D

Da quanto ne so non li usano perchè non sono presenti in tutte le architetture per cui non utilizzandoli si semplificano i porting.

eraser
11-05-2010, 10:36
Da quanto ne so non li usano perchè non sono presenti in tutte le architetture per cui non utilizzandoli si semplificano i porting.

Sì, se non sbaglio sono le architetture vecchie non intel, con le quali ad esempio Windows doveva essere compatibile (vedi DEC Alpha) che si basavano su architetture diverse dall'intel x86

Mantis-89
11-05-2010, 13:03
per chi vuole approfondire: http://en.wikipedia.org/wiki/Ring_%28computer_security%29

Z80Fan
11-05-2010, 16:57
E' passato troppo tempo da quando li ho studiati, ma intanto prova a spiegare meglio quali sarebbero queste tue esigenze di gestione più granulare. Magari viene in mente qualcosa.
Per granulare intendevo poter allocare elementi di anche pochi byte, tipo una piccola struttura.

Se non ricordo male è possibile impostare una mappa di bit per ogni processo in modo da abilitare l'uso di particolari porte, e l'I/O in questo caso dovrebbe funzionare anche in user space.
Si, è vero, ma la avevo già esclusa perchè è disponibile solo nell'ia32 (nella amd64 non c'è)

In ogni caso x86 prevede 4 livelli di privilegio, per cui potresti benissimo far girare il kernel in ring 0, i driver in ring 1, e infine le applicazioni in ring 3.
Si, si può fare anche questo, ma la differenza tra ring 1 e 0 è minima, quindi teniamo tutto in 0 per evitare di fare context switch quando il driver chiama una syscall del kernel (che ovviamente sarà una syscall apposta per i driver).

In effetti è strano che nessuno ne faccio uso. O è questione di ignoranza, oppure semplicemente non vogliono sbattersi per sfruttare bene le caratteristiche dell'hardware su cui gira il s.o..
Da quanto ne so non li usano perchè non sono presenti in tutte le architetture per cui non utilizzandoli si semplificano i porting.
Si, lo si fa per garantire massima portabilità. Molti altri processori hanno solo 2 livelli. E poi si riesce a fare tutto tranquillamente con 2 livelli.

Sì, se non sbaglio sono le architetture vecchie non intel, con le quali ad esempio Windows doveva essere compatibile (vedi DEC Alpha) che si basavano su architetture diverse dall'intel x86
Non necessariamente architetture vecchie ;) Moderni processori come Arm, Mips, Power ecc... mi sembrano usano solo 2 livelli.

Cmq per me invece di 4 livelli ognuno con solo meno funzioni dell'altro (anche se 1 e 2 sono uguali), preferirei il livello 0 che puo fare tutto dove metterci il kernel, e i livelli 1, 2, 3 che sono totalmente meno privilegiati con l'eccezione che il livello 1 può anche accedere all'I/O, in modo da metterci i driver.

Comunque con x86-64 sono spariti (sostanzialmente) i segmenti e relativi livelli di privilegio. Peccato, perché da questo punto di vista l'ISA x86 era veramente ben fatta.
Io invece non lo sento una grande mancanza, visto che si può fare tutto con solo la paginazione, ma di questo ne abbiamo già discusso ;)

lock cmpxchg8b %ebx
11-05-2010, 17:29
Non necessariamente architetture vecchie ;) Moderni processori come Arm, Mips, Power ecc... mi sembrano usano solo 2 livelli.
Moderni? :p
MIPS e ARM non sono molto più giovani del x86...

Z80Fan
11-05-2010, 17:47
Moderni? :p
MIPS e ARM non sono molto più giovani del x86...

Si, intendevo che sono ancora vivi e vegeti e supportati ;)

P.S: ora c'è la mania di creare account con nomi di istruzioni x86 ? :Prrr:

lock cmpxchg8b %ebx
11-05-2010, 17:56
P.S: ora c'è la mania di creare account con nomi di istruzioni x86 ? :Prrr:
La mia "funziona" soltanto su Pentium e Pentium MMX.

Z80Fan
11-05-2010, 18:03
La mia "funziona" soltanto su Pentium e Pentium MMX.

Vediamo se sono preparato...
dal % penso sia scritta in AT&T. Compara Scambia 8 bit, bloccando il bus. è un'istruzione test-and-set?

lock cmpxchg8b %ebx
11-05-2010, 19:48
Vediamo se sono preparato...
dal % penso sia scritta in AT&T. Compara Scambia 8 bit, bloccando il bus. è un'istruzione test-and-set?
No, è un'istruzione sbagliata (http://www.cs.dartmouth.edu/~sergey/cs108/2009/F00FBug.html).
Se usata correttamente è una compare-and-swap, comunque.