概述

image-20240702224531198

信息的表示和处理

浮点数

BG

image-20240628002814940

image-20240628002830814

image-20240628002854006

IEEE

image-20240628002940522

image-20240628003037704

image-20240628003205567

image-20240628003604607

image-20240628003738042

image-20240628003850523

image-20240628004039980

TODO为什么。。。

image-20240628004109379

image-20240628004127673

示例与性质

image-20240628004419912

image-20240628004606462

image-20240628004644488

image-20240628004709127

TODO这几张图非常值得细看

image-20240628004748518

舍入、加法、乘法

image-20240628004826845

舍入

image-20240628004920214

image-20240628004956444

image-20240702230246859

乘法

image-20240628005030397

加法

image-20240628005049221

C语言

image-20240628005122778

整数

位表示

image-20240629153141129

image-20240629153204463

image-20240629153356447

image-20240629153411140

image-20240629153429921

image-20240629153605927

image-20240629153625384

image-20240629153635004

image-20240629153701055

image-20240629153722963

image-20240629153736890

image-20240629153744355

注意指针

位级运算

布尔代数

image-20240629153906940

image-20240629153941254

image-20240629154024724

image-20240629154052292

移位运算

image-20240629154136148

最后一句没看懂,如果是补码表示那确实都是了吧

整型数

表示

image-20240629154220534

image-20240629154229618

image-20240629154235938

image-20240629161141314

image-20240629161217510

转换

image-20240629161314409

image-20240629161333420

image-20240702233325227

image-20240629161447550

image-20240629161509178

image-20240629161602993

image-20240629161612858

image-20240629162956106

image-20240629164841992

扩展和截断

image-20240629161645313

image-20240629161701432

注意默认符号

image-20240629161727622

image-20240629161810378

整数运算

image-20240629162126645

image-20240629162237623

image-20240629162303813

image-20240629162436304

image-20240629162454909

image-20240629162512325

image-20240629162537705

image-20240629162552931

image-20240629162619437

注意向零舍入

image-20240629162827843

image-20240629162839410

image-20240629162900059

内存指针字符串表示

image-20240629164920573

image-20240629164957997

image-20240629165017470

注意一直都是字节编址的

image-20240629165444674

貌似IA32、Sun都是32位的

image-20240629165503459

所以对于小端系统字符串读取就有点意思

image-20240629165939717

程序的机器级表示

基础

image-20240629170051669

image-20240629170351822

8086CPU

image-20240629170440224

结构

image-20240629170510220

image-20240629170520093

寄存器

数据和指针寄存器

image-20240629170604953

image-20240629170637945

image-20240629170722076

image-20240629170732259

image-20240629171138833

image-20240629171202406

image-20240629171245825

标志寄存器

image-20240629171256030

image-20240629171304302

  1. CF

    image-20240629171321061

  2. ZF

    image-20240629171331939

  3. SF

    image-20240629171349228

  4. PF

    image-20240629171403897

  5. OF

    image-20240629171445755

    image-20240629171507896

    image-20240629171527864

    image-20240629171551841

    image-20240629171610688

  6. AF

    image-20240629171636058

段寄存器

image-20240629171727426

指令系统

8086/8088的指令系统包含了六种类型,其中数据传送指令14条,算术运算指令20条,逻辑运算指令13条,串操作指令10条,控制转移指令28条,处理器控制指令12条。

寻址方式

image-20240629171907296

存储器寻址花样比较多

image-20240629171931179

IA32处理器体系结构

基本结构

image-20240629172043968

image-20240629172051621

寄存器

image-20240629172644379

基本寄存器

image-20240629172702238

image-20240629172710920

image-20240629172721939

就是启动那会儿的对吧

image-20240629172911651

image-20240629172942789

保护模式就是启动完了开启映射了

image-20240629173003354

image-20240629173027302

状态就是反应状态,控制就是可以用来控制CPU

image-20240629173100198

注意标红的就行,注意奇偶标志的范围。跟8086差不多。

