自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

哈尼的博客

通俗易懂说网络

  • 博客(353)
  • 收藏
  • 关注

原创 TCP/IP协议二十二:HTTPS/SSL协议详解(2)HTTPS三次握手及其详解

TCP/IP协议二十二:HTTPS/SSL协议详解(2)HTTPS三次握手及其详解

2022-06-21 15:11:17 2202 1

原创 TCP/IP协议二十一:HTTPS/SSL协议详解(1)加密原理

TCP/IP协议二十一:HTTPS/SSL协议详解(1)加密原理

2022-06-21 14:56:51 1523

原创 TCP/IP协议二十:HTTP协议详解(2)HTTP Cookie说明

HTTP Cookie说明

2022-06-20 15:30:34 711

原创 控制平面和数据平面[也称为转发平面]

控制平面和数据平面

2022-04-29 17:41:05 3966

原创 深入理解操作系统(29)第十章:虚拟存储器(6)垃圾收集器+C程序中常见的与内存有关的错误(包括:访问非法内存/读写未初始化的指针/越界或数组缓冲区溢出/指针优先级操作的问题/传值和传指针/野指针)

深入理解操作系统(29)第十章:虚拟存储器(6)C程序中常见的与内存有关的错误(包括:访问非法内存/读写未初始化的指针/越界或数组缓冲区溢出/指针优先级操作的问题/传值和传指针/野指针)1. 垃圾收集器的基本知识(略)2. C程序中常见的与内存有关的错误2.1 间接引用坏指针(访问非法内存,段错误)2.2 读未初始化的存储器(读写未初始化的指针)2.3 允许栈缓冲区溢出(数组缓冲区溢出)2.4 假设指针和它们指向的对象都是相同大小的2.5 造成错位错误(越界或者缓冲区溢出)2.6 引用指针,而不是它所指向的

2022-02-06 22:17:59 1197 2

