Fluid
  • 首页
  • 归档
  • 分类
  • 标签
  • 关于

内存页类型🐟页面回收

参考博客 xiaolin 不同页类型文件页内核缓存的磁盘数据、缓存的文件数据都叫做文件页。回收干净页时直接释放即可;回收脏页时要先讲修改内容写回磁盘对应的文件/数据块,接着才能释放内存 匿名页这部分内存没有实际载体,比如堆、栈数据。这部分内存后续可能还要再次访问,所以不能直接释放内存,它们的回收是通过Linux的SWAP机制。 LRU(Least recently used)算法优先回
2024-09-08
嵌入式-开发

内存分段 🆚 内存分页

参考博客 小林-内存布局 内存碎片🧩内部内存碎片外部内存碎片解决的办法就是内存交换:即把某个程序占用的内存先写到硬盘中,接着释放其占用的内存空间;之后再把信息读回到内存中。不过再读回时占用的内存和之前占用的内存不一样,而是紧邻之前分配过的内存,以期减少外部内存碎片。内存交换空间,从硬盘划分出来,用于内存与硬盘的交换,对应Linux中的Swap分区 内存分段按需分配内存,因此不会有内部碎片;但是
2024-09-07
嵌入式-开发

aarch64-页目录表基地址寄存器

每个异常等级【EL1,EL2,EL3】都有自己的页目录表基地址寄存器:EL0/EL1:有两个寄存器TTBR0,TTBR1;其中当虚拟地址的前几位都是0时,TTBR0所指向的映射表被选中(对应Linux系统的用户空间);当VA的前几位都是1时,TTBR1指向的映射表被选中(对应Linux系统的内核空间)EL2:只有一个TTBR0,只能使用范围:0x0 ~ 0x0000ffff_ffffffffEL3
2024-09-07
嵌入式-架构

Linux - 信号

参考文档 24.2 Standard Signals 深入理解Linux内核-信号 进入用户空间执行用户自定义的信号处理函数时,会创建一个临时的用户空间栈 常见信号SIGKILL:不可被捕获、忽略,取值为9SIGINT:可以被捕获、忽略、阻塞,取值为2,由ctrl+c产生SIGTERM:可以被捕获、忽略、阻塞,kill命令默认发这个信号SIGQUIT):类似SIGINT,由ctrl+\产生S
2024-09-07
操作系统

Linux - 线程资源&模型

参考文章 主线程退出对子线程的影响 线程资源同一进程中的多个线程使用同一份进程地址空间,因此它们的大部分资源是共享的,我们只需要记住一些不被共享的资源即可: 线程ID 一组寄存器 栈 errno(错误码) 信号屏蔽字(block) 调度优先级 线程模型实际上,posix线程和一般的进程不同,在概念上没有主线程和子线程之分(虽然在实际实现上还是有一些区分),如果仔细观察ap
2024-09-07
操作系统

线程分离

2024-09-07
嵌入式-开发

Linux - 文件系统

参考博客 硬链接和软链接 文件系统四个关键概念 文件描述符(File Descriptor): 文件描述符是一个非负整数,用于在程序中引用打开的文件、套接字或其他I/O资源。 每当一个进程打开一个文件、创建一个套接字或进行其他类似的操作时,内核都会为该进程分配一个新的文件描述符。 文件描述符是进程级的,不同的进程可以有各自的文件描述符表,互不影响。 文件描述符表(File Des
2024-09-07
操作系统

内存模型与内存屏障

参考 深度Linux 内存模型现代处理器基本上都是支持多发射的,也就是在一个指令周期内可以同时执行多条指令。但是,处理器的资源就那么多,可能不能同时满足处理这些指令的要求。比如,处理器就只有一个加法器,如果同时有两条指令都需要算加法,那么有一条指令必须等待。如果这时候再下一条指令是读取指令,并且和前两条指令无关,那么这条指令将在前面某条加法指令之前完成。还有一种可能,就是前后指令之间具有相关性
2024-09-06
嵌入式-架构

std - bind

2024-09-05
cpp基础

lambda - 函数闭包 🆚 函数对象

总结 lambda的一种方式,其就是实现函数对象的==语法糖== 且写lambda时就已经显示创建了一个该函数类的实例化对象,即modi就是一个函数对象 函数类重载()运算符的类型就是函数类 lambda扩展为函数类时,其内部的()重载函数默认是const修饰的 那他怎么修改捕获的对象?-> 默认const则不能修改引用方式捕获的外部变量 因为
2024-09-05
cpp基础
123456…13

搜索

Hexo Fluid