J'ai lu que Mac OS X et bsd sont liés. Dans quelle mesure sont-ils liés ? Les logiciels Mac OS X peuvent-ils être modifiés et installés sur BSD ?
Réponses
Trop de publicités?À l'époque d'OS X 10.4, j'ai passé un certain temps à ne pas écrire un VFS pour OS X. À cette époque, parmi les principaux sous-systèmes du noyau, seuls la pile réseau et le VFS étaient encore véritablement BSD. À l'époque, même le VFS avait été partiellement réécrit pour le rendre plus modulaire (toutes les structures de données du VFS BSD sont devenues des pointeurs opaques et l'API passait par ce qu'on appelait les fonctions KPI). Je crois que la pile réseau a suivi la même voie. Il y avait aussi une fine couche à l'interface avec l'espace utilisateur qui faisait que le système d'exploitation ressemblait à BSD pour les programmes de l'espace utilisateur.
Tout le reste avait été pratiquement réécrit ou remplacé : la gestion de la mémoire, la gestion des processus, etc. provenait du micro-noyau Mach ; le sous-système des pilotes de périphériques avait été écrit de A à Z par Apple.
En termes de programmation userland, OS X est très similaire à BSD et les programmes écrits pour BSD devraient être facilement portables. Cependant, OS X a beaucoup d'APIs qui ne sont pas disponibles dans BSD. Cela inclut presque tout ce qui concerne l'interface utilisateur - les graphiques, le son, etc. Il y a aussi d'autres interfaces qui n'existent pas dans BSD comme l'API de lancement qui est la méthode préférée de OS X pour lancer les processus d'arrière-plan.
La Wikipédia Article BSD est bon (et correspond à ma propre compréhension, pour ce que cela vaut). Il est dit que Darwin, le système sur lequel est construit Mac OS X d'Apple, est un dérivé de 4.4BSD-Lite2 et FreeBSD. Il note que la version 4.4BSD est la dernière version à laquelle Berkeley a participé.
Ainsi, 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 aussi une variété de frameworks, et tout ce qui repose sur ces derniers ne sera pas portable.
OS X dans son ensemble est un UNIX 03 système. Cela équivaut à être un système réellement conforme à POSIX (par opposition à être POSIX-like).
Comme d'autres réponses l'ont noté, les parties userland du système d'exploitation ne sont pas surprenantes pour quiconque a une grande expérience d'Unix, et j'ai rarement eu des difficultés à créer des logiciels Unix portables sous OS X.
En revanche, les parties du système d'exploitation qui ne sont pas destinées à l'utilisateur sont assez différentes. Apple semble vouloir innover dans ces domaines de manière assez joyeuse. Je pense (mais je ne suis pas sûr) que ces changements font officiellement partie de Darwin. L'une des différences les plus évidentes est que lancé sur le marché a remplacé cron, at, inetd, et une grande partie de l'infrastructure de démarrage.
Si le logiciel Mac utilise Cocoa, la bibliothèque d'affichage propriétaire d'Apple (qu'elle hace s'il fonctionne sur le Mac avec une interface graphique et ne nécessite pas le démarrage d'un serveur X), alors vous pouvez avoir des problèmes pour exécuter le code sur un système BSD normal.
Si votre code n'utilise que des fonctions spécifiées par POSIX, il sera proprement porté sur 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 utilisateur important. Évidemment, je ne peux pas quantifier la "proximité" - c'est subjectif.
Mac OS X est une saveur 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 saveurs de BSD serait facile ou même gérable, beaucoup moins qu'entre d'autres saveurs BSD communes. Chacune d'entre elles apporte ses propres spécificités, et OS X plus que la plupart.
Portage de programmes de otros Les saveurs BSD vers OS X impliquent également du travail et ne fonctionnent pas toujours (sans problème ou pas du tout), mais c'est généralement beaucoup plus simple.
Cela dépend du type d'applications que vous essayez de porter. Si vous écrivez des programmes de console C/C++ compatibles POSIX, ils compileront et fonctionneront très bien sous n'importe quel système compatible POSIX (principalement les saveurs Linux et BSD), mais notez qu'OS X n'implémente souvent pas les fonctions POSIX les plus récentes (par ex. utimensat
) qui sont disponibles sous Linux. D'autre part, les applications graphiques utilisent Cocoa ou l'ancien Carbon, ce qui nécessite 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.
- Réponses précédentes
- Plus de réponses