系统寄存器*

image-20240629173220305

值得注意调试的也在!还有任务寄存器,应该就是进程虚拟地址之类的相关的了吧

浮点单元FPU*

image-20240629173255252

内存管理*

TODO,这部分我打算之后再复习一下OS

实地址模式

image-20240629173320431

保护模式

image-20240629173356263

image-20240629173420997

指令执行周期

image-20240629173654565

image-20240629173713560

程序如何运行

image-20240629173744806

image-20240629173801306

image-20240629173820041

image-20240629173837010

image-20240629173849453

计算机如何启动

image-20240629173914760

汇编语言

发展历程*

image-20240629174031407

image-20240629174038941

image-20240629174051144

image-20240629174105278

image-20240629174113473

image-20240629174122908

image-20240629174131584

image-20240629174138746

概述

image-20240629175818512

image-20240629180520973

image-20240629180540476

image-20240629180923392

image-20240629180931787

汇编基础

寄存器

image-20240629181016885

image-20240629181028511

image-20240629181042536

操作数和数据传送

image-20240629181108519

image-20240629181116760

image-20240629181135761

image-20240629181150927

image-20240629181213241

image-20240629181223042

不愧是CISC

image-20240629181238528

image-20240629181246277

image-20240629181256555

image-20240629181312739

image-20240629181320748

image-20240629181443984

寻址

image-20240629181459835

image-20240629181515327

image-20240629181523184

比如说数组元素访问,a[2],其中Rb就是a的基址,Ri就是这个2,S就是sizeof(a[0])。D可能就是具体这个a[2]的某个字节了。

栈操作

image-20240629181752917

image-20240629181808216

算术和逻辑运算

image-20240629182416903

我靠,注意这个leaq还可以作为这种计算算术表达式的操作,6666

image-20240629182430734

image-20240629182438714

image-20240629182606816

怎么感觉有点沙比

image-20240629182850116

66666

比较和跳转

image-20240629182942737

布尔指令

image-20240629183049780

image-20240629183112219

这个牛逼

image-20240629183127524

image-20240629183143024

image-20240629183154740

image-20240629183202322

image-20240629183229936

比较指令

image-20240629183256285

image-20240629183304590

跳转指令

image-20240629183327424

image-20240629183333183

image-20240629183343729

image-20240629183353963

image-20240629183401113

Linux汇编程序

典中典

image-20240629174244456

image-20240629174525821

TODO 这里没懂

image-20240629174539249

image-20240629174609163

image-20240629174631990

image-20240629174649526

控制

image-20240629183513168

流程控制:条件码

image-20240629183547473

就是标志寄存器呗

image-20240629183619040

image-20240629183723813

image-20240629183731735

注意这个访问条件码,新东西

image-20240629183812043

感觉他这说得好谜语,总之意思大概就是根据条件码的值然后设置寄存器的值,比如说:

1
2
cmp al, 0x05  ; 比较 AL 寄存器的值和立即数5
sete bl ; 如果 AL 等于 5,则将 BL 寄存器设置为1,否则设置为0

image-20240629183940888

条件分支

image-20240629184007086

(SF^OF)就是说除了 负数^溢出 这种情况,也即只有11和00的情况会被考虑,后者是普通情况,前者只有正数-负数这种情况会出现,而此时必定是大于。同时ZF代表排除==的情况。

然后,SF=1,OF=0表示的是相减负数,SF=0,OF=1表示的是负溢出,此时必定为负数-正数,所以必是小于。

而对于无符号数,只有在结果为负数,也即小于的情况会溢出,所以只需判断CF标志

image-20240629184027469

image-20240629184044655

image-20240629184100233

image-20240629184106808

image-20240629184137328

确实

image-20240629184150880

相当于是两个分支都算一遍,最后再用这个条件传送指令决定哪个是哪个

image-20240629184305948

确实。。。

循环结构的实现

do-while

image-20240629184327058