原创 深入理解操作系统(28)第十章:虚拟存储器(5)动态内存分配(堆/malloc,free,calloc,sbrk/吞吐率/交换空间/内外部碎片/隐式,显式空闲链表/放置策略/带边界标记的合并/分离存储

深入理解操作系统(28)第十章:虚拟存储器(4)动态内存分配(堆/malloc,free,calloc,sbrk/吞吐率/交换空间/内外部碎片/隐式,显式空闲链表/放置策略/带边界标记的合并/分离存储和适配/伙伴系统)1. 堆1.1 linux下,堆是一个请求二进制零的区域1.2 显示和隐式释放2. malloc 和 free2.1 malloc2.2 calloc realloc sbrk free3. 为什么要使用动态内存分配4. 分配器的要求和目标4.1 分配器要求4.2 两个目标:最大化吞吐率和存储

2022-01-26 10:42:50 690

原创 深入理解操作系统(27)第十章:虚拟存储器(4)存储器映射(两种映射对象/交换空间/共享和私有对象/写时拷贝COW/fork过程/execve过程/mmap)

深入理解操作系统(27)第十章:虚拟存储器(4)存储器映射(两种映射对象/交换空间/共享和私有对象/写时拷贝COW/fork过程/execve过程/mmap)1. 存储器映射1.1 存储器映射1.1.1 存储器映射-定义1.1.2 映射的两种对象类型1.1.3 交换空间1.2 再看共享对象1.2.1 存储器映射的历史1.2.2 进程共享对象和私有对象1.2.3 写时拷贝(copy-on-write)1.3 再看fork函数1.4 再看execve函数1.5 使用mmap函数的用户级内存映射1. 存储器映射

2022-01-20 20:14:59 1381

原创 深入理解操作系统(26)第十章:虚拟存储器(3)案例研究:Pentium/Linux内存系统(Pentium存储器系统,地址翻译/linux 虚拟存储器区域,缺页异常处理)

深入理解操作系统(26)第十章:虚拟存储器(3)案例研究:Pentium/Linux内存系统(Pentium存储器系统,地址翻译/linux 虚拟存储器区域,缺页异常处理)1. Pentium 存储器系统1.1 Pentium 存储器系统的重要部分组成1.2 Pentium 地址翻译1.2.1 Pentium 页表1.2.2 Pentium 页表翻译1.1.3 Pentium TLB翻译2. linux 虚拟存储器系统2.1 linux 虚拟存储器区域2.1.1 一个linux进程虚拟存储器(图)2.2 l

2022-01-20 20:13:14 960

原创 深入理解操作系统(25)第十章:虚拟存储器(2)虚拟内存作为内存管理的工具+保护工具+地址翻译(虚拟内存的优点/段错误定义/PTBR/页面命中和缺页/TLB和TLB命中/多级页表/例子:端到端的地址翻

深入理解操作系统(25)第十章:虚拟存储器(2)虚拟内存作为内存管理的工具+保护工具+地址翻译(虚拟内存的优点/段错误定义/PTBR/页面命中和缺页/TLB和TLB命中/多级页表/例子:端到端的地址翻译)1. 虚拟内存作为内存管理的工具1.1 简化链接1.2 简化共享1.3 简化内存分配1.4 简化加载(存储器映射 mmap系统调用)2. 虚拟内存作为内存保护的工具2.1 保护机制2.1 段错误 定义3. 地址翻译3.1 地址翻译定义及例子说明3.1.1 地址翻译定义3.1.2 使用页表的地址翻译3.1.3

2022-01-18 19:44:45 1372

原创 深入理解操作系统(24)第十章:虚拟存储器(1)物理和虚拟寻址+地址空间+虚拟内存作为缓存的工具(地址翻译/线性地址空间/物理,虚拟页/页帧/DRAM缓存/页表/页命中/缺页/交换,页面调度

深入理解操作系统(24)第十章:虚拟存储器(1)物理和虚拟寻址+地址空间+虚拟内存作为缓存的工具(地址翻译/线性地址空间/物理,虚拟页/页帧/DRAM缓存/页表/页命中/缺页/交换,页面调度/分配页面)1. 前沿1.1 虚拟存储器(VM)定义1.2 虚拟存储器的三个重要的能力1.3 虚拟存储器自动地工作,不需要干预1.4 理解虚拟存储器的重要性1.4.1 理解虚拟存储器的三个原因1.4.2 本章从两个角度来讨论虚拟存储器1.5 参考:虚拟地址空间2. 物理和虚拟寻址2.1 物理主存就是一个大数组2.2 物理

2022-01-14 17:49:13 472

原创 深入理解操作系统(23)第九章:测量程序执行时间(记录时间流逝的两种基本机制/时间尺度(微观和宏观)/计时器中断/间隔时间/time计时/gettimeofday)

深入理解操作系统(23)第九章:测量程序执行时间(记录时间流逝的两种基本机制/时间尺度(微观和宏观)/计时器中断/间隔时间/time计时/gettimeofday)1. 前沿1.1 记录时间流逝的两种基本机制1.2 没有专业的性能测量工具2. 计算机系统上的时间流2.1 时间尺度2.1.1 两种不同的时间尺度(微观+宏观)2.1.2 解释:人感觉机器同时执行任务2.1.3 计算机系统事件的时间尺度2.2 进程调度和计时器中断2.2.1 外部计时器(间隔时间 1-10ms)2.2.2 例子说明(150ms的操

2022-01-12 17:46:31 1058

原创 深入理解操作系统(22)第八章:异常控制流(3)信号(kill/alarm/信号的默认行为/signal/sigaction/程序对多个信号的处理机制/信号集/sigprocmask/strace工具

深入理解操作系统(22)第八章:异常控制流(3)信号(kill/alarm/信号的默认行为/signal/sigaction/程序对多个信号的处理机制/信号集/sigprocmask/非本地跳转seqjmp,longjmp/strace工具)0. 前沿-linux系统上的常用信号1. 信号术语2. 发送信号2.1 getpgrp setpgid2.2 用程序发送信号2.3 从键盘发送信号2.4 用kill 和 alarm 函数发送信号2.4.1 kill及代码例子2.4.2 alarm及代码例子3. 接收信

2022-01-11 17:45:24 554

原创 深入理解操作系统(21)第八章:异常控制流(2)系统调用和错误处理+进程控制(400个系统调用/errno/exit参数和返回值说明/fork/execve/waitpid/用户栈的组织结构)

深入理解操作系统(21)第八章:异常控制流(2)系统调用和错误处理+进程控制(400个系统调用/errno/exit参数和返回值说明/fork/execve/waitpid/用户栈的组织结构)1. 系统调用和错误处理1.1 目前,linux提供了大约400个系统调用1.2 包装函数+errno检查2. 进程控制2.1 获取进程ID2.2 创建进程 fork2.2.1 fork返回值2.2.2 fork父子进程的异同2.2.3 例子1:简单fork例子说明:2.2.4 fork 详细说明2.2.5 例子2:多

2022-01-08 18:04:47 534

原创 深入理解操作系统(20)第八章:异常控制流(1)异常+进程(控制转移/控制流/ECF/异常表,号,类型/中断/陷阱/故障/终止/上下文切换/逻辑控制流/并发/多任务/时间片/地址空间/用户和内核模式/

深入理解操作系统(20)第八章:异常控制流(1)异常+进程(控制转移/控制流/ECF/异常表,号,类型/中断/陷阱/故障/终止/上下文切换/逻辑控制流/并发/多任务/时间片/地址空间/用户和内核模式/高速缓存污染)1. 前沿1.1 控制转移和控制流1.2 ECF 异常控制流1.3 理解ECF很重要1.4 本章内容2. 异常2.1 异常定义2.1.1 异常2.1.2 异常表2.2 异常处理2.2.1 异常号2.2.2 异常和过程调用的区别;2.3 异常的类型2.3.1 中断2.3.2 陷阱(系统调用)2.3.

2022-01-06 20:04:09 790

原创 深入理解操作系统(19)第七章:链接(3)加载可执行目标文件+动态链接共享库(main开始前的操作/加载器的工作过程/共享库背景/PIC/廷迟绑定)

深入理解操作系统(19)第七章:链接(3)加载可执行目标文件+动态链接共享库(a.out执行过程/加载/main开始前的操作/加载器的工作过程/共享库背景/PIC)1. 加载可执行目标文件1.1 可执行目标文件a.out执行过程1.1 加载1.2 进程运行时存储器映像(虚拟地址空间)1.3 main 开始前的操作1.4 加载器的工作过程2. 动态链接共享库2.1 共享库背景:2.1.1 静态库的缺点1:版本更新麻烦2.1.2 静态库的缺点2:内存空间浪费2.2 共享库2.3 共享库的"共享"的两个不同之处2

2022-01-04 21:04:18 1696

原创 深入理解操作系统(18)第七章:链接(2)符号解析+重定位+可执行目标文件(强弱符合/多个同名全局变量规则/静态库背景/libc.a和printf.o/链接器解析符号/重定位步骤,表目,类型/段头表)

深入理解操作系统(18)第七章:链接(2)符号解析+重定位+可执行目标文件(强符号弱符合/多个同名全局变量的规则/静态库背景,demo/libc.a和printf.o/链接器解析符号步骤/重定位的两个步骤/重定位表目,类型/段头表)1. 符号解析1.1 符号解析定义1.1.1 本地符号解析:1.1.2 全局符号解析:1.2 链接器如何解析多重定义的全局符号1.2.1 强符号和弱符合1.2.2 同名全局变量的三个规则!!!(重要)1.2.3 同名全局变量的三个规则例子说明1.3 与静态库连接1.3.1 静态库

2021-12-30 20:21:01 1274

原创 深入理解操作系统(17)第七章:链接(1)链接+目标文件+符号表(链接执行时机/编译器驱动程序/ld/链接器的两个任务/字节块/目标文件三种形式/COFF/readelf/COMMON/symtab)

链接

2021-12-29 17:57:04 730

原创 深入理解操作系统(16)第六章:存储器层次结构(2)高速缓存存储器+对程序性能的影响(包括:L1/L2高速缓存历史/缓存写:直写和写回/暂无L4级缓存/缓存命中率/存储器山/高速缓存友好的代码/)

深入理解操作系统(16)第六章:存储器层次结构(2)高速缓存存储器+对程序性能的影响(包括:L1/L2高速缓存历史/缓存写:直写和写回/暂无L4级缓存/缓存命中率/存储器山/高速缓存友好的代码/)1. 高速缓存存储器1.1 通用的高速缓存存储器组织结构1.1.1 L1/L2高速缓存由来1.1.2 通用的高速缓存存储器结构1.2 直接映射高速缓存1.3 组相联高速缓存1.4 全相联高速缓存1.5 有关写的问题1.5.1 高速缓读1.5.2 高速缓存写(直写和写回)1.6 指令高速缓存和统一的高速缓存1.6.1

2021-12-23 20:17:45 970

原创 深入理解操作系统(15)第六章:存储器层次结构(1)存储技术+局部性+层次结构(包括:存储器系统/RAM,ROM,SRAM,DRAM,闪存flash/磁盘/(时间和空间)局部性/缓存命中)

深入理解操作系统(15)第六章:存储器层次结构(1)存储技术+局部性+层次结构(包括:存储器系统/RAM,ROM,SRAM,DRAM,闪存flash/磁盘/(时间和空间)局部性/缓存命中)1. 前沿1.1 简单的计算机系统模型1.2 存储器系统1.3 局部性原理1.4 不同存储结构的访问周期1.5 基本而持久的思想1.6 本章研究对象:1.6.1 扩展:RAM ROM SRAM DRAM 闪存flash2. 存储技术2.1 随机访问存储器2.1.1 静态RAM2.1.2 动态RAM2.1.3 常规DRAM2

2021-12-15 15:58:32 1635

原创 深入理解操作系统(14)第五章:优化程序性能(2)优化程序性能(包括:消除不必要的内存引用/ICU,EU/分支预测/投机执行/降低循环开销:循环展开/转换到指针/寄存器溢出/性能提高技术/gprof

深入理解操作系统(14)第五章:优化程序性能(2)优化程序性能(包括:消除不必要的内存引用/ICU,EU/分支预测/投机执行/降低循环开销:循环展开/转换到指针/寄存器溢出/性能提高技术/gprof)1. 消除不必要的内存引用2. 理解现代处理器2.1 整体操作2.1.1 ICU 和 EU2.1.2 分支预测2.1.3 投机执行2.2 功能单元的性能2.3 更近的观察处理器操作2.3.1 将指令翻译成操作2.3.2 执行单元的操作处理2.3.3 有无限资源的操作调度2.3.4 资源约束下的操作调度3. 降低

2021-12-10 18:01:08 1013

原创 TFTP协议(1)TFTP协议介绍(包括:TFTP的五种报文/报文字段扩展/TFTP的流量控制,差错控制/UDP sendto,recvfrom接口)

TFTP

2021-12-09 11:52:48 14945 2

原创 深入理解操作系统(13)第五章:优化程序性能(1)表示程序性能+优化措施(包括:存储器別名使用/程序序性能表示:每元素的周期数(CPE)/降低循环低效率:(循环中)代码移动/循环中减少过程调用)

深入理解操作系统(13)第五章:优化程序性能(1)表示程序性能+优化措施(包括:程序示例/降低循环低效率/减少过程调用)1. 前沿1.1 高效程序的两类活动1.2 开发和优化过程中的关键因素1.3 本章目标-提高代码性能1.3.1 妨碍优化因素1.3.2 两种编译技术: 与机器无关 和 与机器有关1.3.3 代码剖析程序(profilers)2. 优化编译器的能力和局限性2.1 编译器优化程序受限制的几个因素2.2 例子说明2.2.1 例子2.2.2 妨碍优化因素一:存储器別名使用2.2.3 妨碍优化因素二

2021-12-03 17:07:31 1455

原创 深入理解操作系统(12)第四章:处理器体系结构(4)Y86-64的流水线实现(包括:PIPE-处理器/预测下一个PC/分支预测/流水线冒险/暂停,转发避免冒险/PPE硬件结构及实现/CPI)

深入理解操作系统(12)第四章:处理器体系结构(4)Y86-64的流水线实现(包括:PIPE-处理器/预测下一个PC/分支预测/流水线冒险/暂停,转发避免冒险/PPE硬件结构及实现/CPI)1. Y86-64的流水线实现1.1 插入流水线寄存器1.1.1 PIPE-抽象试图1.1.2 例子说明1.2 对信号进行重新排列和标号1.3 预测下一个PC1.3.1 预测PC的下一个值,来实现每时钟周期都发射一条新指令1.3.2 分支预测1.3.3 分支预测策略1.3.4 带堆栈的返回地址预测1.4 流水线冒险1.4

2021-12-02 14:50:40 1797 2

原创 深入理解操作系统(11)第四章:处理器体系结构(3)流水线的通用原理(包括:吞吐量/流水线的操作/流水线的局限性/流水线的实现)

深入理解操作系统(11)第四章:处理器体系结构(3)Y86流水线通用原理+实现(包括:吞吐/流水线操作,局限性,实现/PIPE-/预测PC/分支预测/流水线冒险/暂停,转发避免冒险/CPI/PPE结构及实现)1. 流水线的通用原理1.1 计算流水线1.1.1 非流水线化的硬件系统例子1.1.2 三阶段流水线1.2 流水线操作的详细说明1.3 流水线的局限性1.3.1 不一致的划分1.3.2 流水线过深,收益反而下降1.4 带反馈的流水线系统2. Y86-64的流水线实现2.1 插入流水线寄存器2.1.1 P

2021-12-02 14:33:54 1374 1

原创 深入理解操作系统(10)第四章:处理器体系结构(2)Y86-64的顺序实现(包括:SEQ/指令的各阶段操作:取指,解码,执行,访存,回写,更新PC/序列指令/硬件结构/时序/阶段的实现/SEQ+)

深入理解操作系统(10)第四章:处理器体系结构(2)Y86-64的顺序实现(包括:SEQ/指令的各阶段操作:取指/解码/执行/访存/回写/更新PC/序列指令/硬件结构/时序/阶段的实现/SEQ+)1. Y86-64的顺序实现1.1 将处理组织成阶段1.1.1 阶段序列1.1.2 一条指令执行的6个阶段1.1.3 一条指令要进行很多处理(远不止上面6个阶段)1.1.4 Y86指令序列指令1.1.5 subl 指令执行1.1.6 rmmovl 和 mrmovl 处理1.1.7 rmmovl 指令的执行1.1.8

2021-11-30 14:52:06 2772

原创 深入理解操作系统(9)第四章:处理器体系结构(1)Y86指令集+逻辑设计(包括:ISA/存储器/HCL/冒险/CISC,RISC/verilog/逻辑门/组合电路/多路复用器/ALU/(典型)硬件寄存

深入理解操作系统(9)第四章:处理器体系结构(1)前沿+Y86指令集+逻辑设计和HCL(包括:ISA/Y86指令集/存储器/HCL/冒险/CISC,RISC/指令编码/verilog/逻辑门/(字级)组合电路/(字级)多路复用器/四路复用器/ALU/硬件寄存器/典型寄存器文件)1. 前沿1.1 ISA(指令集体系结构)1.1.1 ISA作用1.1.2 ISA模型1.2 本章目标:1.2.1 为什么要了解处理器设计?1.3 Y86指令集1.3.1 什么是Y86指令集1.3.2 Y86指令集特点1.3.3 Y8

2021-11-26 17:37:00 2109

原创 深入理解操作系统(8)第三章:程序的机器级表示(4)struct,union+浮点代码(包括:理解指针/gdb/传值和引用/缓冲区溢出/蠕虫和病毒

深入理解操作系统(8)第三章:程序的机器级表示(4)struct,union+浮点代码(包括:理解指针/gdb/传值和引用/缓冲区溢出/蠕虫和病毒1. 异质的数据结构1.1 struct1.2 union1.2.1 union 应用场景1.3 对齐1.3.1 数据对齐的优点:1.3.2 Linux数据对齐策略2. 在机器级程序中将控制与数据结合起来2.1 理解指针2.1.1 理解指针2.1.2 参数传递(传值和引用)2.2 使用GDB调试器2.3 内存越界引用和缓冲区溢出2.3.1 缓冲区溢出2.3.2 蠕

2021-11-23 17:34:15 573

原创 深入理解操作系统(7)第三章:程序的机器级表示(3)过程+数组分配访问(包括:栈帧/转移控制call,leave,ret/寄存器使用惯例/过程示例/cltq指令)

深入理解操作系统(7)第三章:程序的机器级表示(3)过程+数组分配和访问(包括:过程定义/栈帧/转移控制call,leave,ret/寄存器使用惯例/过程示例汇编/cltq指令1. 过程1.1 过程调用的定义1.2 栈帧结构1.2.1 栈的作用1.2.2 栈帧1.2.3 esp ebp 寄存器1.3 转移控制1.3.1 过程调用和返回的指令:call leave ret1.3.2 call 指令1.3.3 ret 指令1.3.4 leave 指令1.4 寄存器使用惯例1.4.1 惯例:1.4.2 被调用者保

2021-11-19 11:41:28 1357

原创 深入理解操作系统(6)第三章:程序的机器级表示(2)控制(包括:条件码CF,ZF,SF,OF/set指令/判断条件的典型指令/跳转指令jump/直接跳转和间接/循环do-while,while,for

深入理解操作系统(6)第三章:程序的机器级表示(2)控制(包括:条件码CF,ZF,SF,OF/set指令/判断条件的典型指令/跳转指令jump/直接跳转和间接/循环do-while,while,for说明1. 控制1.1 条件码1.1.1 最有用的条件码是:1.1.2 设置条件码的指令(lea不改变条件码)1.1.3 cmp test只设置条件码,不改变寄存器1.2 访问条件码1.2.1 set 指令操作1.2.2 c判断条件的典型指令序列1.2.3 指令的同义名(一条机器指令有多个名字)1.2.4 a-b

2021-11-17 18:03:04 1252

原创 深入理解操作系统(5)第三章:程序的机器级表示(1)intel历史+程序编码+算术和逻辑操作(包括:8086/汇编/摩尔/机器级代码/汇编指令/objdump/汇编指令/反汇编/8个常用寄存器/lea

深入理解操作系统(5)第三章:程序的机器级表示(1)intel历史+程序编码+算术和逻辑操作(包括:8086由来/汇编/摩尔定律/机器级代码/汇编指令特性/objdump/汇编指令/反汇编/8个常用寄存器/操作数的三种类型/lea指令/移位操作sall,shll)1. 前言1.1 现代编译器的优点1.2 理解汇编代码的重要性1.3 编译器的优化1.4 精通细节是理解更深和更基本概念的先决条件2. 历史观点-Intel处理器发展2.1 intel历史(8086由来)2.2 IA32-Intel32位体系结构2

2021-11-13 18:02:40 2821

原创 深入理解操作系统(4)第二章:信息的表示和处理(3)整数运算+浮点数(包括:溢出/模运算/时钟周期/字符编码/补码)

深入理解操作系统(4)第二章:信息的表示和处理(3)整数运算+浮点数(包括:溢出/模运算/时钟周期/字符编码/补码)1. 整数运算1.1 无符号加法1.1.1 两个非负整数的和可能会溢出(算术运算溢出)1.1.2 无符号运算可以被看做一种形式的模运算。1.1.3 例子:1.1.4 阿尔贝群1.2 补码加法1.2.1 负溢出1.3 补码的非1.4 无符号乘法1.5 补码乘法1.6 乘以常数1.7 乘以2的幂1.8 除以2的幂2. 浮点数3. 第二章总结问题:1. 两个正数相加可能会得出一个负数2. 比较

2021-11-09 09:33:37 517

原创 深入理解操作系统(3)第二章:信息的表示和处理(2)整数表示(包括:有符号,无符号的二进制表示/-12345表示/反汇编器/C语言默认有符号/零扩展,符号扩展/截断数字/建议不使用无符号数)

深入理解操作系统(3)第二章:信息的表示和处理(2)整数表示(包括:有符号,无符号的二进制表示/反汇编器/-12345表示/反汇编器/C语言默认有符号/零扩展,符号扩展/截断数字/建议不使用无符号数)1. 整型数据类型大小2. 无符号和二进制补码编码2.1 无符号的二进制表示 B2Uw2.2 有符号的二进制表示 B2Tw2.2.1 有趣的数字(0 -1 最大最小有/无符号数)2.2.2 12345 和 -12345的二进制表示2.2.3 反汇编器3. 有符号数和无符号数之间的转换4. C中的有符号与无符号数

2021-11-06 10:47:25 815

原创 深入理解操作系统(2)第二章:信息的表示和处理(1)信息存储(包括:有符号数和无符号/字节/虛拟地址空间/字/大小端 字节序/字符编码/逻辑运算/位运算/移位运算左移右移)

深入理解操作系统(2)第二章:信息的表示和处理(1)信息存储(包括:有符号数和无符号/字节/虛拟地址空间/字/大小端 字节序/字符编码/逻辑运算/位运算/移位运算左移右移)1. 概述1.1 二进制表示原因1.2 无符号 二进制补码 浮点数2. 信息的存储2.1 基本概念:2.1.1 最小的可寻址的存储器单位-字节2.1.2 虚拟存储器2.1.3 c指针:2.2 十六进制表示法2.2.1 字2.3 数据大小2.4 寻址和字节顺序2.4.1 大小端2.4.2 反汇编器2.4.3 typedef2.4.4 siz

2021-11-04 21:11:38 770

原创 深入理解操作系统(1)第一章:计算机系统漫游(包括:位/比特/系统组成/CPU指令操作/缓存/分层结构/操作系统两个基本功能/并发/上下文/虛拟地址空间)

深入理解操作系统(1)第一章:计算机系统漫游(包括:位/比特/系统组成/CPU指令操作/缓存/分层结构/操作系统两个基本功能/并发/上下文/虛拟地址空间)1. 信息就是位 + 上下文1.1 hello.c1.2 一切都是比特:1.3 上下文:2. 程序被其他程序翻译成不同的格式2.1 hello.c 到 a.out2.2 编译系统的四个阶段:预处理,编译,汇编,链接3. 了解编译系统如何工作大有益处3.1 优化程序性能3.2 理解链接时出现的错误3.3 避免安全漏洞4. 处理器读并解释存储存在存储器中的指令

2021-11-03 10:15:03 649

原创 多线程(19)线程分离/脱离,结合 pthread_detach

多线程(19)线程分离/脱离,结合 pthread_detach 1. 线程的两种状态——可结合、可分离1.1 可结合态(线程的默认属性):1.2 分离态2. 线程分离函数:pthread_detach2.1 pthread_detach 的两种用法:3. 创建分离线程伪代码:4. pthread_attr_XXX 系列api1. 线程的两种状态——可结合、可分离线程分为两种状态:可结合态和分离态;默认情况下,线程被创建成可结合的。1.1 可结合态(线程的默认属性):这种状态下的线程是能够被其他进程

2021-10-27 17:48:53 733

原创 Segmentation fault 段错误, core dump 文件

Segmentation fault 段错误, core dump 文件

2021-10-26 11:02:44 594 1

原创 Linux wc命令及统计文件夹下文件及文件夹个数

wc命令及统计文件夹下文件及文件夹个数1. 统计文件夹下文件及文件夹个数2. wc 命令:2.1 参数:2.2 例子:1. 统计文件夹下文件及文件夹个数统计当前目录下文件的个数(不包括目录)$ ls -l | grep "^-" | wc -l//普通文件以-开头统计当前目录下文件的个数(包括子目录)$ ls -lR| grep "^-" | wc -l查看某目录下文件夹(目录)的个数(包括子目录)$ ls -lR | grep "^d" | wc -l//普通文件夹以d开头2.

2021-09-03 09:33:54 2996

原创 硬盘知识:硬盘结构、盘片、磁道、扇区、柱面、磁头数、寻址模式

硬盘知识:硬盘结构、盘片、磁道、扇区、柱面、磁头数、寻址模式1. 硬盘是啥?1.1 硬盘1.2 硬盘结构2. 盘片 磁头 磁道 柱面 扇区 圆盘2.1 内外圈扇区的大小变化:2.2 例子说明:1.44MB的3.5英寸软盘3. 磁盘容量4. 寻址模式:CHS(也称3D) 和 LBA4.1 CHS(也称3D)4.1.1 chs的缺点1:容量有限4.1.2 chs的缺点2:新的磁盘寻址难4.2 LBA1. 硬盘是啥?1.1 硬盘硬盘最基本的组成部分是由坚硬金属材料制成的涂以磁性介质的盘片,不同容量硬盘的盘片

2021-09-01 16:10:04 4488 2

原创 Linux内核设计与实现(19)第十九章:可移植性

Linux内核设计与实现(19)第十九章:可移植性1. linux移植性非常好2. 字长 位2.1 字长2.2 位2.3 内核编码中字长准则3. 数据类型3.1. 不透明类型3.2. 长度确定的类型3.2.1 内核空间的长度确定的类型3.2.2 用户空间的长度确定的类型3.3 char 类型4. 数据对齐4.1. 通过指针转换类型时, 不要转换长度不一样的类型4.2. 对于数组, 按照基本数据类型进行对齐4.3. 对于联合体, 长度最大的数据对齐就可以了4.4. 对于结构体, 保证结构体中每个元素能够正确对

2021-08-20 15:07:08 198

原创 Linux内核设计与实现(18)第十八章:内核调试

Linux内核设计与实现(18)第十八章:内核调试1. 内核态调试难点1.1 KDB 调试1.2 解决:1.2.1 输出 LOG(printk)1.2.2 oops1.2.3 主动触发 bug1.2.3.1 panic1.2.4 神奇的系统请求键1.2.5 其他:gdb 和 kdb1. 内核态调试难点内核调试的难点在于它不能像用户态程序调试那样打断点,随时暂停查看各个变量的状态。也不能像用户态程序那样崩溃后迅速的重启,恢复初始状态。内核调试的难点大致有以下几个:1.重现bug困难 如果能够重现一

2021-08-20 13:50:13 146

空空如也

空空如也

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

TA关注的人

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