zoukankan      html  css  js  c++  java
  • ubuntu下30天自制os 的学习计划

    30天自制os的学习也告一段落,由于有其他更重要的事情要集中精力去处理。书本从15天開始就是多任务了。可是不得不停下一阵子。

    以下总结下学习中遇到的一些问题。

    1:学习这前14天中。问题最大的是关于GDT。IDT的理解,还有段的訪问长段,属性的理解。


    2:这当中遇到的一个现象就是从qemu能够正常启动,可是写到u盘后。从u盘启动时,会不停的重新启动。能够推測到是由于产生了一些异常导致电脑重新启动,可是由于水平有限一直不知道为什么, 后来放下30天这本书。去看了一下,关于GDT的訪问属性的问题,发现出现故障的原因例如以下:

    1. 段的分页位没有开,导致从段基址開始,能訪问的空间仅仅有1MB的范围,而博主写的代码与日本作者的有些不同。跳转到c语言写的代码指令已经超过了2MB。
    2. 日本作者的代码在初始化GDT,IDT的函数中,对代码段的长度进行了控制 

    3:在10几天的代码中。最难理解理解的还是关于图层刷新的那一块,尽管代码是參考书本上敲的。可是还是有非常多不太理解,当然仅仅知道是怎么用的,似乎是基础有点薄弱的原因。


    4:之前写的512字节的代码是用Intel的汇编语言写的,第二次学习时,所实用GNU的AT&T语法进行了改写,通过对u盘启动的研究,发现了关于U盘的一些CHS的特点。当然这一点为以后学习Linux内核时。改动为从u盘启动是有帮助的。


    5:学完书本上第14天的内容后,发现之前写的代码有非常多bug,当然这些bug在后面都给修复了。

    不停的修复bug。也为后面的学习提供了一些方便。由于前面的学习过程中没有太注重代码的可读性,当然仅仅为了自己能看懂。写了非常多凝视。在13天中,对代码的函数进行了分模块的整理。对全局变量的存放位置也有更好的存放位置,代码的结构也更清楚了。


    6:了解到github。在管理代码方面强大的功能,所以后面也把代码直接放到了github上,学习了一点github的基础知识,代码的同步,改动也方便了非常多。


    7:在移植ucgui时。对于静态链接库的使用。也有更深入的理解,由于须要写makefile来编译ucgui,对于makefile文件的编写也有了更深入的了解,当然学习还是不够系统。后面应该找本makefile的书,系统的看一遍。


    8:关于不同分辨率的显示问题。有些问题。难道不能在32位的模式下,用c语言来进行设置吗?不同的模式。不同的VRAM的地址也不同,所以32位的系统仅仅能用2.6GB 左右的内存,高址的内存有一部分给分配给显存了。关于高分辨率的第14天的关半部分。日本作者写的有点问题,直接给出了VRAM的地址是0xe0000000是不科学的,导致博主觉得自己的代码有问题。看了好几次。发现没有问题。于是直接往书的后面看。发现VRAM的地址是通过中断读到的,然后把读到的VRAM地址保存起来,以便后面在c语言的函数中使用。


    项目github地址:https://github.com/cherishsir/ubuntu230os 

    QQ Group:159336168


    以下就放一张从u盘启动的照片吧。实现功能到了第14天的高分辨率显示和简单的键盘输入。

    至于15天和后面的学习。等到了放暑假时,在家学习吧。




查看全文
  • 相关阅读:
    SQL Server中怎样可以从SELECT语句的结果集中删除重复行
    Comparison method violates its general contract!
    如何解决 不能以 DISTINCT 方式选择 text、ntext 或 image 数据类型
    TortoiseSVN—Repo-browser
    使用BigDecimal完成小数点后的精确位数的四舍五入
    CREATE TABLE 语句后的 ON [PRIMARY] 起什么作用
    sql server 获取每一个类别中值最大的一条数据
    C# 正则表达式
    Linq to XML 读取XML 备忘笔记
    安装双系统需要注意的几个问题
  • 原文地址:https://www.cnblogs.com/ldxsuanfa/p/10701509.html
  • Copyright © 2011-2022 走看看