首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

linux机制

参考: 浅谈 Linux零拷贝机制 TCP TCPTIME_WAIT有两个作用: 防止前一个TCP连接残留数据(在序列号恰好正确情况下)进入后续TCP连接中 防止TCP挥手过程发出去最后一个...ACK报文丢弃,此时需要重传该ACK报文 fase sharing:字节对齐原理 Linux 网络队列:IP栈报文提交会直接到QDisc队列,QDisc可以使用一定策略来管控流量 BQL通过自动调节到...Linux实现了大量QDisc来满足各个QDisc对应报文队列和行为。该接口允许QDisc可以在没有IP栈和NIC驱动修改前提下实现队列管理。...TCP rtt和rto TCP拥塞避免算法,目前主流Linux默认拥塞避免算法为cubic,可以使用ss -i命令查看。...可以看到reno算法在发生拥塞避免时不会将cwnd变为1,这样提高了传输效率,快速重传和快速恢复机制也有利于更快探测到拥塞。 ?

2.6K40

Linux分页机制之分页机制演变--Linux内存管理(七)

1 页式管理 1.1 分段机制存在问题 分段,是指将程序所需要内存空间大小虚拟空间,通过映射机制映射到某个物理地址空间(映射操作由硬件完成)。...分段映射机制解决了之前操作系统存在两个问题: 地址空间没有隔离 程序运行地址不确定 不过分段方法存在一个严重问题:内存使用效率低。...但是Linux并没有采用这种机制 正如前面所述,通过设置页目录项Page Size标志启用扩展分页功能。在这种情况下,分页单元把32位线性地址分成两个字段: Directory:最高10位。...若这个标志为0,只有当CPL小于3(这意味着对于Linux而言,处理器处于内核态)时才能对页寻址;若该标志为1,则总能对页寻址。...如果置为1,页目录项指的是4MB页面,请看后面的扩展分页。 第9~11位由操作系统专用,Linux也没有做特殊之用。 ?

1.9K20
您找到你想要的搜索结果了吗?
是的
没有找到

Linux保护机制

RELRO(RELocation Read Only) 在Linux中有两种RELRO模式:Partial RELRO 和 Full RELRO。Linux中Partical RELRO默认开启。...; 整个GOT表映射为只读。...,可以找到JMP ESP指令跳板直接调用) 替换EIP一部分(找到没有随机化模块然后使用利息泄漏确定EIP位置,再算出模块基地址,最后算出要跳函数地址) NOP喷射(DEP没开情况下,创建一大块...这样就使得进程地址空间被大量注入代码所占据。然后结合其他漏洞攻击技术控制程序流,使得程序执行到堆上,最终将导致shellcode执行。...统slide code(滑板指令)一般是NOP指令,譬如0x0C(0x0C0C代表x86指令是OR AL 0x0C),0x0D等等,不影响程序执行。)

5.2K00

Linux分页机制之分页机制实现详解--Linux内存管理(八)

1 linux分页机制 1.1 四级分页机制 前面我们提到Linux内核仅使用了较少分段机制,但是却对分页机制依赖性很强,其使用一种适合32位和64位结构通用分页模型,该模型使用四级分页机制,即...1.2 不同架构分页机制 对于不同体系结构,Linux采用四级页表目录大小有所不同:对于i386而言,仅采用二级页表,即页上层目录和页中层目录长度为0;对于启用PAEi386,采用了三级页表...Linux 页全局目录对应80x86 页目录指针表(PDPT),取消了页上级目录,页中间目录对应80x86页目录,Linux页表对应80x86页表。...1.3 为什么linux热衷:分页>分段 那么,为什么Linux是如此地热衷使用分页技术而对分段机制表现得那么地冷淡呢,因为Linux进程处理很大程度上依赖于分页。...这就允许存放在某个页框中一个页,然后保存到磁盘上,以后重新装入这同一页时又被装在不同页框中。这就是虚拟内存机制基本要素。 每一个进程有它自己页全局目录和自己页表集。

3.3K41

Linux缓存机制bufferscached

缓存机制Linux引入了buffers和 cached机制,buffers与cached都是内存操作,用来保存系统曾经打开过文件以及文件元数据,这样当操作系统需要读取某些文件时,首先在buffers...为了方便查找文件,linux引入目录项(dentry)描述目录与文件关系树,Linux为每一个目录建立一个目录项,也为每个文件建立一个目录项。...在Linux系统中数据可分为两大类,数据和元数据,数据泛指普通文件中实际数据,元数据是用来描述一个文件特征系统数据。...根据Linux虚拟内存管理机制,这种行为是正常。要理解为什么缓存会变得如此之高,以及为什么这不是一个问题,就必须了解I/O在Linux上是如何工作。...从Linux缓存机制来说,buffers和cached都是系统可用内存,通常情况下看到bufferes和cached占用内存多,这是一个正常现象,它不是一个问题,所以在看到物理内存快要耗尽时,不要惊慌,

