【问题标题】:difference between Linux kernel and UNIX kernel(such as FreeBSD) from programmer's point of view从程序员的角度来看 Linux 内核和 UNIX 内核(如 FreeBSD)的区别
【发布时间】:2011-02-16 04:10:01
【问题描述】:

从程序员的角度来看,Linux 内核和 UNIX 内核(例如 FreeBSD)的区别。 我搜索了几篇关于这个的文章。他们从用户的角度和管理员的角度以及公司经理的角度比较了这些。 任何人都可以从程序员的角度找到文章或说些什么吗?

我的意思是程序员,用户级程序员还是内核级程序员?

任何提示或启示都非常感谢。

希望这不是一个让每个人都生病的陈词滥调问题。 :P

【问题讨论】:

  • FreeBSD 是 UNIX 内核吗?以为它只是带有一些 *BSD 血统的 FreeBSD 内核:P

标签: linux unix kernel


【解决方案1】:

从标准的角度来看,确实没有任何区别。 Linux 是兼容“POSIX”的操作系统,FreeBSD、Mac OS X 和 Solaris 也都兼容“POSIX”。至少在理论上。

一旦您超越了标准,就会有很多不同之处。 Linux 作为 inotify、udev 和一堆它独有的其他系统。 FreeBSD 有 kqueue。它们对 ptrace 之类的确切实现存在差异。例如,Mac OS X 的 ptrace 几乎没有其他 Unix 系统中的功能。

除了自定义库之外,开发工具也存在差异。 Solaris 和 FreeBSD 有 dtrace。 Linux 有 valgrind。 Mac OSX 有工具。

您正在查看的级别会影响您看到或未看到的差异。

【讨论】:

  • +1 即使在标准范围内,也有很大的差异空间。我最近遇到的一种情况是waitpid() 在 Solaris 上是边缘触发的,而在 Linux 上是电平触发的(尽管只与WUNTRACEDptrace 有所不同)。
【解决方案2】:

对于用户态程序员来说,没有区别。用户态编程将编码为像 C 这样的语言 VM,并由 C 库例程将其转换为较低级别的系统调用。

那些使用 Perl、Python、Java 等其他工具的,甚至更多从内核中删除,因此也不会直接影响它们。

就内核程序员而言,由于内核本身不同,因此差异可能很大。尽管我在 Linux 中做了很多工作,但我还没有看到 FreeBSD 的内部结构,所以我不能明智地评论低级差异,但是(最后一点是知情的意见,而不是福音),因为他们运行独立的开发流,拥有完全相同视图的机会很小。

【讨论】:

  • 是的,你是对的。我为什么要问这个问题。几天前我在一次采访中被问到,但我很难给出一个好的答案..耻辱:(
  • "对于用户态程序员来说,没有区别" not 在用户态编程中包含 libC 不是很奇怪吗?据我所知,您的句子暗示所有用户空间都可以直接从 */Linux 复制到 */BSD,而 AFA_I_K 不正确(例如,有特定的 Debian/BSD 版本)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-11
  • 2020-11-16
  • 2013-10-20
  • 1970-01-01
相关资源
最近更新 更多