07 2024 档案
摘要:方法:利用BIOS中断来检测内存容量,具体是BIOS INT 0x15(或INT 15H) 具体使用方法: 参考文档链接:https://wiki.osdev.org/Detecting_Memory_(x86) 实操 (1)首先定义一个结构体 因为内存是分成好多块的,有一些是已经被硬件占用了: 因
阅读全文
摘要:在开发操作系统过程中,有时必须使用某些特殊的指令(如inb/outb/hlt),而C编译器无法自动使用这些指令。 因此,如果要使用这些指令,有两种方式: 1.在汇编文件中为该指令的使用创建汇编函数(子程序),然后在C代码中以函数调用的方式去使用; 2.使用内联汇编:即在C代码中嵌入汇编程序。 在大多
阅读全文
摘要:原理说明 JMP指令:JMP是汇编语言中的无条件跳转指令。无条件跳转指令可转到内存中任何程序段。转移地址可在指令中给出,也可以在寄存器中给出,或在储存器中指出。 call指令:在汇编语言中,CALL指令的作用是将下一条指令的地址(即程序计数器PC的内容)入栈,并将子程序的起始地址送入PC,从而实现程
阅读全文
摘要:bios提供了一组服务,可以帮助我们操纵硬件,避免我们直接与硬件细节打交道 当触发软中断时,会自动从中断向量表中取出想用的中断程序的首地址,来执行中断程序,参数通过寄存器传递 一、Bios的INT10中断 INT10中断是BIOS用于控制显示屏的关键接口,包括设置显示器模式、光标管理和显示特性等 I
阅读全文
摘要:原理说明 Bios会加载第0扇区到内存中,只有512字节,因此该部分的程序无法做太多的事,因此需要扩展程序,有以下两种方式: 这里选用方式二,因为实现起来相对简单一点。 16位实模式的情况下,寄存器也是16位,详见下图右边的AX BX CX DX 8086CPU的寻址范围是1MB 确定物理地址的方法
阅读全文
摘要:计算机系统引导介绍 前三步:硬件自己完成 后两步:由自己编写 第四步:bios会先检查硬盘第0个扇区(512字节)中是否有引导代码,(通过检查引导标志来确定,即第0扇区的最后两个字节);接着再将第0个扇区的内容加载到内存中,即把引导代码加载到内存中 (暂不考虑磁盘分区的情况) 整体开发工作流程 1.
阅读全文
摘要:请说说MyBatis的工作原理 读取 MyBatis 配置文件:mybatis-config.xml 为 MyBatis 的全局配置文件,配置了 MyBatis 的运 行环境等信息,例如数据库连接信息。 加载映射文件。映射文件即 SQL 映射文件,该文件中配置了操作数据库的 SQL 语句,需要在 M
阅读全文
摘要:Spring MVC的主要组件? 前端控制器 DispatcherServlet(不需要程序员开发) 作用:接收请求、响应结果,相当于转发器,有了DispatcherServlet 就减少了其它组件之间 的耦合度。 处理器映射器HandlerMapping(不需要程序员开发) 作用:根据请求的URL
阅读全文
摘要:Spring 框架中都用到了哪些设计模式? 工厂模式:BeanFactory就是简单工厂模式的体现,用来创建对象的实例; 单例模式:Bean默认为单例模式。 代理模式:Spring的AOP功能用到了JDK的动态代理和CGLIB字节码生成技术; 模板方法:用来解决代码重复的问题。比如. RestTem
阅读全文
摘要:一. MYSQL索引 1.1 索引介绍 1.1.1 索引是什么 官⽅方介绍索引是帮助MySQL高效获取数据的数据结构。更更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度。 一般来说索引本身也很大,不可能全部存储在内存中,因此索引往往是存储在磁盘上的文件中的(可能存储在单独的索引文
阅读全文
摘要:GCC工具链 (1)下载gcc工具链for windows(x86_64-elf-tools-windows) 下载地址:https://github.com/lordmilko/i686-elf-tools/releases/tag/7.1.0 下载太慢了,安装了Watt Toolkit和temp
阅读全文
摘要:.sh是什么 .sh是什么? .sh文件是UNIX/LINUX操作系统的脚本文件,用于存储用Bash语言编写的指令。 Bash是什么? Bash,Unix shell的一种,在1987年由布莱恩·福克斯为了GNU计划而编写。1989年发布第一个正式版本,原先是计划用在GNU操作系统上,但能运行于大多
阅读全文
摘要:GCC是什么 GCC(GNU Compiler Collection)是一个开源的编译器套件,由 GNU 项目开发和维护。 GNU 编译器套件包括 C、C++、Objective-C、Fortran、Ada、Go 和 D 语言的编译器,以及这些语言的库(libstdc++,…)。 GCC 最初作为
阅读全文
摘要:大致流程: 开发工具: cmake和gcc的区别: GCC是一个编译器套件,它提供了编译多种编程语言(如C、C++、Objective-C、Fortran、Java等)的功能。GCC本身并不直接处理项目的构建过程,而是负责将源代码转换成可执行文件或库文件。当你只有一个源文件需要编译时,可以直接使用G
阅读全文