louise_1 发表于 2014-05-20 16:05

支持一下,希望能拿到100元卡

forgaoqiang 发表于 2014-05-20 16:26

这个只能表支持了 MAC OS的内核可真的没功夫研究了~

qianguozheng 发表于 2014-05-20 21:43

目前从事OpenWRT路由器开发,基本是用人家的东西在搞,主要是从一些开源项目中移植一些功能,想深入学习下Linux底层驱动各个子系统,pincrl, dma, gpio等。
有打算学习iOS 开发,毕竟想跟得上时代啊,玩自己的应用多有意思啊,哈哈

mgjrr16888 发表于 2014-05-20 21:54

正好由于工作原因,接触过一段时间的IOS/MAC OSx。
因为本人主要做linux,所以在接触苹果OS的过程中,不是那么痛苦。
先说说相似之处:
1. 都是UNIX系列的操作系统,所以使用上比较相近(Mac OS 和 Linux)。诸如一些命令,环境参数,常用工具等,多数通用。
2. 开发上也有很多相似之处。Linux下使用GCC很久,到MAC OS,也有GCC版本(集成于XCode,也有单独的命令行功能)。GDB是两边都有。
系统调用和C库都符合Posix标准,因此多数接口都是一致的。用到了socket接口,两边基本一致。pthread两边实现基本一致。对于其他子系统的接口,参照《Unix环境高级编程2》,基本都能应付。
以上对于linux,Mac Os X,IOS三个系统都差不多。
不同之处(以下的苹果系统同时指MAC oS和IOS,因为这两个系统的开发有不少地方都是一样的):
1. 当然是开发工具。Linux用vim其实没那么好用,可能个人水平有限。苹果系统下Xcode是相当地方便,自动补全和错误提示功能相当有用。平时集成环境用得少,不过感觉Xcode也算是这方面的优秀者吧。
Xcode的图形调试系统比单纯的gdb命令要方便一些,这个大约和VS系列相似。
Xcode的帮助文档确实很系统和方便,另有一些教程类的文章集成在开发环境里,方便搜索和模仿。这一点比linux下又要方便一些。
2. 图形界面的开发,其实这个不具可比性。Xcode本来就善于做这个。而我在linux下尝试用QT,则会有额外的一些配置工作。并且个人感觉QT的开发没有Xcode的界面功能方便。
3. 线程上Xcode提供了一个NSThread,这个东西使用方便,但可控制的地方比较少。根据我的个人经验,这个东西似乎是基于pthread的一个封装,在简单地分发任务时会比较方便。
4. GCC工具上,Linux肯定是保持最新的,可以随时更新。但Xcode上更新较慢。
    当时我在尝试用C++11的时候,Xcode带的gcc由于版本低一些,所以对标准支持不完善,这个方面在linux就好多了。

但是整体上我在苹果系统上做的工作不多,不足半年。因此无法全面评价两者的差异。个人更喜欢Linux,毕竟是开源的,实现的细节都是可以查看的。在实际工作中,用Linux的显然多过苹果系统,个人接触过的行业包括驱动,存储,仿真,医疗,通信,都是以Linux为主。因此我认为由于苹果系统的封闭性,他肯定还会长期局限在一些特定的应用环境里,以消费为主。而Linux涉及的行业就太多了,所以其发展趋势应该是更广阔一些。

打火机! 发表于 2014-05-21 15:13

如果有时间的话,学习哈。:wink:

daoxuans 发表于 2014-05-21 16:00

MAC OS X系统是闭源的,作者怎么深入分析呢?

send_linux 发表于 2014-05-21 16:10

daoxuans 发表于 2014-05-21 16:00 static/image/common/back.gif
MAC OS X系统是闭源的,作者怎么深入分析呢?

不一定是要开源的吧,微软不也有很多深入理解方面的书么?

beyondfly 发表于 2014-05-22 16:05

1、谈谈您在现在的开发工作,以后是否会转移到OS X或者iOS平台上来?
   我现在的工作,是Linux工程师,目前应该没有什么机会转到OSX或是IOS平台上,但我两年前就可以用Macbook,对MacOSX还有一定的了解
2、阅读样章后,谈谈您对OS X和iOS的看法,以及他们和Linux、Windows的区别。
   样章读了一部分,个人觉得OSX 和ios是一个太封闭的平台,同时苹果公司提供了很多API和相当完善的文档,对于是OSX和IOS平台上开发普通的应用,这些文档已经完全够用了,但如果是要做OSX和IOS的安全机制或是做一些越狱开发,那么了解MacOSX的内核则是很有必要,但我觉得国内这一块的需要相当来说比较少,做越狱开发的应该不多

timespace 发表于 2014-05-22 17:40

回复 14# mgjrr16888
OS X从Snow Leopard就是认证UNIX(其他认证UNIX有Solaris/AIX/HP UX...),虽然自己没做过OS X的原生应用,但对传统UNIX部分比较熟悉。
OS X的c/c++编译器只是前端部分兼容gcc(4.2.1),具体实现则是clang,基于LLVM,对C++标准的支持早已走在的gcc的前面,默认是C++98编译,需要传-std=c++11来打开C++11的支持,也就是说如今OS X的gcc和Linux的gcc是两个本质不同的东西,版本比较没有意义了。


   

gvim 发表于 2014-05-23 15:34

本帖最后由 gvim 于 2014-05-23 15:35 编辑

@send_linux
那个 godbanch 写错了吧。。。

1、谈谈您在现在的开发工作,以后是否会转移到OS X或者iOS平台上来?
现在除了必须用windows的地方,开发工作基本都在osx上完成,不过还没有涉及osx的原生app开发,基本用的是跨平台的语言环境。学过一段时间objc,挺好一门语言,方法调用也"继承"了微内核的玩法:消息,所以C++的空对象无法调用方法,但是Objc确可以给空对象发送消息。。。

2、阅读样章后,谈谈您对OS X和iOS的看法,以及他们和Linux、Windows的区别。
没怎么看样张,后面的章节才是干货,可惜没样张。就我了解的部分,bsd层不说了从bsd拿的,和linux区别主要是实现上比如kqueue和epoll,这部分了解BSD的话很快能了解;内存管理部分和netbsd有类似,因为netbsd的mem管理也是从mach弄来的,freebsd借鉴了netbsd的设计,所以mem这部分其实也可以看作是变性的bsd版本(其实是从mach发展来的,不过说成变性的bsd估计能体会的人多一些);驱动层没接触过,osx的机器那样封闭,也没有什么需要自己写驱动吧;调度的话个人感觉比其他实现要省事也先进,上层弄了个GCD(此GCD非彼GCD)进行任务分派,更好的对函数式并发提供支持(objc->block)。除此之外还有opencl也是osx先搞然后现在一些数学库开始支持opencl。总的来说osx的世界其实也很好玩,并没有宣传中哪样封闭。
页: 1 [2] 3 4 5 6 7 8
查看完整版本: 深入理解内核系列之---Mac OS X和iOS内核初探有奖交流(获奖名单已公布-2014-6-26)