总体 : boot kern libs tools

boot

asm.h
bootmain.c
bootasm.S

asm.h

汇编头文件
SEG_NULLASM 定义一个空段描述符
SEG_ASM 使用参数type base lim 生成一个断描述符的宏
定义了 Appllication segment type bits type 字段的相应定义

bootasm.S

控制前初始化,具体过程 参考 前初始化

bootmain.c

包括了 等待硬盘响应
读取扇区
加载到内存段(一个一个的读取扇区)

bootmian 函数 所谓bootloader 的起点
读取第一个扇区 根据读取到的内容 加载剩余的内存段(根据program header的内容)
跳转到内核起点

kern/debug

包含一些debug 函数
print_kernel_info
print_stackframe
print_debuginfo

辅助函数简析:
stab_binsearch //给定符号表, 左界限 ,右界限 给定一种符号类型 ,
给一个地址。 返回的左界限是这个地址左侧第一个满足条件的符号,
右界限是这个地址右侧第一个满足条件的符号-1,

eipdebuginfo 结构体包括 eip_file 文件名 行号 调用函数名 函数名长度 函数起始地址 参数数量

使用extern 定了了 如下几个变量 _stab_BEGIN END _STABSTR_BEGIN 灯对应的变量
都是kenerl 对应的地址

首先找到对应的 源文件 在符号表中查找

然后找到对应的函数(有找不到的可能 ,也许正处于汇编函数中)

最后查找对应的 行号

然后查找参数个数

print_kerninfo(void){ //打印了一些kernel 中的段的位置
}

print_debuginfo() 输出这个地址的相关函数信息

readeip : 输出 eip 当前的值

print_stackframe(void)
作业内容,在stack 上 反复回退输出栈帧信息

操作系统Lab1 详解(boot|kern/debug)的更多相关文章

  1. DELL R720服务器安装Windows Server 2008 R2 操作系统图文详解

    DELL R720服务器安装Windows Server 2008 R2 操作系统图文详解 说明:此文章中部分图片为网络搜集,所以不一定为DELL R720服务器安装界面,但可保证界面内容接近DELL ...

  2. Unix操作系统监控详解(一)

    一.描述 监控在检查系统问题运行状况以及优化系统性能工作上是一个不可缺少的部分.通过操作系统监控工具监视操作系统资源的使用情况,间接地反映了各服务器程序的运行情况.根据运行结果分析可以帮助我们快速定位 ...

  3. Pintos-斯坦福大学操作系统Project详解-Project1

    转载请注明出处. 前言:  本实验来自斯坦福大学cs140课程,只限于教学用途,以下是他们对于Pintos系统的介绍:  Pintos is a simple operating system fra ...

  4. (2)打造简单OS-开机BIOS初始化与MBR操作系统引导详解

    ================大概了解即可=============== 1.BIOS的工作: 我们的计算机在开机之前,它是一个纯硬件的机器,但是从按下开机按钮的那一刻起,ROM上的固化程序就开始为 ...

  5. linux操作系统cron详解

    Linux操作系统定时任务系统 Cron 入门 cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业.由于Cron 是Linux的内置服务,但它不自动起来,可以用以下的方法启动 ...

  6. 【6】-BAT面试之操作系统内存详解

    本文主要参考两篇博客,读后整理出来,以供大家阅读,链接如下: http://blog.jobbole.com/95499/?hmsr=toutiao.io&utm_medium=toutiao ...

  7. 面试之路(6)-BAT面试之操作系统内存详解

    本文主要参考两篇博客,读后整理出来,以供大家阅读,链接如下: http://blog.jobbole.com/95499/?hmsr=toutiao.io&utm_medium=toutiao ...

  8. 最全面的 MySQL 索引详解

    什么是索引? 1.索引 索引是表的目录,在查找内容之前可以先在目录中查找索引位置,以此快速定位查询数据.对于索引,会保存在额外的文件中. 2.索引,是数据库中专门用于帮助用户快速查询数据的一种数据结构 ...

  9. Spring Boot 之 HelloWorld详解

    摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! “以前是人放狗看家,现在是狗牵着人散步” — 随笔 一.Spring Boot 自述 世界上最好 ...

随机推荐

  1. thinkphp 数据创建

    在进行数据操作之前,我们往往需要手动创建需要的数据,例如对于提交的表单数据: // 获取表单的POST数据 $data['name'] = $_POST['name']; $data['email'] ...

  2. P++ 1.0.5

    #include<bits/stdc++.h> #define begin { #define end } #define while while( #define if if( #def ...

  3. escape encodeURI和encodeURIComponent的区别

    escape(与之对应->unescape) escape是对字符串(string)进行编码(而另外两种是对URL),作用是让它们在所有电脑上可读.编码之后的效果是%XX或者%uXXXX这种形式 ...

  4. JavaScript学习笔记:数组的indexOf()和lastindexOf()方法

    https://www.w3cplus.com/javascript/array-part-6.html

  5. 杂项-公司:Amazon

    ylbtech-杂项-公司:Amazon 亚马逊公司(Amazon,简称亚马逊:NASDAQ:AMZN),是美国最大的一家网络电子商务公司,位于华盛顿州的西雅图.是网络上最早开始经营电子商务的公司之一 ...

  6. GC 案例收集整理

    1.数组动态扩容  现象:系统一直在做cms gc,但是老生代一直不降下去,但是执行一次jmap -histo:live之后,也就是主动触发一次full gc之后,通过jstat -gcutil来看老 ...

  7. Django之框架简介

    了解即可: 1.MVC,全名是Model View Controller,是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控制器(Controller ...

  8. 【bzoj 4671】 异或图

    题目 神仙题啊神仙题 显然这个东西一脸不可求的样子啊,这种东西我们显然需要搞一个容斥什么的 于是设\(g_i\)表示至少存在\(i\)个联通块(联通块内部的边没有要求,联通块和联通块之间不存在边)的方 ...

  9. 11-1-break-continue

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. 同一个局域网内,使用 java 从服务器共享文件夹中复制文件到本地。

    1 引用jar 包 <dependency> <groupId>org.samba.jcifs</groupId> <artifactId>jcifs& ...