Sistema operativo in assembler!

Aperto da sanford, 29 Novembre 2003, 15:28:15

Discussione precedente - Discussione successiva

0 Utenti e 1 Visitatore stanno visualizzando questa discussione.

sanford

Tutto in un floppy, ha dell'incredibile...:eek:

Che vi devo dire? Provatelo e basta.:D



http://www.menuetos.org/

Questo messaggio è stato aggiornato da sanford il 29/11/2003  alle ore  15:29:16
Powered by 3DFX Voodoo 5 5500

Khana

La cosa più incredibile è che NON E' LINUX! E non è neppure Unix!!!
Cioé, un pazzo che si è VERAMENTE fatto da solo il sistema operativo...
(ricordo per gli aficionados del Pinguino che Mr. Torvalds NON HA scritto il kernel... ha fatto opera di cut&past da Unix, + aggiunte da programmatori di tutto il mondo. Geniale l'idea, ma poca mano d'opera)

Powered by


- non svegliate il can che morde -

ago143

cioè non posso installare programmi per linux-win?
e poi riconosce tutte le periferike?
booh kissa quanti bug :D

_________________________
amd xp 2200+
256 MB ddr
HD maxtor 40 GB
CD-RW teac 24x
lg dvd
geffo 3 ti200
adi 17"
S.O. windows xp

sanford

Beh, siamo alla versione 0.75 quindi le cose da fare sono ancora molte, cmq l'autore ha messo a disposizione i sorgenti per chiunque voglia dare una mano... REPNE SCASB DOVE SEI?:D :D
Powered by 3DFX Voodoo 5 5500

repne scasb

CitazioneREPNE SCASB DOVE SEI?

Sperando di farmi pochi nemici dico che:

Conosco Menuetos da oltre 1 anno. Apprezzo lo sforzo, ma non mi pare incredibile. Si tratta di un sistema operativo monolitico, con un kernel basato su "standards". Operando su standards non ha bisogno di driver, di fatto e' un "DOS" in pmode con una interfaccia grafica in modalita' VESA ma funzionante in modalita' protetta. Il kernel di 75Kb (circa) ha mancanze tali da renderlo di diritto un esperimento didattico piu' che un prodotto. E' un ottimo "sistema operativo" per "giocare" con l'assembler, ben piu' impressionante "secondo me" fu il kickstart 1.x del Commodore Amiga che in 256Kb (occupati 192Kb) aveva un "universo" di caratteristiche. Lo stesso DOS 6.22 mi sembra decisamente piu' incredibile (non sta forse su un floppy? Non e' multi-process (DesqView)? Non ha un interfaccia grafica (DOSGui)? Se lo aggiornassimo all'hardware moderno avremmo un sistema operativo che starebbe su un floppy da 360Kb.

In sostanza cosa ci deve meravigliare in un sistema operativo? Quali caratteristiche rendono un sistema operativo "moderno"?

(Quanto diro' non e' in ordine strettamente cronologico)

I sistemi operativi nascono come "gestori di risorse" in un periodo in cui le risorse da gestire erano minuscole. Nasce quindi l'esigenza di sistemi operativi che essi stessi consumino scarse risorse. I primi sistemi operativi sono di fatto "monolitici". Ossia sono costituiti da un unica funzione che fa "tutto". Quali sono i vantaggi e gli svantaggi: Velocita', compattezza, ma anche grossi problemi per modificare il sistema operativo (oggi diremmo anche scarsa sicurezza, ma allora il problema della sicurezza non era sentito come oggi). In questi sistemi operativi tutto dipende da tutto, il codice e' raramente riciclabile, se e' necessario modificare in modo sostanziale il sistema operativo si fa prima a riscriverlo tutto. A questa categoria appartengono in modo piu' o meno marcato: Menuetos, DOS, Kickstart, UnixV1 (non ho scrito male e' proprio Unix).