image-20240629184338809

while

跳到中间

image-20240629184352822

GCC的 -Og 选项是一种优化级别,旨在提供编译速度和运行时性能之间的平衡。这个选项从GCC 4.7版本开始引入,目的是在不牺牲太多编译速度的情况下,优化生成的代码以提高程序的运行效率。

  • 优化级别-Og 通常提供比 -O0(没有优化)更高的优化级别,但低于 -O1-O2-O3。它专注于那些不太耗时且能够带来明显性能提升的优化。
  • 调试友好-Og 选项生成的代码旨在保持与源代码的可读性和对应性,使得调试过程更加容易。这与 -O0 类似,但 -Og 仍然会应用一些优化,以提高程序的运行性能。

image-20240629184417054

image-20240629184439472

guarded-do

image-20240629184549604

就是说又转化了一层

感觉像是在第一次进去的时候少了一次goto

image-20240629184748001

for

image-20240629184807369

for-while

image-20240629184816225

image-20240629184825669

for-dowhile

image-20240629184839514

Switch语句

image-20240629184909493

总结到位

image-20240629184944779

6666

image-20240629185053919

image-20240629185106744

image-20240629185523195

image-20240629185552179

注意这个fall-through的处理

甚至还是在switch case里才初始化的w,也确实不是每个case都得初始化

image-20240629185636197

过程

image-20240629214313618

栈结构

image-20240629214417784

这个内存管理应该指的是栈上不是堆上。。

image-20240629214456115

image-20240629214610483

image-20240629214713468

调用约定

传递控制

image-20240629215705403

传递数据

x86-64架构中常见的几个用于函数参数传递的寄存器:

  • **RDI**:通常用作第一个整数或指针类型的函数参数。
  • **RSI**:用作第二个整数或指针类型的函数参数。
  • **RDX**:用作第三个整数或指针类型的函数参数。
  • **RCX**:用作第四个整数或指针类型的函数参数。
  • R8 和 **R9**:在需要更多参数的情况下,从这些寄存器开始。

image-20240629215823440

所以多的参数是由后往前推的,返回地址最后推。

image-20240629221044803

管理局部数据

image-20240629215949003

image-20240629220044988

image-20240629220241130

就是说callee的参数其实理论上是叫放在caller的栈帧的

image-20240629220343050

image-20240629220619265

image-20240629220700065

image-20240629220710873

image-20240629221510150

我去,简答题

寄存器保存约定

在x86-64位架构中,callee-saved registers通常包括:

  • RBX,r12,r13,r14
  • RSP(栈指针,如果被修改)
  • RBP(基指针,如果被用作帧指针)

caller-save寄存器:

  • RAX:用于存储函数的返回值。
  • rdi/rsi/rdx/rcx/r8/r9:参数
  • R10,R11:被调用过程可修改

image-20240629221605026

递归

image-20240629222028179

image-20240629222108223

数据

image-20240629222321520

image-20240630000257041

数组

image-20240629222455645

64位系统是吧

image-20240629222601321

image-20240629222634282

image-20240629222659076

image-20240629222709361

image-20240629223847665

对,相当于A3是一个指向3*int的指针,然后A4其实就跟A2是一个道理,相当于*(A4[0])为int。

image-20240629224333393

image-20240629224451182

image-20240629230258371

image-20240629230315624

image-20240629230451483

image-20240629230513156

image-20240629230657214

image-20240629230713454

image-20240629230809676

image-20240629230821364

结构体

image-20240629230917379

image-20240629232052538

image-20240629232120725

image-20240629233035806

image-20240629233050110

image-20240629233145636

注意c后面还得7B的padding

image-20240629233228570

image-20240629233258201

浮点数*

高级主题

image-20240629233620950

内存布局

image-20240629233704820

image-20240629233751563

image-20240629233818527

巨长的data段。。

缓冲区溢出

安全隐患

image-20240629233905182

image-20240629233915558

image-20240629233936070

image-20240629234000472

