精华内容
下载资源
问答
  • 哈工大操作系统实验

    2015-06-26 12:41:47
    哈工大 操作系统 实验 完整 打包 1.系统初始化 2.系统接口 3.进程管理 4.进程同步 5.I/O设备管理 6.内存管理
  • 哈工大操作系统实验报告及PPT(全六个实验)
  • 哈工大 操作系统 实验 李治军 八个实验 还有从网上其他地方下载的
  • 哈工大 操作系统 实验二 进程管理
  • 哈工大操作系统实验3 计算机学院 请自行学习研究,直接使用,小心雷同
  • 哈工大 操作系统 实验5 代码+report 仅供参考
  • 哈工大操作系统实验3

    2013-04-28 22:07:56
    哈工大操作系统实验三 得了满分哦 供大家参考
  • 哈工大操作系统实验二 得了满分哦 供大家参考
  • 哈工大操作系统实验2

    2012-10-27 11:20:51
    哈工大操作系统实验2 全部代码及report
  • 哈工大操作系统实验四代码 仅供参考 代码+report
  • 哈工大操作系统实验代码(全)
  • 哈工大操作系统实验一,仅供参考,切勿抄袭。
  • 哈工大 操作系统 实验7 代码+report 仅供参考
  • 哈工大 操作系统 实验六 代码+report 仅供参考
  • 哈工大操作系统实验5

    2011-07-12 09:47:14
    哈工大操作系统实验5,该有的都有,仅供参考。直接拷贝之前记得有反抄袭系统,切记切记..
  • 哈工大操作系统实验手册 实验资源与参考 不配环境懒人福利:实验楼 在线课程:操作系统,李治军,哈工大(网易云课堂) 参考阅读:《Linux内核完全注释》——赵炯,《操作系统原理、实现与实践》——李治军,...

    写在前面

    哈尔滨工业大学李治军老师的《操作系统》课程实验,相关资源:

    哈工大操作系统实验手册

    实验资源与参考

    不配环境懒人福利:实验楼

    在线课程:操作系统,李治军,哈工大(网易云课堂)

    参考阅读:《Linux内核完全注释》——赵炯,《操作系统原理、实现与实践》——李治军,刘宏伟

    实验内容

    • 改写bootsect.s,功能:能在屏幕上打印一段提示信息“XXX is booting...”。

    • 改写setup.s,功能:

    1. bootsect.s能完成setup.s的载入,并跳转到setup.s开始地址执行。而setup.s向屏幕输出一行"Now we are in SETUP"。

    2. setup.s获取一些基本的硬件参数(如内存参数、显卡参数、硬盘参数等),将其存放在内存的特定地址,并输出到屏幕上。

    3. setup.s不再加载Linux内核,保持上述信息显示在屏幕上即可。

    改写bootsect.s

    bootsect.s驻留在引导扇区(0磁道,0磁头,第1个扇区)。上电自检后,ROM BIOS把bootsect加载到0x7c00处。bootsect做4件事:

    1. 将自身移动到0x90000处并继续执行。

    2. 利用INT 0X13中断将setup模块读到0x90200处,一共读四个扇区。

    3. 显示“Loading system...”的字符串

    4. 再把setup模块后的system模块加载到内存0x10000处。

    注:由于实验裁剪Linux 0.11的源代码,没有使用root_dev。

    汇编看起来有点头大,大部分源码问题都能在《注释》里找到答案,几个比较重要的点:

    • 将自身加载到0x9000后,跳到go处执行:

     jmpi    go,INITSEG      ! 段间跳转, INITSEG是目的段地址, go是段内偏移地址

    由于自身代码移动了位置,所以需要段间跳转:

     

    • 修改显示字符串 将“Loading system ..."修改为”Welcome to NewOS“

      原字符串共18个字符,加上回车和换行共24个字符,修改后字符串长16个字符。

      调用INT 0X10中断,cx寄存器内存放显示字符数,bx寄存器存放属性(可修改字符串颜色),es:bp 指向待显示字符串。

    mov ah,#0x03        ! 读取光标位置
    xor bh,bh   
    int 0x10
         
    mov cx,#22
    mov bx,#0x0009      ! page 0, attribute c 
    mov bp,#msg1        ! es:bp 指向待显示字符串
    mov ax,#0x1301      ! write string, move cursor
    int 0x10
         
    !开始执行setup代码
    jmpi 0,SETUPSEG
     ​
    msg1:
        .byte 13,10
        .ascii "Welcome to NewOS"
        .byte 13,10,13,10

    改写setup.s

    setup.s主要功能:

    1. 利用中断读取机器系统数据,保存到0x90000处(覆盖了bootsect.s)

    2. 将system模块从0x10000-0x8ffff整块下移到0x00000处。

    3. 进入32位保护模式,跳转到system模块的head.s

    注:实验要求setup不加载后续的system模块,故暂时不必要实现。

    显示“Now we are in SETUP”

    参考bootsect.s中显示字符串的代码部分,很容易修改得到:

    ! 显示"Now we are in SETUP"
     mov ax,cs
     mov ds,ax
     mov es,ax
     ​
     mov ah,#0x03        ! 读取光标位置
     xor bh,bh
     int 0x10
         
     mov cx,#25
     mov bx,#0x0007      ! page 0, attribute normal 
     mov bp,#msg1        ! es:bp 指向待显示 字符串
     mov ax,#0x1301      ! write string, move cursor
     int 0x10

    注意,在显示前务必设置cs = es = ds,在显示时需要es定位字符串,现在是setup程序,SETUPSEG = cs = 0x9020

    显示硬件参数

    显示硬件参数前,先将ds寄存器重置为0x90000(INITSEG),在读取参数时使用了ds寄存器并覆盖了bootsect.s,所以重置ds,寻址硬件参数,ps:汇编中,mov ax, [0]默认为mov ax, ds:[0] 后面按照取硬件参数的顺序,复制内存中的数据打印即可,比如光标信息:

     ! 打印光标信息
     mov ax, [0]
     call print_hex
     call print_nl

    ps:根据读取时,磁盘硬件参数从[0x80]开始。

    改写tools/build.c

    根据实验指导在build.c中添加:

     if(strcmp(argv[3],"none")==0) return 0;

     

     

     

     

    展开全文
  • 哈工大 操作系统 实验 1-6,仅供参考,只可借鉴,否则后果自负
  • 哈工大操作系统实验2-系统调用 1.首先列举两个常用的系统调用:read和write read: #include <unistd.h> size_t read(int fildes,void * buf, size_t nbytes); write: #include <unistd.h> size_t ...

    哈工大操作系统实验2-系统调用

    1.首先列举两个常用的系统调用:read和write
    read:

    #include <unistd.h>
    size_t read(int fildes,void * buf, size_t nbytes);
    

    write:

    #include <unistd.h>
    size_t write(int fildes,const void * buf,size_t nbytes);
    

    read的作用(内容来自《linux程序设计》):从与文件描述符fileds相关联的文件里读取nbytes个字节的数据,并把它们放到数据区buf中,返回值为实际读入的字节数。write则是写到相应的buf,测试代码如下:
    在这里插入图片描述
    在这里插入图片描述
    本实验就是实现类似的系统调用。

    2.实现系统调用iam()和whoami(),参考《linux内核设计与实现》和课程实验本身材料完成:
    在这里插入图片描述
    实现系统调用可以分为五步:
    (1)在include/unistd.h中添加系统编号: __NR_iam, __NR_whoami,即

    #define __NR_iam 72
    #define __NR_whoami 73
    

    使用sudo mount-hdc ,修改hdc/user/include,添加和上面两条一样的#define,记得sudo umount hdc
    (2)将kernel/system_call.s中nr_system_calls = 72改为:

    nr_system_calls = 74 //添加了两个系统调用
    

    (3)在include/linus/sys.h中

    //sys_call_table[] 添加
    sys_iam, sys_whoami
    //另外添加
    extern int sys_iam();
    extern int sys_whoami();
    

    (4)创建文件kernel/who.c,到此才出现困难点,实现如下:
    困难就在于并不知道内核中可以使用哪些接口函数,如使用到的:
    printk(), get_fs_byte(), put_fs_byte()
    在这里插入图片描述
    在这里插入图片描述
    (5)修改kernel/Makefile文件:
    在这里插入图片描述
    在这里插入图片描述
    到此就添加好系统调用了,接下来是测试程序
    3. 测试程序
    (1)运行结果
    在这里插入图片描述
    (2)iam.c,编写可以在linux0.11环境下,编译命令和现在一样,

    gcc -o iam iam.c -Wall
    //下面whoami.c则:gcc -o whoami whoami.c -Wall
    

    其中_syscall1(int,iam,const char * ,myname)就是对iam()函数的声明,以便在下面使用。
    在这里插入图片描述
    在这里插入图片描述
    (3)whoami.c
    在这里插入图片描述
    整个实验还是非常有意思的

    展开全文
  • 基于XV6操作系统实验平台建设和哈工大操作系统实验 的搭建实验环境参加实验平台建设的第一步就是搭建操作系统平台: 说白了就是在linux系统下搭建一个虚拟机运行xv6这个操作系统 配置环境 Ubuntu:16.04 xv6 & qemu ...

    基于XV6操作系统实验平台建设和哈工大操作系统实验 的搭建实验环境

    参加实验平台建设的第一步就是搭建操作系统平台:
    说白了就是在linux系统下搭建一个虚拟机运行xv6这个操作系统

    • 配置环境
    • Ubuntu:16.04
    • xv6 & qemu
    • 注:我同学ubuntu17貌似会出现fail

    安装linux系统,这里默认已经完成

    这里写图片描述

    • 这里使用的是root用户在操作。通过sudo -s切换到root用户。

    准备安装

    如:

    # 安装git
    apt-get install -y git
    # 安装g++
    apt-get install -y g++
    # 安装gdb
    apt-get install -y gdb
    # 安装编译工具链
    apt-get install -y build-essential
    # 下载xv6的代码
    cd /对应路径/
    git clone git://github.com/mit-pdos/xv6-public.git
    /在这里注意不要上github然后download zip,这样会丢失文件,我这就卡了一下午,一定要执行clone,会有非master版本的文件/

    这里写图片描述

    安装qemu

    # 安装qemu
    apt-get install qemu
    

    这里写图片描述

    编译xv6

    cd /到对应位置/xv6-public
    make qemu
    这里写图片描述


    生成qemu环境下运行的xv6
    成功

    有其他问题欢迎交流,联系qq:2282550468

    展开全文
  • 哈工大操作系统实验8——内核级线程。本次的实验仅完成了用户态的实现。内核级要实现实在困难,耗费巨大精力也不见得能有好的成效,而且重要的是内核级仅占一个。
  • 哈工大操作系统实验4

    2013-01-05 12:21:12
    哈工大软件工程 操作系统实验4 包含实验代码和报告
  • 哈工大操作系统实验 linux 0.11下编译程序报错parse error before 这是因为编译器支持标准跟现在不同,网上说是c89标准,这个 C 标准要求在一个块内的变量的声明要放在所有非声明语句的前面。

    哈工大操作系统实验
    linux 0.11下编译程序报错parse error before
    这是因为编译器支持标准跟现在不同,网上说是c89标准,这个 C 标准要求在一个块内的变量的声明要放在所有非声明语句的前面。

    展开全文
  • 深入学习计算机操作系统的绝好平台,可以通过此平台实现Linux-0.11平台上操作系统引导和系统调用等添加等实验,帮助理解操作系统的知识
  • 哈工大操作系统实验六,今年老师要求制作PPT,于是良心制作,详细记录了系统调用的相关操作及实验结论,希望对有心人有用,大家共同进步。PS:这部分是队友做的
  • 本人清理旧系统时整理出来的,包含了哈尔滨工业大学操作系统课程8次实验的源代码及实验报告的整合版(除了实验七没有找到,但可以在本人的资源http://download.csdn.net/detail/ertwer12/1935717中下到实验七的单独...
  • 实验地址,https://www.lanqiao.cn/courses/115/learning/?id=374, 在现做实验, 好处是环境提前都配好了, 不足之处是敲代码有网络延迟, 环境无法保存....这个实验主要是介绍实验环境的基本情况, 宿主机使用ubunt..

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 479
精华内容 191
关键字:

哈工大操作系统实验