Jiajun's profileCyan MysteryPhotosBlogListsMore Tools Help

Blog


    May 18

    毕设终于完成

    大前天正式发布,由于MSN Space一直当机,现在才发布消息
     
    毕设创意的初衷是因为去IBM后要接触很多这种系统级的东西,因此借机深入学习操作系统实现,
    以及自学欠缺的编译技术。因此作品就是FileSystem+ScriptInterpreter,一个简单的模型。
     
    整个项目除了之前叙述的文件系统以外,更有意思的就是架构在其上的脚本解释器。
    这是我为其设计的一个小型脚本语言,叫ML(My Language)。
    麻雀虽小,五脏俱全,ML语言特性支持流程控制( if-else ; while ; for-range ; for-iteration ;  ),变量,表达式计算,赋值,输入输出,系统程序调用(调用储存在我自己的文件系统上的程序,主要是对我的文件系统进行文件操作);作为动态类型语言,支持三种数据类型String , Integer 和 Void ,并且提供对以上数据类型的表达式计算支持 ; 支持动态编程(写完一个语句马上执行),和执行脚本文件; 语句,表达式支持嵌套 ;
     
    基本上,ML具有一个脚本语言应有的大多数特性。下面写个示例程序,展示一下:)
     
     
    print  "variable declaration" 
    var a
    var b
    var c
     
     
    print "assignment"
    a = "/bin"
     
     
    print "now listing the file under '/bin' in my file system"
    v_ls ( a )
     
     
    print "now we repeat"
    for a in [ 2 to 5 ]
    do
       for  b iter {  "hello" , "ML"  }
         do
            c = "/bin" + a + b ;
     
            print "we make a file"
            v_mkfile(  c )
     
            print "we write a file"
            v_wrfile( c , "This is a test string" )
     
            print "we read a file"
            v_rdfile( c )
         done
    done
     
    print "now listing the file under '/bin' in my file system, again"
    v_ls ( "/bin" )
     
     
    print "now we calculate"
    print "hahaha" + a + b ;
    print 10 + 20 * 4 ;
     
     
    print "we take a while"
    a = 10
    while a>=0
    do
     print a
     a = a - 1;
    done
     
     
    print "we try if"
    for a in [0 to 9]
    do
       if a>6
         do
            print "Mr.Big:" + a ;
          done else
          do
            print "Mr.Small" + a ;
       done
    done
     
    以上代码全部可运行(经测试)
     
     
    整个项目(脚本解释器+文件系统)包含8226行C代码(特意写了个小程序计算了一下)
    词法分析阶段和语法分析阶段借住了FLex,Yacc工具
    手工写的在6000行左右吧
    这个折磨我脑细胞和手指两个月的东东终于结束了,剩下的工作就是写成论文了
    祝我好运
     
     
     
     
    April 08

    进度不错

    懒了几天,终于开始写shell了
    这应该是最简单的部分
    不过照旧很烦……

    重头在后面的pre-compiler
    要加油了:)
    March 20

    写一个文件系统

    作为毕业设计的一部分,一个Unix-like的文件系统正在被实现着。
    它支持Unix文件系统的基本功能(读,写,删除,修改 目录/文件)
    我把一个2进制文件虚拟成一个硬盘,在其上建立此系统。
    文件组织,存储分配的算法基本参照Unix内核。

    规格如下:
    Total Size:16MB (16*1024*1024 Bytes)
    Section Size:1024 Blocks
    Block Size:1024 Bytes

    Architecture:
    Super Block                                             for control information
    I-node List                                                storing i-nodes for specifying files
    Data Blocks                                             binary data storage

    Operation Supported:
    File/Directoy naming
    Multiple blocks "inside" one file
    Making/Deleting/Opening/Writing/Reading files/directories and
    changing there names.
    File system navigation & traversal.

    Features Not Supported:
    Additional file information such as Time of Last Altering or Time of
    creation.
    Indirect file blocks.
    Logical file addresses. (To be implemented later)
    Buffering for blocks and inodes. (To be implemented later)


    上个星期开始些文档,上周末开始编码。刚刚实现了建立/删除/写普通文件。预期会以 文件-目录-块缓冲-索引块缓冲 的顺序完成。
    December 07

    终于装了个让我满意的Linux,真是享受啊

    这些天也变成装机王子了
    RH9,FC4,Debian
    一个个装过来
    今天终于在台式机上装了向往已久的Suse 10
    那显示效果真爽啊(尤其是对于长期在本本上用800x600的我……)

    写程序都倍儿(用京腔)有劲啊
    Suse10自带了一个叫做amaroK的音乐播放器
    提供了一些国外的网络音乐广播地址
    于是我addicted in no time

    今天看到控制设备驱动程序一章
    还满有意思的
    Linux下写程序最大的感受就是
    所有的实现,所有的机制,所有的接口都很透明
    也许是因为封装少的缘故把
    可以不太费劲的调用一些很低层级的机制
    还有就是这帮写C程序的家伙真是牛x
    很多命令行工具功能都非常强劲
    为了实现那些功能,他们设计的机制也挺好玩的
    比如把设备抽象为文件,就大大简化了编程

    要继续看书才行了
    I've got more than half a book left to get on with
    November 29

    Fedora不认识我本本的显示器.....

    只有在800x600的分辨率下工作,极为不爽
    这两天学会了安装一些常用的东东
    apt-get, xmms, Acrabat Reader...
    挺麻烦的:P