Citazione da: cdimauro - 04 Gennaio 2015, 09:50:57No. Le differenze architetturali sono profonde.dicevo che posix non piaccia sono dettagli
No. Le differenze architetturali sono profonde.
perche' di fatto tiene su mezzo mondo di applicazioni
chi ha messo su BeOS e poi Haiku queste cose le ha ben considerate
CitazioneLo puoi implementare anche in altri s.o.. ma ti sei mai chiesto perche' sono sono anni che su linux BeFS e' in RO e nessun altro OS l'ha mai implementato ?
Lo puoi implementare anche in altri s.o..
che poi, per praticità, per entrambi si arriva a questa soluzione ibrida.
A me BeOS/Haiku piace tantissimo, riguardo POSIX finché è solo un layer di compatibilità e non il layer principale, non ci vedo nulla di male.
E poi non avere un layer di compatibilità POSIX implica (aimhé) che una buona parte delle applicazioni è tagliata fuori, se vuoi diffondere l'uso dell'OS è da fare
Citazione da: cdimauro - 04 Gennaio 2015, 17:43:08E' un problema comune, visto che nemmeno Windows ha un layer POSIX, nemmeno come libreria esterna.Windows è parecchio diffuso però, non hanno bisogno di un layer di compatibilità POSIX
E' un problema comune, visto che nemmeno Windows ha un layer POSIX, nemmeno come libreria esterna.
In realtà c'è Interix, ma non credo sia molto utilizzato
Piccolo appunto sull'1): senza passare da /dev/nvidia0, ma con un sistema a librerie, le prestazioni sarebbero migliori e il consumo di memoria inferiore.
Citazione da: cdimauro - 05 Gennaio 2015, 21:13:29Piccolo appunto sull'1): senza passare da /dev/nvidia0, ma con un sistema a librerie, le prestazioni sarebbero migliori e il consumo di memoria inferiore.[citation needed]; finchè non si prova non possiamo saperlo.
Anzi, sostengo che, usando un sistema a chiamate a funzione, le prestazioni peggiorerebbero. Ecco su cosa mi baso per dirlo:La gestione dell'I/O su file di Linux è estremamente ottimizzata (ci mancherebbe altro), e sopratutto anche per applicazioni in-memory (le pipe non sono altro che file descriptor)
Son sicuro al 99% che NVIDIA fa tutto il lavoro in user-mode e manda all driver kernel solo i comandi già elaborati e formattati per essere letti dalla GPU (praticamente lato kernel basta avviare e gestire le operazioni di DMA);
son ancora più sicuro basandomi sulla recente presentazione dove viene discussa una nuova estensione che hanno introdotto in OpenGL per permettere alle applicazioni di generare "manualmente" le command-list (e ridurre al minimo le draw-call che un'applicazione deve fare ogni frame). Con un'architettura come quella che ho descritto, questa aggiunta è molto più semplice e immediata.[/li][/list]
Un sistema formato da chiamate a funzione dirette a una libreria di sistema può venire realizzato in due modi:La libreria di sistema è praticamente la libreria grafica (OpenGL diciamo), quindi ogni chiamata a funzione dell'API nell'applicazione deve essere inviata alla libreria di sistema in modo che la gestisca;La libreria di sistema si riduce solamente a send_buffer() e receive_buffer() per inviare i comandi direttamente alla GPU, e il driver rimane implementato come uno shared object che viene caricato dall'applicazione.Nel primo caso, le prestazioni crollerebbero drammaticamente, perchè già adesso il tempo di esecuzione di ogni funzione dell'API grafica è critico; se poi dobbiamo anche introdurre una chiamata a una libreria (che per ragioni di sicurezza e tutto non sarà mappata nello spazio dell'applicazione, e se lo fosse, torneremo nel sistema che già è in uso quindi non cambierebbe nulla), la pesantezza aumenterebbe.
Nel secondo caso, le prestazioni rimarrebbero sempre le stesse, in quanto alla fine non abbiamo fatto altro che rinominare le funzioni read() e write().