自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 收藏
  • 关注

原创 shell script

1、在脚本内进行数字运算var=$( (运算内容) )

2020-12-17 15:33:23 92

原创 显卡的端口控制

hello

2020-12-31 20:14:38 217

原创 Linux下系统调用传递参数

当输入的参数小于5个时,Linux用寄存器传递参数eax存储子功能号ebx存参数1ecx存参数2edx存参数3esi存参数4edi存参数5

2020-12-31 13:16:26 568

原创 64位下编译链接32位程序

1、gcc -m322、ld -m elf_i386

2020-12-30 17:09:08 423

原创 文件头+elf

我们之前在加载mbr和loader的时候,是直接用了它们的地址,比如mbr是0x7c00,loader是0x900,这样的缺点是我们必须每次都用这个地址,不能改,需要提前与程序约定调用地址,这样很不方便,那么怎么改呢?我们只需要在程序文件的某个特定的地方(比如开始处)写入程序开始的地方,然后从这个特定的地方读出程序开始的地址就可以了,这就是文件头的由来。文件头中还有一些其他的信息,比如程序的大小。这样纯二进制程序就变成了文件头+文件体的形式。好处是操作系统加载程序的时候,方法可以是通用的。不好的地方

2020-12-30 09:18:22 270

原创 链接

在gcc中加入-c选项说明的是编译成可重定位的目标文件,这时有些符号可能是文件外部的,需要把那些包含这些符号定义的文件和该目标文件链接起来,才能形成可执行文件。链接的操作:ld xxx.o yyy.o \-Ttext 虚拟地址 \-e 程序入口 \-o 可执行文件的名字...

2020-12-30 08:43:54 64

原创 在当前文件下打开终端的快捷键

目前没有更好的直接在当前目录打开终端的方法,只能用键盘模拟鼠标右键,然后按e打开shift + F10然后按下e

2020-12-29 22:24:09 1669

原创 启动分页机制

1、准备好页目录表及页表2、将页目录表地址写入控制寄存器cr33、寄存器cr0的PG位置为1(PG位用来控制分页)cr3寄存器用来存储页目录表的物理地址,所以它又称为页目录基址寄存器PDBR(Page Directory Base Register)。要让每个进程的虚拟地址空间的3GB~4GB都指向操作系统所在的物理内存部分,因为要共享操作系统的系统调用功能。...

2020-12-29 22:19:24 201

原创 Linux终端的一些命令

1、查看usb有关的信息#不带后面的/dev/sd*也可以fdisk -l /dev/sd*

2020-12-29 16:10:04 92

原创 内存分页

分段过程下CPU加载内存段的一个改进:CPU加载内存段的过程查看段对应的段描述符,如果它的P(第47)位为1,表示段在内存中,访问过该段后,将段描述符的type的A(Accessed)位置为1,如果为0,表示不在内存中, CPU抛出NP(Not Present)异常,去执行中断描述符表中NP异常对应的中断处理程序,该程序将段从外存加载到内存,并将描述符的P位置为1,然后返回。CPU继续检查P位,如果P位为1,就可以访问它,访问过后将A位置为1。段描述符的A位清0是由谁实现的?操作系统每次发现段描述符

2020-12-29 14:42:53 456

原创 保护模式

段描述符段寄存器中保存的是选择子(selector),它索引到全局描述符表的对应段描述符。

2020-12-28 20:27:42 155

原创 硬盘有关

1、工作原理每个盘片分上下两面,每面都存储数据,确定盘面,然后确定扇区,然后确定磁道(磁道就是同心圆环与扇区相交的弧环,它有宽度,有横截面积,数据就存储在这些“面积”中)。磁头臂带动磁头在盘片上方移动,就是在找磁道的位置,盘片高速自转,就是在磁道内定位扇区。存储和读取信息的速度被寻找磁道限制,所以采用柱面存储,尽量保证磁道不变,只改变磁面和扇区,由磁道、磁面和扇区唯一确定一个扇区(扇区是最基本的存储单元)。...

2020-12-28 15:58:12 68

原创 BIOS

全称 Base Input & Output System,基本输入输出系统以前Intel 8086只有20条地址线,只可以访问1MB的内存空间(0x00000~0xFFFFF),这1MB的内存空间被分成多个部分,如下:地址范围功能FFFF0~FFFFF,16BBIOS入口地址,此处的内容是jmp f000: e05bF0000~FFFEF,64KB-16BBIOS范围是F0000~FFFFF共64KBC800~EFFFFC0000~C7FFF

2020-12-28 09:37:56 931

原创 mbr(master boot record)主引导记录

稍等

2020-12-28 08:53:31 499 2

原创 loader.S解释

内核加载器

2020-12-28 08:50:53 303

原创 bochs中的命令

1、nn // 单步执行

2020-12-28 08:35:55 100

原创 操作系统真象还原代码文件的编译汇编等

1、loader.S编译 nasm -I include/ -o loader.bin loader.S 回车将生成的 loader.bin 写入硬盘第 2 个扇区。第 0 个扇区是 MBR,第 1 个扇区是空的未使用,原因如前所述,纯粹个人喜好。dd if=./loader.bin of=/此处替换成你的安装目录/bochs/hd60M.img bs=512 count=1 seek=2 conv=notrunc回车,下面是 dd 命令的三行输出。记录了 0+1 的读入记录了 0+1 的写出

2020-12-27 22:53:14 209 2

原创 进入保护模式

3步1、加载GDTlgdt2、打开A20地址线将端口0x92的第1位置位1。in al,0x92 or al,0000_0010B out 0x92,al3、启动PE位,打开保护模式将cr0的PE位(最低位)置为1。mov eax, cr0 or eax, 0x00000001 mov cr0, eax...