image-20240629234014638

image-20240629234042302

image-20240629234049319

image-20240629234104831

image-20240629234131782

image-20240629234145352

攻击

image-20240629234207160

image-20240629234217727

image-20240629235604349

image-20240629235622372

防范

image-20240629234300252

image-20240629234315480

image-20240629235225142

image-20240629235253787

image-20240629235349536

image-20240629235358006

感觉看起来主要还是检查ra

联合union

image-20240629235753374

image-20240629235804300

image-20240629235935481

image-20240630000000489

image-20240630000034088

image-20240630000125056

image-20240630000140734

image-20240630000152893

处理器体系结构

指令集体系结构

概述

image-20240630000445224

image-20240630000517112

image-20240630000724760

image-20240630001151603

image-20240630001300168

image-20240630001344591

image-20240630001504382

image-20240630001603829

Y86-64

image-20240630000411251

image-20240630000619748

image-20240630001645731

image-20240630001715603

指令操作码包含8位,低4位指示具体操作类型fn

image-20240630001810469

image-20240630001918709

image-20240630001933825

image-20240630002240880

注意这个无寄存器含义

image-20240630002341294

image-20240630002425220

image-20240630002511971

image-20240630002629778

image-20240630002653765

image-20240630002707921

image-20240630002744417

image-20240630002803889

image-20240630002838792

image-20240630002922874

image-20240630002953146

image-20240630003015562

image-20240630003033119

image-20240630003132644

image-20240630003226956

image-20240630003308339

image-20240630003345142

image-20240630003412147

逻辑设计

image-20240630005121767

概述

image-20240630003633436

image-20240630003651801

image-20240630003711963

image-20240630003725861

image-20240630003831380

运算

image-20240630003914161

image-20240630003929456

image-20240630003954287

image-20240630004016749

image-20240630004029661

image-20240630004052308

image-20240630004139622

image-20240630004207913

存储

image-20240630004812398

image-20240630004839398

image-20240630003711963

image-20240630004934849

image-20240630004949715

image-20240630005016582

顺序执行处理器

回顾

image-20240630005231234

image-20240630005304559

image-20240630005333867

image-20240630005350153

SEQ实现

概述

image-20240630005446870

image-20240630005523225

指令具体步骤

image-20240630005548958

image-20240630010421000

image-20240630005620242

image-20240630005657734

译码会解析寄存器含义了

image-20240630005817597

M是指令。

取指阶段会对指令进行解读,看出rA、rB、imm什么的都是指令的啥部位,同时会更新PC

译码阶段会读取寄存器值

image-20240630005830578

image-20240630005908039

image-20240630005931093

image-20240630010005681

image-20240630010017237

注意这个执行,很有意思,设为0xF比直接中断好

image-20240630010102762

image-20240630010135763

image-20240630010157513

image-20240630010231380

image-20240630010243854

image-20240630010307773

image-20240630010325132

硬件逻辑

image-20240630010555172

image-20240630010611643

image-20240630010632517

image-20240630010644321

image-20240630010655931

image-20240630010708660

image-20240630010723802

image-20240630010741891

image-20240630010757282

image-20240630010813278

image-20240630010826316

image-20240630010840550

image-20240630010851970

image-20240630010908920

流水线基础

基本设计

image-20240630011348702

image-20240630011431579

image-20240630011513826

image-20240630011538449

image-20240630011613462

冒险

image-20240630011631666

image-20240630011652103

image-20240630011743540

image-20240630011757158

image-20240630011827695

image-20240630011845172

image-20240630011904991

image-20240630011934056

冒险处理

image-20240630013307359

数据冒险

暂停

image-20240630012139978

image-20240630012255568

image-20240630012324420

数据转发

image-20240630012416757

image-20240630012502683

image-20240630012549684

image-20240630012612209

加载使用冒险

image-20240630012627079

image-20240630012655123

image-20240630012719752

控制冒险

image-20240630012743913

image-20240630012853884

