2009-06-10 8 views
7

stavo guardando il WWDC 2009 Keynote e qualcosa che qualcuno ha detto su Windows 7/Vista mi ha fatto curioso ..Qual è il problema con le DLL e il registro?

L'oratore ha affermato che 7 era ancora un sistema operativo povero perché ancora utilizzato le stesse tecnologie come DLL e la registro di sistema. Quanto sono accurate le sue affermazioni e quanto è diverso farlo OS X? Persino os x ha librerie caricate dinamicamente? Immagino che la cosa del Registro di sistema potrebbe avere un certo peso ..

Qualcuno può spiegarmi le differenze nella strategia di ciascun sistema operativo?

Non sto cercando di incitare fanboy qui o nulla, voglio solo sapere come entrambi i sistemi operativi affrontare i problemi in generale ..

Grazie,

kreb

+0

Quindi, in ogni caso, credo che la questione si trova ancora .. Se le DLL e registri sono inferiori, ciò che li rende così? Che cosa usa os x che è superiore a DLL e registri, se ciò che ha detto il portavoce è vero? – krebstar

risposta

4

DLL

La principale differenza tra OS X e Windows è che Windows storicamente ha cercato di risparmiare spazio/memoria da avere tutti code share (cioè l'installazione di una DLL, tutti possono usarlo). Apple compila staticamente (beh, non proprio, ma potrebbe anche essere) tutte le librerie non di sistema in ogni applicazione. Rifiuti di spazio su disco/memoria, ma rende la distribuzione di app modo più facile e senza problemi di controllo delle versioni.

Registro

OS X fa hanno un registro, che sono file di solo piatto chiamati plists, invece di un componente magica che è per lo più come un file system a meno che non lo è. l'approccio di Apple rende facile migrare le impostazioni da una macchina all'altra, mentre l'approccio di Windows' è più veloce in-memory, e permette applicazioni facilmente 'guardare' una chiave senza prendere un colpo grosso perf (vale a dire un app cambia un tasto e l'altro lo sa all'istante).

In conclusione

del pieno di esso presentatore keynote, 10.6 è in gran parte lo stesso codice di 10.5, che è stato in gran parte lo stesso codice 10.4 et al, proprio come Win7 è per lo più Vista, che è principalmente Server '03, ecc C'è codice di gran lunga troppo testato in un sistema operativo di buttarlo via ogni release, soprattutto se si vuole realmente le applicazioni dei clienti di lavorare.

+0

Grazie, che è stato molto chiaro .. :) Accettare questo come risposta migliore, anche se Barry Wark di è anche un bene .. – krebstar

+0

È inacurate dire che tutte le librerie non di sistema sono staticamente collegate in app fasci su OS X. anche se bundle app può contenere dei quadri (biblioteche collegate in modo dinamico), e alcuni lo fanno riunire quadri non di sistema, è anche possibile installare i quadri in una cartella Library/Frameworks o utente a livello di tutto il sistema in cui possono essere utilizzati da molte applicazioni. Le app OS X che non sono drag n drop installabili (ovvero richiedono un programma di installazione completo) generalmente usano il programma di installazione per installare questi framework. –

+0

Per tutti gli scopi pratici, le uniche persone che possono creare Framework sono Apple, altrimenti ogni app diventa un file .pkg. –

-4

DLL sono cattivi variazioni delle librerie dato che non sono in grado di funzionare da sole, per usarle è necessario un ulteriore eseguibile wrapper (automaticamente), che aggiunge un overhead non richiesto e rende molto più difficile stabilire quali librerie siano effettivamente in uso. Un altro difetto meno importante, è l'impossibilità per i sistemi di condividere davvero una libreria. * I sistemi nix evitano questo perché le librerie esistono al livello superiore in esecuzione autonomamente o in un wrapper più grande (come kde-init), le librerie possono essere condivise da qualsiasi applicazione, il che significa che è richiesta solo una singola copia di ogni libreria, e si può in qualsiasi momento uccidere una singola libreria con facilità, come richiesto.

Il Registro di sistema è una grande idea, tranne per il fatto che viene utilizzato per così tanto, quasi tutto ciò che si installa utilizzerà il registro e un registro corrotto e renderà il sistema operativo quasi completamente inutile finché non verrà risolto. Questo è evitato nei sistemi * nix avendo più file diversi per contenuti diversi, i driver sono riferiti al file di configurazione di Xorg, le applicazioni installate saranno scritte nel proprio database e le chiavi o l'identificazione saranno spesso scritte in una directory, piuttosto che un singolo file per tutti gli scopi. Ciò riduce la probabilità di un guasto grave e significa che in qualsiasi momento è ancora possibile riparare il sistema. Se Xorg si corrompe, basta riconfigurarlo, se il database delle applicazioni installato diventa danneggiato puoi ripararlo o ricostruirlo, e se una directory delle impostazioni individuali delle applicazioni si corrompe devi solo reinstallare un'applicazione (e le migliori aps commerciali dovrebbero avere un modo di riparare questo comunque)

+0

Scusa, ho pensato che fosse possibile condividere le DLL? Hmm .. =/Comunque grazie per la risposta :) – krebstar

+3

In realtà, l'uso di DLL non richiede alcun eseguibile di wrapper, esse vengono utilizzate direttamente dalle applicazioni. Inoltre, le applicazioni possono certamente condividere DLL. Un esempio di condivisione sono le DLL di sistema di Windows o gli assembly .NET GAC. –

+0

I commenti qui sulle DLL sono molto scorretti. Le DLL possono (e spesso sono) completamente condivise tra i processi. – Foredecker

7

Naturalmente entrambi i sistemi operativi dispongono di funzionalità per l'utilizzo di DLL (vengono chiamati dylibs o Framework su OS X in base al modo in cui sono pacchettizzati) .dylibs sono molto simili alle DLL - sono un collegamento dinamico libreria e come tale possono esserci più versioni di queste che girano intorno. I quadri, d'altra parte, sono in realtà una struttura di directory. Contengono librerie collegate dinamicamente (potenzialmente versioni multiple di esse), risorse, intestazioni, documentazione, ecc. Il linker dinamico su OS X gestisce automaticamente la scelta della versione di libreria corretta dal framework per ogni eseguibile. Il sistema sembra funzionare meglio della gestione DLL di Windows, che è, beh, un bel pasticcio (ovviamente, il sistema di Windows è legato da problemi legacy che Apple ha abbandonato quando si sono spostati su OS X). Per essere onesti, Unix ha avuto una soluzione a questo problema per molto tempo, come pure l'uso di link simbolici per collegare i dylibs alla loro corretta implementazione di versione, consentendo più versioni installate.

Non esiste un equivalente OS X del registro di Windows. Questo è buono e cattivo. Il lato positivo è che è molto più difficile corrompere un intero sistema OS X con un registro rovinato. OS X invece memorizza la configurazione in molti file separati, di solito uno o più per applicazione, utente, qualunque sia. Questi file sono generalmente un file formattato (uno schema XML che rappresenta dizionari, matrici e tipi primitivi).Il lato negativo è che, conservando questa eredità Unix-y, OS X non ha gli stessi strumenti di amministrazione utente che possono sfornare il registro e fare ogni sorta di cose pazze.

+0

+1 buona risposta grazie :) – krebstar

Problemi correlati