【翻译】 2.6 中的 4K 堆栈 [发布于 2004 年 5 月 12 日,作者:corbet

2023-11-11

传统上,Linux 内核在大多数架构上都使用 8KB 内核堆栈。 该堆栈必须满足系统调用可能产生的任何调用序列,以及可能同时调用的任何(硬或软)中断处理程序的需要。 实际上,在稳定的内核中,堆栈溢出的情况几乎闻所未闻;内核开发人员早已学会避免使用大型自动变量、递归函数和其他会占用大量堆栈空间的东西。

将内核堆栈减少到 4KB 的补丁已经流传了一段时间。 人们普遍认为,向更小的堆栈转换将在某一时刻实现;因此,最近很多人都在努力寻找内核中过度占用堆栈空间的代码路径。 其中一部分工作就是进行大量测试;因此,最近的 -mm 内核甚至不再提供 8KB 堆栈选项。 我们希望,如果有足够多的人试用较小的堆栈并解决了其中的错误,4KB 堆栈就能在不久的将来并入 2.6。

对一些人来说,较小的堆栈是可怕的,因为很难确定内核中所有可能的路径是否都经过了测试。4KB 堆栈也会破坏二进制模块,尤其是 nVidia 驱动程序。 因此,将这一改动推迟到 2.7 版有一定的压力。

人们很可能会问,为什么内核黑客们要把这种改动放到稳定的内核系列中呢? 8KB 堆栈的问题在于它需要 "阶 1 "内存分配:物理内存中连续的两个页面。 当系统运行一段时间后,"阶 1 "分配就很难满足要求了;物理内存可能会变得非常零碎,以至于两个相邻的空闲页面根本不存在。 内核会努力释放页面以满足更大的分配要求;结果可能是系统变得缓慢、痛苦和崩溃。

系统中的每个进程都有自己的内核堆栈,当该进程运行时,只要系统进入内核模式,就会使用内核堆栈。 由于每个进程都需要一个内核堆栈,因此创建一个新进程需要 1 次分配。 因此,即使整个系统并不特别缺乏资源,双页内核堆栈也会限制新进程的创建。 将内核堆栈缩减为单页后,这个问题就迎刃而解了,Linux 系统在任何时候都能轻松处理更多的进程。

Arjan van de Ven 还提出了一个有趣的说法:4KB 的堆栈实际上更安全。 他的理由与 4KB 堆栈补丁的另一个方面有关:它将中断处理移到了一个单独的专用堆栈上。 软件中断也有自己的堆栈。 由于中断处理已从每个进程的内核堆栈中移出,系统调用处理的空间保持不变,而中断的堆栈空间则有所增加。

整合 4KB 堆栈的最终决定尚未做出,似乎还有一些问题需要解决。 不过,如果情况稳定下来,这一相当重大的变化可能会被合并到 2.6 中。

本文索引条目
内核 内核堆栈


(登录后发表评论)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【翻译】 2.6 中的 4K 堆栈 [发布于 2004 年 5 月 12 日,作者:corbet 的相关文章

  • 【翻译】进程间通信是什么?

    从单体架构到微服务的转变需要构成应用程序的不同服务之间的通信 服务实例通常是需要以某种方式相互通信的进程 这就是进程间通信 IPC 有时称为服务间通信 ISC 的作用 人们 往往想到的IPC机制是RESTful APIs 因为这仍然是使用最
  • 【翻译】 用纸质电路增加开源的包容性

    你知道吗 LWN net是一份由订阅者支持的出版物 我们依靠订阅者来维持整个运作 请通过购买订阅来帮助我们 让LWN继续在网上运行 作者 Jonathan Corbet 2018年1月30日 linux conf au 开源软件有一个包容性
  • 沉浸式翻译 安装及使用

    介绍一下最近非常或的沉浸式翻译工具 非常有助于外文阅读 包括网页 pdf等 可以同时显示原文和译文 操作简单 使用起来还是非常友好的 先上链接 介绍 沉浸式翻译 如何使用 沉浸式翻译 1 安装 支持Edge Chrome Firefox和S
  • 【翻译】fancyBox 3中文文档

    fancyBox3 中文文档 译文永久地址 https kangkai124 github io fancybox 说明 本文档仅供参考 更新不及时请查看官方文档 1 介绍 fancyBox是一个JavaScript库 它以优雅的方式展示图
  • 关于Postman无法显示中文的解决方案(翻译)

    在使用Postman时很多人因为界面是纯英文的感到很头疼 会面临不知道什么意思及界面看不懂的情况 于是出现了需要将界面汉化翻译过来的需求 但从实际工作经验来讲 个人还是比较喜欢看英文界面的 可能也是看习惯了导致的吧 本文以两种方式帮助读者理
  • 冰羚中间件 RouDi usage-guide.md翻译

    内容 内容 配置RouDi Configuring RouDi RouDi可以支持读取从一个配置文件中读取mempool config 如果需要支持这个特性 CMake的编译选项中需要使用 DTOML CONFIG on mempool c
  • 【翻译】 如何应对内核警告?

    LWN net需要你 没有订阅者 LWN就根本不存在 请考虑注册订阅 帮助LWN继续出版 作者 Jonathan Corbet 2021年11月18日 内核在内部提供了许多宏 允许代码在出错时产生警告 然而 它并没有提供很多关于警告发出时应
  • 抱抱脸(hugging face)教程-中文翻译-预处理

    预处理 在您可以在模型中使用数据之前 需要将数据处理为模型可接受的格式 模型不理解原始文本 图像或音频 这些输入需要转换成数字并组装成张量 在本教程中 您将 用tokenizer处理文本 用特征提取器对图像或音频数据进行预处理 使用处理器预
  • 【ES实战】Search的滚动查询(Scroll)

    滚动查询 Scroll 虽然搜索请求返回结果是单个 页面 但scroll API 可用于从单个搜索请求中检索大量结果 甚至所有结果 其方式与在传统数据库使用相似 scrolling不是用于实时用户请求 而是用于处理大量数据 例如 为了将一个
  • node调用谷歌翻译Api,实现自动国际化

    原因 项目国际化过程繁琐 每次都需要人工去google翻译 导致工作效率不高 需求 1 减少人工的重复劳动 提高工作效率 2 使用脚本调用谷歌翻译接口自动化翻译 3 free 作为程序员肯定接受不了付费服务 找方法解决限制 前期准备 1 谷
  • 人工智能革命:超级智能之路(上)

    这篇文章翻译于Tim Urban大神的 The AI Revolution 的系列文章 下面让我们一起领略一下Tim Urban大神理解的人工智能革命是怎样的吧 文章目录 遥远的未来 即将到来 超级智能之路 人工智能 我们目前在哪里 一个在
  • 并发编程中需要谨记的规则(翻)

    并发编程中需要谨记的规则 最小化临界区 Amdahl定律和Gustafson定律都将并行算法中的顺序执行的工作视为性能问题的头号敌人 两个执行代码区段中间的时间需要顺序执行 这就是众所周知的临界值 在图1 16的分析Gustafson定律的
  • 【翻译】Attention Is All You Need

    Attention Is All You Need 注意力是你所需要的一切 论文地址 https proceedings neurips cc paper 2017 file 3f5ee243547dee91fbd053c1c4a845aa
  • 【翻译】BItcoin数据结构——UTXO definition-Investopedia

    原文 https www investopedia com terms u utxo asp UTXO意味着什么 UTXO代表比特币交易的未花费的输出 每个比特币交易都以用于平衡分类账的硬币开始 UTXO会不断处理 并负责开始和结束每笔交易
  • JDBC规范——(8)异常

    当访问一个数据源时发生错误或者警告 JDBC 用 SQLException 这个类及其子类来表示并提供相关的异常信息 8 1 SQLException SQLException 由一下几部分组成 1 描述错误的文本信息 可以通过 SQLEx
  • csharp:百度翻译

    参考 http api fanyi baidu com api trans product index http developer baidu com wiki index php title E5 B8 AE E5 8A A9 E6 9
  • 【翻译】软件表现不佳,未来取决于这种情况的改变

    如果一件事不能永远进行下去 它就不会 赫伯 斯坦法则 科技行业的未来会是什么样子 从现在到2030年 我们所有人面临的挑战不再是我们将如何说服世界 或更直接地说 我们的老板或客户 成为碳零 无论我们是否愿意 这都会到来 我们的新问题是 作为
  • 【翻译】Dart和Flutter是什么?

    Dart是在Go之后从谷歌出现的 最近作为Flutter跨平台前端框架背后的语言 其受欢迎程度激增 这对那些对云原生基础设施感兴趣的人来说很重要 因为有一种对 全栈Dart 的推动 Flutter开发者可以使用相同的语言来构建他们应用程序背
  • Intent中addFlags()和SetFlags()的区别和详解

    两个方法的区别是setflag是直接给intent设置新的flag addflag是在已有flag上添加新的flag Public Intent addFlags int flags 增加额外的标志到Intent 或者已经存在的flags值
  • 【翻译】#拥抱行动和心理安全--思考根本原因而非根本人物

    本杰明 富兰克林曾经说过 生命中唯一的两个确定性是死亡和税收 但是 如果他是一名工程师 他可能会在这个名单上加上另一个 即故障 脸书的工程师们无疑会同意最近的故障 似乎是由于运行一个命令 无意中关闭了他们骨干网络的所有连接 不仅关闭了脸书

随机推荐

  • Maven 应用总结(持续更新)

    继承 模块化 模块化 在开发一个项目时 通常会进行模块化拆包 如下 blog parent blog controller blog service blog entity blog util 根据模块的名称可以看出 业务是比较单一的 若是
  • HTML 知识扫盲

    写在前面 HTML 是一门超文本标记语言 不管你听没听说过 HTML 但在网上冲浪的途中你无时不刻都在与它接触 他遍布在每个你看得到的互联网的角落 其实对于笔者而言 我已经断断续续地学习过这门语言 经过时间的磋磨 所剩知识也是寥寥无几 这次
  • autotools automake autoconf libtool 笔记

    autotools automake autoconf libtool 笔记 默认安装路径为 prefix usr local 可以通过 configure prefix
  • c语言 变量 section,#pragma DATA_SECTION的解释

    DSP CMD文件的编写EETOP专业博客 电子工程师自己的家园L gZnWr 1 COFF格式 1 gt 通用目标文件格式 Common Object File Format 是一种流行的二进制可执行文件格式 二进制可执行文件包括库文件
  • Python真的能杀死Excel吗?它能实现哪些Excel功能?

    在大家的印象里 想进入金融行业或者数据岗位 首先需要精通Excel 而且现在招聘条件也是明确表示 要精通Excel等办公软件 后面还会加一句 有Python经验的优先 野村证券副首席数字官马修 汉普森在上周五的伦敦Quant Confere
  • dnspod每步nat123及3322动态域名同类端口映射域名解析软件对比

    首先说明下这三个名词 端口映射 域名解析 动态域名解析 端口映射 80端口映射或自定义端口映射 可以解决80端口被屏蔽 可以在内网使用直接发布网站应用 可以在内网使用实现外网访问内网应用 域名解析 也叫域名解析管理 常用的操作就是登录域名管
  • 【论文复现】—— A New Outlier Removal Strategy Based on Reliability of Correspondence Graph for Fast ....

    目录 一 算法原理 1 论文概述 2 实现流程 3 参考文献 二 代码实现 三 GitHub链接 一 算法原理 1 论文概述 三维激光扫描技术能够为实景测量与重建提供高精度 大范围的点云数据 然而单一来源的点云不够完整 不够精细 因此使用点
  • Spring IOC(四)doCreateBean方法源码分析——创建Bean的过程

    目录 第1步 createBeanInstance 得到实例BeanWrapper 第1 1步 通过工厂方法实例化 先略过 第1 2步 通过默认构造函数实例化 第1 3步 通过有参构造函数实例化 第2步 applyMergedBeanDef
  • 类的私域变量访问方法

    类的私域变量只能在类的内部使用 类的实例对象不能访问 class JustCounter 类声明 secrectCount 0 私有变量 publicCount 0 公开变量 def count self 类方法 self secrectC
  • 关于String的hashcode,以及判断字符串是否相等的解析

    跟着老师的方法验证equals方法的重写 由于误写发现运行结果和预想的不一样 先上代码 package com wuyw oo import java util Objects author wuyw2020 date 2019 10 28
  • 关于Linux下操作(写)excel文件

    网上有很多第三方库可以非常方便的读写excel文件在此不再列举 如果应用场景只是将数据记录成excel格式 只写不读 一种不利用第三方库的做法是 1 正常创建一个文件 后缀为excel格式之一即可 2 sprintf格式化字符串生成列头 比
  • 40张最全计算机网络基础思维导图

    hi 大家好 今天的网络基础思维导图主要是二 三层网络协议 再配合之前的文章 四层以上互联网核心协议 TCP IP协议精华指南pdf发布 非常适合对网络感兴趣的同学 同时也让大家对整个网络架构有一个整体的认识 希望大家喜欢 传输介质简介 以
  • 几种网络通信协议

    应用层 HTTP Hypertext Transfer Protocol 超文本传输协议 显示网页 DNS Domain Name System 域名系统 FTP File Transfer Protocol 文件传出协议 SFTP SSH
  • BAPI_GOODSMVT_CREATE物料凭证创建…

    BAPI GOODSMVT CREATE可以实现物料凭证创建和部分冲销 全部冲销可以使用BAPI GOODSMVT CANCEL CALL FUNCTION BAPI GOODSMVT CREATE EXPORTING GOODSMVT H
  • Caffe中Solver解析

    1 Solver的初始化 shared ptr
  • QT中默认不选中Shadow build设置方法

    在使用qt开发的时候 每次创建工程 都会默认选中shadow build影子构建 作用是把编译生成的文件与源文件放在不同的目录 这样源码目录就相对整洁 但是这也会带来个问题 感觉超级鸡肋 就是经常修改了代码之后点运行 跑的还是修改之前的程序
  • 使用VMware Workstation Player虚拟机安装Linux系统

    下载安装 VMware Workstation Player 首先下载并安装 VMware Workstation Player VMware Workstation是一款非常强大的虚拟机软件 有pro专业版和player免费版 我们个人使
  • Java线程协作的两种方式

    介绍 Java中线程协作的最常见的两种方式 利用Object wait Object notify 和使用Condition 方法一 Object中的wait notify notifyAll方法定义如下 public final nati
  • 基于域名的恶意网站检测

    基于域名的恶意网站检测 0x00 数据来源 0x01 基于网页内容的判别方法 0x02 基于域名数据的判别方法 0x03 参考文献 0x00 数据来源 根据老师给的 300w 域名列表爬到的相应 DNS 响应数据 0x01 基于网页内容的判
  • 【翻译】 2.6 中的 4K 堆栈 [发布于 2004 年 5 月 12 日,作者:corbet

    传统上 Linux 内核在大多数架构上都使用 8KB 内核堆栈 该堆栈必须满足系统调用可能产生的任何调用序列 以及可能同时调用的任何 硬或软 中断处理程序的需要 实际上 在稳定的内核中 堆栈溢出的情况几乎闻所未闻 内核开发人员早已学会避免使