4.7K10

linux epoll机制详解

linux 没有实现epoll事件驱动机制之前,我们一般选择用select或者poll等IO多路复用方法来实现并发服务程序。在linux内核中,有了一种替换它机制,就是epoll。...epoll IO多路复用模型实现机制 由于epoll实现机制与select/poll机制完全不同,上面所说 select缺点在epoll上不复存在。...epoll设计和实现与select完全不同。epoll通过在Linux内核中申请一个简易文件系统(文件系统一般用什么数据结构实现?B+树)。...epoll实现机制 当某一进程调用epoll_create方法时,Linux内核会创建一个eventpoll结构体,这个结构体中有两个成员与epoll使用方式密切相关。...在telnet终端敲入任何字符敲入Enter后,会在测试终端显示敲入字符。 总结 以上就是本文关于linux epoll机制详解全部内容,希望对大家有所帮助。

3.8K34

Linux Namespace机制简介

最近Docker技术越来越受到关注,作为Docker中很重要一项技术,Namespace也就经常在Docker简介里面看到。 在这里总结一下它内部机制。也解决一下自己原来一些疑惑。...LinuxNamespasce Linux Namespaces是一种轻量级虚拟化形式。操作系统在内存,CPU上,已经使用了虚拟化技术,让每个进程都认为是自己独占了内存和CPU。...另外,要进入一个已知namespace还需要一个标识。不然,进入哪个Namespace呢。 /proc/[pid]/ns 这个时候,Linux一切皆文件设计就体现出了它优势。...参考 Linux内核namespace机制分析 Namespaces in operation, part 1: namespaces overview Docker基础技术:Linux Namespace...(上) Docker基础技术:Linux Namespace(下)

2K10

Linux OOM机制分析

OOM分析 oom_killer(out of memory killer)是Linux内核一种内存管理机制,在系统可用内存较少情况下,内核为保证系统还能够继续运行下去,会选择杀掉一些进程释放掉一些内存...通常oom_killer触发流程是:进程A想要分配物理内存(通常是当进程真正去读写一块内核已经“分配”给它内存)->触发缺页异常->内核去分配物理内存->物理内存不够了,触发OOM。...一句话说明oom_killer功能: 当系统物理内存不足时,oom_killer遍历当前所有进程,根据进程内存使用情况进行打分,然后从中选择一个分数最高进程,杀之取内存。...,或者有一些进程正在结束中,那退出本次oom处理,等待其它进程结束,防止不必要进程kill动作*/ goto out; /* 找了一圈,没有找到任何一个进程可以被杀死(全都是背景深厚进程...totalpages) totalpages = 1; /* 获取进程rss(用户空间文件映射和匿名页占用物理内存页数)、页表和swap中使用内存空间情况 */ points

8.1K93

深入理解 Linux RCU 机制

请前往 Tiga on Tech 查看原文以及更多有趣技术文章。RCU(Read-Copy Update),是 Linux 中比较重要一种同步机制。...顾名思义就是“读,拷贝更新”,再直白点是“随意读,但更新数据时候,需要先复制一份副本,在副本上完成修改,再一次性地替换旧数据”。这是 Linux 内核实现一种针对“读多写少”共享数据同步机制。...不同于其他同步机制,它允许多个读者同时访问共享数据,而且读者性能不会受影响(“随意读”),读者与写者之间也不需要同步机制(但需要“复制后再写”),但如果存在多个写者时,在写者把更新后“副本”覆盖到原数据时...RCU 一个典型应用场景是链表,在 Linux kernel 中还专门提供了一个头文件(include/linux/rculist.h),提供了利用 RCU 机制对链表进行增删查改操作接口。...本文将通过一个例子,利用 rculist.h 提供接口对链表进行增删查改操作,来讲述 RCU 原理,以及介绍 Linux kernel 中相关 API(基于 Linux v3.4.0 源码)。

13.3K52

Linuxsignal信号机制