image-20240630012916659

image-20240630012931439

image-20240630012948209

控制组合

image-20240630013014298

image-20240630013111622

image-20240630013125796

image-20240630013138985

image-20240630013152159

image-20240630013208512

性能评估

CPI:执行每条指令所需的平均时钟周期数

image-20240704174855401

注意这个算式,因为流水线执行,近似认为1个cycle一条指令

数据冒险可以用暂停和数据转发实现(想想就知道),加载使用必须插1个气泡,控制冒险插2个,ret插3个

image-20240630012743913

image-20240630012916659

image-20240704175143438

优化程序性能

image-20240630133748010

综述

image-20240630133811094

image-20240630133856073

编译器优化

image-20240630134011707

image-20240630134040373

image-20240630134109151

image-20240630135959526

各种优化方法

image-20240630134138846

image-20240630134156618

一般都是转为指针访问

image-20240630134519002

image-20240630134556944

image-20240630134615112

image-20240630134710745

image-20240630134734845

image-20240630134748924

image-20240630134923171

image-20240630134944225

66666

image-20240630135352615

示例

image-20240630135509167

image-20240630135759205

基础优化

image-20240630140204862

指令级并行

image-20240630140352288

image-20240630140409146

image-20240630140448474

image-20240630225409553

image-20240630225438683

image-20240630225456483

image-20240630225508254

image-20240630225614641

image-20240630225642406

image-20240630225658504

image-20240630225719047

image-20240630225728826

image-20240630225745030

image-20240630225817123

image-20240630225836771

image-20240630225848400

image-20240630225902072

image-20240630230021815

image-20240630230036198

image-20240630230051794

image-20240630230418357

image-20240630230428557

image-20240630230501629

image-20240630230541510

image-20240630230647983

image-20240630230710718

image-20240630230919375

存储器层次结构

存储器层级结构与局部性

概述

image-20240630231448071

image-20240630231736879

image-20240630232656362

image-20240630232337513

image-20240630232414904

image-20240630232820913

image-20240630233029450

image-20240630233112434

存储器结构

image-20240630233214840

image-20240630233608614

image-20240630233709252

image-20240630233801245

image-20240630233955535

image-20240630234008062

image-20240630234225579

image-20240630234250107

image-20240630234314688

image-20240630234429142

image-20240630234442022

image-20240630234458920

读写操作

image-20240630234532013

image-20240630234546448

image-20240630234558321

image-20240630234726167

image-20240630234739157

image-20240630234754773

image-20240630234801631

image-20240630234808895

image-20240630234817762

image-20240630234839700

image-20240630234851304

磁盘

结构

image-20240630234915634

image-20240630234933851

image-20240630235117792

容量

磁盘容量的计算方法 容量 = 每个扇区可记录的字节数 x 扇区总数

image-20240630235225773

image-20240630235439929

image-20240630235448405

image-20240630235540406

image-20240630235551978

时间

磁盘访问的平均读取时间 访问时间 = 寻道时间 + 平均旋转延迟 + 数据传输时间

平均旋转延迟就是假设每次转半圈,也即1/2 * (1/RPM)*60 秒

数据传输时间就是,转一圈时间 / 每圈扇区数,其中每圈扇区数 = 平均扇区数 / 磁道数

image-20240630235722678

image-20240630235628333

image-20240630235702316

image-20240630235758288

调度算法

image-20240701000025738

image-20240701000038474

image-20240701000141180

image-20240701000216168

image-20240701000226791

image-20240701000240550

image-20240701000259526

与CPU交互

image-20240701000327650

image-20240701000344179

image-20240701000358729

image-20240701000412445

其他

image-20240701000505024

image-20240701000515106

image-20240701000609925

局部性

image-20240701000620354

image-20240701000633149

image-20240701000648470

image-20240701000658527

image-20240701000717439

image-20240701000759240

image-20240701000959815

image-20240701001026637

66666说得很本质

image-20240701001130245

