![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
kernel
文章平均质量分 73
马学
这个作者很懒,什么都没留下…
展开
-
标准IO-直接IO-异步IO笔记
标准IO-直接IO-异步IO笔记 1 标准IO通过read,write实现read: 如果数据在内存中,那么直接从内存中读出数据并返回给应用程序。如果不在内存,那么数据会被从磁盘读到也告诉缓存,然后再从页缓存拷贝到用户地址空间。wirte:数据从用户态拷贝到缓存即刻返回,并不会等数据写到磁盘上。优点:1. 使用内核缓冲区,分离用户地址空间和实际物理设备2. 减少磁盘读写次数...原创 2018-07-11 11:35:26 · 1207 阅读 · 0 评论 -
NET Namespace(2)
1 释放网络命名空间内核中对于要释放的网络命名空间,都会通过struct net的cleanup_list成员链入全局释放链表cleanup_list中:加入cleanup_list全局链表后,将net_clean_up工作交给netns_wq工作队列,唤醒worker thread执行释放网络命名空间的操作。其中net_clean_up和netns_wq的定义如下:static DEC...原创 2018-07-12 09:40:45 · 1048 阅读 · 0 评论 -
Pid_namespace分析
1 概述Pid namespace是对进程pid的容器虚拟化,从pid的维度实现容器间的隔离。即在一个容器中只能看到属于该pidns的pid,从而在某种程度上实现了进程间的隔离。在容器中只能看到容器内的pid,但在宿主机上可以看到所有进程的pid,所以从看到的pid号的角度,这是有层级关系的,对应的,pidns在实现上也是有层级关系的,在高层次pidns中可以看到低层次pidns的信息,...原创 2018-07-12 09:40:10 · 3418 阅读 · 0 评论 -
user_namespace分析(1)
1 前言Linux系统的安全体系文件权限管理是通过自主访问机制(Discretionary Access Control,DAC)实现的。自主访问机制指对象(比如程序、文件或进程等)的拥有者可以任意的修改或授予此对象相应的权限。Linux的UGO(User、Ggroup、Other)和ACL(Access Control List,访问控制列表)权限管理方式就是典型的自主访问机制。Lin...原创 2018-07-12 09:39:16 · 1942 阅读 · 0 评论 -
user_namespace分析(2)
4 User_ns实现与验证以上分析的三点都是用户安全管理的基础,user_ns只是结合权能实现了一种局部用户的映射。User_ns的作用简单的说就是一个非特权用户可以创建一个user_ns,然后该用户可以作为该命名空间中的root特权用户,其它的跟在宿主机没有两样。在user_ns中该用户可以创建pid、net_ns等命名空间,并对其有root特权控制属于该命名空间的资源。4.1 ...原创 2018-07-12 09:39:23 · 1929 阅读 · 0 评论 -
Uts_namespace分析
1 简介UTS命名空间是Linux内核Namespace(命名空间)的一个子系统,主要用来完成对容器HOSTNAME和domain的隔离,同时保存内核名称、版本、以及底层体系结构类型等信息。UTS命名空间是扁平化的结构,不同的命名空间之间没有层级关系。Uts命名空间的用来隔离系统的这些信息,使得用户在容器中查看到的信息是当前容器的系统、版本,不同于主机的,内核通过uts_namespac...原创 2018-07-12 09:39:01 · 5332 阅读 · 0 评论 -
kernel capability
原创 2018-07-11 11:27:45 · 330 阅读 · 0 评论 -
内存地址
原创 2018-07-11 11:28:03 · 147 阅读 · 0 评论 -
软件开发
数据结构和算法:http://www.cnblogs.com/skywang12345/p/3603935.html软件优化:http://www.agner.org/optimize/IBM写的一些开发手册,概念讲的很清楚:https://www.ibm.com/developerworks/cn/...原创 2018-07-02 10:22:40 · 163 阅读 · 0 评论 -
mount propagation
原创 2018-07-11 11:34:37 · 923 阅读 · 0 评论 -
mountpoint和文件系统目录树
原创 2018-07-11 11:34:46 · 3493 阅读 · 0 评论 -
linux网络协议栈(1)
原创 2018-07-11 11:36:56 · 137 阅读 · 0 评论 -
user namespace
原创 2018-07-11 11:36:52 · 171 阅读 · 0 评论 -
NET Namespace(1)
1 概述在linux协议栈中引入网络命名空间,是为了支持网络协议栈的多个实例,而这些协议栈的隔离就是通过命名空间来实现的,一个net namespace为进程提供一个完全独立的网络协议栈的视图,包括网络设备接口、ipv4和ipv6协议栈、ip路由表、防火墙规则、sockets等。一个net namespace提供了一份独立的网络环境,就跟独立的系统一样。一个物理设备只能存在于一个net ...原创 2018-07-12 09:40:36 · 4749 阅读 · 0 评论 -
Mnt_namespace分析
1 简介1.1 背景Linux容器场景下实现对进程和其相关的资源的隔离,这些资源同样也包括了进程的文件系统环境。这就要求容器中有一个独立的文件环境,而容器中的进程共享这个文件系统环境,即容器自己的根文件系统环境。所以内核引入了mnt命名空间的概念,来实现文件系统环境的隔离。1.2 概述内核中通过mnt_namespace实现对根文件系统的环境的隔离,不同的mnt_na...原创 2018-07-12 09:40:25 · 3720 阅读 · 0 评论 -
多路复用实现分析
多路复用实现分析select,poll,epoll都是IO多路复用的机制。所谓I/O多路复用机制,就是说通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的,而异步I/O则无需自己负责进行读写,异步I/O的...原创 2018-07-11 11:35:18 · 1341 阅读 · 0 评论 -
Crossbow架构分析
Crossbow架构分析一、crossbow简介crossbow是solaris网络虚拟化的实现,提供了在单个物理网卡上实现多个虚拟网络设备,实现协议栈隔离,虚拟交换与流量控制等功能。主要实现功能有:1. 网卡虚拟化,可以在特定的网卡及系统资源上建立虚拟网卡,虚拟网卡主要包括以下资源:Rx/Tx rings,DMA通道,内核队列及线程,CPU,带宽。其虚拟网卡宣称无性能损耗。2. Qo...原创 2018-07-11 11:35:10 · 396 阅读 · 0 评论 -
lxc网络
lxc网络 1 macvlan方式macvlan方式有三种模式private、bridge、vepa要容器与宿主机间,容器与其他主机间都能正常通信,需要使用bridge的模式,并且主机也需要配置macvlan虚拟设备(参考1.3),使用其他模式,不管配不配置主机,都只能和其他主机通信,不能和宿主机通信。1.1 应用场景 1.2 数据收发方式 1.3 目前验证...原创 2018-07-11 11:34:59 · 2768 阅读 · 0 评论 -
CFQ调度与blkio的权重控制
CFQ I/O调度算法与公平性保证(不涉及cgroup和组调度策略)Cfq调度算法旨在保证所用进程的完全公平性,相同的I/O调度周期内,进程被服务的机会是相同的。CFQ维护了一些列的调度队列cfq_queue,默认为64个,有io需求的进程会绑定到一个cfq_queue,即一个cfq_queue一个时刻只接受一个进程的请求,cfq_queue有一个私有的request红黑树,request红黑树上...原创 2018-07-11 11:47:29 · 3346 阅读 · 0 评论 -
syslog
Syslog1 内核日志基本框架内核日志是通过printk函数实现的,它与用户空间对应的函数printf具有同样的作用。内核创建一个名为_log_buf的Ring Buffer(环型缓冲区)来保存内核中打印的内核日志信息。而用户态可以通过Syslog相关的系统调用或者/proc文件以及/dev/kmsg设备节点来查看_log_buf的信息,这些操作都是通过do_syslog的系统调用接口...原创 2018-07-11 14:52:40 · 5157 阅读 · 1 评论 -
cgroup-blkio子系统分析
1 概述Cgroup中的blkio子系统的主要功能是实现对磁盘i/o带宽的可定制化控制。目前支持的控制策略只要有两种:BLKIO_POLICY_PROP和BLKIO_POLICY_THROTL,即基于权重方式和基于流量方式。权重方式依赖于内核原生的CFQ i/o调度算法,i/o调度算法本身是工作在i/o调度层的,因此在使用上有一定的局限性,即被控制的设备必须使用cfq调度算法;为了弥补这...原创 2018-07-11 15:10:44 · 6521 阅读 · 0 评论 -
Cgroup分析之cpu、cpuacct
1 组调度1.1 进程调度基础操作系统为了协调多个进程的同时运行,最基本的手段就是给进程设定优先级,如果有多个进程处于可执行状态,那么优先级高的进程先被调度执行。Linux内核将进程分为两种级别,普通进程和实时进程,实时进程的优先级高于普通进程,另外他们的调度策略也不同。实时进程的调度1、如果一个进程是实时进程,只要它是可执行状态的,内核就一直让它执行,以尽可能满足它对cpu的...原创 2018-07-11 15:16:10 · 9395 阅读 · 0 评论 -
Cgroup-memory子系统分析(1)
1 概述1.1 应用背景Cgroup的memory子系统,即memory cgroup(本文以下简称memcg),提供了对系统中一组进程的内存行为的管理,从而对整个系统中对内存有不用需求的进程或应用程序区分管理,实现更有效的资源利用和隔离。在实际业务场景中,为了防止一些应用程序对资源的滥用(可能因为应用本身的bug,如内存泄露),导致对同一主机上其他应用造成影响,我们往往希望可...原创 2018-07-11 15:32:17 · 9379 阅读 · 0 评论 -
Cgroup-memory子系统分析(2)
1.1 Oom1.1.1 简介Oom的全称是out-of-memory,是内核在处理系统内存不足而又回收无果的情况下采取的一种措施,内核会经过选择杀死一些进程,以释放一些内存,满足当前内存申请的需求。所以oom是一种系统行为,对应到memcg的oom,其原理和动机跟全局oom是一样的,区别只在于对象的不同,全局oom的对象是整个系统中所有进程,而memcg oom只针对memc...原创 2018-07-11 15:36:38 · 3006 阅读 · 0 评论 -
cgroup-net_cls子系统分析
1 Net_cls1.1 原理net_cls子系统是用来控制进程使用网络资源的,它并不直接控制网络读写,而是给网络包打上一个标记,具体的网络包控制由tc机制来处理。net_cls实现的基本的思想就是将控制组和内核现有的网络包分类和调度的机制相关联。net_cls通过给控制组分配一个类标识符(classid)来指定该控制组的数据包将被分到哪个traffic class(net_...原创 2018-07-11 15:38:12 · 5506 阅读 · 2 评论 -
Cgroup变化分析(2.6.34~3.10)
Cgroup变化分析 1 子系统2.6.34 3.10 说明 Cpuset Cpuset Ns 挂载ns cgroup后,可以在创建新命名空间时自...原创 2018-07-11 15:39:18 · 651 阅读 · 0 评论 -
ipc_namespace
1 IPC概述linux下的进程通信手段基本上是从Unix平台上的进程通信手段继承而来的。而对Unix发展做出重大贡献的两大主力AT&T的贝尔实验室及BSD(加州大学伯克利分校的伯克利软件发布中心)在进程间通信方面的侧重点有所不同。前者对Unix早期的进程间通信手段进行了系统的改进和扩充,形成了“system V IPC”,通信进程局限在单个计算机内;后者则跳过了该限制,形成了基...原创 2018-07-11 15:52:31 · 4444 阅读 · 1 评论 -
user namespace和mount
嗯,关注user namespace,总结来说,如果用user namespace,进行mount时,需要满足1,当前进程(执行mount的进程)对当前mnt ns有sys_admin权限2,当前进程对当前user ns有sys_admin权限3,mount的文件系统支持FS_USERNS_MOUNT或者当前进程对init user ns有sys_admin权限4,mount的block dev(...原创 2018-07-11 11:36:26 · 504 阅读 · 0 评论