博客
分类
标签
归档
友链
关于
Dark Mode
博客
分类
标签
归档
友链
关于
Dark Mode
Mens et Manus
首页
帮助
示例
社区
档归
源码
Buddy系统的原理及实现
Buddy系统的原理及实现 本质上就是一个多级链表, 然后使用伙伴系统这种特殊的”索引方式”开快速分配和查找所需内存 通过”二分查找”的方式快速找到所需大小的内存空间。对于大内存的分配是比较快的。 基本要素: 多级freelist用于索引: e.g. 有大小为32, 64, 128…的freelist heap空间用于分配, bitmap用于标识是否分配 对齐空间内存布局用于快速删该 ...
2021-01-19
Read More
slab分配器
slab分配器slab分配器的两个功能: 1 减少内部碎片: 小结构占用一个page不划算 一般名为kmalloc-xxx, e.g. kmalloc-4096, 这些是通用型slab 2 作为高速缓存,存储内核中经常被分配并释放的对象 Jeff Bonwick 发现对内核中普通对象进行初始化所需的时间超过了对其进行分配和释放所需的时间。因此他的结论是不应该将内存释放回一个全局的内...
2021-01-18
Read More
execv中地址地址映射流程分析
1 execv函数地址映射流程分析1.1 execv如何填充新进程的页表execv()中会调用bprm_mm_init函数准备一个linux_binprm结构体,该结构体用于描述新进程的各种信息,最后由search_binary_handler找到对应文件格式的处理程序加载执行load_binary。 其中bprm_mm_init会执行如下流程: 123456789101112bprm_mm...
2021-01-18
Read More
进程退出和销毁过程分析
进程退出和销毁过程分析结束一个进程的生命可以分为两个步骤:进程退出和进程销毁。进程退出主要是释放进程的资源,使进程称为僵死(TASK_ZOMBIE)状态;进程销毁主要是通过父进程,释放僵死进程的各种信息 当前进程被设为TASK_ZOMBIE僵死状态后会向其父进程发生SIGCHLD信号,父进程收到SIGCHLD信号后父进程会销毁僵死状态的子进程。 父进程通过调用wait()或waitpid()...
2021-01-15
Read More
execv的执行过程
execv执行过程可执行程序的表示elf文件格式Linux下标准的可执行文件格式是ELF(Executable and Linking Format),是一种对象文件的格式,用于定义不同类型的对象文件(Object files)中都放了什么东西、以及都以什么样的格式去放这些东西。 但是linux也支持其他不同的可执行程序格式, 各个可执行程序的执行方式不尽相同, 因此linux内核每种被注册...
2021-01-14
Read More
使用systemtap实现进程的跟踪
使用systemtap实现进程的跟踪systemtap安装systemtap安装分为两个部分,一个是安装systemtap本身;另一个是安装对应的内核信息包(Kernel Information Packages),否则systemtap将无法深入内核探测。 以下以在centos中安装为例。 安装systemtap 使用对应的包管理工具安装,如centos中yum install syst...
2021-01-13
Read More
如何向linux内核插入新的调度器[todo]
如何向linux内核插入新的调度方法这里演示以下如下向linux内核中插入一个线程的调度器:CASIO(源码) TODO rebuild 注意 现代版本的linux内核(4.18)中调度器的入口不再是./kernel/sched.c,而是在core.c,而调度类分离成rt.c,idle.c,fair.c,stop_task.c,deadline.c,对应5个调度器类 linux进程调度机制...
2020-12-07
Read More
linux文件系统
文件系统原理为了高效组织、管理和使用磁盘上的数据,需要独立的文件系统。 文件系统的组成通常磁盘上的数据是要与内存交互的(内存映射),而内存一个页的大小是4KB,所以磁盘一般按照4KB进行划分。一个划分就称为一个block。 一个文件本质上是一些字节的集合,这些字节就是文件的 user data,同时引出以下概念 meta data,文件本身数据外的控制信息,如访问权限、大小、创建时间等 可...
2020-12-05
Read More
如何配置linux内核
如何配置linux内核linux内核提供许多自定义的选项 因此你可以根据自己喜好定制的编译linux内核。这里以在centos8中编译centos8的内核为例。 准备内核源码 官方文档 centos的内核使用rpm管理,所以在真正获得内核前你还需要使用rpm把内核安装到机器上。可以在https://vault.centos.org/下载对应的内核rpm包(内核源码版本一定要和系统内核版本一...
2020-11-29
Read More
iptables使用
对网络上一些数据包通过表的形式进行限定或修改 三种表 Mangle 一般在操作系统级别操作,这里讨论 filter,过滤器 对进出的数据包进行过滤 nat,网络地址转换 转换目的地址和目的端口,以及源地址源端口,做数据包转发 如修改进入机器数据包的目的地址,使其转发到其他机器 iptables以链的形式组织配置规则, iptables -t <table> -L...
2020-11-23
Read More
Previous
2 / 3
Next