草庐IT

[自制操作系统] 第15回 实现内核线程

目录一、前景回顾二、线程的实现三、线程的切换四、运行测试 一、前景回顾  上一回我们实现了内存管理系统,说实话代码还是比较多,看起来还是比较头疼的,不过为了知识这都是小事。这一节终于可以来实现我们的线程了,以前学操作系统的时候,听到的最多的就是什么线程,进程等,这一回我们来自己动手实现一下,加深对线程的理解。二、线程的实现  我相信能认真去看这篇博客的同学,不会是零基础。所以我也就不再深入地去讲解进程和线程的区别。这里我引入书中的话:  线程是什么?具有能动性、执行力、独立的代码块。  进程是什么?进程=线程+资源。  先贴上代码,在project/kernel目录下新建list.c、list

[自制操作系统] 第12回 实现中断代码

目录一、前景回顾二、实现中断框架三、代码实现四、中断的压栈和出栈过程分析五、运行测试 一、前景回顾  前面我们已经讲解了中断的基本知识,接下来要开始进行代码的实操。代码主要有两块,其中一块是关于可编程中断控制器8259A的代码,另一块主要是整个中断的代码。二、实现中断框架    IDT:中断描述符表。  gate_desc:中断描述符。  intr_entry_table:中断处理入口函数表。该数组存储了所有中断处理入口函数的地址,其核心是通过call[idt_table+%1*4]的方式在idt_table表中调用中断处理函数。  idt_table:中断处理函数表,该数组存储的才是真正的中

[自制操作系统] 第12回 实现中断代码

目录一、前景回顾二、实现中断框架三、代码实现四、中断的压栈和出栈过程分析五、运行测试 一、前景回顾  前面我们已经讲解了中断的基本知识,接下来要开始进行代码的实操。代码主要有两块,其中一块是关于可编程中断控制器8259A的代码,另一块主要是整个中断的代码。二、实现中断框架    IDT:中断描述符表。  gate_desc:中断描述符。  intr_entry_table:中断处理入口函数表。该数组存储了所有中断处理入口函数的地址,其核心是通过call[idt_table+%1*4]的方式在idt_table表中调用中断处理函数。  idt_table:中断处理函数表,该数组存储的才是真正的中

[自制操作系统] 第17回 编写键盘驱动

目录一、前景回顾二、实现键盘输入的中断函数三、编写键盘驱动四、实现环形输入缓冲区五、运行测试 一、前景回顾  上一回我们完成了锁的实现,并且利用锁优化了终端输出函数。这一回我们来实现键盘的输入,为后面的用户交互功能打好基础。二、实现键盘输入的中断函数  首先我们需要知道键盘是属于外设,所以对应的中断属于外部中断。在讲中断那一章节时,我们知道了外部中断的处理流程,不过对于键盘的输入中断,还需要增加一点点东西。     8048是键盘上的芯片,其主要任务就是监控哪个键被按下,一旦有按键信息,8048就将按键信息传递给键盘控制器8042(8042通常是Intel8042或兼容芯片,集成在主机内部的主

[自制操作系统] 第17回 编写键盘驱动

目录一、前景回顾二、实现键盘输入的中断函数三、编写键盘驱动四、实现环形输入缓冲区五、运行测试 一、前景回顾  上一回我们完成了锁的实现,并且利用锁优化了终端输出函数。这一回我们来实现键盘的输入,为后面的用户交互功能打好基础。二、实现键盘输入的中断函数  首先我们需要知道键盘是属于外设,所以对应的中断属于外部中断。在讲中断那一章节时,我们知道了外部中断的处理流程,不过对于键盘的输入中断,还需要增加一点点东西。     8048是键盘上的芯片,其主要任务就是监控哪个键被按下,一旦有按键信息,8048就将按键信息传递给键盘控制器8042(8042通常是Intel8042或兼容芯片,集成在主机内部的主

springboot整合百度富文本编辑器ueditor实现图片上传和文件上传以及回显

springboot整合ueditor实现图片上传和文件上传功能写在前面:在阅读本篇之前,请先按照我的这篇随笔完成对ueditor的前期配置工作:springboot+layui整合百度富文本编辑器ueditor入门使用教程(踩过的坑)https://www.cnblogs.com/rainbow-1/p/16365016.htmlmaven导入需要的几个jar包:https://www.cnblogs.com/rainbow-1/p/16371335.html在完成对ueditor的基本配置后,图片和文件的上传主要是后端文件的配置,下面简单介绍一下步骤。实现效果:一、修改ueditor.co

springboot整合百度富文本编辑器ueditor实现图片上传和文件上传以及回显

springboot整合ueditor实现图片上传和文件上传功能写在前面:在阅读本篇之前,请先按照我的这篇随笔完成对ueditor的前期配置工作:springboot+layui整合百度富文本编辑器ueditor入门使用教程(踩过的坑)https://www.cnblogs.com/rainbow-1/p/16365016.htmlmaven导入需要的几个jar包:https://www.cnblogs.com/rainbow-1/p/16371335.html在完成对ueditor的基本配置后,图片和文件的上传主要是后端文件的配置,下面简单介绍一下步骤。实现效果:一、修改ueditor.co

[自制操作系统] 第07回 认识保护模式之地址映射

目录一、前景回顾二、物理地址、线性地址和虚拟地址三、内存为什么要分页四、一级页表五、二级页表 一、前景回顾  前面我们说到,保护模式下有着三大特点:地址映射、特权级和分时机制。从我的学习角度来说,我认为地址映射这一块的知识点尤为繁杂,所以会花费相对比较多的时间来讲述,话不多说,开整。二、物理地址、线性地址和虚拟地址  在认识地址映射之前,我们来搞懂这三个地址的含义。  物理地址就是物理内存中真正的地址,相当于内存中每一个存储单元的门牌号,具有唯一性。不管在什么模式下,CPU最终都是以物理地址去访问内存的,一定要充分认识到这一点。  在实模式下,“段基址+段内偏移地址”经过段部件的处理,直接输出

[自制操作系统] 第07回 认识保护模式之地址映射

目录一、前景回顾二、物理地址、线性地址和虚拟地址三、内存为什么要分页四、一级页表五、二级页表 一、前景回顾  前面我们说到,保护模式下有着三大特点:地址映射、特权级和分时机制。从我的学习角度来说,我认为地址映射这一块的知识点尤为繁杂,所以会花费相对比较多的时间来讲述,话不多说,开整。二、物理地址、线性地址和虚拟地址  在认识地址映射之前,我们来搞懂这三个地址的含义。  物理地址就是物理内存中真正的地址,相当于内存中每一个存储单元的门牌号,具有唯一性。不管在什么模式下,CPU最终都是以物理地址去访问内存的,一定要充分认识到这一点。  在实模式下,“段基址+段内偏移地址”经过段部件的处理,直接输出

[自制操作系统] 第06回 迈入保护模式

目录一、前景回顾二、A20地址线三、全局描述符表四、CR0寄存器的PE位五、迈入保护模式六、测试 一、前景回顾  上回我们说到,保护模式下有着三大特点:地址映射、特权级和分时机制。本来接下来是要向这三点一一发起进攻,不过我们首先需要先迈入保护模式中,不然在实模式下讲解保护模式显得不伦不类。怎么进入保护模式呢?其实也很简单,就三个步骤:  1、打开A20地址线  2、加载全局描述符表GDT  3、将CR0寄存器的pe位置1二、A20地址线  我们知道在8086CPU中,只有20位地址线,即A0~A19。20位地址总线表示的内存范围是1MB,即0x0~0XFFFFF,若内存超过了1MB,是需要第2