高速缓冲器Cache

高速缓存存储器组织结构和操作

image-20240701001304028

image-20240701001315744

image-20240701001331218

image-20240701001417754

image-20240701001648953

image-20240701001737776

image-20240701001751156

image-20240701001830506

image-20240701001932525

image-20240701001954052

image-20240701002012687

image-20240701002043426

image-20240701002106379

image-20240701002201179

image-20240701002247066

image-20240701002257639

image-20240701002929917

image-20240701002946176

image-20240701003014200

image-20240701003031669

image-20240701003213303

image-20240701003250061

image-20240701003307383

image-20240701003401049

image-20240701003422937

高速缓存对程序性能的影响

不命中率

这个不命中率的计算:

image-20240705122255695

image-20240705123753331

那就是说一个块可以放B/4个int,然后每隔B/4个int就会出现冲突不命中,这个时候就要加载进去就是1/B/4

存储器山

image-20240701003543629

image-20240701003601477

重新排列提高空间局部性

image-20240701003627431

image-20240701003638009

image-20240701105851119

image-20240701110000652

image-20240701110048277

6666

不过这样的话,如果放宽到整个,那A依然还是不怎么那个的吧

image-20240701110200830

所以感觉还是这个最好

使用块提高时间局部性

image-20240701110519231

image-20240701110718021

image-20240701110732339

image-20240701110812570

image-20240701110825808

image-20240701110837443

image-20240701111903105

image-20240701111914613

确实,养成好习惯

image-20240705205842958

链接

总结

image-20240704211635823

image-20240704211737812

image-20240704211953231

image-20240704212021758

image-20240704213240297

image-20240704213511788

重定位

image-20240704213719440

image-20240704213738517

image-20240704214226162

概述

image-20240701112241696

image-20240701112305467

image-20240701112315389

image-20240701112349299

image-20240701112433533

image-20240701112656526

image-20240701113135807

image-20240701113206887

image-20240701113246732

image-20240701113604991

目标文件及格式

image-20240701113633547

image-20240701115555150

image-20240701115608457

image-20240701115925301

image-20240701120329045

image-20240701120411699

步骤

符号解析

image-20240701173414489

image-20240701173551499

image-20240701173621134

image-20240701173806738

image-20240701174036766

在默认情况下,gcc 使用一个叫做 “common” 的机制来处理未初始化的全局变量和静态变量。这种机制允许多个编译单元(例如多个源文件)共享同一个未初始化的全局变量或静态变量。然而,这可能导致一些不可预见的行为,尤其是在多线程环境中。

使用 -fno-common 选项可以关闭这种默认行为,强制 gcc 为每个使用未初始化全局变量或静态变量的编译单元创建一个唯一的符号。这样做可以避免潜在的共享问题,但可能会增加程序的内存使用量。

image-20240701175729290

image-20240701180215212

重定位

image-20240701180353769

image-20240701180448296

image-20240701180614927

image-20240701180648979

image-20240701180725265

image-20240701180734185

image-20240701180908786

image-20240701181256913

image-20240701181312762

打包

image-20240701181428456

静态链接

image-20240701181559394

image-20240701181653520

image-20240701181702426

image-20240701181713380

image-20240701181721497

image-20240701181817409

动态链接

image-20240701181902374

image-20240701181951703

image-20240701182256860

库打桩机制

异常控制流

异常和进程

异常控制流

image-20240701183024791

image-20240701183101895

异常

概述

image-20240701183120279

image-20240701183213271

分类

image-20240701183224377

image-20240701183317047

image-20240701183408486

image-20240701183508635

image-20240701183529030

举例

image-20240701183538986

image-20240701183614572

image-20240701183628668

image-20240701183636280

进程

image-20240701183655575

image-20240701183708454

image-20240701183717705

image-20240701183729258

image-20240701183738316

image-20240701183748785

image-20240701183806132

image-20240701183837685

image-20240701183852388

进程控制

image-20240701183942673

