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

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


了解详情 >

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,文件本身数据外的控制信息,如访问权限、大小、创建时间等 可...

What Is Https

What is HttpsCryptography Symmetric encryptionThe classic style is: $abc \overset{+3}{\underset{-3}{\longleftrightarrow}} def$.+3 is PSK(pre shared key) But how to let the receiver know what the PS...

如何配置linux内核

如何配置linux内核linux内核提供许多自定义的选项 因此你可以根据自己喜好定制的编译linux内核。这里以在centos8中编译centos8的内核为例。 准备内核源码 官方文档 centos的内核使用rpm管理,所以在真正获得内核前你还需要使用rpm把内核安装到机器上。可以在https://vault.centos.org/下载对应的内核rpm包(内核源码版本一定要和系统内核版本一...