24 小时前 / 路强
↓推荐关注↓ 《linux 系统调用的来龙去脉》分为上下两篇,本文为上篇。 1.前言开始正题前先讲两个生活小案例来引出系统调用的意义。 案例一:图书馆 安居不用架高堂,书中自有黄金屋。娶妻莫恨无良媒,书中自有颜如玉。 图书馆是我喜欢去的一个地方,相信大家也都去过。在图书馆我们可以自由阅读任何书,广泛的汲取各种知识。正是由于所有人都可以自由的阅读任意书籍,所以经常就会出现书籍位置出现错乱,书籍页面出现损坏,甚至还会出现书籍遗失的情况。
26 天前 / reesunhuang
目录 动态链接要解决什么问题? 矛盾:代码段不可写 解决矛盾:增加一层间接性 示例代码 b.c a.c main.c 编译成动态链接库 动态库的依赖关系 动态库的加载过程 动态链接器加载动态库 动态库的加载地址分析 符号重定位 全局符号表 全局偏移表 GOT liba.so 动态库文件的布局 liba.so 动态库的虚拟地址 GOT 表的内部结构 反汇编 liba.so 代码 在上一篇文章中,我们一起学习了 Linux 系统中 GCC 编译器在编译可执行程序时,静态链接过程中是如何进行符号重定位的。 为了完整性,我们这篇文章来一起探索一下:动态链接过程中是如何进行符号重定位的。
40 天前 / HueiFeng
容器的优势传统模式的部署,直接将多个应用运行在物理服务器上,如果其中一个应用占用了大部分资源,可能会导致其他应用的性能下降。 虚拟化部署时代,可以在单个物理服务器的 CPU 上运行多个虚拟机(VM),每个 VM 是一台完整的计算机,在虚拟化硬件之上运行所有组件(包括了操作系统)。因此,可以让不同的应用在 VM 之间安全地隔离运行,更好地利用物理服务器上的资源。 容器与 VM 类似,具有自己的文件系统、CPU、内存、进程空间等,但与 VM 不同的是,容器之间共享操作系统(OS)。 所以,容器被认为是一种轻量级的操作系统层面的虚拟化技术。
51 天前 / 趣编程
作者:罗道文的私房菜 http://luodw.cc/2016/08/13/linux-cache/ 前言 之前在实习时,听了 OOM 的分享之后,就对 Linux 内核内存管理充满兴趣,但是这块知识非常庞大,没有一定积累,不敢写下,担心误人子弟,所以经过一个一段时间的积累,对内核内存有一定了解之后,今天才写下这篇文章记录,分享。 这篇文章主要是分析了单个进程空间的内存布局与分配,是从全局的视角分析下内核对内存的管理; 下面主要从以下方面介绍 Linux 内存管理: 进程的内存申请与分配; 内存耗尽之后 OOM; 申请的内存都在哪? 系统回收内存; 1、进程的内存申请与分配之前文章介...
52 天前 / marketing-upyun
无障碍写文章登录【实操干货】做好这 16 项优化,你的 Linux 操作系统焕然一新又拍云已认证帐号 11 人赞同了该文章大家好,这次跟大家谈谈又拍云的操作系统优化方案。往简单地说,我们使用的 Linux 操作系统主要都是基于 CentOS6/7 的精简和优化。往复杂地说,则是我们有两套系统,业务上使用的定制 Linux 系统和数据中心使用的优化版 Linux 系统。 业务上我们使用裁剪过的定制 Linux 系统,目的是为了更安全、更高效、更加贴近业务需求,方便全国各点进行闪电式部署,但这套系统不具备普适性,所以我们今天暂时不谈它。
67 天前 / 美团技术团队
总第 504 篇 2022 年 第 021 篇 不同的开发语言适合不同的领域,例如 Python 适合做数据分析,C++ 适合做系统的底层开发,假如它们需要用到相同功能的基础组件,组件使用多种语言分别开发的话,不仅增加了开发和维护成本,而且不能确保多种语言间在处理效果上是一致的。本文以美团搜索实际场景下的案例,讲述在 Linux 系统下跨语言调用的实践,即开发一次 C++ 语言的组件,其他语言通过跨语言调用技术调用 C++ 组件。
75 天前 / 浪客书心
Alex 发自 凹非寺 量子位 | 公众号 QbitAI 现在,M1 Mac 可以顺利运行原生 Linux 了。 专为苹果自研芯片打造的 Asahi Linux 项目,Alpha 版本已经释出。 在 Mac 采用英特尔 CPU 的时期,用户已经摸索出通过硬盘分区或者使用 Parallels 等虚拟机在 Mac 上安装 Linux 的方法。 但到了苹果自研的 M1 处理器,一切又得重头开始。 而 Asahi Linux 的目标,就是让苹果 M1 系列 Mac 用户能真正拥抱 Linux。 所以在苹果电脑上装一个原生 Linux 系统,究竟是一种怎样的体验? 一位有 30 万 + 粉丝的 YouTuber 在他的 M1 Mac 上亲测了一下。
78 天前 / Ryan众乐
大厂技术高级前端Node 进阶 点击上方程序员成长指北,关注公众号 回复 1,加入高级 Node 交流群 前言 在翻译完 TypeScript 官方文档后,我用 VuePress 搭建博客,又实现了 GitHub 和 Gitee Pages 的自动部署,但我最终还是决定自己建站,而在建站的过程中,必不可少会用到 Linux 命令,所以此篇写一份基本够用的 Linux 命令,会涵盖博客搭建系列文章用到的各种命令,方便查询和学习使用。 0. Owner、Group、Others、RootLinux 系统是一种多用户系统,它将文件访问者身份分为三种: 文件所有者(Owner)当创建一个用户的时候...
81 天前 / 美团技术团队
总第 499 篇 2022 年 第 016 篇 近几年云原生领域飞速发展,eBPF 技术成为各厂商首选技术,在网络编排、行为观测等领域四处开花。然而收益与风险并存,不久前爆出的 Bvp47 后门正是利用 BPF 技术惊人地在世界各地潜伏了近二十年。今日 BPF 已演进为 eBPF,黑客会如何利用,造成什么危害?我们又该如何防范? 前言 现状分析 海外资料 国内资料 eBPF 技术恶意利用的攻击原理 Linux 网络层恶意利用 Linux 系统运行时恶意利用 综述 检测防御 运行前 运行时 运行后 如何防御 工程实现 练手 类库选择 系统兼容性 CO-RE 大型项目 总结 前言近几年...
88 天前 / 浪客书心
先来一张美图 1 zsh 介绍 1.1 Linux shellLinux/Unix 提供了很多种 Shell,为毛要这么多 Shell? 难道用来炒着吃么?那我问你,你同类型的衣服怎么有那么多件?花色,质地还不一样。写程序比买衣服复杂多了,而且程序员往往负责把复杂的事情搞简单,简单的事情搞复杂。牛程序员看到不爽的 Shell,就会自己重新写一套,慢慢形成了一些标准,常用的 Shell 有这么几种,sh、bash、csh 等,想知道你的系统有几种 shell,可以通过以下命令查看: cat/etc/shells 显示如下: 1.2 zsh 简介 Zsh 是一个 Linux 下强大的 shell, 由于大多数 Linux 产品安装...
104 天前 / reesunhuang
作为接触 C++ 开发十年的老鸟,我用两个案例来介绍下如何调试大型 C++ 项目吧。 一、调试 Redis 将 Redis 源码从官网下载下来以后,使用喜欢的代码阅读器进行管理(例如 VSCode、CLion、XCode 等)。我这里使用的是 Visual Studio,如下图所示: 在大致了解了 Redis 有哪些代码模块以后,我们把代码拷贝到 Linux 平台,然后编译并使用 GDB 调试器跑起来。如下图所示: 然后按 CTRL+C 将 GDB 中断下来,输入 info threads 查看当前程序的所有线程: 接着挨个使用 thread + 线程编号 和 bt 命令去查看每个线程的上下文调用堆栈: 对照每个线程的上下文堆栈...
108 天前 / kafeidou
整理 | 苏宓 出品 | CSDN(ID:CSDNnews)「否则,我可能会从 Linux 中抽身,也有可能会选择加入另外一个社区」。 从 0 到 1 ,在 elementaryOS荣登全球流行的Linux 十大发行版之一的位置之际,万万没想到,其背后的公司分崩离析,两位创始人在 Twitter 上演口水战,反目成仇,甚至在其中一位创始人Cassidy James Blaede 突然宣布离职跳槽之后,另一位创始人Daniel Foré也发出以上言论。 这到底是怎么一回事? 作为开源届较为成功的操作系统之一,elementaryOS 的未来又将何去何从? elementaryOS 创始人Daniel Foré: Cassidy 离职不打招呼就罢了...
131 天前 / reesunhuang
一、内核行数 Linux 内核分为 CPU 调度、内存管理、网络和存储四大子系统,针对硬件的驱动成百上千。代码的数量更是大的惊人。 先说说最早的内核 linux 0.11,下面这本书可以说很多驱动工程师都学习过,我花了大概 1 个半月,勉强看了一遍。 再来看看内核代码量的统计。 2020 年 1 月 1 日,Linux 内核 Git 源码树中的代码达到了 2780 万行。 phoronix 网站统计了 Linux 内核在进入 2020 年时的一些源码数据并作了总结。
132 天前 / HueiFeng
什么是负载均衡? 前面的调度学习都是默认在单个 CPU 上的调度策略。我们知道为了 CPU 之间减少“干扰”,每个 CPU 上都有一个任务队列。运行的过程种可能会出现有的 CPU“忙的一笔”,有的 CPU“闲的蛋疼”,于是便需要负载均衡。 将 task 从负载较重的 CPU 上转移到负载相对较轻的 CPU 上执行,这个过程就是负载均衡的过程。 在了解负载均衡前有必要了解 soc 上对 CPU 的拓扑关系。 我们知道一个多核心的 soc 片上系统,内部结构是很复杂的,内核采用 CPU 拓扑结构来描述一个 SOC 的架构。