前段时间华为发布了鸿蒙系统,反响很大,在发布会上提到了一点那就是鸿蒙用的是微内核,不同于安卓的Linux内核,说道微内核,其实诺基亚当年用的塞班系统也是微内核的,搂出一段当年的塞班文件读写代码
HBufC8* log = HBufC8::NewL(buffLength);
log->Des().Append(aDes);
RFs rfs;
RFile file;
rfs.Connect();
TInt err = file.Open(rfs, KLogFilePath, EFileWrite);
if(err != KErrNone)
{
err = file.Replace(rfs, KLogFilePath , EFileWrite);
if(err != KErrNone)
{
file.Close();
rfs.Close();
return;
}
}
TInt pos = 0;
file.Seek(ESeekEnd, pos);
file.Write(*log);
file.Close();
rfs.Close();
delete log;
很明显,塞班的文件读写是通过一个RFs的Session连接来进行,也就是说文件操作也是通过C/S模式来处理的,是独立于内核之外的服务模块方式。当然微内核并不是决定系统的好坏或者成败与否,但是为什么塞班没有活下来?原因很多,系统本身落后有一定原因,但不是最主要的原因,那么问题来了,
塞班系统还有复活的可能吗?
答案是:不太可能了。
1.首先塞班系统确实是太老了,它的前身是Epoc,我那会上大学的时候在图书馆翻到一本关于嵌入式系统的书,发现有介绍到Epoc系统,那本书是1989年出版的!
2.其次塞班是基于硬件资源有限的设备设计的,这是个什么概念?当年的塞班第三版手机cpu也就200~300MHz,内存16~32M,普通App占用内存都在1M以下,塞班程序开发对内存限制已经到了变态的地步,都是按字节计算的,如果30个字节就够了你就不要申请31个字节,写过塞班程序的都知道,连线程也被塞班认为是很大的开销,塞班系统自己设计一个活动对象的机制,应该还有人对
CActive
这东西有印象。现在的安卓和iOS设备动不动4G的内存,一个App动不动就占用内存100多M,线程满天飞,当然现在的手机屏幕分辨率高,各种App画面效果非常炫,占用内存多是很合理的,但是现在很多开发者连基本的内存控制意识都没有,即使设备配置再高,大量的App经常用着用着内存不足就崩出去,因此虽然硬件资源充足,但开发者都没有节省的意识了,所以塞班哪一套设计已经完全没用了,人们对手机的关注重点不在这,重要是体验,管你占用多少内存,好用才行。3.塞班自从开源之后直到诺基亚宣布放弃,至始至终就没有什么组织来继续维护,早期的时候见过德国有人想建立一个群体呼吁大家加入继续为塞班续命,而那时安卓和iOS正发展的如火如荼,应该没有什么人响应,便不了了之了。塞班的源码在gitbub上也有,但是star的人很少,塞班内核的star数都不到100,可想而知,塞班真的是死了!
塞班系统源码
https://github.com/SymbianSource
塞班系统内核源码
https://github.com/SymbianSource/oss.FCL.sf.os.kernelhwsrv
我要评论