一、概述 ( Overview )
Sinos是基于Intel 80386系列CPU的独立操作系统,除了PC
BIOS外,其运行不依赖于任何外部软件,目前版本可以把PC从冷启动状态带到保护模式下的图形控制台,实现了作为真正PC操作系统的大部分特征。
按照传统的操作系统分类方法,目前Sinos应该属于非抢占式多任务单用户操作系统。当然,整个系统的结构是按照抢占式多用户多任务标准设计的,只是目前部分模块还没有完工,相应的功能还达不到。
与大部分自制操作系统走模仿Linux路线不同,Sinos是一个完全重新设计的操作系统,其设计思想更倾向于Microsoft的设计,例如使用FAT16文件系统、内核级线程、按优先级调度和类Windows的图形子系统等。
Sinos使用虚拟内存机制。与Windows和Linux一样,Sinos在80386平台上并没有使用CPU所支持的段页式内存管理,而是使用固定的段选择子和描述符,从而跳过了段机制,只使用分页内存管理。在开启分页机制的4GB虚拟地址中,Sinos与Linux一样,把高端的1GB作为共享的核心态内存,低端3GB作为用户态内存。因此,在内存的保护机制上,Sinos也跳过段的特权级(Privilege
Level)检查,只使用页机制中的检查机制。
当前Sinos还不支持页交换,只能使用物理内存,但已留下接口,一旦文件系统完成,可以很快地实现换页机制。
在内存地址分配方面,Sinos对核心态地址采用了普遍采用的伙伴(Buddy)算法,以内存页为单位分配地址。
Sinos支持内核级线程调度。在Sinos中,任务调度的单位是线程,系统以不区分线程所在进程的方式统一调度线程,是典型的内核级线程实现。在调度中,系统采用Windows的调度思想,把线程分成32个(Windows是48个)优先级,系统线程使用高端的16个,用户线程使用低端的16个。每个优先级的线程组织成一个循环链表,按优先级高低依次调度。调度细节详见下文。
Sinos使用类Windows模式的GUI及相应的GDI。在图形用户接口方面,Sinos参照使用了大量Windows的API及相应的定义。之所以这么做,是因为编写GUI是一个相当复杂的过程,途中涉及大量的API和结构定义,而采用类似Windows的开发接口,可以使开发工作变得熟悉,提高开发效率。目前Sinos下运行的GUI程序的处理界面以及消息循环的代码与Windows非常地相似(当然其实现是完全不同的)。不过,Windows的GDI是相当复杂的,Sinos没有必要实现如此复杂的系统,在某些环节如窗口管理上做了一定程度的、不影响外观的简化。
Sinos支持VESA标准的SVGA模式。为了使图形界面的效果更好和避免进行复杂的VGA寄存器和调色板处理,Sinos使用VBE2.0
支持高分辨率、高色深的SVGA模式,通过LFB(Linear Frame Buffer)技术来简化VGA中繁琐且性能低下的位平面操作。
当然,出于兼容性考虑,Sinos也支持VGA,带有一个基本的VGA驱动。
Sinos统一使用Unicode作为内码。Unicode是当前的大势所趋,它尤其在提供中文支持方面有着巨大的优势,所以Sinos使用Unicode作为内部字符串的格式,以便在内核级提供中文支持。
Sinos使用Microsoft Portable
Executable(PE)格式的可执行文件。考虑到操作系统与编译器的相互依赖性,Sinos几乎不可能拥有独立的编译器,所以保护模式下的可执行文件使用Windows的PE标准,以便使用Windows环境的编译器进行开发。