免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: redor
打印 上一主题 下一主题

我最近有一个新的idea了, 有没有人愿意研究操作系统开发的?  关闭 [复制链接]

论坛徽章:
0
81 [报告]
发表于 2008-12-05 21:59 |只看该作者
被雷到了,开心的路过

论坛徽章:
0
82 [报告]
发表于 2008-12-05 22:27 |只看该作者
原帖由 langue 于 2008-12-5 20:44 发表
哎……又有人要写操作系统。
LZ 有没有考虑过,可以基于现有的 NT 内核从 CSRSS 写起?那样要节省不少工作。
ReactOS 花在 NTOSKRNL 上面的精力太多了。



可以学习参考现有的开源内核... 但是我还是坚持自己写.... 自己写和在别人基础上做不是一个层次的, 写过一会就会有更多的体会... 做起事情来的心态会相差很大...

论坛徽章:
0
83 [报告]
发表于 2008-12-05 22:28 |只看该作者
原帖由 love2006 于 2008-12-5 21:30 发表
汉澳sinox已经支持了bsd,unix,linux,windows.
你才提出呢



汉澳不是BSD内核么? 我一直想用用汉澳.... 但是一直没找到好的下载地址呢, 能给个地址么?

论坛徽章:
0
84 [报告]
发表于 2008-12-06 09:48 |只看该作者
原帖由 redor 于 2008-12-5 22:27 发表

可以学习参考现有的开源内核... 但是我还是坚持自己写.... 自己写和在别人基础上做不是一个层次的, 写过一会就会有更多的体会... 做起事情来的心态会相差很大...


我还是觉得有些事情不一定非要亲身经历才能有所感触。
如果你有踩在巨人肩膀上的能力,那我认为到那个时候再尝试自己动手重写底层的一些东西会比较好。
做什么事都得一步一步来。

之前看到过一个叫做 geNToo 的东西,利用现有的 NT 内核来建立 Gentoo 环境,只可惜是个愚人节笑话。
但这样的想法应该不错。你觉得呢?O&O BlueCon 就拿了 NT 的内核,给出最基本的 shell,不过那个 shell 直接运行在 NT Native 模式,不提供完整的环境子系统。

说实在的,操作系统这玩艺不是想写就能写的,也不是说写就可以开始写的。

我们来分析一下在 NT 平台上实现一个运行子系统的可行性以及需要参阅的资料。

Microsoft Windows NT 家族包含以下三个子系统:

OS/2 —— 这东西扔在一边,不去管它。
Win32 —— 微软最心爱的子系统,目前已经相当成熟。
POSIX —— NT4 和 2000 自带的 POSIX 极其简陋。OpenNT/Interix/SFU/SUA 相对完善,可以看成是对原本 POSIX subsystem 的扩展。

以上三者全部构建于 NT Native 运行环境之上。

你准备设计一个新的系统,还是实现现有的?先别急,仅以 POSIX 子系统为例,我们继续考虑体系结构和实现方法的问题。

可行性是一目了然的:在 NT 平台上构建 POSIX 环境的尝试有很多,Cygwin、OpenNT 和 UWIN 都是典型。这显然不是问题。

POSIX 并非 NT 的原生环境,在 POSIX API 和 NT Native API 之间存在一个翻译的过程。

SFU 代表 Services for UNIX。SFU 3.5 的安装盘里有个 Interix 目录,这个目录包含几个重要文件:

posix.exe
psxdll.dll
psxrun.exe
psxss.exe

对于 POSIX 子系统,任何 POSIX 程序都是 POSIX.EXE 的子进程。
PSXSS.EXE 为 POSIX 环境提供系统服务。
PSXDLL.DLL 是 API DLL。
PSXDRV.SYS 提供内核驱动。

这些文件构成了 POSIX 环境的基础。在此基础之上,还有一整套工具程序集和开发工具、X11 client libraries、文档 etc。

psxss.exe 的地位有点类似于 csrss.exe。如果你曾经使用 ntsd -c q -p PID 命令终止过 csrss 进程,你就能直观地明白 csrss 对于 Win32 有多么重要。

PSXDLL 负责把 POSIX API 翻译成 NT Native API。

如果为 NT 编写 POSIX subsystem,最少需要了解和掌握的知识与技能:
1、Windows NT System Architecture
2、NT Native API Reference
3、NT Driver Reference
4、POSIX.x
5、Programming Languages(C,C++,some i386 assembly,shell scripting etc.)
6、Win32 Application Development
7、BSD Sockets、Win32 Sockets Programming

几乎所有现代的成熟的操作系统都包含内核与环境子系统两个部分,而实现环境子系统已经如此复杂,不难想象实现内核的复杂度。

