数据库系统------三级模式架构
摘要:分层设计 主要分为3个层级 物理层 物理层就是描述 数据库如何存储记录,即 数据的实际存储方式,是 how 逻辑层 逻辑层就是描述 数据库中存储数据的结构以及它们之间的关系,即 存储了什么样的数据,是 what 视图层 视图层就是描述 数据的呈现方式,即 哪些数据应该被哪些用户看到,换句话说,不同的
阅读全文
posted @
2024-08-30 22:59
Dylaris
阅读(126)
推荐(0) 编辑
数据库系统------简单介绍数据库
摘要:基本概念 数据库(DataBase, DB) 定义 数据库是相互关联的数据项的集合 简单来说,就是 存储数据的地方 特点 结构化:数据通常以表格、行和列的形式组织 持久性:数据长期保存,防止丢失 数据关联:数据项之间可以定义关系 即不同的表格之间通过相同的信息联系起来,这个相同的信息就叫做 外键 假
阅读全文
posted @
2024-08-29 18:11
Dylaris
阅读(58)
推荐(0) 编辑
chapter15------任务切换
摘要:任务切换的基本方式(简介) 协同式 从一个任务切换到另一个任务时,需要 当前任务主动地请求暂时放弃执行权,或者在通过调用门请求操作系统服务时,由操作系统将控制转移到另一个任务 任务的切换取决于每个任务的 “自律性” 抢占式 可以安装一个 定时器中断,并在 中断服务程序中实施任务切换 每个任务都能获得
阅读全文
posted @
2024-08-28 22:21
Dylaris
阅读(32)
推荐(0) 编辑
虚拟机(ubuntu22.04)安装jupyter notebook
摘要:终端输入sudo apt update 终端输入sudo apt upgrade 终端输入sudo apt install python3 python3-pip 终端输入python3 --version和pip3 --version确认是否安装成功 终端输入pip3 install notebo
阅读全文
posted @
2024-08-28 20:04
Dylaris
阅读(575)
推荐(0) 编辑
chapter14------任务和特权级保护
摘要:任务的隔离 任务 程序时记录在载体上的指令和数据,其正在执行中的一个副本就叫做任务 简单来说,我们为了完成某项特定的工作,写了一个程序,然后这个程序有可以分成几个小程序,程序执行时,每个小程序也在内存中运行,那这个小程序就是一个任务了 任务的LDT LDT 叫做 局部描述符表,之所以叫局部是因为它是
阅读全文
posted @
2024-08-25 16:23
Dylaris
阅读(35)
推荐(0) 编辑
浅谈磁盘分区 (MBR/GPT) 与开机流程
摘要:Linux中设备的文件名 linux秉持着万物皆是文件的思想,各类硬件设备也被当成文件对待,以下是常用设备的文件名 中括号 [ ] 表示设备的序列名,比如/dev/sd[a-p],就表示有多个同类型的设备,他们的文件名分别是 /dev/sda, /dev/sdb, ...... .dev/sdp 总
阅读全文
posted @
2024-08-20 16:54
Dylaris
阅读(152)
推荐(0) 编辑
chapter13------程序的动态加载和执行
摘要:本章内存规划 内核的结构、功能和加载 内核的结构和功能 头部:记录各个段的汇编位置,这些统计数据用于告诉初始化代码如何加载内核 ;以下常量定义部分。内核的大部分内容都应当固定 core_code_seg_sel equ 0x38 ;内核代码段选择子 core_data_seg_sel equ 0x3
阅读全文
posted @
2024-08-18 20:24
Dylaris
阅读(14)
推荐(0) 编辑
虚拟机(ubuntu22.04)安装Anaconda
摘要:下载安装包 前往https://repo.anaconda.com/archive/,下载对应的安装包,这里我们选择的是Anaconda3-2024.06-1-Linux-x86_64.sh这个安装脚本下载,大概 1个G 也可以直接在终端中输入wget https://repo.anaconda.c
阅读全文
posted @
2024-08-17 18:03
Dylaris
阅读(536)
推荐(0) 编辑
如何用C写一个简易的基于终端的编辑器(2)
摘要:读取输入并返回自定义的键值 根据上一章的原始模式的介绍,我们知道终端读取键盘的输入和我们想象的并不一样 普通字符很正常,读到啥就是啥,但对于一些功能键,比如说组合键和组合键则稍有差异,终端读取这些键其实是读取多个字节,比如方向键其实就是由\x1b、[和A/B/C/D这三个字节组合而成的 原始字符 如
阅读全文
posted @
2024-08-15 19:20
Dylaris
阅读(13)
推荐(0) 编辑
chapter12------存储器的保护
摘要:进入32位保护模式 指令前缀的添加 在前面的章节中,我们介绍了指令前缀 0x66 表示反转默认的操作数大小 [bits 16] mov ds, ax ; 8E D8 [bits 32] mov ds, ax ; 66 8E D8 所以在上述这段代码中,32位下的代码生成的机器指令会带有 0x66 的
阅读全文
posted @
2024-08-15 17:06
Dylaris
阅读(22)
推荐(0) 编辑
chapter11------进入保护模式
摘要:全局描述符表(GDT) 这里要先说明下,保护模式下对内存段的访问是有限制的,简单来说就是你不能再随意的访问了,只能访问授权给你的,然后段的访问限制等等信息就记载在一个叫做全局描述表里 段描述符 段描述符存储了某个段的具体信息,就像我们每个人的档案一样,记录着我们的信息 然后段描述符占用 8个字节,以
阅读全文
posted @
2024-08-13 11:04
Dylaris
阅读(24)
推荐(0) 编辑
chapter10------32位x86处理器编程架构
摘要:处理器架构 处理器架构或者处理器编程架构,是指一整套的硬件架构以及与之相适应的工作状态 回顾8086处理器 8086处理器有20根地址线,可以寻址1MB内存,但处理器内部的寄存器只有16位,也就是数据线是16根,只能处理16位的数据 我们没法用16位的寄存器去访问1MB的内存,简单来说就是无法用16
阅读全文
posted @
2024-08-11 18:00
Dylaris
阅读(59)
推荐(0) 编辑
chapter9------中断
摘要:中断是什么 中断就是打断处理器当前的执行流程,去执行另外一些和当前工作不相干的指令,执行完之后,还可以返回到原来的程序流程继续执行 为什么会有中断机制 中断这种机制能够让处理器可以在不同任务之间快速切换,实现多任务处理的功能。试想一下没有中断机制,一次只能执行一个任务,那我就不能边听音乐边写博客了,
阅读全文
posted @
2024-08-09 22:36
Dylaris
阅读(22)
推荐(0) 编辑
chapter8------加载用户程序到内存
摘要:用户程序的结构 处理器的工作模式是将内存分成逻辑上的段,指令的获取和数据的访问一律按“段地址:偏移地址”的方式进行 一个规范的程序,应当包括代码段、数据段、附加段、栈段 段的划分和段与段之间的界限在程序加载到内存之前就已经准备好了 以下是一个用户程序代码组织结构 分析: 分段:SECTION 段名称
阅读全文
posted @
2024-08-08 11:47
Dylaris
阅读(39)
推荐(0) 编辑
虚拟机(ubuntu22.04)安装与配置bochs
摘要:安装bochs 创建文件夹(可选) 新建终端 终端输入mkdir Software,下载的bochs就放在这里吧 下载bochs https://sourceforge.net/projects/bochs/files/bochs/ 进入这个网址选择对应版本的bochs,这里就用最新的2.8版本示范
阅读全文
posted @
2024-08-04 21:22
Dylaris
阅读(1055)
推荐(0) 编辑
如何用C写一个简易的基于终端的编辑器(1)
摘要:参考文章 https://viewsourcecode.org/snaptoken/kilo/02.enteringRawMode.html 写得很详细 原生模式 我们要写的编辑器有点与众不同,按键功能的映射是由我们自己设置的,为了达到这一步,我们首先得进入原生模式 原生模式简单来说就是单纯的接收输
阅读全文
posted @
2024-08-03 22:48
Dylaris
阅读(63)
推荐(0) 编辑
chapter7------栈与寻址
摘要:栈段 和代码段、数据段一样,栈也被定义为一个内存段,叫做栈段,由段寄存器ss指向 定义栈段 初始化段寄存器ss >指向栈段的首地址 初始化栈指针sp >指向栈顶字节(以字为单位移动),初始化时指向栈段最后一个字节的下一字节,其实就等于分配给栈段的字节数 栈操作 push:压栈,sp的值减2 pop:
阅读全文
posted @
2024-08-03 20:51
Dylaris
阅读(11)
推荐(0) 编辑
chapter6------段间批量数据传送与循环
摘要:跳过非指令的数据区 一般来说,所有处理器指令都应当按顺序存放,在它们中间不允许夹杂非指令的普通数据,因为他们不能作为指令执行,所以要想办法让处理器执行不到这些非指令的内容,比如jmp指令等 在数据声明中使用字面值 char db 'L', 0x07 \ 'a', 0x07 编译阶段会将这些字面值转换
阅读全文
posted @
2024-08-03 17:38
Dylaris
阅读(13)
推荐(0) 编辑
chapter5------编写主引导扇区代码
摘要:主引导扇区 (Main Boot Sector, MBR) 什么是主引导扇区: 处理器加电或者复位之后(简单来说就是启动计算机),如果硬盘是首选的启动设备,那么ROM-BIOS(基本输入输出系统)将试图读取硬盘的0面0道1扇区(简单来说就是第一个扇区),这就是主引导扇区 主引导扇区的特点: 扇区数据
阅读全文
posted @
2024-08-02 11:43
Dylaris
阅读(77)
推荐(0) 编辑