PiscisOS开发笔记_1_PiscisOS的诞生和系统特性简介
来源:互联网 发布:北美吐槽君 知乎 编辑:程序博客网 时间:2024/05/01 02:11
博客的前三篇文章是一个关于简单的操作系统开发的系列文章,那三篇文章写于2010年9月份,那时还是大三刚刚开始,和朋友枫影一起做完了一个IM系统之后我们萌生了一起写个小的操作系统的念头,从那时候开始我们就开始准备这方面的知识了,当时是看了《自己动手写操作系统》这本书,初看感觉很生涩,有很多理论知识太陌生。于是就准备把操作系统这个项目当作一个长期目标,至少在离开校园之前完成它。后来大三下期我和枫影都开始忙了,我们边忙着工作,边忙着找工作,所以操作系统这个事就被我们放下了,但是我们还是在不断的储备这方面的知识。
再后来,我如愿以偿找到了自己向往的工作,但是枫影却出了点问题,没能和我一起进入我们曾经一起向往的公司,后来枫影就跟同学去了别的城市工作了。而我经过实习后又回到校园,用最后一年完成了当初的目标,PiscisOS就这样诞生了,虽然现在的作品很简单,但是已经远远超出了当初的设计。现在拿出来跟大家分享一下,希望能与CSDN中的汇编板块中很多志同道合的朋友一起探讨共同进步,也希望能让想做操作系统而却很迷茫的同学能有个参考。
关于这个系统我取名叫做PiscisOS,没有什么特殊的意思,个人爱好。PiscisOS的完成我参考了很多现有的开源的基于X86架构的小型操作系统:MenuetOS,MikeOS,MouseOS,还有msdos的源码。其中借鉴了MenuetOS中的较多的设计方案。也参考了很多书籍资料,具体不在这里详细列出,需要的话可以在工程的References文件下找到。这篇文章一旦写出来就意味着我又要写一个PiscisOS的系列文章了,因为开发中需要很多知识,不可能一篇不长不短的文章就能说清的,所以我会分模块的把PiscisOS的开发中所选择采用的各种设计详细的介绍给大家。
PiscisOS的所有工程源码和镜像文件可以在这里获得:http://sdrv.ms/L96AMz
这篇文章先简单的介绍一下目前完成的PiscisOS的一些特性和运行截图。
PiscisOS是一个基于X86架构的微型操作系统,系统全部代码均采用汇编语言完成,采用的汇编程序为Flat Assember,目前包括已经现的若干个应用程序代码量为7000行汇编代码。系统采用的介质为1.44M的3.5英寸软盘镜像,镜像文件名为Piscis.vfd。
硬件环境:
CPU:386或者更新的CPU
内存:至少16MB以保证系统内核能运行,最多支持4GB。
其他:键盘,软盘驱动器
系统特性:
多任务:最多支持250个进程,采用时间片轮转调度算法,调度时间为10ms。进程通信机制目前只实现了一个进程等待功能。
文件系统:基于FAT12的内存磁盘文件系统(Ram Disk)。
编程接口:通过50H号系统中断提供系统调用,目前已经实现的系统调用如下表:
内部名称
系统调用功能号
系统调用描述
sysc_gettick
0
获取系统tick数
sysc_getkey
1
获取键盘输入
sysc_screenandcursor
2
屏幕和光标相关
sysc_putchar
3
屏幕打印字符
sysc_print
4
屏幕输出字符串
sysc_time
5
获取当前时间
sysc_date
6
获取当前日期
sysc_createprocess
10
创建进程
sysc_exitprocess
11
退出进程
sysc_waitpid
12
等待进程
sysc_rdfs
20
文件系统相关
详细说明文档见syscalls doc.txt文件。
这里给出一个典型的Hello world应用程序的实现代码:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Application for PiscisOS: Helloworld;;Assembled by Flat Assembler;;;;23/04/2012;;Copyright (C) tishion;;E-Mail:tishion#163.com;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;use32org 00hAPP_HEADER:db'PISCISAPP000';;Signaturedd0;;ReserverdddAPP_START;;Entry PointddAPP_ARGS;;Arguments Bufferdd0;;ReservedAPP_ARGS:times (256) db0 APP_START:mov edi, str_hwmov eax, 04hint 50hmov eax, 11hint 50hstr_hwdb 'Hello, world!', 0
下面贴上系统完整启动过程的截图。
图Boot Sector程序加载磁盘文件
系统启动成功
进入系统交互界面
系统应用程序测试
这篇文章就写这么多内容,只是做一下简单介绍,接下来我会整理开发笔记,把详细的开发过程已经其中所学习到的知识分享给大家。
敬请期待下一篇:PiscisOS开发笔记_2_开发方法详解
- PiscisOS开发笔记_1_PiscisOS的诞生和系统特性简介
- PiscisOS开发笔记_1_PiscisOS的诞生和系统特性简介
- PiscisOS开发笔记_2_开发方法详解
- PiscisOS开发笔记_2_开发方法详解
- 笔记:VCL的诞生和设计原理
- 记滚播编单系统的诞生
- GIT 简介 --git的诞生
- HTML5开发笔记_2、HTML5基础_1.HTML5特性简介
- PHP三位创始人传奇的诞生简介
- Ext4文件系统的特性和功能简介
- (0) java的产生和特性简介
- PDM 的诞生和消亡
- Linux的诞生和发展
- 进程的诞生和消亡
- linux的诞生和发展
- Android开发学习笔记:Service的简介和启动方式
- Android开发学习笔记:Service的简介和启动方式
- Android开发学习笔记:Service的简介和启动方式
- 鸟哥私房菜--第13章 学习 Shell Scripts(5)
- Possible version
- Importance of Year End Reviews
- 鸟哥私房菜--第13章 学习 Shell Scripts(4)
- 哈佛案例课
- PiscisOS开发笔记_1_PiscisOS的诞生和系统特性简介
- javaWeb中request获取请求数据的方式。
- C#异步调用四大方法详解
- android.database.CursorIndexOutOfBoundsException:Index -1 requested, with a size of 0
- ASIHTTPRequest 详解, http 请求终结者
- 如何让你的网站瘦身而保持营养
- 谁是行内谁是块级
- Liferay's Permission 权限
- 实现JSP数据和JavaScript数据交互使用