Come tutte le cose, anche i sistemi operavi si evolvono, le risorse da gestire si ampliano e quindi anche i sistemi operativi iniziano ad "allargarsi". La prima cosa che si capisce e': Non riscriviamo da capo il sistema operativo ogni volta che si fa una modifica. Si evolvono cosi' sistemi operativi a microkernel (BSD/MacOS). L'idea e' di "spezzare" il kernel in sezioni logiche indipendenti cosi' da agevolare le fasi di modifica; il tutto a scapito di una leggera perdita di performance.

Nasce poi l'esigenza di "proteggere" il kernel dai processi che gestisce. Abbiamo il concetto di "layer". Il sistema operativo e gli applicativi non "devono" condividere le stesse risorse. Contemporaneamente nasce anche l'esigenza di eseguire due processi parallelamente. Nascono i microkernel (ma ci sono anche esempi incredibili di monolitismo (ancora kickstart)) multi-processo. Inizialmente il multi-processo era a carico del processo (multitasking corporativo di Windows 3.1 o MacOS), poi fu a carico del kernel (ancora kickstart/Linux).

In seguito nasce l'esigenza di astrarsi dall'hardware. Questo concetto e' essenziale se si desidera che il programma applicativo gestisca l'hardware in modo totalmente trasparente. Vi e' in questo campo una "sottile" differenza tra "standard" (xWindows) e "astrazione" (Win3.x). Nel primo caso e' necessario che il software applicativo "conosca" lo standard (risuluzione/colori per bit/modo di indirizzamento colore) per poter disegnare un puntino rosso al centro dello schermo, nel secondo caso non ho il concetto di schermo: al centro del dispositivo di output disegna un "puntino" rosso.

Nascono in sequenza altre esigenze, processi isocroni (il kernel deve gestire due processi assolutamente sincronizzati), STOP-Kernel (un processo "deve" poter fermare il kernel se ha particolari esigenze), I/O-Asincrono (il kernel "deve" soddisfare due processi indipendentemente dal livello di comunicazione processo-kernel), kernel-to-kernel (il kernel deve essere in grado di valutare "quando" cedere il controllo ad una altra "sezione" (tutto il kernel non "deve" essere sempre attivo, o meglio deve poter scegliere cosa attivare e cosa disattivare)).
("Win9x" in parte, "WinNT core" in toto).

Tutti i sistemi operavi che in qualche modo derivano da Unix hanno problemi con le ultime caratteristiche che ho menzionato, e che di fatto rendono un sistema operativo "multimediale". Linux stesso ha "gravi" problemi con le caratteristiche summenzionate, perche' in effetti gli antenati di Linux nascono con esigenze "da universita'". Linux si porta dietro questa "pesante" eredita', che da un lato lo rende "perfetto" per l'elite, dall'altro lo rende "inutilizzabile" per la massa.

Dove va il futuro dei sistemi operativi? Il futuro consiste nell'abolizione del concetto di "kernel" (finalmente) (BeOS??). Questa esigenza si sta cominciando a sentire dove sono necessari processi che soddosfino un'elaborazione distribuita. Per poter utilizzare una macchina con 16 procssori, e tentare di far funzionare in "full" tutti e 16 i processori non soltanto e' necessario che nel sistema girino migliaia di processi (la probabilita' di parallellizzazione aumenta all'aumentare del numero di processi) ma che lo stesso kernel sia costutuito da migliai di processi. Ossia il kernel, le funzioni di sistema, le funzioni di programma, gli applicativi "DEVONO" consistere in decine di migliaia di micro-processi indipendenti. Tutto cio' portera' benefici non solo a sistemi dotati di piu' unita' logiche ma anche a sistemi dotati di una sola unita' logica (comuni PC casalinghi), in quanto a costo di un maggiore overhead, si otterrebbe uno sfruttamento massimizzato di 1 o piu CPU.

--
0F2h 0AEh