- 博客(495)
- 资源 (68)
- 收藏
- 关注
原创 kvm-dmesg:从宿主机窥探虚拟机内核dmesg日志
kvm-dmesg是一个专门用于从KVM虚拟机中提取内核日志的工具。它提供了与传统的 dmesg 工具类似的功能,但其最大的亮点在于可以跨越虚拟化边界,直接从宿主机获取虚拟机内核的日志信息。
2024-11-19 20:48:52
793
1
原创 linux内核中如何向slab内存分配器申请内存
在 Linux 内核中,slab 内存分配器是一种高效的内存管理机制,用于管理对象的分配和释放,特别适用于频繁分配和释放固定大小的内存块的场景。slab 分配器为每个缓存创建一个内存池,每个缓存池对应一种对象类型。
2024-11-17 20:35:22
344
原创 2024 年 QEMU 峰会纪要
2024 年 QEMU 峰会已于 10 月 31 日在 KVM 论坛召开,这是一个仅对项目中最活跃的维护者和子维护者开放的邀请会议。
2024-11-02 10:20:10
864
原创 政治正确?Linux把一大堆毛子开发者移出了开发者列表
日前,Linux内核主要维护者之一Greg Kroah-Hartman (Greg K-H)提交了一项不寻常的“文档”更新,将数名具有顶级域名邮箱的维护者,和一名明确为俄罗斯身份的维护者从MAINTAINERS(维护者名录)文件除名。这一提交已于上周日被Linus Torvalds拉取并包含于6.12-rc4版本的代码中。
2024-10-25 08:18:44
1253
原创 现代C语言:C23标准重大更新
虽然没有固定标准,但一般将C99之后的C语言标准称为“现代C语言”,目前的最新标准为C23。C语言的演化包括标准C89、C90、C99、C11、C17和C23,C23是C语言标准的一次重大修订,截至2024年3月,最新版本的gcc和clang实现了C23的大部分新语言功能,但是部分功能仍然缺失,例如:存储类说明符, 和 属性等等。
2024-10-22 08:21:36
3170
原创 Linux OpenSSH爆出高危漏洞
2024 年 5 月,网络安全公司 Qualys 首次发现并报告了该漏洞,编号为 CVE-2024-6387。该漏洞存在于 OpenSSH 服务器(sshd)中,由于信号处理竞争条件存在缺陷,允许未经认证的远程攻击者以 root 用户身份执行任意代码。
2024-07-03 12:26:23
1153
原创 一个时代的结束:Centos7将在6月30日退出历史舞台
友情提醒:如果你使用的是曾经辉煌一时的CentOS Linux 7,一直拖延没有迁移,那么现在距离它正式寿终正寝还有不到一周的时间。
2024-07-01 09:14:24
613
原创 Qemu虚拟机在线迁移到VMware
在生产环境中,大多数的场景是 vmware 虚拟机迁移到 qemu 环境,一般是通过关机然后导出、导入磁盘镜像来实现。如果要将 qemu 环境虚拟机迁移到 vmware 怎么办呢?要求业务中断时间尽可能短。下面介绍一种思路,来实现类似热迁移的效果(实际并不是热迁移,内存没办法做到热迁移,只是将业务中断时间缩短到很小间隔)。
2024-06-20 22:03:38
1212
原创 Geek新鲜事15: Linus Torvalds 发话了,新调度器sched_ext将合入Linux6.11
“ext”对应的英文单词为“extensible”,意为可扩展的。开发者Tejun Heo通过整整30 个的patchs,提供了一个支持eBPF程序修改调度策略的调度类。
2024-06-18 09:14:49
1181
原创 Linux Kernel 编程-你不知道的printk(2)
上回我们介绍了:- printk()的简单使用- pintk 的实现:ring buffer- 使用 systemd 命令 journalctl 查看日志- printk 日志级别- printk 替代者 pr_宏下面我们继续介绍一些 printk 在实际工程中的一些使用细节。
2024-06-14 12:25:03
1520
原创 Linux Kernel 编程-你不知道的printk(1)
内核版本:6.1+我们都知道 linux通过 printk()这个 API 记录内核日志,printk有很多细节,并且linux内核中提供了新的API记录日志。下面将深入探讨一些细节。这些对内核/驱动开发人员来说,清楚地理解这些非常重要。
2024-06-13 12:38:57
1122
原创 LLVM language参考手册之数据布局(Data Layout)
2、如果没有找到匹配,并且这个类型查找确定是一个整数类型,那么将大于这个被使用的查找类型的位宽的最小整数类型将会被使用。如果这些标识中没有一个大于这个位宽,那么最大的整数类型将被使用,例如,给定上述的默认标识,i7类型将会使用i8(下一个最大值)的对齐属性,同样的i65和i256都将使用i64的对齐属性(可指定的最大值)。指定堆栈中的bit的自然对齐。当为一个给定的目标平台构造数据布局的时候,LLVM将会开始于一组默认标识的集合,但这组集合可以被 datalayout 关键字指明的标识重写。
2024-05-14 17:54:50
751
原创 tokio多任务绑定cpu(绑核)
程序非常简单,首先构造一个 tokio runtime 环境,然后派生多个 tokio 并发,每个并发执行一个无限循环做 overflowing_add。overflowing_add 函数返回一个加法的元组以及一个表示是否会发生算术溢出的布尔值。如果会发生溢出,那么将返回包装好的值。core_affinity_rs 是一个用于管理 CPU 亲和力的 Rust crate。通过调整 idx,将派生并发平均绑定在指定的 core 上。上面的代码只是把负载绑定到了一个 core 上,那么要绑定多个核怎么办呢?
2024-04-22 22:31:36
909
原创 一个完全用rust写的开源操作系统-Starry
Starry是2023年全国大学生计算机系统能力大赛操作系统设计赛-内核实现赛的二等奖作品。Starry是在组件化OS的arceos的基础上,进行二次开发的操作系统内核,使用宏内核架构,能够运行Linux应用的内核。原始的操作系统大赛的仓库为目前的宏内核的arceos的开发仓库https://github.com/Arceos-monolithic (推荐)(目前仅仅建议使用较为稳定的riscv64架构)
2024-04-19 10:57:56
2087
4
原创 突然间我懂了软件
软件需要有人通盘理解它的运作机制,所以单个工程师有可能比一个职业开发团队造出更好的产品。因为单个工程师花时间,完整理解了他要构建的软件,而职业开发团队总是从一个项目转移到另一个项目。单枪匹马的工程师能做出比同样有能力的专业团队更好的产品。单干的工程师会花时间为自己的程序建立一套完整的理论,而专业人员则会定期在不同的项目之间流动,他们只对自己做过的项目有理论。为什么说掌握陌生项目的速度要比重建项目难得多?这也是为什么接手不熟悉的项目,比重建该项目要困难得多,以及为什么软件外包的质量总是如此糟糕。
2024-01-12 09:35:37
492
原创 为什么 x86 操作系统从 0x7c00 处开始
"CPU Monitor"程序提供了引导加载程序和调试器,这个"CPU Monitor"引导加载程序将 MBR 加载到"0x200",而不是"0x7C00"。如上所述,这个神奇的数字诞生于 1981 年,"IBM PC/AT Compat" PC/BIOS 供应商为了 BIOS 和操作系统的向后兼容性,从没改变过这个值。
2023-11-23 22:38:09
1521
原创 如何学习 Linux 内核内存管理
LSF/MM 是一年一度的 Linux 存储、文件系统和内存管理峰会,这是一个仅限受邀者参加的活动,人们通常会讨论下一年的计划和项目。通常在阅读代码时,如果有不明白的地方,我会使用 “git blame”。特别是在mm 部分,开发人员习惯于写详细的提交日志(附带测试用例/程序),以便自己和其他人将来可以参考。Linux内核内存管理部分是Linux内核中第二复杂的部分,但也非常有趣。
2023-10-26 22:28:33
568
转载 存储稳定性测试与数据一致性校验工具和系统
存储稳定性测试与数据一致性校验工具和系统:https://github.com/zhangyoujia/hd_write_verify
2023-10-20 13:55:09
302
原创 一个虚拟机管理器(VMM)的实现
Little Computer-3(简称 LC-3)是用于教学的汇编语言,它有着相比于 x86 更为简洁的指令集,同时包含了主流 CPU 的经典思想。LC-3 麻雀虽小,五脏俱全。它的规范不算太多,本文实现一个LC-3 CPU的虚拟机管理程序。
2023-10-18 07:14:15
1218
原创 基于LQR算法的一阶倒立摆控制
(F为外力,x为物块位移,M,m为物块和摆杆的质量,φ为摆杆相对竖直向上方向的角度)倒立摆的受力分析网上有很多,这里就不再叙述。
2023-09-20 10:12:07
2272
1
原创 centos7配置iscsi共享存储-tgtd
iSCSI又称为IP-SAN,是一种基于因特网及SCSI-3协议下的存储技术,iSCSI利用了TCP/IP的port 860 和 3260 作为沟通的渠道。透过两部计算机之间利用iSCSI的协议来交换SCSI命令,让计算机可以透过高速的局域网集线来把SAN模拟成为本地的储存装置。iSCSI的实现方法主要有tgtd、LIO、SCST、IET等几种方式。
2023-09-13 10:50:48
1652
原创 一个简单的文件系统(MinixFS)实现解析
Minix file system 是 Andrew S. Tanenbaum 在 1980 年代发明的文件系统, 并随着 Minix 操作系统一起于 1987 年发布。Linus 编写 Linux 内核第一个版本的时候, 使用的也是 Minix FS, Linux 至今依然提供了对 Minix FS 的支持。Minix FS 结构简单, 易于理解。
2023-09-05 22:38:33
930
1
原创 转载:为什么国外把邮件当微信一样发?
所以,一般谁要是跟我聊天说事情,我一旦发现这次聊天是这个目的,我就会让对方想明白了,写段文字发给我。当然,对于很多人而言,对方是他的甲方或领导,他没有办法这样要求对方。但是,如果你发现对方是这样的工作作风只,那么至少你可以断定,对方自己都没有思路,或者思维能力很差。你自己思考30分钟,给我写个邮件,我花3分钟看完,两个人一共消耗33分钟。在你问我答的过程中,通过别人的思考,别人因为听不懂他而发出的追问,把自己的思路整理出来。你让他写一封邮件,或者用一个文档,或者稍微系统一些的一段文字,来表述他的想法。
2023-09-05 09:54:10
190
原创 linux内核bitmap之setbit汇编实现
linux内核mm/swap.c中bitop通过宏定义了三个位操作函数,分别是 bit() 测试位,setbit() 置位,clrbit() 清除位。
2023-08-09 18:54:44
791
原创 僵尸进程(Zombie process )及孤儿进程简介
僵尸进程是当子进程比父进程先结束,而父进程又没有回收子进程,释放子进程占用的资源,此时子进程将成为一个僵尸进程。如果父进程先退出 ,子进程被init接管,子进程退出后init会回收其占用的相关资源。在 unix/linux 系统中,一个进程结束了,但是他的父进程没有等待(调用)他, 那么他将变成一个僵尸进程。
2023-08-02 09:42:20
645
原创 libvirt 热迁移流程及参数介绍
源节点 libvirtd 通过 RPC 的方式调用目标节点 qemuMigrationFinish 方法,在目标节点停止 NBD server,并调用 qemuProcessStartCPUs 使目标节点虚拟机进入运行状态。,源节点通过 RPC 的方式调用目标节点 domainMigratePrepare3Params 函数,在目标节点启动一个带 incoming 参数的虚拟机,然后启动 NBD server。:迁移稳定性差,迁移过程中虚拟机性能下降,网络延迟高时,对业务影响大。
2023-07-14 10:57:37
3577
2
原创 一些想法:关于学习一门新的编程语言
背景介绍很多人可能长期使用一种编程语言,并感到很有成就感和舒适感,发现学习一种新的编程语言的想法令人生畏而痛苦。或者可能知道并使用多种编程语言,但有一段时间没有学习新的语言。更或者可能只是好奇别人是如何潜心学习新的编程语言并迅速取得成效的。无论学习新的编程语言有多容易或多困难,这篇文章解释了我如何学习新的编程语言及一些思考。虽然人们学习的方式不同,但发现我自己的过程很有趣,特此记录下来。背景介绍。
2023-04-26 08:13:52
575
原创 三种不同实现ublk的零拷贝I/O的方法
接收Fused命令的子系统必须对它有特殊的支持,具体来说,它必须能够找到slave命令的内核空间缓冲区,并在slave执行之前调用新函数 io_fused_cmd_provide_kbuf() 建立连接,这是对 io_uring 子系统的相当大的更改,并且还不完全清楚任何其他子系统是否能够利用它。不过,最大的价值可能来自于这样一个事实,即 BPF 程序可以访问内核提供的缓冲区,并可以直接将它们用于满足每个请求所需的任何 I/O,从而消除该数据的副本。块驱动程序可以移动相当多的数据,因此极大的避免复制。
2023-04-09 22:48:37
1067
原创 linux进程调度-PRI及NI简介
pri值的取值范围是-20(最高优先级,通常为系统进程保留)到19(最低优先级,通常为用户进程保留)。通常情况下,系统进程比较高的pri值(靠近-20),而用户进程比较低的pri值(靠近19)。CPU的把时间进行切片,然后分配给进程,当进程无限多时,也必须保证进程被抢占之前保证 1ms的运行时间,这个1ms就是最小粒度。(1)nice值,nice值越大意味着更低的优先级,反之nice值越小意味着更低的优先级,低nice值会获得更多的处理器时间。
2023-04-01 07:49:26
851
原创 Zellij – 颜值爆表,比tmux、screen更好用的多窗口终端
如果你曾经使用过多窗口终端,如tmux、screen,那么你可能对Zellij上手会更快。下面将介绍这个惊艳出众的多窗口终端利器。
2023-03-18 19:46:19
6134
原创 KVM2023论坛开始征集演讲稿
KVM论坛是一个交流虚拟化技术的年度盛会,为KVM和QEMU的开发者和用户提供了一个难得的机会来讨论Linux虚拟化技术的现状,并为未来的挑战做计划。KVM forum会议内容包括KVM虚拟化的最新状况,对未来的规划,以及与会者之间合作的情况。今年的活动将于2023年6月14-15日在捷克共和国布尔诺举行。只在现场举行,并在DevConf.CZ开源社区会议之前举行。6月14日将有一部分时间用于黑客马拉松或 “day of BoFs”。
2023-03-16 12:46:18
530
原创 Red Hat大佬教你如何使用vhost-user-blk对接spdk或qemu
近期Stefan发布题为“vhost-user-blk:一个快速的用户空间块I/O接口”的视频讲座。讲座涵盖了如何在用户空间通过vhost-user-blk使用块I/O以及相对于网络传输的优势,并介绍一个称为libblkio的客户端库,提供了C和Rust接口。
2023-03-02 15:27:26
1102
原创 Linux 6.1 正式升级为 LTS 内核,支持到2026年或更长
Linux 6.1被普遍认为是一个长期支持(LTS)的内核,通常情况下,每年的最后一个主要发布系列通常会被提升到LTS状态。Greg Kroah-Hartman作为Linux的稳定维护者,正式承认Linux 6.1为2022年的LTS内核。
2023-02-08 21:33:07
1595
适用于 centos7安装的 bpftrace工具rpm包
2023-11-10
编译原理单元习题-华保健.rar
2021-02-24
Q-Dir文件浏览
2017-09-14
md5sum命令行计算工具
2017-09-14
C语言图像处理程序集
2015-12-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人