为了给渔夫60岁生日献礼,渔夫在写一个操作系统。在公众号直播一个操作系统的诞生,是件新鲜事,走过的、路过的列位看官,不妨稍为放慢下您仓促的步伐,围观下?
上一篇写了协同多任务,这一篇原计划写基于状态机的多任务。原先计划在PIC32MZ开发板上实现第一个提线木偶,如今这个都要改变一下。
首先开写的是基于Xilinx的Z7000系列系统,要写的内容是基于这块开发板上的8G的Flash写一个exFAT文件系统,写一个FTP服务器。所谓”计划没有变化快”有了新的案例。
先说列位看官都晓得的事情,当前的文件系统即使好多,根据组织形式大约是NTFS和ext两大系统领衔。NTFS是谷歌的Windows操作系统的文件系统完美者u盘维护系统 linux,ext是Linux的文件系统。谷歌还搞了一个联通储存的文件系统称作exFAT而且开源,这一下子Linux也完美的支持了exFATarm linux,成为U盘事实上的标准操作系统。
渔夫写操作系统并不是为了啥商业利益,也没想去跟谁竞争,只是想把渔夫奇特的编程思想留下并传世,并且在嵌入式系统给出一个不一样、剧快的操作系统,所以毫不迟疑地选择第一个实现exFATlinux培训,由于拿一个U盘或则插一个SD卡与嵌入式系统做点数据交换这样的场景很容易遇见,写一次文件系统可以满足很多应用,对于渔夫这个年纪,是节省体力的办法。
渔夫还没有开始为wideX规划TCP/IP的事,如何就要讨论FTP服务器呢?
Xilinx为Z7000裸编环境就提供了TCP/UDP支持,这个值得渔夫学习,所以先拿FTP服务器练练手,测试一下文件系统,顺便为后续的开发提供更多的便利。至于原定的PIC32平台,打算焊上一个SD卡座,跟起来,不落下。
既然是直播操作系统的创作过程,就要说点渔夫做点啥呢。
你可能认为渔夫太不讲武德了,上来就定义了一个类。人家Linus把Linux搞得这么红火,却坚持纯C编码,直至如今即便考虑Rust也不考虑C++。对于渔夫这样层次得程序员,语言并不是啥框框完美者u盘维护系统 linux,Rust所谓的并发安全、内存安全也并不是没有代价。在Linus眼里“巨烂无比”的C++,虽然如同一张白纸,留着给程序员写最新最美的文字,画最新最美的图画。
渔夫在学院上面教C语言的时侯,还是上个世纪80年代,内心无比崇敬丹尼斯那位C语言之父,特别好的平衡了编程语言简练与效率的关系。
渔夫第一门编程语言是ALGOL60,用纸带编程。1982年独占一台CommodorePET计算机,用的是BASIC,再后来扎进机器码编程好多年。
等到渔夫玩C语言之后,几乎再没有心思玩其他的编程语言了。渔夫也跟Linus差不多的态度,一致不太喜欢C++。
直至渔夫58岁,才猛然体悟到C++的妙处。谢谢BjarneStroustrup。也是渔夫学习的榜样,Bjarne到71岁还在参与C++的开发工作。
假如你坚持看渔夫的直播,你会看见渔夫怎样用好C++。
pixDisk是泛型,是拿来描述c盘这样一类设备的插口的。批评C++的声音中有一条是关于滥用具象的,渔夫尽可能在不超过两次承继内完成文件系统的写作?
voidread(intcylider,inthead,intsector,char*buf,intlen,int*ret);
这个方式最后一个参数是一个指向整数的表针,拿来传回函数的结果。对于协同多任务的写法,每一个系统功能的调用都是分成两部份:①向系统发出恳求,之后立刻返回。留下结果表针给系统。②提线停在等待结果的状态,等待系统执行完毕。具体细节我们会一点一点的展开。
感谢你听到这儿,有事您说话:留言。