Time's Blog

Time的静态博客


  • 首页

  • 标签

  • 分类

  • 归档

从零实现一个操作系统-day9

发表于 2020-04-29 | 分类于 学习记录

调试配置

昨天写完printk函数后很有可能遇到bug,当遇到bug的时候怎样来调试呢,现在就来配置一下

gdb调试

qemu可以以调试模式启动配合gdb来进行调试,当然cgdb更加好用一些
qemu的调试模式命令是

1
qemu -S -s -fda floppy.img -boot a

-S是让qemu不要继续运行,等待gdb的运行指令,-s是开启1234端口等待gdb连接

阅读全文 »

从零实现一个操作系统-day8

发表于 2020-04-27 | 分类于 学习记录

实现简易版的printf函数

屏幕的输入输出函数主要的功能还是dubug,我们模仿标准库来实现,标准库的printf基于vsprintf

1
int vsprintf(const char *format, va_list arg)

先看看printk的内容

阅读全文 »

从零实现一个操作系统-day7

发表于 2020-04-24 | 分类于 学习记录

字符串函数

因为在内核中,大部分的c标准库函数无法使用,字符串操作的函数又比较常用,所有自己实现一些

include/string.h

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#ifndef INCLUDE_STRING_H_
#define INCLUDE_STRING_H_

#include "types.h"

void memcpy(uint8_t *dest, const uint8_t *src, uint32_t len);

void memset(void *dest, uint8_t val, uint32_t len);

void bzero(void *dest, uint32_t len);

int strcmp(const char *str1, const char *str2);

char *strcpy(char *dest, const char *src);

char *strcat(char *dest, const char *src);

int strlen(const char *src);

#endif // INCLUDE_STRING_H_

阅读全文 »

从零实现一个操作系统-day6

发表于 2020-04-21 | 分类于 学习记录

昨天写的内核在屏幕上没有我们输出的东西,今天就来想办法显示点什么

文字的显示

要显示东西就涉及到显卡了,显卡有两种模式,文本模式和图形模式,现在基本都是图形模式用得多,但是我们这个就用文本模式了,毕竟不涉及ui啥的

文本的显示规则

显卡通电后就自动初始化了80\ * 25分辨率的文本模式,即一屏25行,一行80个字符
之前说过内存地址空间不是全部映射到主存的,有一部分映射到外部设备,0xB8000~0xBFFFF就是映射到显卡文本模式的显存的地址空间

阅读全文 »

从零实现一个操作系统-day4-5

发表于 2020-04-19 | 分类于 学习记录

在软盘中安装grub

昨天在这一步出了点问题,很难受,今天来解决一下
我发现问题可能跟我使用的是腾讯云的vps有关,后来我换了一台vultr的centos的vps之后就没问题了,接着昨天的
用loop0把floppy.img虚拟成块设备

1
sudo losetup /dev/loop0 floppy.img
阅读全文 »

从零实现一个操作系统-day3

发表于 2020-04-18 | 分类于 学习记录

链接器脚本

第一天的链接器脚本我们没有看懂,今天就来把它弄清楚吧,先把脚本代码弄过来

阅读全文 »

从零实现一个操作系统-day2

发表于 2020-04-17 | 分类于 学习记录

今天主要是对操作系统的启动进行学习,因为都是理论的部分,这篇博客就当学习的笔记了

计算机的启动过程

BIOS

首先在按下电源键后计算机首先读取写在ROM中的BIOS(Basic Input/Output System 基本输入输出系统)

它保存着计算机最重要的基本输入输出的程序,其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。此外,BIOS还向作业系统提供一些系统参数。系统硬件的变化是由BIOS隐藏,程序使用BIOS功能而不是直接控制硬件。现代作业系统会忽略BIOS提供的抽象层并直接控制硬件组件。——百度百科

阅读全文 »

从零实现一个操作系统-day1

发表于 2020-04-16 | 分类于 学习记录

目的

从这次春招中的碰壁和各种感悟,深刻体会到自己基础知识的不足,从零实现一个操作系统可以帮助自己更好得了解操作系统的知识。自己很早之前就开始有写一个微型操作系统的想法,之前也实践过,但弄了几天就放弃了,发现自己的毅力太差了,其实就是太懒了,写blog的目的也有敦促自己,不要懈怠。

资料

感谢前辈们无私提供的各种教程,这系列blog(希望是系列)跟着hurlex-doc教程来学习,当作自己的学习笔记和敦促自己努力不要偷懒

阅读全文 »

codeforces-1182-E-Product Oriented Recurrence(矩阵快速幂+欧拉降幂)

发表于 2019-09-25 | 分类于 题解

上篇博客就是在写这篇题解的时候发现公式预览不好用弄出来的23333

题目链接:https://codeforces.com/contest/1182/problem/E

题目大意:

定义一个函数
$f_x=c^{2x-6}*f_{x-1}*f_{x-2}*f_{x-3}$ for $x\geq4$ , $f_1,f_2,f_3$是已知的,求$f_nmod(1e9+7)$

思路

乍一看感觉是矩阵快速幂,但是递推关系不是线性的没法写呀,然后我们可以发现每一项的指数是满足线性递推关系的

阅读全文 »

vim-instant-markdown显示mathjax公式

发表于 2019-09-25 | 分类于 问题记录

问题背景:

今天在用vim写markdown,装了vim-instant-markdown预览,但是我发现它不能显示MathJax的公式,于是开始了找原因的旅程


阅读全文 »
上一页1234下一页

40 日志
4 分类
38 标签
GitHub
友情链接
  • pubgoso的博客
  • qieqiemin的博客
© 2024 Time
备案号: 皖ICP备17024872号-1
由 Hexo 强力驱动
|
主题 — NexT.Gemini v5.1.4
本站访客数 人次