image-20240701184010877

image-20240701184035892

image-20240701184055783

image-20240701184104258

image-20240701184125859

image-20240701184139058

image-20240701184236414

image-20240701184244012

image-20240701184441815

image-20240701184453139

image-20240701184508224

image-20240701184519568

image-20240701184529392

image-20240701184536701

image-20240701184554813

image-20240701184603458

image-20240701184612098

image-20240701184619563

image-20240701184633673

image-20240701184655814

image-20240701184703717

image-20240701184718272

image-20240701184727503

image-20240701184735380

image-20240701184745282

image-20240701184756389

信号与非本地跳转

image-20240701185121530

Shells

image-20240701185158635

image-20240701185247526

信号

image-20240701185344198

image-20240701185357427

image-20240701203244422

image-20240701203359433

image-20240701203526794

image-20240701203558046

image-20240701203629240

image-20240701203651652

image-20240701203711313

image-20240701203727977

image-20240701204830000

image-20240701204909119

image-20240701204945220

image-20240701204956451

image-20240701205006962

image-20240701205025116

image-20240701205101889

image-20240701205627208

非本地跳转

image-20240701205710019

image-20240701205739557

image-20240701205820601

6666

image-20240701205918314

虚拟内存

基本概念

地址空间

image-20240701210602068

image-20240701210616879

image-20240701210720176

image-20240701210736379

image-20240701210818329

image-20240701211017636

虚拟内存作用

缓存

image-20240701211208304

碎片化

image-20240701211505551

image-20240701211525884

image-20240701211550731

image-20240701211603952

image-20240701211647612

image-20240701211710372

image-20240701211722090

内存管理

image-20240701211830620

image-20240701211848944

image-20240701211936967

内存保护

image-20240701212003103

地址翻译

image-20240701212321094

image-20240701212337020

image-20240701212359103

image-20240701212450773

image-20240701212634781

image-20240701212644887

image-20240701212707265

image-20240701212727989

image-20240701212746777

image-20240701212758718

image-20240701212819032

image-20240701212905986

image-20240701213408370

image-20240701213419824

系统举例

内存映射

image-20240701213652719

image-20240701213913835

动态内存分配

基本概念

image-20240701215250961

image-20240701215411425

image-20240701215532824

image-20240701215734067

image-20240701215825849

image-20240701220116450

image-20240701220126617

image-20240701220137656

image-20240701220258050

image-20240701220311488

image-20240701220336591

image-20240701220429050

image-20240701220527191

image-20240701220632256

image-20240701220652325

image-20240701220705254

image-20240701221126769

image-20240701221218263

image-20240701221209603

image-20240701221245255

image-20240701221413712

image-20240701221445932

高级概念

显式空闲链表

image-20240701222744422

image-20240701222857308

image-20240701222930510

image-20240701222951641

image-20240701223023701

image-20240701223217289

分离空闲链表

image-20240701223303514

image-20240701223540733

image-20240701223550670

垃圾收集

image-20240701223835382

image-20240701223920204

image-20240701223940709

image-20240701224013235

image-20240701224117241

image-20240701224214330

内存相关风险

image-20240701224252768

系统级IO

Unix I/O

image-20240701224616595

image-20240701224705416

image-20240701224728445

image-20240701224842783

image-20240701224905732

image-20240701224923019

image-20240701224935827

image-20240701225212610

image-20240701225224047

image-20240701225243365

image-20240701225253867

image-20240701225309429

RIO包

image-20240701225444810

image-20240701225457477

image-20240701225509309

image-20240701225525914

读取文件元数据,共享和重定位

image-20240701225638863

image-20240701230745789

image-20240701231003886

image-20240701231028158

image-20240701231100947

image-20240701231131628

image-20240701231217074

标准IO

image-20240701231258600

image-20240701231309548

image-20240701231332860

image-20240701231344798

image-20240701231424516

666

结束语

image-20240701231457387

image-20240701231506057

image-20240701231515701