Programming 版 (精华区)

发信人: SwordLea (飞刀李), 信区: Programming
标  题: [合集]When Do We Write Our Chinese Os?(2)
发信站: 哈工大紫丁香 (2003年11月28日17:04:18 星期五), 站内信件


────────────────────────────────────────
 iamxiaohan (潇寒)                    于 2003年11月26日19:40:42 星期三 说道:

When Do We Write Our Chinese Os?(2)
上一篇谈到了怎样把计算机用我们自己的程序启动起来,然而我已经说过,那只是最最初
始的一步,只表明了我们的确可以让计算机从一开始就按照我们的命令去执行一个任务。
但它并不能算是一个操作系统,当计算机用引导程序引导起来之后,我们需要让它把真正
的操作系统内核载入内存中,然后跳转到真正的操作系统内核中运行。
本篇将完成一个真正意义上的操作系统引导,而不是第一篇里所描述的计算机的引导。这
里我们将从计算机启动时的16位的实模式转到现在通用的32位的保护模式下。
现在的操作系统除了最低层的部份之外,均由高级语言完成,在本篇中我们也将用高级语
言来编写我们的内核。本篇中实现的一个内核是用C语言编写的。用汇编写的引导程序,把
C语言写的内核载入并执行,这就是本篇将要完成的任务。
阅读本文最好有那么一丁点的汇编基础~~~
还是那句老话,我水平极其有限,这只是一个尝试,对于不计其数的错误,望大家海涵,
千万不要来砍我啊~~~
非常感谢各位老师,大牛能指点一二!
现在,我们继续我们的实验。
首先,我想先介绍一下实模式与保护模式,对于本篇,它们是非常重要的概念!一定要领
会!就算现在领会有误也要尽可能的领会!大家都知道现在用的Intel的CPU在原先8086的
时代是16位的,后来技术发展了,Intel的CPU也改成了32位的了。但是为了同以前16位的
程序兼容,Inetl在它的32位的CPU中仍然保留了16位的模式。这样在32位的CPU中,就有两
种工作模式,一种是16位的模式,称之为实模式;另一种是32位的模式,称之为保护模式
。在计算机刚刚启动的时候,它是工作在实模式情况下,为了让它工作在保护模式的情况
下,我们需要向CPU中一个cr0的寄存器置位,这样,当cr0的第0位被置位后,CPU就转到32
位模式下工作了。因此,从16位转到32位是非常简单的,只需要对CPU的一个寄存器进行置
位操作就行了。但是,还是需要做一个准备工作,这里我们先来谈谈16位与32位模式下内
存是怎样访问的。
学过汇编的都知道,在8086中,内存是分段的,一个内存地址由 段基址:偏移量 构成。这
是因为在16位的CPU中,寄存器的大小是16位的,只能访问2^16=64K的地址,这实在是太小
了,因此需要通过分段的机制来扩大程序的访问内存的范围。显然,在16位的CPU中,一个
段的大小最大只能是64K
但是在32位的CPU中,寄存器的大小是32位的,可以访问2^32=4GB有空间,这又太大了!一
个程序只需要其中的能小一部分空间就足够了。因此,在32位的CPU中,也将内存分段,为
每个程序分配必要的空间,以免浪费。(注,在32位的CPU中,内存管理有分段与分页两种
模式,分页主要用于实现虚拟内存,本文只讨论分段模式)这样就需要记住每个段是属于
哪个程序的?是用来干啥的?是数据段还是代码段?可以访问还是不可以访问?是只读的
还是可写的?。。。这些需要记录的信息是在太多了,CPU就把它们组织起来放在内存中一
个专门的地方,这块内存就称之为段描述符,它描述了这个段的属性。每个段都有一个描
述属性的段描述符,把它们全部组织起来放在内存的一个专门的地方,就形成了段描述符
表。32位CPU有全局描述符表(GDT)与局部描述符表(LDT)之分。全局描述符表就指此表
可被所有的程序访问。在32位的CPU中,段寄存器并不是表示段的基址,而是表示一个指向
描述符表的索引,用来指出此程序用到的段的描述符在描述符表的位置。然后,访问此描
述符表取出描述符,由此才得到有关段的属性信息。32位CPU的段寄存器器还是16位的,不
过,它用13位来作段描述符表的索引,因此,我们可以定义的最大段数为2^13=8192个。由
此可见,在32位的保护模式下,内存是通过段描述符表来访问的,因此,当我们转到32位
模式之间,我们需要创建好段与段描述符表。
好了,基础知识我们已经有了,闲话少说,我们来编写我们的引导程序,完整的源代码如
下:
注:在上一篇已经注解过的地方,这次就不注解了,如果有不理解之处,请找上一篇看看
[BITS 16]
[ORG 0x7C00]
    jmp main
; ---------------------------------------------------------------------------
; 数据定义
bootdrive   db  0
; --------------------------------------------------------------
; GDT 定义,此处定义段及段描述符
gdt:
    gdt_null:           ; 这是CPU要求保留的,CPU要求第一个段必须是空段,不知它
                        ; 想用来干啥
        dd  0
        dd  0           ; 每个段的描述符是64位(8字节),空描述符的这64位全是0
    gdt_code_addr equ $ - gdt   ; 求得代码段在GDT表中的位置
    gdt_code:
        dw  0xffff      ; 段大小为4GB
        dw  0           ; 基地址(24位)
        db  0       
        db  10011010b   ; 属性描述位,指明此是代码段,可读可执行
        db  11001111b   ; 具体的每一位是代表什么可查Intel CPU编程手册
        db  0           ; 没有的可以去网上下,也可以找我要
    gdt_data_addr equ $ - gdt   ; 求得数据段在GDT表中的位置
    gdt_data:                    
        dw  0xffff          
        dw  0                
        db  0
        db  10010010b   ; 指明此是数据段,可读可写
        db  11001111b
        db  0
    gdt_end:
    gdt_addr:
        dw  gdt_end - gdt - 1   ; GDT 表的大小
        dd  gdt                 ; GDT 表的位置
; ---------------------------------------------------------------------------
main:                       ; 引导程序从此处开始执行
    mov [bootdrive] , dl    ; 得到启动的驱动器号
    xor ax , ax             ; 设置 DS
    mov ds , ax
    ; 清屏
    ;mov ax , 3             ; 设置清屏功能号
    ;int 0x10               ; 调用 BIOS 10 号中断清屏
    .ResetFloppy            ; 重置磁盘,不是必须的,主要是为了安全起见
    mov ax , 0              ; 设置重置磁盘的功能号
    mov dl , [bootdrive]    ; 选择启动磁盘
    int 0x13                ; 调用 BIOS 13 号中断重置磁盘
    jc .ResetFloppy         ; 如果出错则重试
    .ReadFloppy             ; 读内核到内存中 0000:9000 (es:bx)处,
                            ; 为什么要读到9000处,这不是一定的,
                            ; 你可以读到另外一个合适的地址
                            ; 什么地址合适?怎样知道一个地址合不合适?待会再说
    xor ax , ax             ; 设置 es 寄存器
    mov es , ax 
    mov bx , 0x9000
    mov ah , 2              ; 设置读磁盘功能号
    mov dl , [bootdrive]    ; 设置欲读驱动器号
    mov ch , 0              ; 磁头号
    mov cl , 2              ; 起始扇区号,从第二个扇区开始读,
                            ; 第一个扇区是引导扇区,第二个才是内核所在
    mov al , 17             ; 需读入扇区的数量,此处读了17个扇区,
                            ; 是怕内核较大,读少了读不完  
    int 13h                 ; 调用 BIOS 13 号中断开始读扇区,
                            ; 此中断会将数据读到 es:bx 处
    jc .ReadFloppy          ; 如果出错则重试(ah中是错误号,为0则没错)
    mov dl , [bootdrive]    ; 停止驱动器
    mov edx , 0x3f2
    mov al , 0x0c
    out dx , al
    cli                     ; 关中断     
    lgdt [gdt_addr]         ; 载入 GDT 的描述符                        
    mov eax , cr0           ; 下面三句设置 cr0 的第 0 位(PE位)为1,
                            ; 表示进入保护模式 
    or eax , 1                                                                        
    mov cr0 , eax   
    jmp gdt_code_addr:code_32   ; 跳入32位的代码段中 
[BITS 32]
code_32:
    mov ax , gdt_data_addr  ; 以下三句设置 DS,ES,SS,FS,GS
                            ; 为数据段描述表的位置
    mov ds , ax
    mov es , ax
    mov ss , ax 
    mov fs , ax 
    mov gs , ax
    mov esp , 0xffff        ; 设置堆栈的头指针  
    jmp gdt_code_addr:0x9000    ; 跳入内核,
                                ; gdt_code_addr是定义的代码段的描述符所在的索引
                                ; 由于我们先前是把内核读到了 0x9000的位置,
                                ; 因此我们现在就转到内核所在去执行,
                                ; 引导程序胜利完成历史使命!
;---------------------------------------------------------------------------
times 510-($-$$) db 0
db 0x55
db 0xAA
下面,我们用我们最最最最最最熟悉的C语言来编写我们的系统内核。源代码如下:
char* msg = "Welcome to HIT Operation System!Version 0.0001 by xyb" ;
void main()
{
    unsigned char* videomem = ( unsigned char* )0xb8000 ; /* 获得显存地址 */
    while( *msg != '\0' ){
        *videomem++ = *msg++ ; /* 设置显示字符的ASCII码 */
        *videomem++ = 0x1b ;  /* 设置文字属性(背景色,前景色,是否闪烁等)*/   
    }
    for(;;);
}
这个代码太简单了,就不详加解释了,这里只需要说明一下0xb8000是啥地方。让我们首先
来看一下内存是怎样被CPU分配的。
0x0000:0x0000 -> 0x0000:0x03FF = 中断相量表住的地方
0x0000:0x0400 -> 0x0000:0x04FF = BIOS 住的地方 (BIOS 数据区 BDA)
0x0000:0x0500 -> 0x0000:0x7BFF = 你可以使用的自由内存区
0x0000:0x7C00 -> 0x0000:0x7DFF = 系统引导程序的家,
                                 现在你知道引导程序中要加上[ORG 0x7c00]了吧
0x0000:0x7E00 -> 0x9000:0xFFFF = 你可以使用的自由内存区
0xA000:0x0000 -> 0xB000:0xFFFF = VGA 显示器的显示内存所在!!!!!!!!(*)
0xC000:0x0000 -> 0xF000:0xFFFF = BIOS 住的地方 (BIOS 的只读内存区)
。。。。。。。。。
上面列出的就是CPU保留的内存部分的分配情况,注意*行,再看看C语言程序,显然,我们
直接把数据写到显存中了!这样,数据就可能被显示出来。
现在我们的程序已经编制完成,接下来,需要完成的工作是生成我们的启动盘启动我们可
爱电脑,就快熬出头了~~~,累啊!!!
先编译我们的引导程序,然后把它写到引导文件img的头512字节中,这一点在上一篇里已
经详细描述过了,这里就不在描述了,若有不清楚的地方,请找上一篇看看
下面,我们要生成我们的内核,这比较麻烦,因为在windows下却少必要的编译工具与链接
工具,目前的vc,bc都只能生成win32标准的程序,而非二进制文件,弄了好久也没解决这
个问题,有没有哪位大侠知道啊!!!麻烦告诉一声,谢谢!^_^
没办法,MS的东东太烂了,我们只好在Linux下编译它。
在Linux下编写好此C语言程序(也可以在Windows下编写好,然后拷到Linux下用),取名为
xyb.c
然后,建如如下命令:
gcc -c xyb.c
其中 -c 表示只编译不链接
接着再敲
ld -o xyb -Ttext 0x9000 -e main xyb.o
-o 表示输出文件名,-Ttext 0x9000 表示程序基址定为 0x9000 -e main 表示从main()开
始执行
还要敲
objcopy -R .note -R .comment -S -O binary xyb xyb.bin
-R .note -R .comment 表示移掉 .note 与 .comment 段
-S 表示移出所有的标志及重定位信息
-O binary xyb xyb.bin 表示由xyb生成二进制文件xyb.bin
然后,把xyb.bin拷回到Windows中,并用WinHex写到img文件中方才引导程序的后面,OK!
大功告成!
下面是运行的结果:
http://202.118.250.9/borlandclub/pyos/pyos.jpg
这里,本文的所有任务与预定目标已经完成。现在的引导程序已经是一个比较完整的引导
程序了,不过内核还不能算是一个内核,如果有时间,我希望能将实验继续下去~~~,还望
大家多多支持,多多指点!^_^ 
本文所介绍的程序全部源代码及最后生成的映象文件可在下
面地址下载ftp://202.118.239.46/Incoming/Other/BTC/temp/pyos1.rar
仍然留个Mail,欢迎大家指教!
xieyubo@126.com

────────────────────────────────────────
 Sun (大灯泡)                         于 2003年11月26日19:50:58 星期三 说道:

太酷了!没得说!崇拜!
【 在 iamxiaohan (潇寒) 的大作中提到: 】
: When Do We Write Our Chinese Os?(2)
: 上一篇谈到了怎样把计算机用我们自己的程序启动起来,然而我已经说过,那只是最最初
: 始的一步,只表明了我们的确可以让计算机从一开始就按照我们的命令去执行一个任务。
: 但它并不能算是一个操作系统,当计算机用引导程序引导起来之后,我们需要让它把真正
: 的操作系统内核载入内存中,然后跳转到真正的操作系统内核中运行。
: 本篇将完成一个真正意义上的操作系统引导,而不是第一篇里所描述的计算机的引导。这
: 里我们将从计算机启动时的16位的实模式转到现在通用的32位的保护模式下。
: 现在的操作系统除了最低层的部份之外,均由高级语言完成,在本篇中我们也将用高级语

────────────────────────────────────────
 iamxiaohan (潇寒)                    于 2003年11月26日20:00:19 星期三 说道:

现在还不知道怎样在windows下把C语言编译成纯的不带有任何附加信息的二进制程序,
在linux下有objcopy这个工具,不知windows平台下有什么工具或方法可以代替,
弄了很外,都没在windows下弄出来,现在只好在linux下把C语言编译好了,再拷回来,
郁闷~~~
【 在 Sun (大灯泡) 的大作中提到: 】
: 太酷了!没得说!崇拜!
: 【 在 iamxiaohan (潇寒) 的大作中提到: 】
: : When Do We Write Our Chinese Os?(2)
: : 上一篇谈到了怎样把计算机用我们自己的程序启动起来,然而我已经说过,那只是最最初
: : 始的一步,只表明了我们的确可以让计算机从一开始就按照我们的命令去执行一个任务。
: : 但它并不能算是一个操作系统,当计算机用引导程序引导起来之后,我们需要让它把真正
: : 的操作系统内核载入内存中,然后跳转到真正的操作系统内核中运行。
: : 本篇将完成一个真正意义上的操作系统引导,而不是第一篇里所描述的计算机的引导。这
: : 里我们将从计算机启动时的16位的实模式转到现在通用的32位的保护模式下。
: : 现在的操作系统除了最低层的部份之外,均由高级语言完成,在本篇中我们也将用高级语

────────────────────────────────────────
 artist (手艺人)                      于 2003年11月26日20:03:16 星期三 说道:

你说的附加信息是什么?是系统调用吗?
【 在 iamxiaohan (潇寒) 的大作中提到: 】
: 现在还不知道怎样在windows下把C语言编译成纯的不带有任何附加信息的二进制程序,
: 在linux下有objcopy这个工具,不知windows平台下有什么工具或方法可以代替,
: 弄了很外,都没在windows下弄出来,现在只好在linux下把C语言编译好了,再拷回来,
: 郁闷~~~
: 【 在 Sun (大灯泡) 的大作中提到: 】
: : 太酷了!没得说!崇拜!

────────────────────────────────────────
 iamxiaohan (潇寒)                    于 2003年11月26日20:07:43 星期三 说道:

不是,就是标记信息重定位信息等等垃圾~~~ :(
【 在 artist (手艺人) 的大作中提到: 】
: 你说的附加信息是什么?是系统调用吗?
: 【 在 iamxiaohan (潇寒) 的大作中提到: 】
: : 现在还不知道怎样在windows下把C语言编译成纯的不带有任何附加信息的二进制程序,
: : 在linux下有objcopy这个工具,不知windows平台下有什么工具或方法可以代替,
: : 弄了很外,都没在windows下弄出来,现在只好在linux下把C语言编译好了,再拷回来,
: : 郁闷~~~

────────────────────────────────────────
 kylix (智贤fans)                     于 2003年11月26日20:13:39 星期三 说道:

你可以试试nasm和partcopy
下面是我以前搜集的一篇文章:
当你打开计算机时发生了什么?
  1.电源打开;2.BIOS开始执行;3.引导程序开始执行。
  引导程序的规定:你要有一个普通的二进制文件(COM 格式);大小是512个字节;
最后两个字节一定是0AA55h;它能被载入到内存地址0x7C00。
  工具:
  NASM——是一个免费的汇编工具(有DOS/windows/Linux三种版本)
  PARTCOPY2.0——DOS下可自由往磁盘拷贝数据的软件
  举例:
  1.Just hang……
  这个简单的引导程序只能挂起:
  hang:
   jmp hang
  times 512-($-$$)-2 db 0
  dw 0AA55h
  连接这个引导程序:
  nasm -f bin -o hang.bin hang.asm
  现在你需要一张格式化磁盘,传送hang.bin到磁盘的引导扇区
  partcopy hang.bin 0 200 -f0
  “0”的意思是指从hang.bin文件的顶端开始传送
  “200”的意思是指拷贝200个字节
  插入磁盘和重新启动机器,测试这个引导程序。
  2.一个实模式下的引导程序
  上面的程序非常简单,下面介绍一个稍微复杂一点的程序。
  bits 16
  org 0x7C00
  start:
  cli;关中断
  mov ax,0x9000;设置堆栈址:0x90000
  mov ss,ax
  mov sp,0
  sti;开中断
  l1:push ds
  mov dl,0;
  重新设置磁盘控制器
  mov ax,0
  int 13h
  pop ds
   jc fail
  push es
  mov ax,0x1000;ES:BX=10000
  mov es,ax
  mov bx,0
  mov ah,2;读磁盘扇区
  mov al,5;读入5个扇区
  mov cx,2;柱面号=0,扇区号=2
  mov dx, 0;磁头号=0,驱动器号=0
  int 13h;ES:BX=来自磁盘上的数据
  pop es
  jc l1
  mov ax,0x10000;设置段寄器
  mov es,ax
  mov ds,ax
  push ax
  mov ax,0
  push ax
  retf
  fail:
  jmp fail
  times 512-($-$$)-2 db 0
  dw 0AA55h
  连接这个引导程序:
  nasm -f bin -o boot.bin boot.asm
  传送boot.bin到磁盘的引导扇区
  partcopy boot.bin 0 200 -f0
  为了使程序可以看到,在编译下面程序
  mov ax,1000h;修改段寄存器
  mov ds,ax
  mov es,ax
  mov si,msg;打印 "JIPPIKAYE!"
  call putstr
  hang:;挂起
  jmp hang
  putstr:
  lodsb
  or al,al
  jz short putstrd
  mov ah,0x0E
  mov bx,0x0007
  int 0x10
  jmp putstr
  putstrd:
  retn
  msg db JIPPIKAYE!,13,10,0
  连接和传送:
  nasm -f bin -o boot.bin boot.asm
  partcopy boot.bin 0 200 -f0 200
  在partcopy中最后一个参数“200”意思是指磁盘的偏移地址插入磁盘和重新启动机
器,你会看到“JIPPIKAYE”然后挂起。
  (黑龙江 姜延欧)
【 在 iamxiaohan (潇寒) 的大作中提到: 】
: 现在还不知道怎样在windows下把C语言编译成纯的不带有任何附加信息的二进制程序,
: 在linux下有objcopy这个工具,不知windows平台下有什么工具或方法可以代替,
: 弄了很外,都没在windows下弄出来,现在只好在linux下把C语言编译好了,再拷回来,
: 郁闷~~~
: 【 在 Sun (大灯泡) 的大作中提到: 】
: : 太酷了!没得说!崇拜!

────────────────────────────────────────
 Sun (大灯泡)                         于 2003年11月26日20:24:50 星期三 说道:

老dos下有个exe2bin.exe的东西,可以把exe变com,符合要求
不知道win32下有没有这样的
另外,你可以用cygwin呀
【 在 iamxiaohan (潇寒) 的大作中提到: 】
: 现在还不知道怎样在windows下把C语言编译成纯的不带有任何附加信息的二进制程序,
: 在linux下有objcopy这个工具,不知windows平台下有什么工具或方法可以代替,
: 弄了很外,都没在windows下弄出来,现在只好在linux下把C语言编译好了,再拷回来,
: 郁闷~~~
: 【 在 Sun (大灯泡) 的大作中提到: 】
: : 太酷了!没得说!崇拜!

────────────────────────────────────────
 iamxiaohan (潇寒)                    于 2003年11月26日21:54:17 星期三 说道:

SUN老大这招果然利害!!!
cygwin真是好东东!
谢谢SUN老师了!^_^
【 在 Sun (大灯泡) 的大作中提到: 】
老dos下有个exe2bin.exe的东西,可以把exe变com,符合要求
不知道win32下有没有这样的
另外,你可以用cygwin呀
【 在 iamxiaohan (潇寒) 的大作中提到: 】
: 现在还不知道怎样在windows下把C语言编译成纯的不带有任何附加信息的二进制程序,
: 在linux下有objcopy这个工具,不知windows平台下有什么工具或方法可以代替,
: 弄了很外,都没在windows下弄出来,现在只好在linux下把C语言编译好了,再拷回来,
: 郁闷~~~
: 【 在 Sun (大灯泡) 的大作中提到: 】
: : 太酷了!没得说!崇拜!

────────────────────────────────────────
 Sun (大灯泡)                         于 2003年11月26日22:03:43 星期三 说道:

在你的钻研面前,我只敢脸红,不敢称师
你的学习效率很高呀。
我得努力了!!!
【 在 iamxiaohan (潇寒) 的大作中提到: 】
: SUN老大这招果然利害!!!
: cygwin真是好东东!
: 谢谢SUN老师了!^_^
: 【 在 Sun (大灯泡) 的大作中提到: 】
: 老dos下有个exe2bin.exe的东西,可以把exe变com,符合要求
: 不知道win32下有没有这样的
: 另外,你可以用cygwin呀
: 【 在 iamxiaohan (潇寒) 的大作中提到: 】
: : 现在还不知道怎样在windows下把C语言编译成纯的不带有任何附加信息的二进制程序,

────────────────────────────────────────
 artist (手艺人)                      于 2003年11月26日22:11:36 星期三 说道:

希望坚持到底。弄出个像样的东东来。
【 在 Sun (大灯泡) 的大作中提到: 】
: 在你的钻研面前,我只敢脸红,不敢称师
: 你的学习效率很高呀。
: 我得努力了!!!
: 【 在 iamxiaohan (潇寒) 的大作中提到: 】
: : SUN老大这招果然利害!!!
: : cygwin真是好东东!
: : 谢谢SUN老师了!^_^
: : 老dos下有个exe2bin.exe的东西,可以把exe变com,符合要求
: : 不知道win32下有没有这样的

────────────────────────────────────────
 lofe (〖感激生活〗)                  于 2003年11月27日08:22:44 星期四 说道:

我倒是凌乱的看了一些相关文章,但是从来就没有下决心去
尝试一下,实在是佩服你的钻研精神!
好样的!一定要坚持下去!
【 在 iamxiaohan (潇寒) 的大作中提到: 】
: When Do We Write Our Chinese Os?(2)
: 上一篇谈到了怎样把计算机用我们自己的程序启动起来,然而我已经说过,那只是最最初
: 始的一步,只表明了我们的确可以让计算机从一开始就按照我们的命令去执行一个任务。
: 但它并不能算是一个操作系统,当计算机用引导程序引导起来之后,我们需要让它把真正
: 的操作系统内核载入内存中,然后跳转到真正的操作系统内核中运行。
: 本篇将完成一个真正意义上的操作系统引导,而不是第一篇里所描述的计算机的引导。这
: 里我们将从计算机启动时的16位的实模式转到现在通用的32位的保护模式下。
: 现在的操作系统除了最低层的部份之外,均由高级语言完成,在本篇中我们也将用高级语

────────────────────────────────────────
 SwordLea (飞刀李)                    于 2003年11月27日09:31:37 星期四 说道:

很佩服你的钻研精神,曾经我也呼吁过我国自主版权的OS,
还提出了任务调度的模型,甚至本版现在还保留着那一篇帖子,
但那时的情况很不一样,泼冷水的比灌水的多。
那时我还年轻,我的ID是红旗。
推荐一篇我的同事Killer写的《OS引导记录手册》,你可以在
安全焦点的主页找到
http://www.xfocus.net/articles/200307/576.html
【 在 iamxiaohan (潇寒) 的大作中提到: 】
: When Do We Write Our Chinese Os?(2)
: 上一篇谈到了怎样把计算机用我们自己的程序启动起来,然而我已经说过,那只是最最初
: 始的一步,只表明了我们的确可以让计算机从一开始就按照我们的命令去执行一个任务。
: 但它并不能算是一个操作系统,当计算机用引导程序引导起来之后,我们需要让它把真正
: 的操作系统内核载入内存中,然后跳转到真正的操作系统内核中运行。
: 本篇将完成一个真正意义上的操作系统引导,而不是第一篇里所描述的计算机的引导。这
: 里我们将从计算机启动时的16位的实模式转到现在通用的32位的保护模式下。
: 现在的操作系统除了最低层的部份之外,均由高级语言完成,在本篇中我们也将用高级语

────────────────────────────────────────
 Sun (大灯泡)                         于 2003年11月27日10:08:14 星期四 说道:

我现在也在考虑做OS的事情
通过对国内情况的调研,我发现,当务之急并不是有一个自己的操作系统,而是要有能力
安全地应用老美的OS。安全应用Windows比安全应用Linux紧迫得多
做自己的OS,如果只从兴趣角度做,那就怎么弄都成。Linus当初就是一个兴趣而以,所以
Linux基本是按照Unix的样子扒下来的,同样体系的另一种实现,并没有超越多少
如果从长远看,那就得好好设计。现在的流行OS都有弊端。Windows GUI核心太累赘,
Linux/Unix的X又效率太差。它们并不很适合做嵌入,尤其实时性成问题。
现在再做OS,就既要考虑桌面应用,又要考虑嵌入应用。
我认为核心仍然应该是字符的,用应用扩展GUI。核心是实时的,在实时的同优先级调度情
况下采用分时调度。也可以考虑在优先级相近的情况用Windows的抢占式多任务。
API或者System call可以学习、借鉴Win32与posix。并不需要与他们二进制级兼容,也不
需要完全地库函数级兼容,一切以好用为目标。
用这套OS比拼大众桌面是没有必要的,也是不现实的。目标应该定在广泛的嵌入,尤其是
军事领域。同样在军事领域的桌面应用也大有可为。军队的电脑实质上功能很单一,一台
就做一件事情,并不需要大量的应用,所以完全可以重新开发应用
一点拙见,欢迎讨论
【 在 SwordLea (飞刀李) 的大作中提到: 】
: 很佩服你的钻研精神,曾经我也呼吁过我国自主版权的OS,
: 还提出了任务调度的模型,甚至本版现在还保留着那一篇帖子,
: 但那时的情况很不一样,泼冷水的比灌水的多。
: 那时我还年轻,我的ID是红旗。
: 推荐一篇我的同事Killer写的《OS引导记录手册》,你可以在
: 安全焦点的主页找到
: http://www.xfocus.net/articles/200307/576.html

────────────────────────────────────────
 SwordLea (飞刀李)                    于 2003年11月27日10:30:39 星期四 说道:

如果可以不考虑兼容,尤其是对现有的大量应用程序的兼容,
一切就都变得很容易了,但一切推翻重来需要有多大规模的
开发组织啊!
若是从Windows安全角度入手,现有的安全产品还真的很难
跟上MS公司Bug的发现速度。不能否则Windows的庞大架构中
体现出一种结构上的美感,但为什么总是有许多很容易避免
的编程错误(比如该用strncpy的地方用了strcpy)出现在
底层的关键部位呢?
写操作系统?写安全产品?
进退维谷,左右为难。
【 在 Sun (大灯泡) 的大作中提到: 】
: 我现在也在考虑做OS的事情
: 通过对国内情况的调研,我发现,当务之急并不是有一个自己的操作系统,而是要有能力
: 安全地应用老美的OS。安全应用Windows比安全应用Linux紧迫得多
: 做自己的OS,如果只从兴趣角度做,那就怎么弄都成。Linus当初就是一个兴趣而以,所以
: Linux基本是按照Unix的样子扒下来的,同样体系的另一种实现,并没有超越多少
: 如果从长远看,那就得好好设计。现在的流行OS都有弊端。Windows GUI核心太累赘,
: Linux/Unix的X又效率太差。它们并不很适合做嵌入,尤其实时性成问题。

────────────────────────────────────────
 Sun (大灯泡)                         于 2003年11月27日10:39:56 星期四 说道:

如果有一个做大事的目标,但是抱着成不成无所谓权当学习锻炼的心态,
可能很多看似障碍的东西,就能在实践当中变得不值一提了
【 在 SwordLea (飞刀李) 的大作中提到: 】
: 如果可以不考虑兼容,尤其是对现有的大量应用程序的兼容,
: 一切就都变得很容易了,但一切推翻重来需要有多大规模的
: 开发组织啊!
: 若是从Windows安全角度入手,现有的安全产品还真的很难
: 跟上MS公司Bug的发现速度。不能否则Windows的庞大架构中
: 体现出一种结构上的美感,但为什么总是有许多很容易避免
: 的编程错误(比如该用strncpy的地方用了strcpy)出现在
: 底层的关键部位呢?
: 写操作系统?写安全产品?

────────────────────────────────────────
 SwordLea (飞刀李)                    于 2003年11月27日10:55:58 星期四 说道:

有道理啊。
如果当年的RedFlag听到这番话,COS也许已经发布出来供同学们测试了。
路本来是没有的,走的人多了也便成了路。
【 在 Sun (大灯泡) 的大作中提到: 】
: 如果有一个做大事的目标,但是抱着成不成无所谓权当学习锻炼的心态,
: 可能很多看似障碍的东西,就能在实践当中变得不值一提了
: 【 在 SwordLea (飞刀李) 的大作中提到: 】
: : 如果可以不考虑兼容,尤其是对现有的大量应用程序的兼容,
: : 一切就都变得很容易了,但一切推翻重来需要有多大规模的
: : 开发组织啊!
: : 若是从Windows安全角度入手,现有的安全产品还真的很难
: : 跟上MS公司Bug的发现速度。不能否则Windows的庞大架构中
: : 体现出一种结构上的美感,但为什么总是有许多很容易避免
: : 的编程错误(比如该用strncpy的地方用了strcpy)出现在

────────────────────────────────────────
 Sun (大灯泡)                         于 2003年11月27日11:00:50 星期四 说道:

开工?
等我忙过这个期末,也就有时间了
以后电影可以基本不看了,有更好的娱乐了
btw: 你的签名档什么意思?看不懂,解释一下好吗?
【 在 SwordLea (飞刀李) 的大作中提到: 】
: 有道理啊。
: 如果当年的RedFlag听到这番话,COS也许已经发布出来供同学们测试了。
: 路本来是没有的,走的人多了也便成了路。
: 【 在 Sun (大灯泡) 的大作中提到: 】
: : 如果有一个做大事的目标,但是抱着成不成无所谓权当学习锻炼的心态,
: : 可能很多看似障碍的东西,就能在实践当中变得不值一提了

────────────────────────────────────────
 kylix (智贤fans)                     于 2003年11月27日11:05:58 星期四 说道:

我觉得我们如果为了学习,写个能跑的操作系统练练手,过过瘾是
没问题的(很有成就感的),
但是千万不要定位到与Xdows或Xnix竞争的,或者做一个某方面很完
美的系统。精力与能力我们都不够。
【 在 SwordLea (飞刀李) 的大作中提到: 】
: 有道理啊。
: 如果当年的RedFlag听到这番话,COS也许已经发布出来供同学们测试了。
: 路本来是没有的,走的人多了也便成了路。
: 【 在 Sun (大灯泡) 的大作中提到: 】
: : 如果有一个做大事的目标,但是抱着成不成无所谓权当学习锻炼的心态,
: : 可能很多看似障碍的东西,就能在实践当中变得不值一提了

────────────────────────────────────────
 kylix (智贤fans)                     于 2003年11月27日11:07:28 星期四 说道:

支持,sun带头,干吧
【 在 Sun (大灯泡) 的大作中提到: 】
: 开工?
: 等我忙过这个期末,也就有时间了
: 以后电影可以基本不看了,有更好的娱乐了
: btw: 你的签名档什么意思?看不懂,解释一下好吗?
: 【 在 SwordLea (飞刀李) 的大作中提到: 】
: : 有道理啊。
: : 如果当年的RedFlag听到这番话,COS也许已经发布出来供同学们测试了。
: : 路本来是没有的,走的人多了也便成了路。

────────────────────────────────────────
 Sun (大灯泡)                         于 2003年11月27日11:16:03 星期四 说道:

谁都是头,何必我带头?
大家都有什么想法呀?都提出来讨论讨论,然后整理制定计划
希望能做下去
【 在 kylix (智贤fans) 的大作中提到: 】
: 支持,sun带头,干吧
: 【 在 Sun (大灯泡) 的大作中提到: 】
: : 开工?
: : 等我忙过这个期末,也就有时间了
: : 以后电影可以基本不看了,有更好的娱乐了
: : btw: 你的签名档什么意思?看不懂,解释一下好吗?

────────────────────────────────────────
 lofe (〖感激生活〗)                  于 2003年11月27日11:31:00 星期四 说道:

问题太多,一直没去多想。目标是一个什么样子的os呢?
有人说windows开始为paper处理而出世,而unix则是为network而诞生
那么我们自己要做的呢?基于x86还是arm,如何构架,都要有哪些
功能,哪些特性。。
【 在 Sun (大灯泡) 的大作中提到: 】
: 谁都是头,何必我带头?
: 大家都有什么想法呀?都提出来讨论讨论,然后整理制定计划
: 希望能做下去
: 【 在 kylix (智贤fans) 的大作中提到: 】
: : 支持,sun带头,干吧

────────────────────────────────────────
 iamxiaohan (潇寒)                    于 2003年11月27日11:59:39 星期四 说道:

深有感触!!!
最初在进行这个实验的时候,我就完全是抱着这个心态的,
只是想练练手,学习学习,另外也想起个头,万事开头难,对于写操作系统也的确是这样
第一步是把计算机用自己的程序启动起来,如果这一步你完成了,你就会有写出一个自己
的操作系统的想法与信心了,因此,我在第一篇实验报告中非常详细的描述了这个步骤。
就希望有感兴趣的朋友就此走下去~~~
在完成这个实验的过程中,我深有体会,当我在找寻资源时发现国外有很多相关的资料,
有很多的人在写自己的操作系统,并且,老外很喜欢share他们的思想,他们基本上是自
己的操作系统写到什么地方,实验报告也就贴到什么地方,大家都从中吸取精华,进度非
常之快。而国内的中文资源的确是太少了,就算有一两个,也并没有公布他们的成果,想
要找一点中文资料是非常之难的。因此我在写第二篇的时候,心态就变为留下一点中文的
资料~~~
说句实话,总是觉得在其它方面,中国落后可能还能找出点什么客观原因,但是对于计算
机软件方面的落后,那是没有客观原因的,就是我们自己不努力!因为,只要有计算机我
们就可以编程。然而我们总是跟随着老外走,从最初的DOS到WINDOWS,从UNIX到LINUX,
以及无数的C、C++编译器,
在计算机软件成就最高的地方,我们中国自己的东西在哪里?我们中国对世界计算机软件
业的贡献又在什么地方?我们有无数的软件公司,我们也成立了若干的软件学院,但我们
到底又做了些什么?这是十分汗颜的!
DOS,WINDOWS都是国外的,LINUX也是国外的,虽然你可以让为他是世界的,但是你使用
LINUX,GPL要遵守,你的代码必须开源,向全世界开源,向我们的敌人开源!这样我们
的操作系统将暴露在全世界,在所有敌人的面前!没有没有BUG的系统,当所有的敌人
都来挑你的BUG,并以此来攻击你的系统的时候,你还有什么安全性可言?LINUX不适用
与军用!
因此,一个拥有完全自主知识产权的操作系统我认为是十分必要且有价值的!我们可以选
择,都我们自己的国民,对我们的友好人士开源,而拒绝对我们的敌人开源!一切事情我
们都可以自行决定,不需要遵守什么GPL,当然,如果我乐意,我也可以遵守它。
我最初是这样设想我的实验品的,它与PE文件格式兼容,这样,我们就可以在Windows下编
写应用程序,然后到自己的操作系统中去使用(这里指的是控制台程序)。它是汉字内核
的,就算有外文也用拼音 ^_^ ,这样,连幼儿园的小朋友也可以操作我们自己的操作系
统,它对中文的支持将是从引导程序就开始的!
操作系统的很多东西是与硬件紧密结合在一起的,特别是与CPU的结合,很多CPU指令就是
给操作系统用的,因此,积累自己的编写操作系统的经验对与我们自主开发CPU是非常有
益的!
我非常希望我们能团结起来,开发一个完全有自主知识产权的操作系统,现在有很多机遇
有大量的LINUX代码可以借鉴
国外有很多人在写自己的操作系统,并且是开源的,我们可以学习,可以借鉴
非常希望我下半年本科的毕业设计可以进行这项实验,但现在看来希望非常渺茫,很多事
情不是自己能选择的~~~ :(
要是SUN能带个头,组织一部份人参与开发,那就太好了,这东西需要大家齐心协力合作!
要是能得到学校的支持就更好了!不需要学校投入什么研发费用,只需要一台电脑,一根
网线就足够!
【 在 Sun (大灯泡) 的
大作中提到: 】: 如果有一个做大事的目标,但是抱着成不成无所谓权当学习锻炼的心态,
: 可能很多看似障碍的东西,就能在实践当中变得不值一提了
: 【 在 SwordLea (飞刀李) 的大作中提到: 】
: : 如果可以不考虑兼容,尤其是对现有的大量应用程序的兼容,
: : 一切就都变得很容易了,但一切推翻重来需要有多大规模的
: : 开发组织啊!
: : 若是从Windows安全角度入手,现有的安全产品还真的很难
: : 跟上MS公司Bug的发现速度。不能否则Windows的庞大架构中
: : 体现出一种结构上的美感,但为什么总是有许多很容易避免
: : 的编程错误(比如该用strncpy的地方用了strcpy)出现在

────────────────────────────────────────
 iamxiaohan (潇寒)                    于 2003年11月27日12:06:53 星期四 说道:

谢谢支持!
现在最大的问题就是时间太有限了~~~,唉!
【 在 artist (手艺人) 的大作中提到: 】
: 希望坚持到底。弄出个像样的东东来。
: 【 在 Sun (大灯泡) 的大作中提到: 】
: : 在你的钻研面前,我只敢脸红,不敢称师
: : 你的学习效率很高呀。
: : 我得努力了!!!

────────────────────────────────────────
 iamxiaohan (潇寒)                    于 2003年11月27日12:14:20 星期四 说道:

有些函数是与系统相关的,这须要我们重写,
我现在的实验系统的内核已经改成C语言多文件架构的了,
现在已经完成了,对VGA显卡的操作函数,对键盘的中断响应函数,
(现在还有FAT12的文件系统未完成,完成后,我会贴我的第三篇实验报告 ^_^ )
现在你也可以在C语言中直接使用(现在我也是这样用的)
Print函数
比如你可以这样写
#include "video.h"
int main()
{
   Print( "Welcome to HIT Operation System!" , white , blue ) ;
   for(;;) ;
}
其中 Print 是在video.h中定义的一个库函数,是我们自己实现的一个库函数
white 表示前景色,blue 表示背景色
你看,这已经同你使用printf()函数差不多了
对于一些非硬件相关的函数,我们可以直接使用C/C++的标准函数,
这样,工作量会小很多。
【 在 SwordLea (飞刀李) 的大作中提到: 】
: 如果可以不考虑兼容,尤其是对现有的大量应用程序的兼容,
: 一切就都变得很容易了,但一切推翻重来需要有多大规模的
: 开发组织啊!
: 若是从Windows安全角度入手,现有的安全产品还真的很难
: 跟上MS公司Bug的发现速度。不能否则Windows的庞大架构中
: 体现出一种结构上的美感,但为什么总是有许多很容易避免
: 的编程错误(比如该用strncpy的地方用了strcpy)出现在
: 底层的关键部位呢?
: 写操作系统?写安全产品?

────────────────────────────────────────
 iamxiaohan (潇寒)                    于 2003年11月27日12:18:55 星期四 说道:

sun,我真的是非常希望我们能做下去!!!!!!!!!!!!
【 在 Sun (大灯泡) 的大作中提到: 】
: 谁都是头,何必我带头?
: 大家都有什么想法呀?都提出来讨论讨论,然后整理制定计划
: 希望能做下去
: 【 在 kylix (智贤fans) 的大作中提到: 】
: : 支持,sun带头,干吧

────────────────────────────────────────
 SwordLea (飞刀李)                    于 2003年11月27日13:04:37 星期四 说道:

夭折了的cos1.0
login 界面 ftp://202.118.224.241/incoming/temp/cos/1.bmp
desktop 界面 ftp://202.118.224.241/incoming/temp/cos/2.bmp
【 在 iamxiaohan (潇寒) 的大作中提到: 】
: 有些函数是与系统相关的,这须要我们重写,
: 我现在的实验系统的内核已经改成C语言多文件架构的了,
: 现在已经完成了,对VGA显卡的操作函数,对键盘的中断响应函数,
: (现在还有FAT12的文件系统未完成,完成后,我会贴我的第三篇实验报告 ^_^ )
: 现在你也可以在C语言中直接使用(现在我也是这样用的)
: Print函数
: 比如你可以这样写
: #include "video.h"
: int main()
: {
:    Print( "Welcome to HIT Operation System!" , white , blue ) ;

────────────────────────────────────────
 artist (手艺人)                      于 2003年11月27日13:32:39 星期四 说道:

建议:
1.先分析linux内核源代码吧。很复杂,够大家分析一年半载的。
2.在分析的过程中,结合兴趣,作改动。我觉得这样比较可行。
【 在 Sun (大灯泡) 的大作中提到: 】
: 谁都是头,何必我带头?
: 大家都有什么想法呀?都提出来讨论讨论,然后整理制定计划
: 希望能做下去
: 【 在 kylix (智贤fans) 的大作中提到: 】
: : 支持,sun带头,干吧

────────────────────────────────────────
 deem (沙丘男爵)                      于 2003年11月27日13:57:18 星期四 说道:

我觉得OS最大的困难不是OS本身,如果单纯做一个OS 的 核并不是太困难,凭着
热情和耐心问题都不大,但是牵涉到其他一些东西没有一个组织是很难完成的,
比如支撑库,编译器,调试器等等。而且一旦考虑到嵌入式,那就必须要考虑不
同的体系架构,BSP也成为一个问题。
【 在 Sun (大灯泡) 的大作中提到: 】
: 我现在也在考虑做OS的事情
: 通过对国内情况的调研,我发现,当务之急并不是有一个自己的操作系统,而是要有能力
: 安全地应用老美的OS。安全应用Windows比安全应用Linux紧迫得多
: 做自己的OS,如果只从兴趣角度做,那就怎么弄都成。Linus当初就是一个兴趣而以,所以
: Linux基本是按照Unix的样子扒下来的,同样体系的另一种实现,并没有超越多少
: 如果从长远看,那就得好好设计。现在的流行OS都有弊端。Windows GUI核心太累赘,
: Linux/Unix的X又效率太差。它们并不很适合做嵌入,尤其实时性成问题。

────────────────────────────────────────
 PowerStation (不能看隐身、不能强制呼叫、不能发信)  于 2003年11月27日14:23:06 星期四 说道:

写不出一个真正的 OS,那就弄一套做 OS 的步骤,
知识,工具,经验,误区,引导后来的 ddmm,
琢磨的人多了,就等待那天才的灵光一现~~
【 在 deem (沙丘男爵) 的大作中提到: 】
: 我觉得OS最大的困难不是OS本身,如果单纯做一个OS 的 核并不是太困难,凭着
: 热情和耐心问题都不大,但是牵涉到其他一些东西没有一个组织是很难完成的,
: 比如支撑库,编译器,调试器等等。而且一旦考虑到嵌入式,那就必须要考虑不
: 同的体系架构,BSP也成为一个问题。
: 【 在 Sun (大灯泡) 的大作中提到: 】
: : 我现在也在考虑做OS的事情

────────────────────────────────────────
 kylix (智贤fans)                     于 2003年11月27日14:30:01 星期四 说道:

最好是能组成一个核心开发组,(这些人必须有些人有比较多的
可自己自由支配的时间),开发到具体模块时人员可以外扩,网络模块,
Arch移植,comipler,assm支持可以再请人,也不一定要膘着膀子拼命
的干,主要是学习嘛,最好能定期组织技术交流会什么的就更好啦,
【 在 PowerStation (不能看隐身、不能强制呼叫、不能发信) 的大作中提到: 】
: 写不出一个真正的 OS,那就弄一套做 OS 的步骤,
: 知识,工具,经验,误区,引导后来的 ddmm,
: 琢磨的人多了,就等待那天才的灵光一现~~
: 【 在 deem (沙丘男爵) 的大作中提到: 】
: : 我觉得OS最大的困难不是OS本身,如果单纯做一个OS 的 核并不是太困难,凭着
: : 热情和耐心问题都不大,但是牵涉到其他一些东西没有一个组织是很难完成的,
: : 比如支撑库,编译器,调试器等等。而且一旦考虑到嵌入式,那就必须要考虑不

────────────────────────────────────────
 deem (沙丘男爵)                      于 2003年11月27日14:42:52 星期四 说道:

连维护BBS都找不到几个像样的鸟人,嘿嘿...
【 在 PowerStation (不能看隐身、不能强制呼叫、不能发信) 的大作中提到: 】
: 写不出一个真正的 OS,那就弄一套做 OS 的步骤,
: 知识,工具,经验,误区,引导后来的 ddmm,
: 琢磨的人多了,就等待那天才的灵光一现~~
: 【 在 deem (沙丘男爵) 的大作中提到: 】
: : 我觉得OS最大的困难不是OS本身,如果单纯做一个OS 的 核并不是太困难,凭着
: : 热情和耐心问题都不大,但是牵涉到其他一些东西没有一个组织是很难完成的,
: : 比如支撑库,编译器,调试器等等。而且一旦考虑到嵌入式,那就必须要考虑不

────────────────────────────────────────
 godkiller (离校了|工作了)            于 2003年11月27日14:49:21 星期四 说道:

nod
我觉得在bbs上也就是说说
真要找几个人一起做点什么挺难
特别是在bbs上找人
【 在 deem (沙丘男爵) 的大作中提到: 】
: 连维护BBS都找不到几个像样的鸟人,嘿嘿...
: 【 在 PowerStation (不能看隐身、不能强制呼叫、不能发信) 的大作中提到: 】
: : 写不出一个真正的 OS,那就弄一套做 OS 的步骤,
: : 知识,工具,经验,误区,引导后来的 ddmm,
: : 琢磨的人多了,就等待那天才的灵光一现~~

────────────────────────────────────────
 PowerStation (不能看隐身、不能强制呼叫、不能发信)  于 2003年11月27日14:50:42 星期四 说道:

哪儿有 BBS 开发、维护手册?所需技术需求?FAQ?bug list?solved list?
从来都没有人去接触,也不知道怎么去接触,没有树林,没有鸟窝,那儿去找鸟啊?
当然可以说,自己学啊?哦,然后每个人开始植树,等树成林了就伐木得了,养啥鸟啊?
BBS_DEV 精华区,最新一篇文章是3年半以前的...
【 在 deem (沙丘男爵) 的大作中提到: 】
: 连维护BBS都找不到几个像样的鸟人,嘿嘿...
: 【 在 PowerStation (不能看隐身、不能强制呼叫、不能发信) 的大作中提到: 】
: : 写不出一个真正的 OS,那就弄一套做 OS 的步骤,
: : 知识,工具,经验,误区,引导后来的 ddmm,
: : 琢磨的人多了,就等待那天才的灵光一现~~

────────────────────────────────────────
 godkiller (离校了|工作了)            于 2003年11月27日14:52:54 星期四 说道:

ps写几篇
【 在 PowerStation (不能看隐身、不能强制呼叫、不能发信) 的大作中提到: 】
: 哪儿有 BBS 开发、维护手册?所需技术需求?FAQ?bug list?solved list?
: 从来都没有人去接触,也不知道怎么去接触,没有树林,没有鸟窝,那儿去找鸟啊?
: BBS_DEV 精华区,最新一篇文章是3年半以前的...
: 【 在 deem (沙丘男爵) 的大作中提到: 】
: : 连维护BBS都找不到几个像样的鸟人,嘿嘿...

────────────────────────────────────────
 PowerStation (不能看隐身、不能强制呼叫、不能发信)  于 2003年11月27日14:56:03 星期四 说道:

我没有做过,但是除开 Linux 的网络通信模块和调用,
只要C语言好,就能做很多的事,我没有涉足,
也是因为我原来贪大贪全的结果。
【 在 godkiller (离校了|工作了) 的大作中提到: 】
ps写几篇
【 在 PowerStation (不能看隐身、不能强制呼叫、不能发信) 的大作中提到: 】
: 哪儿有 BBS 开发、维护手册?所需技术需求?FAQ?bug list?solved list?
: 从来都没有人去接触,也不知道怎么去接触,没有树林,没有鸟窝,那儿去找鸟啊?
: BBS_DEV 精华区,最新一篇文章是3年半以前的...
: 【 在 deem (沙丘男爵) 的大作中提到: 】
: : 连维护BBS都找不到几个像样的鸟人,嘿嘿...

────────────────────────────────────────
 lofe (〖感激生活〗)                  于 2003年11月27日15:10:54 星期四 说道:

主要还是兴趣问题,根本就不对bbs是怎么回事感兴趣,自然不去接触了
我当时一时兴起,down了个fb2000,照着里面的install manual,差不多
也就只用了一个下午的时间就把SYSOP注册上了
当时还有一堆的问题,聊天室进不去,十大出不来..后来我也照着紫丁香
的样子,修修改改什么的。如果不是从头学习linux,以现在的资源来说,
bbs上手其实可以很快。我奇怪的是为什么这么多的本科生就没有人对这
个感兴趣?
【 在 PowerStation (不能看隐身、不能强制呼叫、不能发信) 的大作中提到: 】
: 哪儿有 BBS 开发、维护手册?所需技术需求?FAQ?bug list?solved list?
: 从来都没有人去接触,也不知道怎么去接触,没有树林,没有鸟窝,那儿去找鸟啊?
: 当然可以说,自己学啊?哦,然后每个人开始植树,等树成林了就伐木得了,养啥鸟啊?
: BBS_DEV 精华区,最新一篇文章是3年半以前的...
: 【 在 deem (沙丘男爵) 的大作中提到: 】
: : 连维护BBS都找不到几个像样的鸟人,嘿嘿...

────────────────────────────────────────
 Gprs (花无常)                        于 2003年11月27日15:14:31 星期四 说道:

就是,好歹也得琢磨琢磨有没有bug能让自己看隐身,能强制呼叫什么的。
【 在 lofe (〖感激生活〗) 的大作中提到: 】
: 主要还是兴趣问题,根本就不对bbs是怎么回事感兴趣,自然不去接触了
: 我当时一时兴起,down了个fb2000,照着里面的install manual,差不多
: 也就只用了一个下午的时间就把SYSOP注册上了
: 当时还有一堆的问题,聊天室进不去,十大出不来..后来我也照着紫丁香
: 的样子,修修改改什么的。如果不是从头学习linux,以现在的资源来说,
: bbs上手其实可以很快。我奇怪的是为什么这么多的本科生就没有人对这
: 个感兴趣?
: 【 在 PowerStation (不能看隐身、不能强制呼叫、不能发信) 的大作中提到: 】
: : 哪儿有 BBS 开发、维护手册?所需技术需求?FAQ?bug list?solved list?

────────────────────────────────────────
 godkiller (离校了|工作了)            于 2003年11月27日15:15:38 星期四 说道:

现在技术进步得太快了,新名词太多了
bbs这种黑不啦叽的界面早被人们忘记了
只有我们这些人还有一点关注
就好像现在的dos,也有人研究,但是已经很少了
【 在 lofe (〖感激生活〗) 的大作中提到: 】
: 主要还是兴趣问题,根本就不对bbs是怎么回事感兴趣,自然不去接触了
: 我当时一时兴起,down了个fb2000,照着里面的install manual,差不多
: 也就只用了一个下午的时间就把SYSOP注册上了
: 当时还有一堆的问题,聊天室进不去,十大出不来..后来我也照着紫丁香
: 的样子,修修改改什么的。如果不是从头学习linux,以现在的资源来说,
: bbs上手其实可以很快。我奇怪的是为什么这么多的本科生就没有人对这
: 个感兴趣?
: 【 在 PowerStation (不能看隐身、不能强制呼叫、不能发信) 的大作中提到: 】
: : 哪儿有 BBS 开发、维护手册?所需技术需求?FAQ?bug list?solved list?

────────────────────────────────────────
 iamxiaohan (潇寒)                    于 2003年11月27日15:25:28 星期四 说道:

很漂亮!
不过奇怪的是怎么是在cmd中运行的呢?
是基于DOS的图形界面程序吗

【 在 SwordLea (飞刀李) 的大作中提到: 】
: 夭折了的cos1.0
: login 界面 ftp://202.118.224.241/incoming/temp/cos/1.bmp
: desktop 界面 ftp://202.118.224.241/incoming/temp/cos/2.bmp
: 【 在 iamxiaohan (潇寒) 的大作中提到: 】
: : 有些函数是与系统相关的,这须要我们重写,
: : 我现在的实验系统的内核已经改成C语言多文件架构的了,
: : 现在已经完成了,对VGA显卡的操作函数,对键盘的中断响应函数,
: : (现在还有FAT12的文件系统未完成,完成后,我会贴我的第三篇实验报告 ^_^ )
: : 现在你也可以在C语言中直接使用(现在我也是这样用的)

────────────────────────────────────────
 deem (沙丘男爵)                      于 2003年11月27日15:28:23 星期四 说道:

从学习的角度讲,我觉得维护BBS是提高能力的最好方法,BBS本身牵涉
 文件操作 网络操作  信号量处理 进程间通讯 
 CGI编程  SH编程  sendmail配置   等等...
包含的协议有tcp telnet ssh nntp smtp 甚至pop3 ...
这些都落后了吗?
【 在 godkiller (离校了|工作了) 的大作中提到: 】
: 现在技术进步得太快了,新名词太多了
: bbs这种黑不啦叽的界面早被人们忘记了
: 只有我们这些人还有一点关注
: 就好像现在的dos,也有人研究,但是已经很少了
: 【 在 lofe (〖感激生活〗) 的大作中提到: 】
: : 主要还是兴趣问题,根本就不对bbs是怎么回事感兴趣,自然不去接触了
: : 我当时一时兴起,down了个fb2000,照着里面的install manual,差不多
: : 也就只用了一个下午的时间就把SYSOP注册上了
: : 当时还有一堆的问题,聊天室进不去,十大出不来..后来我也照着紫丁香
: : 的样子,修修改改什么的。如果不是从头学习linux,以现在的资源来说,
: : bbs上手其实可以很快。我奇怪的是为什么这么多的本科生就没有人对这

────────────────────────────────────────
 Amia (小羊·橘子·和中南海有缘)      于 2003年11月27日15:30:49 星期四 说道:

是呀,我那次问你说我能维护吗,你让我去找死dw,结果他还没理我
明显不给我机会
【 在 deem (沙丘男爵) 的大作中提到: 】
: 从学习的角度讲,我觉得维护BBS是提高能力的最好方法,BBS本身牵涉
:  文件操作 网络操作  信号量处理 进程间通讯 
:  CGI编程  SH编程  sendmail配置   等等...
: 包含的协议有tcp telnet ssh nntp smtp 甚至pop3 ...
: 这些都落后了吗?

────────────────────────────────────────
 iamxiaohan (潇寒)                    于 2003年11月27日15:31:23 星期四 说道:

甚是有理!!!^_^
【 在 PowerStation (不能看隐身、不能强制呼叫、不能发信) 的大作中提到: 】
: 写不出一个真正的 OS,那就弄一套做 OS 的步骤,
: 知识,工具,经验,误区,引导后来的 ddmm,
: 琢磨的人多了,就等待那天才的灵光一现~~
: 【 在 deem (沙丘男爵) 的大作中提到: 】
: : 我觉得OS最大的困难不是OS本身,如果单纯做一个OS 的 核并不是太困难,凭着
: : 热情和耐心问题都不大,但是牵涉到其他一些东西没有一个组织是很难完成的,
: : 比如支撑库,编译器,调试器等等。而且一旦考虑到嵌入式,那就必须要考虑不

────────────────────────────────────────
 deem (沙丘男爵)                      于 2003年11月27日15:35:39 星期四 说道:

他怎么会没有理你呢?那就是他的不对,我想至少目前我还是可以批评他的。
如果你依然有热情,直接和我联系。
上个学期有几个人和我联系,我也把代码给他发过去了,并约好有个初步的了解
以后大家细谈,可惜全部成了断线的风筝了。
没有一个和我联系...
【 在 Amia (小羊·橘子·和中南海有缘) 的大作中提到: 】
: 是呀,我那次问你说我能维护吗,你让我去找死dw,结果他还没理我
: 明显不给我机会
: 【 在 deem (沙丘男爵) 的大作中提到: 】
: : 从学习的角度讲,我觉得维护BBS是提高能力的最好方法,BBS本身牵涉
: :  文件操作 网络操作  信号量处理 进程间通讯 
: :  CGI编程  SH编程  sendmail配置   等等...
: : 包含的协议有tcp telnet ssh nntp smtp 甚至pop3 ...
: : 这些都落后了吗?

────────────────────────────────────────
 PowerStation (不能看隐身、不能强制呼叫、不能发信)  于 2003年11月27日15:38:24 星期四 说道:

所以因该有个循序渐进的对大一大二 ddmm 的引导,
fb 2、3M 的源代码,谁看了都发怵 @_@,
要不我联系微软俱乐部作个 fb bbs 的讲座?
//对了 fb 有 Windows 版本吧?:)
【 在 deem (沙丘男爵) 的大作中提到: 】
: 从学习的角度讲,我觉得维护BBS是提高能力的最好方法,BBS本身牵涉
:  文件操作 网络操作  信号量处理 进程间通讯 
:  CGI编程  SH编程  sendmail配置   等等...
: 包含的协议有tcp telnet ssh nntp smtp 甚至pop3 ...
: 这些都落后了吗?

────────────────────────────────────────
 lofe (〖感激生活〗)                  于 2003年11月27日15:41:04 星期四 说道:

没错,想学习或了解linux编程吗?
自己就可以搭个bbs多有乐趣,编程涉及方方面面,还当个sysop,:-P
用得不方便,那就改,现在的功能简单?那你可以扩展呀
smth不是新花样不断吗
新东西当然要学,但是什么都钻进去是不可能的,了解其思想、
其功用,能开拓思路就可以了。新东西什么都知道一些,但是动过手吗?
一味的追新,刚刚似乎明白些所以,又"过时"了。
关键是总要在某些方面动动手吧,要不只是旁观的过客了。
说来我又想起CIH,老掉牙了吧,说来惭愧,我前不久才刚刚搞明白它
到底是如何实现的,文档源码满天飞,以前怎么就看不进去呢。明白了
我认为还是很爽的。
【 在 deem (沙丘男爵) 的大作中提到: 】
: 从学习的角度讲,我觉得维护BBS是提高能力的最好方法,BBS本身牵涉
:  文件操作 网络操作  信号量处理 进程间通讯 
:  CGI编程  SH编程  sendmail配置   等等...
: 包含的协议有tcp telnet ssh nntp smtp 甚至pop3 ...
: 这些都落后了吗?

────────────────────────────────────────
 lofe (〖感激生活〗)                  于 2003年11月27日15:49:04 星期四 说道:

【 在 PowerStation (不能看隐身、不能强制呼叫、不能发信) 的大作中提到: 】
: 所以因该有个循序渐进的对大一大二 ddmm 的引导,
: fb 2、3M 的源代码,谁看了都发怵 @_@,
: 要不我联系微软俱乐部作个 fb bbs 的讲座?
    主意不错,只是不知道能有多少人去听,hehe
: //对了 fb 有 Windows 版本吧?:)
    n年前就有了,for nt
: 【 在 deem (沙丘男爵) 的大作中提到: 】
: : 从学习的角度讲,我觉得维护BBS是提高能力的最好方法,BBS本身牵涉

────────────────────────────────────────
 deem (沙丘男爵)                      于 2003年11月27日15:49:27 星期四 说道:

首先要表现出一定的参与兴趣,才能引导把?不至于要我到大教室门口见到一个人就
拉着他说,你好,我给你讲讲BBS怎么实现的好不好?
【 在 PowerStation (不能看隐身、不能强制呼叫、不能发信) 的大作中提到: 】
: 所以因该有个循序渐进的对大一大二 ddmm 的引导,
: fb 2、3M 的源代码,谁看了都发怵 @_@,
: 要不我联系微软俱乐部作个 fb bbs 的讲座?
: //对了 fb 有 Windows 版本吧?:)
: 【 在 deem (沙丘男爵) 的大作中提到: 】
: : 从学习的角度讲,我觉得维护BBS是提高能力的最好方法,BBS本身牵涉

────────────────────────────────────────
 Sun (大灯泡)                         于 2003年11月27日16:15:32 星期四 说道:

bbs还可以当软工的反例,hehe
【 在 deem (沙丘男爵) 的大作中提到: 】
: 从学习的角度讲,我觉得维护BBS是提高能力的最好方法,BBS本身牵涉
:  文件操作 网络操作  信号量处理 进程间通讯 
:  CGI编程  SH编程  sendmail配置   等等...
: 包含的协议有tcp telnet ssh nntp smtp 甚至pop3 ...
: 这些都落后了吗?

────────────────────────────────────────
 PowerStation (不能看隐身、不能强制呼叫、不能发信)  于 2003年11月27日16:41:17 星期四 说道:

对于潜在的群体,我们可以引导以下,特别是大一的学生,
如果能引导好,他们就上道了,能有几十百来人去听,
十个八个感兴趣去做去实践,两个三个能有模有样,
再加入进来,也比在这儿等被饼砸到绊到强啊~~
【 在 deem (沙丘男爵) 的大作中提到: 】
: 首先要表现出一定的参与兴趣,才能引导把?不至于要我到大教室门口见到一个人就
: 拉着他说,你好,我给你讲讲BBS怎么实现的好不好?
: 【 在 PowerStation (不能看隐身、不能强制呼叫、不能发信) 的大作中提到: 】
: : 所以因该有个循序渐进的对大一大二 ddmm 的引导,
: : fb 2、3M 的源代码,谁看了都发怵 @_@,
: : 要不我联系微软俱乐部作个 fb bbs 的讲座?
: : //对了 fb 有 Windows 版本吧?:)

────────────────────────────────────────
 zhangyan (When Dumb meets Dumber)    于 2003年11月27日17:02:50 星期四 说道:

//blush
【 在 deem (沙丘男爵) 的大作中提到: 】
: 他怎么会没有理你呢?那就是他的不对,我想至少目前我还是可以批评他的。
: 如果你依然有热情,直接和我联系。
: 上个学期有几个人和我联系,我也把代码给他发过去了,并约好有个初步的了解
: 以后大家细谈,可惜全部成了断线的风筝了。
: 没有一个和我联系...

────────────────────────────────────────
 Amia (小羊·橘子·和中南海有缘)      于 2003年11月27日21:40:21 星期四 说道:

你先来给我讲好了,猪
【 在 PowerStation (不能看隐身、不能强制呼叫、不能发信) 的大作中提到: 】
: 对于潜在的群体,我们可以引导以下,特别是大一的学生,
: 如果能引导好,他们就上道了,能有几十百来人去听,
: 十个八个感兴趣去做去实践,两个三个能有模有样,
: 再加入进来,也比在这儿等被饼砸到绊到强啊~~
: 【 在 deem (沙丘男爵) 的大作中提到: 】
: : 首先要表现出一定的参与兴趣,才能引导把?不至于要我到大教室门口见到一个人就

────────────────────────────────────────
 PowerStation (不能看隐身、不能强制呼叫、不能发信)  于 2003年11月27日21:42:57 星期四 说道:

.NET 吗?
【 在 Amia (小羊·橘子·和中南海有缘) 的大作中提到: 】
: 你先来给我讲好了,猪
: 【 在 PowerStation (不能看隐身、不能强制呼叫、不能发信) 的大作中提到: 】
: : 对于潜在的群体,我们可以引导以下,特别是大一的学生,
: : 如果能引导好,他们就上道了,能有几十百来人去听,
: : 十个八个感兴趣去做去实践,两个三个能有模有样,
: : 再加入进来,也比在这儿等被饼砸到绊到强啊~~

────────────────────────────────────────
 artist (手艺人)                      于 2003年11月27日21:56:31 星期四 说道:

注意用词。
【 在 Amia (小羊·橘子·和中南海有缘) 的大作中提到: 】
: 你先来给我讲好了,猪
: 【 在 PowerStation (不能看隐身、不能强制呼叫、不能发信) 的大作中提到: 】
: : 对于潜在的群体,我们可以引导以下,特别是大一的学生,
: : 如果能引导好,他们就上道了,能有几十百来人去听,
: : 十个八个感兴趣去做去实践,两个三个能有模有样,
: : 再加入进来,也比在这儿等被饼砸到绊到强啊~~

────────────────────────────────────────
 Amia (小羊·橘子·和中南海有缘)      于 2003年11月27日21:57:08 星期四 说道:

9494,侮辱猪了
【 在 artist (手艺人) 的大作中提到: 】
: 注意用词。
: 【 在 Amia (小羊·橘子·和中南海有缘) 的大作中提到: 】
: : 你先来给我讲好了,猪

────────────────────────────────────────
 PowerStation (不能看隐身、不能强制呼叫、不能发信)  于 2003年11月27日22:04:43 星期四 说道:

暂时代表猪投诉你!~
【 在 Amia (小羊·橘子·和中南海有缘) 的大作中提到: 】
: 9494,侮辱猪了
: 【 在 artist (手艺人) 的大作中提到: 】
: : 注意用词。

────────────────────────────────────────
 artist (手艺人)                      于 2003年11月27日22:08:51 星期四 说道:

你咋了?
怎么还承认了?
承认了,还投诉啥?
警告一次。
【 在 PowerStation (不能看隐身、不能强制呼叫、不能发信) 的大作中提到: 】
: 暂时代表猪投诉你!~
: 【 在 Amia (小羊·橘子·和中南海有缘) 的大作中提到: 】
: : 9494,侮辱猪了

────────────────────────────────────────
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:633.265毫秒