-
cpu指令
- add(R1 ,R2)
- 运算器
- 控制器
- 开关
- 电流速度
- add(R1 ,R2)
-
计算机的核心
- 算数运算
- 逻辑运算
- load,
- jump
- 跳转执行
- stool(储存)
-
内存管理
-
内存
- 堆栈
- 堆
- 用来分配未知的数据
- 储存和读取比较麻烦
- 栈
- 储存固定的数据
- 长度是数据长度是一样的
- 先进后出后进先出
- 读取和储存方便
- 释放内存更简单
- 堆
- 代码
- 储存代码文本代码中的变量名指向数据块中的地址
- 数据
- 储存变量等数据
- 堆栈
-
libc
- 语言编译后执行libc中的函数
-
-
文件管理
- 储存设备
- 磁盘
- 固态硬盘
- 储存设备
-
储存方式
-
通过把文件分为块,每块都有自己的地址
- 空闲块
- 管理空闲块
- 管理储存数据分为元数据和储存数据
- 元数据:文件名,所有者,大小,路径
- 损毁之后会导致数据无法读取
- 储存数据:纯文本文件数据,,,
- 元数据:文件名,所有者,大小,路径
-
逻辑管理
- 储存的数据比较分散
- 读取和读入的时候需要根据位置来合成离散数据
-
EXT4
-
块1
-
超块
-
描述数据结构,块组
-
GDT
-
文件系统
-
空间块
- 管理空闲块
- 位置状态
- 管理空闲块
-
index bit(两个)
- 管理元数据块
- 状态
- 状态位0空
- 状态位1满
- 状态
- 管理数据块
- 管理元数据块
-
inode(节点)组成的数组
- 储存元数据
- 单个inode(结构体)
- 文件名:,,,,
- 大小。。。
- 创建者。。
- ,,,,
- 单个inode(结构体)
- 储存元数据
-
储存的数据
-
-
块2
-
块3
-
-
-
文件格式
- 文件类型
- 文件的排头
- 格式编码等。。
- 文件数据
- 建立文档系统
- mkdir建立文件夹
- fdisk sdb
- mkfs.ext4 sdb1 建立文档系统
- mount 挂装
- umount反挂装(弹出)
- dmesg 打印系统消息
- dd if=sdb/zero of=dev/sdb count=200(分区)
- |表示上个执行完之后返回值传给|后面的命令
第二节复习
- 文件格式
- 文件解析
- hexdump -C -n 16 filename
- 文件解析
- 挂载的原理
- 挂载了之后就是把U盘的根目录覆盖到系统中的某一个路径
- 打开被覆盖的文件的时候就是打开U盘的根目录
- 挂载了之后就是把U盘的根目录覆盖到系统中的某一个路径
- apt命令
- apt search
- apt install
中断处理
-
概念
- cpu正常运行时,事件引起cpu中断正在运行的程序
-
中断处理函数
- cpu在收到中断之后会运行中断处理函数
-
中断源
- 产生中断的地方
-
中断向量
- 用来形成中断服务的的首地址
-
中断向量表
- 放在寄存器中的中断源地址
-
cpu
- 中断控制器
- 级联一个外部设备中断器
- 中断控制器
-
查看设备的中断号
- cat /proc/interupts
-
cpu的时钟中断
- cpu在执行的过程中检查进程的运行时间会自己产生一个时钟中断
内存
-
磁盘中的应用程序加载到内存的时候会产生的问题
- 地址分配问题
- 安全问题
- 应用程序的驻留问题
-
内存中的地址
-
程序运行的时候需要把虚拟地址映射到物理内存地址
- 操作系统来做这件事
- 把虚拟地址和物理地址分为页来分配
- 映射原理
- 页的大小是一样的
- 页表索引
- P一个比特位,1,表示该虚拟页有物理页
- M位1表示对应的物理内存页被写过
- S位1表示为核内存0表示用户内存
- 前20位来区分有多少页
- 后面的位数来分配页中的地址
- 页表分级
- 目录
- 目录项
- …
- 页面
- 页表项
- 页表
- 分配物理内存
- 目录
-
hexdump -C -n 256 4.bmp
-
语法
- hexdump [选项] [文件名]…
-
hexdump
- Linux下的一个二进制文件查看工具,它可以将二进制文件转换为ASCII、八进制、十进制、十六进制格式进行查看.
-
选项
- -n length 只格式化输入文件的前length个字节。
- -C 输出规范的十六进制和ASCII码。
- -b 单字节八进制显示。
- -c 单字节字符显示。
- -d 双字节十进制显示。
- -o 双字节八进制显示。
- -x 双字节十六进制显示。
- -s 从偏移量开始输出。
- -e 指定格式字符串,格式字符串包含在一对单引号中,格式字符串形如:‘a/b “format1” “format2”’。
-
文件名
-
bmp文件
-
典型的BMP 图像文件由四部分组成:
1 : 位图文件 头数据结构 ,它包含BMP 图像文件的类型、显示内容等信息;
2 : 位图信息数据结构 ,它包含有BMP 图像的宽、高、压缩方法,以及定义颜色等信息;
3: 调色板 ,这个部分是可选的,有些位图需要调色板,有些位图,比如真彩色图(24 位的 BMP )就不需要调色板;
4 : 位图数据 ,这部分的内容根据BMP 位图使用的位数不同而不同,在 24 位图中直接使用 RGB ,而其他的小于 24 位的使用调色板中颜色索引值。
-
-
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g74locJZ-1574509405071)(C:\Users\86176\AppData\Roaming\Typora\typora-user-images\image-20191123115410594.png)]
-
-
Java虚拟机运行时的内存分配
- main函数中
- int i=0;—————数据段
- new xxx————存放在堆里面
- File file= run();————run函数返回一个指针(堆中的)赋值给file
- int i=returnInt()————从寄存器中返回一个值赋值给i;
- 类中的普通函数(无返回值)
- int i=0;————只有调用函数的时候才会有存放在栈中,函数运行结束时清除栈帧
- new xxx———计算是否能放在栈里面,如果不行就放到堆里面,函数结束时清除栈帧,
- 如果存放在堆中的话内存被释放后会产生碎片化内存。整理起来会很麻烦
- 普通函数(int string duuble…)返回普通变量
- return i;————返回一个值到寄存器中,在由寄存器赋值给返回的位置(寄存器的速度比内存快)
- 普通函数,返回一个对象
- return file;———存放在堆里面,返回时返回一个指针(堆的地址),并且会保留存在堆中的位置
- main函数中
-
serialze
-
class bmp_header { char[2] magic_nu;//两个字节 int len; byte[4] reserved; ....... }
-
把一个文件的编码按照一定的格式封装起来;————————————序列化,
-
在主函数中解析文件的时候直接把整个类的对象传进来‘然后按照一定的格式去解析文件
-
-
文件的储存格式分大端和小端
- 根据文件的格式来判断是大端还是小端
- 区别
- 大端:小的在高地址,大的在低地址,——power ARM
- 小端:小的在低地址,大的在高地址,———x86…
- 文件会在编码中给出自己是大端还是小端;