web-dev-qa-db-fra.com

Dans quelle mesure Mac OS X et BSD sont-ils liés?

J'ai lu que Mac OS X et bsd sont liés. Dans quelle mesure sont-ils liés? Le logiciel Mac OS X peut-il être modifié et installé sur BSD?

45
Boolean

À l'époque d'OS X 10.4, j'ai passé un certain temps à ne pas écrire de VFS pour OS X. À cette époque, des principaux sous-systèmes du noyau, seule la pile réseau et le VFS étaient encore vraiment BSD. À cette époque, même le VFS avait été partiellement réécrit pour le rendre plus modulaire (toutes les structures de données BSD VFS sont devenues des pointeurs opaques et l'API était via ce qu'on appelait des fonctions KPI). Je crois que la pile réseau allait de la même manière. Il y avait également une couche mince à l'interface avec le userland qui faisait ressembler le système d'exploitation à BSD aux programmes du userland.

Tout le reste avait été à peu près réécrit ou remplacé: la gestion de la mémoire, la gestion des processus, etc. venaient du micro-noyau Mach; le sous-système du pilote de périphérique a été écrit à partir de zéro par Apple.

En termes de programmation utilisateur, OS X est très similaire à BSD et les programmes écrits pour BSD devraient être facilement portables. Cependant, OS X possède de nombreuses API qui ne sont pas disponibles dans BSD. Celles-ci incluent presque tout ce qui concerne l'interface utilisateur - graphiques, son, etc. Il existe également d'autres interfaces qui n'existent pas dans BSD, comme l'API de lancement, qui est le moyen préféré d'OS X pour lancer des processus en arrière-plan.

31
JeremyP

Wikipédia article BSD est bon (et s'accorde avec ma propre compréhension, pour ce que ça vaut). Il dit que Darwin, le système sur lequel Mac OS X d'Apple est construit, est un dérivé de 4.4BSD-Lite2 et FreeBSD , et note que 4.4BSD est la dernière version à laquelle Berkeley a participé.

Donc, Darwin est aussi BSD que possible (comme tous les autres BSD!). OS X fait référence aux parties de la distribution qui ne sont pas open-source, principalement l'interface graphique, mais qui incluent une variété de cadres, et tout ce qui en dépend ne sera pas portable.

OS X dans son ensemble est un système NIX . Cela équivaut à être un système réellement conforme à POSIX (par opposition à être de type POSIX).

Comme d'autres réponses l'ont noté, les parties utilisateur de l'OS ne surprennent pas quiconque possède une grande expérience d'Unix, et j'ai rarement eu de difficulté à créer un logiciel portable-unix sur OS X.

En revanche, les parties non utilisables de l'OS sont assez différentes. Apple semble disposé à innover assez joyeusement dans ces domaines. Je pense (mais je ne suis pas certain) que ces changements font officiellement partie de Darwin. L'une des différences les plus évidentes est que - launchd a remplacé cron, at, inetd et une grande partie de l'infrastructure de démarrage.

19
Norman Gray

Si le logiciel Mac utilise Cocoa, la bibliothèque d'affichage propriétaire d'Apple (dont il fait, s'il s'exécute sur le Mac avec une interface graphique et ne nécessite pas de démarrer un serveur X), vous pouvez avoir des problèmes en exécutant le code sur un système BSD normal.

Si votre code utilise uniquement des fonctions spécifiées par POSIX, il portera proprement vers Linux, BSD et même Windows.

Il est vrai que Mac OS X et BSD sont liés. Bien qu'ils aient des noyaux différents, ils partagent un ancêtre commun et un code de zone utilisateur significatif. Évidemment, je ne peux pas quantifier "à quel point" - c'est subjectif.

7
Borealid

Mac OS X est une version de BSD Unix. Comme Borelaid l'a déjà souligné, cela ne signifie pas nécessairement que le portage d'applications Mac vers d'autres versions de BSD serait facile, voire gérable, beaucoup moins qu'entre d'autres versions BSD courantes. Chacun d'eux apporte ses propres spécificités, et OS X plus que la plupart.

Le portage de programmes de autre versions BSD vers OS X implique également du travail et ne fonctionne pas toujours (en douceur ou pas du tout), mais est généralement beaucoup plus simple.

4

Cela dépend des types d'applications que vous essayez de porter. Si vous écrivez des programmes de console C/C++ compatibles POSIX, ils se compileront et fonctionneront très bien sous n'importe quel système compatible POSIX (principalement des versions Linux et BSD), mais notez que OS X n'implémente souvent pas les fonctions POSIX les plus récentes (par exemple utimensat) qui sont disponibles sous Linux. D'un autre côté, les applications graphiques utilisent Cocoa ou l'ancien Carbon, ce qui nécessiterait GNUstep. Le portage d'applications graphiques est assez rare car chaque environnement graphique a des normes et des conventions de conception différentes, de sorte que les applications graphiques doivent généralement être écrites à partir de zéro pour chaque environnement graphique.

1
Philipp

Installé - non.

Porté depuis la source, peut-être - voir Gnustep, Cocotron, EtoileOS - qui offrent tous des degrés divers de compatibilité avec la pile de développement Cocoa (mais pas avec l'ancienne Carbon). Il existe une quantité limitée de logiciels objectifs-C pour x-plateforme développés de cette façon.

0
JulesLt