最后我仍然想重复开始的那句话:如果你有踩在巨人肩膀上的能力,那我认为到那个时候再尝试自己动手重写底层的一些东西会比较好。

* http://articles.techrepublic.com.com/5100-10878_11-5047677.html
* http://books.google.com/books?id=nf9Jc9VhuDwC&pg=PT128&lpg=PT128&dq=OpenNT&source=bl&ots=GRE6Jvvn10&sig=wQM3oIjdIJ5sUi_ZI25u1r1E-60&hl=zh-CN&sa=X&oi=book_result&resnum=8&ct=result#PPT126,M1
* ftp://ftp.uni-duisburg.de/Windows/OpenNT/read_1st.txt
* http://en.wikipedia.org/wiki/Microsoft_Windows_Services_for_UNIX
* http://en.wikipedia.org/wiki/Microsoft_POSIX_subsystem
* http://blog.csdn.net/gm_jwl/archive/2005/04/06/337899.aspx
* http://technet.microsoft.com/en-us/interopmigration/bb380242.aspx
* http://bbs.51cto.com/thread-31479-1-1.html
* http://www.research.att.com/~gsf/uwin/
* http://web.archive.org/web/19971211000854/www.softway.com/OpenNT/home.htm
* http://www.microsoft.com/china/windowsserver2003/SFU/default.mspx
* http://bbs.hackbase.com/archiver/?tid-3303943.html
* http://en.wikipedia.org/wiki/Architecture_of_Windows_NT

Architecture of Windows NT

Architecture of Windows NT




[ 本帖最后由 langue 于 2008-12-6 09:51 编辑 ]

论坛徽章:
0
85 [报告]
发表于 2008-12-06 09:58 |只看该作者
原帖由 langue 于 2008-12-6 09:48 发表


我还是觉得有些事情不一定非要亲身经历才能有所感触。
如果你有踩在巨人肩膀上的能力,那我认为到那个时候再尝试自己动手重写底层的一些东西会比较好。
做什么事都得一步一步来。

之前看到过一个叫做  ...



你的这个建议很好, mac os也是mach内核基础上实现的BSD子系统, 性能还可以, 这个BSD子系统也是相当于一个内核之上的一个子系统,  实际上这种方式也是可行的.
但是如果真得要原生的实现n个系统的API确实难度很大, 我希望早期能实现一些基本的posix api然后可以运行命令行的一些程序,
然后再继续开发上面的比如图形系统这些, 图形系统肯定是最难的, 而且各家的API相差都太大.

论坛徽章:
0
86 [报告]
发表于 2008-12-06 10:11 |只看该作者
原帖由 redor 于 2008-12-6 09:58 发表

你的这个建议很好, mac os也是mach内核基础上实现的BSD子系统, 性能还可以, 这个BSD子系统也是相当于一个内核之上的一个子系统,  实际上这种方式也是可行的.
但是如果真得要原生的实现n个系统的API确实难度很大, 我希望早期能实现一些基本的posix api然后可以运行命令行的一些程序,
然后再继续开发上面的比如图形系统这些, 图形系统肯定是最难的, 而且各家的API相差都太大.


如果你愿意实现 POSIX.1、POSIX.2,那么你其实不用考虑差别,更不用考虑图形。

P.S. 如果希望更严肃的讨论,建议搞一个专门的讨论组。



[ 本帖最后由 langue 于 2008-12-6 10:14 编辑 ]

论坛徽章:
0
87 [报告]
发表于 2008-12-06 10:13 |只看该作者
李小龙先生曾说:清空你的杯子,方能再行注满。LZ如果你真想写出自己的OS,必须全部重头开始。

[ 本帖最后由 ewjeok 于 2008-12-6 10:14 编辑 ]

论坛徽章:
0
88 [报告]
发表于 2008-12-06 10:22 |只看该作者
原帖由 ewjeok 于 2008-12-6 10:13 发表
李小龙先生曾说:清空你的杯子,方能再行注满。LZ如果你真想写出自己的OS,必须全部重头开始。


只可惜我们已经过了那个完全靠双手和体力打拼天下的时代。

论坛徽章:
0
89 [报告]
发表于 2008-12-06 10:29 |只看该作者
原帖由 ewjeok 于 2008-12-6 10:13 发表
李小龙先生曾说:清空你的杯子,方能再行注满。LZ如果你真想写出自己的OS,必须全部重头开始。



我喜欢这句话.... 我也喜欢李小龙... 从0开始表示一切都可能有... 空即是有 有即是空

论坛徽章:
0
90 [报告]
发表于 2008-12-06 10:30 |只看该作者
原帖由 langue 于 2008-12-6 10:22 发表


只可惜我们已经过了那个完全靠双手和体力打拼天下的时代。


这句话任何时候对各行各业都适用。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP