操作系统实践.pdf
文本预览下载声明
目 录
前言
哈工大操作系统实验1—系统初始化
哈工大操作系统实验2—系统接口
哈工大操作系统实验3—进程管理
哈工大操作系统实验4—进程同步
哈工大操作系统实验5—I/O设备管理
哈工大操作系统实验6—内存管理
本文档使用 看云 构建 - 2 -
前言
前言
原文出处 :操作系统实践
作者 :wangjianyu0115
本系列文章经作者授权在看云整理发布 ,未经作者允许 ,请勿转载 !
操作系统实践
哈工大操作系统实验
本文档使用 看云 构建 - 3 -
哈工大操作系统实验1—系统初始化
哈工大操作系统实验1—系统初始化
此次实验的基本内容是 :
1. 阅读 《Linux内核完全注释》的第6章 ,对计算机和Linux 0.11的引导过程进行初步的了解 ;
2. 按照下面的要求改写0.11的引导程序bootsect.s
3. 修改build.c ,以便可以使用 make BootImage命令
改写bootsect.s主要完成如下功能 :
1. bootsect.s能在屏幕上打印一段提示信息 “XXX is booting...” ,其中XXX是你给自己的操作系统起的
名字 ,例如LZJos、Sunix等 (可以上论坛上秀秀谁的OS名字最帅 ,也可以显示一个特色logo ,以表
示自己操作系统的与众不同。 )
完成bootsect.s的屏幕输出功能
首先来看完成屏幕显示的关键代码如下 :
! 首先读入光标位置
mov ah,#0x03
xor bh,bh
int 0x10
! 显示字符串“LZJos is running...”
mov cx,#25 ! 要显示的字符串长度
mov bx,#0x0007 ! page 0, attribute 7 (normal)
mov bp,#msg1
mov ax,#0x1301 ! write string, move cursor
int 0x10
inf_loop:
jmp inf_loop ! 后面都不是正经代码了,得往回跳呀
! msg1处放置字符串
msg1:
.byte 13,10 ! 换行+回车
.ascii LZJos is running...
.byte 13,10,13,10 ! 两对换行+回车
!设置引导扇区标记0xAA55
.org 510
boot_flag:
.word 0xAA55 ! 必须有它,才能引导
接下来 ,将完成屏幕显示的代码在开发环境中编译 ,并使用linux-0.11/tools/build.c将编译后的目标文件
做成Image文件。
这里改动
本文档使用 看云 构建 - 4 -
哈工大操作系统实验1—系统初始化
mov cx,#25 ! 要显示的字符串长度
和
msg1
.byte 13,10 ! 换行+回车
.ascii LZJos is running...
.byte 13,10,13,10 ! 两对换行+回车
!设置引导扇区标记0xAA55
修改你要显示的内容及计算长度 ,其中13算一个 ,10算一个 ,字母或空格算1个
修改bootsect.s
! Print some inane message
mov ah,#0x03 ! read cursor pos
xor bh,bh
int 0x10
mov cx,#27
显示全部