Skip to content

Latest commit

 

History

History
132 lines (90 loc) · 3.48 KB

01-3-lab0-spoc-discussion.md

File metadata and controls

132 lines (90 loc) · 3.48 KB

lab0 SPOC思考题

个人思考题


能否读懂ucore中的AT&T格式的X86-32汇编语言?请列出你不理解的汇编语言。

  • 能理解汇编语言

虽然学过计算机原理和x86汇编(根据THU-CS的课程设置),但对ucore中涉及的哪些硬件设计或功能细节不够了解?

  • 中断和系统调用,物理内存的实现。

请给出你觉得的中断的作用是什么?使用中断有何利弊?

  • 能够实现实时响应和系统调度。

哪些困难(请分优先级)会阻碍你自主完成lab实验?

  • 不熟悉硬件操作。
  • 前一阶段实验完成效果不好影响后一阶段实验。

如何把一个在gdb中或执行过程中出现的物理/线性地址与你写的代码源码位置对应起来?

  • 用gdb查看源码对应的机器码的内存位置。

了解函数调用栈对lab实验有何帮助?

  • 有助于了解函数之间的调用关系。

你希望从lab中学到什么知识?

  • 硬件操作技能。

小组讨论题


搭建好实验环境,请描述碰到的困难和解决的过程。

  • 由于虚拟机没有弄好,最后使用双系统来解决。

熟悉基本的git命令,从github上(http://www.github.com/chyyuu/ucore_lab)下载ucore lab实验

  • 已下载。

尝试用qemu+gdb(or ECLIPSE-CDT)调试lab1

  • [x]

如何实现能响应除零错误异常的异常服务例程的lab0?

  • [x]

对于如下的代码段,请说明”:“后面的数字是什么含义

 /* Gate descriptors for interrupts and traps */
 struct gatedesc {
    unsigned gd_off_15_0 : 16;        // low 16 bits of offset in segment
    unsigned gd_ss : 16;            // segment selector
    unsigned gd_args : 5;            // # args, 0 for interrupt/trap gates
    unsigned gd_rsv1 : 3;            // reserved(should be zero I guess)
    unsigned gd_type : 4;            // type(STS_{TG,IG32,TG32})
    unsigned gd_s : 1;                // must be 0 (system)
    unsigned gd_dpl : 2;            // descriptor(meaning new) privilege level
    unsigned gd_p : 1;                // Present
    unsigned gd_off_31_16 : 16;        // high bits of offset in segment
 };
  • [x]

对于如下的代码段,

#define SETGATE(gate, istrap, sel, off, dpl) {            \
    (gate).gd_off_15_0 = (uint32_t)(off) & 0xffff;        \
    (gate).gd_ss = (sel);                                \
    (gate).gd_args = 0;                                    \
    (gate).gd_rsv1 = 0;                                    \
    (gate).gd_type = (istrap) ? STS_TG32 : STS_IG32;    \
    (gate).gd_s = 0;                                    \
    (gate).gd_dpl = (dpl);                                \
    (gate).gd_p = 1;                                    \
    (gate).gd_off_31_16 = (uint32_t)(off) >> 16;        \
}

如果在其他代码段中有如下语句,

unsigned intr;
intr=8;
SETGATE(intr, 0,1,2,3);

请问执行上述指令后, intr的值是多少?

  • 0x10002

请分析 list.h内容中大致的含义,并能include这个文件,利用其结构和功能编写一个数据结构链表操作的小C程序

  • [x]

开放思考题


是否愿意挑战大实验(大实验内容来源于你的想法或老师列好的题目,需要与老师协商确定,需完成基本lab,但可不参加闭卷考试),如果有,可直接给老师email或课后面谈。

  • [x]