2020-12-26 23:13:18 142

原创 全局描述符表GDT(Global Descriptor Table)

段描述符:一个段描述符用来存储和一个内存段(代码段、数据段等等)有关的信息。

2020-12-26 20:58:05 532

原创 在64位总线下,安装了8G内存条,却显示可用内存不到8G的原因

1、查看可用内存的指令:cat /proc/meminfo |grep MemTotal2、原因:Intel官方称:当内存条容量不小于4GB时,集成显卡会占用部分内存。

2020-12-19 20:25:27 1742 2

原创 解释型语言和编译型语言的区别

解释型语言是在一个解释器上运行,它本质上是这个解释器程序的输入。这个解释器相当于用编译型语言写出来的程序。这个解释器是真正的在CPU上运行的程序。

2020-12-19 11:09:21 158 1

原创 谷歌浏览器的一些快捷键

1、打开一个新的标签页^t2、全选^a #这个根据不同键盘或系统来定3、将光标定位到网页栏,即在网页栏输入^k4、移到相邻右边的一个标签页^tab5、移动相邻左边的一个标签页^ shift tab

2020-12-17 14:58:07 205

原创 test

https://blog.csdn.net/zengxyuyu/article/details/54620104

2020-12-16 20:25:27 42

原创 换行在linux、windows和mac中的区别

linux中的换行就是换行符:’\n’ 0x0Awindows中的换行符是回车换行:’\r\n’ 0x0D0Amac中的换行是回车:’\r’ 0x0D

2020-12-15 10:54:43 145

原创 BASH

1、查看当前目录的命令pwd

2020-12-12 22:08:31 113

原创 不同版本eclipse对jdk要求

转载:https://www.cnblogs.com/mkl34367803/p/10348226.html

2020-12-12 19:04:29 497

原创 Linux之Ubuntu18.04安装Java JDK8的三种方式

转载自:https://blog.csdn.net/zbj18314469395/article/details/86064849

2020-12-11 20:21:13 287

原创 colab绑定到谷歌云盘

安装必要软件等!apt-get install -y -qq software-properties-common python-software-properties module-init-tools!add-apt-repository -y ppa:alessandro-strada/ppa 2>&1 > /dev/null!apt-get update -qq 2>&1 > /dev/null!apt-get -y install -qq googl

2020-12-08 09:38:43 779 5

原创 python修改csv文件

添加表头import pandas as pddf = pd.read_csv('tf.csv',header=None,names=['a','b','c','d','e','f','g','h','i','j','k'])df.to_csv('tf.csv',index=False)"""tf.csv是你当前目录下的csv文件名names后面是你想要设置的表头切记:header值为None,不能是False,否则会报错"""...

2020-12-08 08:31:50 2344

原创 《TCP/IP详解》卷1 第16章读书笔记

TCP拥塞控制为什么要进行拥塞控制?防止因为网络中出现大量数据包而导致网络瘫痪,因此当发现异常时要减缓包发送的速率。怎么判断TCP需要减缓发送数据包?当网络拥塞的时候会发生啥?考虑对于一个中间路由器,当传送的包的数量超过了它的存储队列的长度,那那些多余的包会被丢弃掉。所以当出现丢包时,TCP很重视这一问题,会立即进入到拥塞控制。几个概念:拥塞窗口(congestion window)cwnd:由算法控制。发送端实际窗口大小W为接收端通知窗口awnd和cwnd的较小者:W = min(cwnd

2020-12-05 15:58:17 125

原创 《TCP/IP详解》卷1 第15章读书笔记

TCP数据流与窗口管理TCP的动态数据传输。为什么需要管理TCP数据流量呢?因为网络的负载能力有限,当包的数量超过网络的负载能力,网络就会很慢。为什么需要管理TCP窗口呢?1、同管理数据流量相同,要减缓网络压力。2、当包的发送速率大于接收速率时,可能会出现丢包的情况,为了避免丢包和考虑到接收方的处理的能力。为了一定程度上减缓拥塞,下面两种方法,分别是延时确认和Nagle算法。1、延时确认TCP并不是对每个数据报都返回ACK,累积确认机制使得TCP可以延迟一段时间发送ACK。实践中通常最大延

2020-12-05 12:58:32 87

原创 《TCP/IP详解》卷1 第14章读书笔记

超时与重传为什么要设定超时?我们发送数据包的目的是为了让接收方收到并处理,而发送方发送的包在传输的过程中可能会丢失,丢失后接收方就接收不到了,此时我们需要重传这个包。而我们怎么判断这个包丢失了呢?首先这么想,发送方怎么确认这个包被成功接收到了呢?一定是发送发接收到了对这个包的ACK,那么如果没有接收到这个ACK,我们就认为这个包丢失了或者ACK丢失了,而为了保险,我们统一认为数据包丢失了。那怎么才算我们没有收到ACK呢?1年没有收到,1天没有收到,还是1分钟没有收到? 从我们发送这个包之后,在时

2020-12-04 22:28:17 162

原创 linux下C语言运行shell脚本的方法

转载自https://blog.csdn.net/u010299133/article/details/85637263总共有3种方法1、利用exec()函数#include <unistd.h>execve("命令", argv, envp);2、利用system函数#include <stdlib.h>system

2020-12-03 12:08:12 674

原创 linux下利用sox播放音乐

安装命令sudo apt install soxsudo apt install libsox-fmt-all播放play xxx.mp3

2020-12-03 10:15:59 719

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除