orange's一个操作系统的实现的前五章文件组织整理

2023-11-10

Orange's一个操作系统的实现的前五章文件组织整理

Tree:

|---Makefile
|
|---a.img (虚拟软盘)
|
|---bochsrc (bochs虚拟机配置)
|
|___boot
|      |----boot.asm  (编译为boot.bin文件后被BIOS加载到内存,然后在a.img中\
|      |              寻找loader.bin,并加载到内存和转交控制权)
|      |
|      |____include
|      |        |----fat12hdr.inc (FAT12文件有关内容,以及基于FAT12头的一些常量定义)
|      |        |----load.inc   (LOADER.BIN被加载的位置 KERNEL.BIN被加载的段地址和偏移\
|      |        |               页目录开始地址和页表开始地址)
|      |        +----pm.inc  (存储段描述符类型值说明  系统段描述符类型值说明\
|      |                  分页机制使用的常量说明 宏(描述符和门)
|      |   
|      +----loader.asm (加载内核(ELF文件)到内存,跳入保护模式(设置堆栈,打开分页机制),\
|                   向内核交出控制权)
|___include
|      |----const.h    (定义函数类型PUBLIC和PRIVATE,GDT和IDT中描述符的个数)
|      |----global.h  
|      |              |---- EXTERN  int        isp_pos;
|      |              |---- EXTERN  u8         gdt_ptr[6];   /* 0~15:Limit 16~47:Base */ 
|      |              |---- EXTERN  DESCRIPTOR gdt[GDT_SIZE];
|      |              |---- EXTERN  u8         idt_ptr[6];   /* 0~15:Limit 16~47:Base */
|      |             +---- EXTERN  GATE       idt[IDT_SIZE];
|      |
|      |----protect.h  (定义存储段描述符/系统段描述符DESCRIPTOR)
|      |----proto.h   
|      |           |---- PUBLIC void     disp_str(char * info);
|      |           |---- PUBLIC void     disp_color_str(char * info, int color);
|      |           |---- PUBLIC void     init_prot();
|      |           +----PUBLIC void     init_8259A();
|      |           
|      |----string.h  
|      +----type.h     (定义u8,u16,u32数据类型)
|  
|___kernel
|      |----global.c      包含头文件
|      |            |---- #include "const.h"
|      |            |---- #include "protect.h"
|      |            |---- #include "proto.h"
|      |            +---- #include "global.h"
|      |
|      |----i8259.c    设置8259A
|      |           |---- #include "type.h"
|      |           |---- #include "const.h"
|      |           |---- #include "protect.h"
|      |           |---- #include "proto.h"
|      |           |---- PUBLIC void init_8259A()
|      |           +---- PUBLIC void spurious_irq(int irq)
|      |
|      |----kernel.asm
|      |              +----实现中断和异常
|      |
|      |----protect.c   定义异常处理函数
|      |             |----#include "type.h"
|      |             |----#include "const.h"
|      |             |----#include "protect.h"
|      |             |----#include "global.h"
|      |             |----#include "proto.h"
|      |             |----PRIVATE void init_idt_desc(unsigned char vector, \
|      |             |    u8 desc_type,int_handler handler, unsigned char privilege)
|      |             +----中断处理函数
|      |            
|      +----start.c    初始化IDT
|                 |---- #include "type.h"
|                 |---- #include "const.h"
|                 |---- #include "protect.h"
|                 |---- #include "proto.h"
|                 |---- #include "string.h"
|                 |---- #include "global.h"
|                 +---- PUBLIC void cstart()
|
|  
|___lib
        |----klib.c      定义函数
        |          |---- PUBLIC char* itoa(char *str,int num)
        |          +---- PUBLIC void disp_int(int input)
        |
        |----kliba.asm      定义函数(要用关键字global把这些函数导出来)
        |             |---- void disp_str(char * info)
        |             |---- void disp_color_str(char*info,int color)
        |             |---- void out_byte(u16 port,u8 value)
        |             +---- u8 in_byte(u16 port)
        |
        +----string.asm      定义函数(要用关键字global把这些函数导出来)
                      +---- void* memcpy(void* es:p_dst, void* ds:p_src, int size)


 参考链接:http://thornbird-life.blogbus.com/logs/83508544.html


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

orange's一个操作系统的实现的前五章文件组织整理 的相关文章

随机推荐

  • 收集金币(人人网笔试)

    题目描述 小M来到了一个迷宫中 这个迷宫可以用一个N M的矩阵表示 在这个迷宫的某些位置中存在金币 一开始小M在迷宫的入口 矩阵的左上角 位置 1 1 处 迷宫的出口位于矩阵的右下角 位置 N M 处 每一次小M可以选择向下或者向右走到一个
  • const 指针 常量指针 指针常量 常量指针常量

    常量指针 指向常量的指针 在指针定义语句的类型前加const 表示该指针指向一个常量 const int a 666 const int p a 常量a只能被访问而不能被改写 但指向常量a的常量指针可以改写 指针常量 在指针定义语句的指针名
  • LeetCode-从尾到头打印链表

    用vector的reverse函数实现翻转hh Definition for singly linked list struct ListNode int val ListNode next ListNode int x val x nex
  • 解决Unable to find vcvarsall.bat问题

    目录 前言 方法1 方法2 前言 用Windows平台做Python开发时 难免会遇到Unable to find vcvarsall bat错误 我在网上疯搜了一段时间之后 才找到解决办法 还是两个 不想装VS的朋友可以用第二个 方法1
  • winows搭建远程仓库Github(linux通用)

    winows搭建远程仓库Github linux通用 文章目录 winows搭建远程仓库Github linux通用 创建远程仓库 配置SSH 克隆项目 多人协同开发 代码冲突 标签 分支 创建远程仓库 以下操作为演示在Github网站上创
  • dubbo解析-详解元数据中心MetadataReport

    本文基于dubbo 2 7 5版本代码 详解元数据中心MetadataReport 一 配置 二 注册中心参数simplified原理 三 元数据中心 1 AbstractMetadataReport 1 publishAll 2 stor
  • 计算机复习6----码分多址CDMA计算

    该部分知识位于书P57 看题 解法 将 A B C D每个的码片与收到的码片序列 逐个进行乘法 例 1 将A中第一位 1与S中第一位 1 相乘 得 1 2 第二位 1 1 1 以此类推 3 得 1 1 3 1 1 3 1 1 4 对所得 相
  • 在Java中使用tabula提取PDF中的表格数据

    问题 如何将pdf文件中指定的表格数据提取出来 尝试过的工具包有 pdfbox tabula 最终选用tabula 两种工具的比较 pdfbox 其中 pdfbox能将pdf中的内容直接提取成String 代码片段 public stati
  • 梦断代码阅读笔记01

    以前的我很难理解软件时间这个问题 以为就是敲代码的时间总和就是 因为以前的我在做项目的时候没有计划 直接上来就是敲 没有任何预估 但是读完这本书的前一部分发现 我以前真是太愚昧了 真正的项目不单单是敲代码 反而敲代码占得比例还不是很大 而主
  • C++内存泄漏及解决办法

    1 C 内存泄漏是什么 内存泄漏指的是由于疏忽或错误造成了程序未能释放掉不再使用的内存 2 造成的后果 性能不良 内存会耗尽 3 C 没有垃圾回收机制 我们需要关注那些类型的内存泄漏 堆内存泄漏 在内存中程序员手动分配的一块内存 mallo
  • IDEA将java项目打包为jar包

    方法 首先在src gt resources目录下建立一个文件夹 然后再在新建文件夹里面建立META INF文件夹 不推荐直接建立META INF 否则后面打包完的jar包需要手动修改配置 然后点击File gt Project Struc
  • R - 简单随机抽样

    本文使用的包 library tidyverse library moderndive 使用的数据集 总共有2400个红球和白色球 bowl 此处采用简单随机抽样 从2400个球中估算出红球所占比例 采用不同的抽取方法 一组是一次性抽取30
  • 使用docker搭建自己的jupyterhub多用户服务器

    1 选择基础镜像 这里我们选择jupyterhub的官方镜像 docker pull jupyterhub jupyterhub 2 启动容器 docker run p 8000 8000 d name jupyterhub jupyter
  • EndnoteX7/8/9参考文献不按顺序出现

    1 问题 EndNote插入文献序号正文的文献引用和后面的序号都能一一对上 但是正文中的排序并不按照行文顺序来 好尴尬 其实出版论文里有不按 1 2 3 顺序出现的文章 不过大多是严格按 1 2 3 顺序的文章 换句话说也就是说EndNot
  • Git 之 上传本地仓库到远程仓库

    文章目录 需求 切记 新建远程仓库 添加ssh key 在本地建立仓库 添加文件 git remote add git add git commit git push 参考连接 需求 建立远程仓库 在本地建立工程及仓库 将本地仓库push到
  • (二)zookeeper实战——zookeeper集群搭建

    前言 本节内容我们主要介绍一下如何在centos系统下搭建一套高可用的zookeeper集群 zookeeper是我们常用的中间键之一 例如使用zookeeper实现分布式锁 Hadoop集群高可用 kafka集群高可用等等 我们以以下三台
  • OD动调之脱壳:使用ESP定律寻找

    OD动调之脱壳 使用ESP定律寻找 using OD F8 sigle step Until stop Then data window follow Block then F9 Jmp gt oep 401171 You can unpa
  • android 腾讯微博开发 OAuth认证(一):获取请求指令RequeToken

    第一步 下载腾讯微博SDK 第二步 创建Android项目 并配置Build Path 加入SDK中httpmime 4 1 3 jar Android SDK v1 2 jar的源文件 里面包含错误需要自己进行相关的修改 两个库文件 相关
  • STM32开发实例 基于STM32单片机的智能机房系统

    一 系统设计 由 STM32F103C8T6单片机最小系统 DHT11温湿度传感器 ACS712测电流模块 MO 2烟雾传感器 ESP8266无线传输模块 可以通过RSP8266将温湿度值 烟雾浓度值 测得电流值显示到上位机 在上位机可以调
  • orange's一个操作系统的实现的前五章文件组织整理

    Orange s一个操作系统的实现的前五章文件组织整理 Tree Makefile a img 虚拟软盘 bochsrc bochs虚拟机配置 boot boot asm 编译为boot bin文件后被BIOS加载到内存 然后在a img中