抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

slab分配器

slab分配器slab分配器的两个功能: 1 减少内部碎片: 小结构占用一个page不划算 一般名为kmalloc-xxx, e.g. kmalloc-4096, 这些是通用型slab 2 作为高速缓存,存储内核中经常被分配并释放的对象 Jeff Bonwick 发现对内核中普通对象进行初始化所需的时间超过了对其进行分配和释放所需的时间。因此他的结论是不应该将内存释放回一个全局的内...

execv中地址地址映射流程分析

1 execv函数地址映射流程分析1.1 execv如何填充新进程的页表execv()中会调用bprm_mm_init函数准备一个linux_binprm结构体,该结构体用于描述新进程的各种信息,最后由search_binary_handler找到对应文件格式的处理程序加载执行load_binary。 其中bprm_mm_init会执行如下流程: 123456789101112bprm_mm...

Docker底层原理

Docker底层原理Ref Docker使用linux内核的一些特性来实现其一些功能 NamespacesDocker使用命名空间(Namespaces)来隔离工作区,一个隔离的工作区就称为一个容器。当启动一个容器时docker就会为该容器设置一系列namespaces。 docker使用如下的命名空间: The pid namespace: 进程隔离 The net namespace:...

进程退出和销毁过程分析

进程退出和销毁过程分析结束一个进程的生命可以分为两个步骤:进程退出和进程销毁。进程退出主要是释放进程的资源,使进程称为僵死(TASK_ZOMBIE)状态;进程销毁主要是通过父进程,释放僵死进程的各种信息 当前进程被设为TASK_ZOMBIE僵死状态后会向其父进程发生SIGCHLD信号,父进程收到SIGCHLD信号后父进程会销毁僵死状态的子进程。 父进程通过调用wait()或waitpid()...

execv的执行过程

execv执行过程可执行程序的表示elf文件格式Linux下标准的可执行文件格式是ELF(Executable and Linking Format),是一种对象文件的格式,用于定义不同类型的对象文件(Object files)中都放了什么东西、以及都以什么样的格式去放这些东西。 但是linux也支持其他不同的可执行程序格式, 各个可执行程序的执行方式不尽相同, 因此linux内核每种被注册...

使用systemtap实现进程的跟踪

使用systemtap实现进程的跟踪systemtap安装systemtap安装分为两个部分,一个是安装systemtap本身;另一个是安装对应的内核信息包(Kernel Information Packages),否则systemtap将无法深入内核探测。 以下以在centos中安装为例。 安装systemtap 使用对应的包管理工具安装,如centos中yum install syst...

如何向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进程调度机制...

使用qemu启动基于open risc的虚拟机

使用qemu启动虚拟机安装qemu可能需要的依赖 1autoconf automake autotools-dev curl libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev git 下载q...

IO多路复用select、poll、epoll介绍

IO多路复用在高并发环境(如网络服务器)中同时处理多个请求的能力就显得尤为重要。很多人可能第一印象就会想到多线程,但是多线程需要进行很多的上下文切换,连接很多时上下文切换的代价就很高。因此采用单线程,但是单线程如何处理并发请求呢? 得益于DMA,多数据到来时直接内存访问,不会丢失数据,因此可以有后序内容 以写一个网络服务器为例。每个网络连接在都是以文件描述符(以下简称fd)的形式存在 sel...

linux文件系统

文件系统原理为了高效组织、管理和使用磁盘上的数据,需要独立的文件系统。 文件系统的组成通常磁盘上的数据是要与内存交互的(内存映射),而内存一个页的大小是4KB,所以磁盘一般按照4KB进行划分。一个划分就称为一个block。 一个文件本质上是一些字节的集合,这些字节就是文件的 user data,同时引出以下概念 meta data,文件本身数据外的控制信息,如访问权限、大小、创建时间等 可...