实验环境

本文假设已经创建虚拟机并配置好Ubuntu 16.04(网上太多教程了,所以这里就不赘述了)。

X86-32硬件介绍

x86指的是80386这种机器(一种32位CPU,在早期得到了广泛的应用),大概理解为一种32位的CPU就行。

段寄存器主要是用来寻址,注意在实模式和保护模式下寄存器中同样的值会有不同的含义。

EIP要和CS结合使用,具体含义如果学过微型计算机相似的课程都知道怎么回事,这里就不解释了。

UCORE部分编程技巧

这部分主要关于上图中的内容。

为什么要介绍?因为UCORE基于C开发,但是又用到了上述内容,所以要解释下。

例如上图中就是用了面向对象的编程方法。这部分代码用来建立一个物理内存的管理器,这样主要是为了能够让在调用这里定义好的函数接口的时候接口不会改变,尽管接口的实现方式在不同的连续内存分配方法上是不一样的。

上图为通常的双链表定义

上图为uCore的双向链表结构的定义(我觉得图中的list_entrylist_entry_t是同一个东西),不过可以不只是用在双向链表上。上图中page(因为它里面定义了page_link)可以和free_area建立链接关系,同时它里面还可以定义别的成员变量来装特定的数据,这样就可以针对不同数据结构对成员变量的要求来改变page的定义,因此可以更灵活简洁地实现各类数据结构。

上图中的free_area相当于是链表的头节点。图中le2page用来寻找到某个page的头节点的实现:

le2page包含两个模块,一个是指针le(宿主数据结构的链表节点的指针),一个是member(成员变量)。to_struct多一个Page,表示这个链表节点。to_struct的作用就是用当前链表节点的地址减去offset(Page所在位置减去成员的偏移值),这样就可以计算出宿主数据结构头指针的地址。offsetof的type就是Page,注意(type*)0,它不是代表具体的一个地址,而是合在一起代表了这种member成员变量在这个类型type中的一个偏移值。

可能要装的一些软件

这里假设是在Ubuntu 16.04下进行的。

要装的有:

sudo apt install eclipse-cdt git meld vim

上面的不完全,到时候用到再补充。我比较习惯用vim这款编辑器,所以这里列了vim,可以选别的。

操作系统(1)——X86-32硬件介绍、实验环境相关配置、uCore部分技巧介绍的更多相关文章

  1. SDN实验环境安装配置

  2. TFT LCD控制显示总结(硬件概念、初始化相关配置)(转)

    源地址:http://nervfzb.blog.163.com/blog/static/314813992011215105432369/ TFT LCD是嵌入式中比较常用的显示器,S3C2440/S ...

  3. Hadoop系列之实验环境搭建

    实验环境基本配置 硬件:硬盘单节点50GB,1G内存,单核. 操作系统:CentOS6.4 64bit Hadoop:2.20 64bit(已编译) JDK:jdk1.7 磁盘分区: / 5GB /b ...

  4. 【MySQL】MySQL无基础学习和入门之一:数据库基础概述和实验环境搭建

    数据库基础概述  大部分互联网公司都选择MySQL作为业务数据存储数据库,除了MySQL目前还有很多公司使用Oracle(甲骨文).SQLserver(微软).MongoDB等. 从使用成本来区分可以 ...

  5. 操作系统内核Hack:(一)实验环境搭建

    操作系统内核Hack:(一)实验环境搭建 三四年前,心血来潮,入手<Orange's:一个操作系统的实现>学习操作系统内核,还配套买了王爽的<汇编语言(第二版)>和<80 ...

  6. App自动化测试-1.App自动化介绍和环境搭建

    App自动化测试-1.App自动化介绍和环境搭建 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-b ...

  7. OPNsense防火墙搭建实验环境,MSF与SSH进行流量转发

    OPNsense防火墙搭建实验环境,MSF与SSH进行流量转发 摘要: 记录实验过程中踩到的坑.介绍OPNsense防火墙的安装配置并搭建实验环境,利用msf的模块及ssh进行流量转发(LAN向DMZ ...

  8. vSphere可用性之三准备实验环境

    第三章 准备实验环境 在上篇内容中,讲述了进行VMware HA实验所必需的软硬件条件.接下来将使用这些来搭建实验环境.主要内容为依据拓扑图安装ESX主机系统.ISCSI存储系统. 此次实验环境的建置 ...

  9. 准备 KVM 实验环境 - 每天5分钟玩转 OpenStack(3)

    KVM 是 OpenStack 使用最广泛的 Hypervisor,本节介绍如何搭建 KVM 实验环境 安装 KVM 上一节说了,KVM 是 2 型虚拟化,是运行在操作系统之上的,所以我们先要装一个 ...

随机推荐

  1. ZROI 19.08.03 分治与离线

    经典问题,给一张图,支持加边/删边/询问两点连通性. 离线统计边权(删除时间),lct维护最大生成树即可. 也可以按时间分治,维护一个可回退并查集即可. 主定理 很好用,但是记不住. 有一种简明的替代 ...

  2. linux系统下导出MySQL文件

    1.配置:从centOS6.5系统,MySQL数据库 2.导出.sql文件的命令: mysqldump -uroot -h116.228.90.147 -P18006 -p aimo > /ho ...

  3. iOS 自定义NavigationBar右侧按钮rightBarButtonItem

    自定义右侧的一个按钮 UIBarButtonItem *myButton = [[UIBarButtonItem alloc] initWithTitle:@"主页" style: ...

  4. java——>> 和>>>

    试一下 public static void main(String[] args) { System.out.println(Integer.toBinaryString(-16)); System ...

  5. 【shell】截取字符串前面文字

    例如:有一个文件test.txt,里面有这些数据. meiguounix232 faguounix ribenunix zhongguounixtaobao hanguounixbaba 现在我想截取 ...

  6. AOP前世与今生,aspect

    AOP前世与今生 -------------------------------- 1.代码编写重复,(简单重构) 2.改善 3.静态代理(不改变原代码,继乘原来接口),代理类, aop 最原始出发点 ...

  7. springboot 出现异常 java.net.BindException: Address already in use: bind

    java.net.BindException: Address already in use: bind

  8. 配置中心Apollo多环境部署

  9. php中文件断点上传怎么实现?

    1.使用PHP的创始人 Rasmus Lerdorf 写的APC扩展模块来实现(http://pecl.php.net/package/apc) APC实现方法: 安装APC,参照官方文档安装,可以使 ...

  10. 【Leetcode】买卖股票-贪心算法

    题目: 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 设计一个算法来计算你所能获取的最大利润.你可以尽可能地完成更多的交易(多次买卖一支股票). 注意:你不能同时参与多笔交易(你必 ...