Linux中,要发送一个信号相当容易。程序员需要知道两个信息:要发送哪个信号,将这个信号发送给哪个进程。可以用 man 7 signal 找到一个可以利用信号列表。...SIGQUIT 输入Quit Key时候(CTRL+/)发送给所有Foreground Group进程 SIGSEGV 非法内存访问 SIGSTKFLT Linux专用,数学协处理器栈异常 SIGSTOP...========================================================================= signal学习推荐: 信号(signal)介绍(Linux...中国) http://www.linux-cn.com/html/linux/system/20070505/27605.shtml Linux 信号signal处理函数(CSDN) http://blog.csdn.net.../Sunboy_2050/archive/2010/10/16/5945535.aspx Linux 信号signal处理机制(CSDN) http://blog.csdn.net/Sunboy_2050

3.9K20

Linux中断下半部机制对比

Linux有以下几种下半部机制: 软中断 tasklet workqueue threaded irq  中断服务程序一般都是在中断请求关闭条件下执行,以避免嵌套而使中断控制复杂化。...因此,Linux内核目标就是尽可能快处理完中断请求,尽其所能把更多处理向后推迟。...中断处理tasklet(小任务)机制   小任务是指对要推迟执行函数进行组织一种机制。   ...中断处理工作队列机制   工作队列(work queue)是另外一种将工作推后执行形式,它和前面讨论tasklet有所不同。...其实我们只需要实现这个函数下半部函数就好了,内部机制也可以不用我们去理解,只用知道单独使用一个内核线程去管理这个中断

16410

Linux内核进程负载均衡机制

概述 在多核系统中,为了更好利用多CPU并行能力,进程调度器可以将进程负载尽可能平均到各个CPU上。...再具体实现中,如何选择将进程迁移到目标CPU,除了考虑各个CPU负载平衡,还需要将Cache利用纳入权衡因素。同时,对于进程A唤醒进程B这个模型,还做了特殊处理。...从分层视角分析,下图是调度域实际组织方式,每层都有per-cpu数组保存每个CPU对应调度域和调度组,它们是在初始化时已经提前分配内存。...值得注意是 每个CPU对应调度域数据结构都包含了有效内容,比如说SMT层中,CPU0和CPU1对应不同调度域数据结构,内容是一模一样。...,每个层级调度间隔不是固定,而是临时计算出来,他在一个可通过proc接口配置最小值和最大值之间。

12.1K220

linux poll机制《Rice linux 学习笔记》

上一篇文章写到中断机制,采用了等待队列方式实现了按键中断。但是你会发现,应用程序在读取按键值时,当没有按键按下,则一直处于睡眠态。无法继续往下执行。...被挂起进程进入睡眠状态,被从调度器运行队列移走,直到等待条件被满足。...poll机制解析:其中poll()函数和select()函数功能同等。...参数说明: fds:是一个struct pollfd结构类型数组,用于存放需要检测其状态文件描述符集; nfds:用于标记数组fds中结构体元素总数量; timeout:是poll函数调用阻塞时间...代码实现: 基本是在上一篇文章《中断机制代码实现中修改一些内容。 驱动代码:增加poll方法。

1.1K10

Linux内核MMC里轮询机制

从这篇文章你能学到如何使用MMC框架里轮询机制做探卡检测,十分简单。 1 前言 最近遇到客户提一个问题,大概意思是他们SDIO Wi-Fi在卸载Wi-Fi驱动后再加载就检测不到Wi-Fi设备了。...#define MMC_CAP_NEEDS_POLL (1 << 5) /* Needs polling for card-detection */ 2 如何使用MMC里轮询机制做探卡检测?...方法二:通过其他手段设置host->caps |= MMC_CAP_NEEDS_POLL 3 MMC里轮询机制剖析 3.1 在dts设置broken-cd字段,代码在哪里解析?...,如果设置了MMC_CAP_NEEDS_POLL,也就是轮询机制,就会每隔HZ(这是个宏)时间执行一次host->detect,也就是mmc_rescan。...号主:一枚机械专业本科生,经历了转行,从外包逆袭到芯片原厂Linux驱动开发工程师,深入操作系统世界,贯彻终身学习、终身成长理念。

1.9K10

浅析linux内核中idr机制

大家好,又见面了,我是全栈君 idr在linux内核中指就是整数ID管理机制,从本质上来说,这就是一种将整数ID号和特定指针关联在一起机制。...这个机制最早是在2003年2月加入内核,当时是作为POSIX定时器一个补丁。现在,在内核很多地方都可以找到idr身影。 idr机制适用在那些需要把某个整数和特定指针关联在一起地方。...遇到这种清况,我们就可以采用idr机制,该机制内部采用radix树实现,可以很方便地将整数和指针关联起来,并且具有很高搜索效率。...(1)获得idr 要在代码中使用idr,首先要包括。...这些函数都定义在中 下面,我们通过分析I2C协议核心代码,来看一看idr机制实际应用: <linux-2.6.23/drivers/i2c/

1.7K20
领券