Skip to content

SkyPrayerStudio/none

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

None 实验性质的操作系统

None是一个业余时间来编写的一个实验性质的操作系统。目标是实现一个一切都是对象的操作系统(这个概念来自Unix)。

##名称由来

None一开始叫做Ant,之后,由于对之前的代码深恶痛绝,一切都被我推翻了重新写过。新的内核被命名gmL。该名字命名的内核是一个Linux和Minix杂交的产物。而且当时对许多概念的不了解,整个内核十分奇怪。当然内核并没有最终能够发布。该内核托管在Google Code。后来受Java的影响,我像将内核设计运行在虚拟机之上,该设想的内核被命名为vmgmL,该内核事实上没有实现虚拟机,而是实现了个丑陋的IP协议(没有TCP)。该代码也托管在Google Code。之后我又有了一些新的想法,之前的代码又被推翻。因为之前做了那么多事,命了这么多名。却都没有发布,所以新的想法被命名为none(名称来自JavaScript)。表示什么也没有,之前的想法都被推翻了。

##当前实现:

  • 多进程(多对象)
  • 进程通信(调方法)
  • 内存管理(这部分不太满意)
  • 文件系统(同上)
  • 一个奇特的shell(由我的同事YangYongHai实现)
  • 等等一些尚未完成的模块。

##下一部计划

  • 分页内存管理(这部分太重要了,很多模块都都因为这个模块没实现卡住)
  • 将文件系统实现为Object
  • 代码生成代码(Lisp盅惑)

##目标 VIM能够顺利跑在None上

##2013-08-30 更新

  • 修复部分BUG。
  • 修改任务切换代码,添加一个新的中断0x81做任务切换。之前任务切换完全由时钟处理。任务阻塞时使用hlt等待时钟中断发生,这样浪费CPU时间(我不确定hlt方式和int 0x81那个更浪费CPU时间)。更重要的是,下一个中断未必是时钟,有可能是键盘或者其他中断,这样内核就挂掉了。
  • 启用了用户进程的时间片调度。
  • MM进程做了部分调整。

##2013-09-01 更新

  • 添加一个新的系统调用,接口是push,pop,来分配共享buffer区,用来做消息传递。
  • 修复了father的BUG,但是,这部分代码很不协调,准备这周将这这部分代码和FS一起完善.
  • 现在已经有一个粗躁的WAIT可以使用了,现在代码可以加载到0XC00000以上的任意地址,而且进程是独立的了。
  • 更新该条信息的BUG,你们发现了吗?

##2013-09-04 更新

  • 移动kernel/task.h 到include/目录
  • 修改Task类
  • 封装了fork,现在可以直接调用fork生成子进程了。
  • fs/进行了修改,添加File类,File类继承了Task了。现在可以调用fs open方法,fs成功则返回一个File对象的描述符。 调用改File对象的READ方法将该对象加载执行(测试目的,后续完善)
  • 修改了调整了tools/Makefile,Makefile/ kernel/Makeifle,主要是添加了对CLENA_FILES,列表清除的功能
  • 将get 和 dorun封装成一个函数dorun,现在进程不能直接用self()获取他本身,而是由get调用返回,并由dorun传下去。
  • 添加了hook系统调用,用来修改对象的方法。

###关于此次修改的一些说明

  • File做为对象实现是必须的,完美的,但是作为一个Task进行调度,一开始我很难接受。但是我考虑其他几种实现。都存在各种问题,最后发现,作为一个Task实现也是非常完美的,Object就应该是独立对象,跟Task一起被调度。Task作为内核所有对象的根对象实现。所以现在在考虑是不是将Task直接做成Object。

##2013年10月22日星期二 09:10:50

  • 在tests目录下的test.c程序是最新更新的,修改该程序同时修改了kernel/setup.S文件,主要是添加了几个新的16bit段来实现VESA接口的访问。
  • 顺利在保护模式下访问VESA接口,
  • 显示了一幅BMP图片
  • 这只是一个实验,代码不会是这个样子
  • 晚安

##2013年10月23日星期三 22:47:47

  • 网上看了一个画圆算法,画线算法;画了一个界面
  • 用早上上传的automake重新组织了下代码的编译方式,好像编译慢了
  • 效果如下: 画圆,画线效果图

Releases

No releases published

Packages

No packages published