达尔文具有其他Unix没有的功能,反之亦然?


19

达尔文是否有特定的功能?其他Unixe是否具有达尔文所缺乏的功能?

Answers:


20

OS X是唯一剩下的基于Mach微内核的操作系统,该操作系统仍在商业上相关。毫无疑问,有一些正在进行的研究项目和过时的OS仍在旧机器的生产环境中使用,但是今天您什么都买不到,只能在新机器上购买。

OS X具有任何* ix常见的各种内核功能不兼容性。我最近不得不解决的最大问题是缺少System V消息队列。(msgget(2)和朋友。)我们必须用TCP / IP替换消息队列代码(该消息队列代码是为“真实的” System V变体编写的,后来移植到Linux),才能使软件在OS X上运行。对于我们的应用程序,在我们选择使用消息队列时,这两种IPC方法之间的差异很重要,但是由于后来的体系结构更改,最终切换到TCP / IP并不是什么大问题。


11

说到底,达尔文难道不是Mach 2.0之上的薄BSD层吗?

我曾经使用过NeXTStep,但我不知道当前MacOSX与NeXTStep有多少不同,但是...

Mach 2.0在内核级别提供了一组不同的抽象:

  1. 一个“任务”:这是一个地址空间+一组“端口”,其中可能有一个正在运行的线程。
  2. 线程。这是可调度的执行单元。一个任务(地址空间)中可能有多个正在运行的任务。我相信Mach-O文件(Mach的可执行文件格式)可以在进程运行时指定多个线程:没有main()函数启动更多Cthread,操作系统将启动一个。
  3. 端口。这些不像TCP或UDP端口。它们是按顺序键入的消息流。有点像RPC。您组成了协议规范文件,然后通过编译器运行该文件,以获取服务器和客户端存根,编组和解组例程等。
  4. 用户级内存分页器。您可以设置任务+线程来处理其他任务的地址空间的分页。

最初的CMU Mach伙计们使用这些抽象来模拟 BSD Unix进程,MS-DOS进程,以及非常奇特的VMS任务。每个VMS任务执行2个Mach任务,以及多个线程。曾经有人为NeXTStep出售Mac OS(pre-OSX)仿真器,该仿真器使用了用户空间寻呼机,效果很好。

CMU Mach的旧出版物页面为:http : //www.cs.cmu.edu/afs/cs/project/mach/public/www/doc/documents_top.html

VMS-on-Mach论文:http//www.sture.ch/vms/Usenix_VMS-on-Mach.pdf


2
Mac OS X(因此也称为Darwin)使用Mach 3.0。
bahamat 2011年


4

达尔文的受支持文件系统类型相对较少。除了诸如devfs之类的特价商品和诸如webdav之类的网络类型之外,列表还包括:

  • HFS / HFS +
  • UFS / FFS
  • ISO-9660 / UDF / CDDA
  • NTFS
  • 脂肪

在此列表中,尽管HFS +已升级为支持所有必需的Unix功能,但只有UFS是为Unix设计的。从Mac OS X 10.6开始,UFS不能用于根分区,尽管此限制可能不适用于Darwin。默认情况下,HFS +不区分大小写,尽管可以在创建时请求区分大小写。尽管Mac OS X将在区分大小写的分区上运行,但是许多知名的Mac应用程序却不会(例如Adobe CS)。

有一段时间,苹果公司计划用ZFS取代HFS ,甚至将ZFS与某些版本的Mac OS X一起发售,但是可悲的是,由于无法解决的许可问题,该实验最终失败了。


我相信,据报道 OS X / macOS的NTFS写入支持仍然存在问题,因为它仍处于试验阶段,从未稳定过。
RandomDSdevel

3

我认为最好将Darwin描述为另一种UNIX。Solaris是其中之一。HP / UX是另一个。还有更多,也许不是“引人注目的”,但它们在那里。每种口味都有其自身的特点。这就是为什么首先要有风味的原因。一些公司想出了一些有助于销售的东西(或者只是与它合作甚至是对其进行管理),并创造了它并给它起了自己的名字。


2
UNIX(大写)是The Open Group在许多国家的注册商标;对于要成为“ UNIX”(大写)的内容,需要进行认证。达尔文并不是另一个“ UNIX风格”,但是Intel x86-64上的Mac OS X 10.10被认证为另一个UNIX。
user314104 2014年

0

如果我没听错,Apple发行的Darwin不再具有独立操作系统的功能,那么我要指出,它最大的区别在于OSX。:D

尽管旧的Mac OS,新的Mac OS X和NeXT东西之间的集成有时是可笑的,但是像diskutilhdiutil这样的小工具却很棒。也许是NeXT遗留下来的一些老Mach内核架构师使用了这些小东西并关心他们,从而确保了XCode也是如此的好工具。


-1

Darwin基于FreeBSD。根据我的经验,其他Unix操作系统中没有的一项很酷的功能是Berkeley Packet Filter,又名/dev/bpf。这是一种非常通用的设备,可用于数据包捕获。


1
尽管Darwin确实借用了一些Userland的东西,但它并不是真正基于FreeBSD。其他评论可以更好地说明这一点。bpf(4)不仅是Darwin和FreeBSD / NetBSD / OpenBSD,而且我觉得有人甚至可能已经为较早的Linux内核实现了它。SCO(著名地)在他们的Unixware产品中拥有它。
jrg 2010年

-11

我想到的第一件事就是OSX在控制台中拥有的所有工具。.unix具有许多更有用的命令。Diskutil就像外壳中的分区魔术师一样,该工具具有许多磁盘操作选项,fdisk实际上只是该野兽拥有的磁盘的10%。类型.. Unix真的有这个吗?在你梦里!!; D

SystemProfiler-出色的工具,可以非常舒适地显示所有硬件ID,名称,型号,SN和类似的东西。

darwin内核并不像unix那样完全透明。

达尔文拥有killall util = P Unix,只有技能

也可以使用不同的文件系统。.HFS,HFS +

也许后者我会记得更多=)


2
您是说达尔文拥有“ killall”功能,而其他Unix变体没有?这不是真的。
kbyrd

2
这个答案很可能是拖钓。关于os X以外的* nix的陈述,不必如此毁。而且,上次我从未使用过* NIX killall绝对存在于我的PATH中。同样,Linux有系统分析器。做你的作业。不要成为déuche。编辑:我使用,我非常喜欢的OS X
伊莱·弗雷

2
我在Linux上使用killall,所以它不是darwin独有的
xenoterracide 2010年

2
这个答案含糊不清。fdisk缺少哪些有用的功能?Linux RAID(mdadm)确实具有串联(LINEAR),条带化(RAID0)和镜像(RAID1)等功能。Linux还支持HFS和HFS +。
马修·弗拉申

3
顺便说一句:Linux-killall和Solaris-killall完全不同
EricSchaefer 2010年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.