- 博客(173)
- 资源 (6)
- 收藏
- 关注
原创 信号发送与处理
信号是一种“软件中断”,用来处理异步事件内核发送信号到某个进程,通知进程事件的发生事件可能来自硬件,可能来自用户输入,可能来自除零错误信号是一种类型的进程间通信方式(一个进程向另外一个进程发送信号)A进程发送事件T,向B进程发送信号,B进程执行动作响应事件进程可以对接收的不同信号进行不同动作响应(信号 -> 处理)
2023-05-28 16:15:18
293
原创 Linux进程层次分析
/设置进程的组标识。// 获取当前进程的组标识。// 获取指定进程的组标识。pid == pgid,将pid指定的进程设为组长。pid == 0,设置当前进程的组标识。pgid ==0,则将pid作为组标识。
2023-04-23 20:38:09
363
原创 页中断:fork、mmap背后的保护神
大多数时候,我们即使不知道它们的存在,程序也能正常地运行。但是有时候,程序写得不好就有可能造成中断频繁发生,从而带来巨大的性能下降。面对这种情况,我们第一时间就应该想到统计页中断。因为除了页中断本身会带来性能下降之外,统计页中断也可以反推程序的运行特点,从而为进一步分析程序瓶颈点,提供数据和思路。页中断和普通的中断一样,它的中断服务程序入口也在 IDT 中,但它是由 MMU 产生的硬件中断。这三个问题,虽然看上去相互之间关系不大,但实际上它们背后都依赖。
2023-04-21 17:57:50
287
原创 深入理解栈:从CPU和函数的视角看栈的管理、从栈切换的角度理解进程和协程
执行单元是指 CPU 调度和分派的基本单位,它是一个 CPU 能正常运行的基本单元。执行单元是可以停下来的,只要能把 CPU 状态(其实就是寄存器的值)全部保存起来,等到这个执行单元再被调度的时候,就把状态恢复过来就行了。我们把这种保存状态,挂起,恢复执行,恢复状态的完整过程,称为执行单元的调度 (Scheduling)。具体来说,常见的执行单元有进程,线程和协程三种,接下来,我们详细说明这三种执行单元的区别和联系。我们先来比较进程和线程。
2023-04-21 17:11:35
471
原创 为什么程序实际可用内存会远超物理内存?
上一步 CPU 已经找到页表项了,这里存储着物理地址,这才真正找到该虚拟地址所对应的物理页。虚拟地址的低 12 位,刚好可以对一页内的所有字节进行编码,所以我们用低 12 位来代表页内偏移。计算的公式是物理页的地址直接加上低 12 位。前面我们分析的是 32 位操作系统,那对于 64 位机器是不是有点不同呢?在 64 位的机器上,使用了 48 位的虚拟地址,所以它需要使用 4 级页表。它的结构与 32 位的 3 级页表是相似的,只是多了一级页目录,定位的过程也从 32 位的 4 步变成了 5 步。
2023-04-19 19:20:19
343
原创 引导程序、BIOS中断、检测内存容量、实模式切换到保护模式
BIOS只加载磁盘的第0个扇区(512字节)到内存中,次程序无法做很多事情。因此,我们可以采取以下两种方式种的任意一种。X86在上电后,自动进入实模式,目的是为了兼容早期的应用程序。X86与编程相关的主要内核寄存器AX BX CX DX 是32位寄存器,在实模式的情况下,只能使用低16位寄存器。高16位寄存器是要留给切换到保护模式的。CS DS SS ES FS GS 为段寄存器,为访问特定内存地址,需要采用段寄存器:偏移的形式。8086 CPU 在实模式工作的情况下,内存映射。
2023-04-14 22:28:23
289
原创 进程的哪些内存类型容易引起内存泄漏?
相信你在平时的工作中,应该遇到过下面这些场景:伴随着服务器中的后台任务持续地运行,系统中可用内存越来越少;应用程序正在运行时忽然被 OOM kill 掉了;进程看起来没有消耗多少内存,但是系统内存就是不够用了;……类似问题,很可能就是内存泄漏导致的。我们都知道,内存泄漏指的是内存被分配出去后一直没有被释放,导致这部分内存无法被再次使用,我们平时遇到的内存泄漏可能是应用程序的内存泄漏,也可能是内核(操作系统)的内存泄漏;
2023-04-06 20:51:09
322
原创 CPU Cycle(CPU 周期)、Instruction Cycle(指令周期)、Clock Cycle(时钟周期)
CPU Cycle(CPU 周期)、Instruction Cycle(指令周期)、Clock Cycle(时钟周期)
2023-04-06 16:41:44
699
原创 调用pthread_create,可以不用调用pthread_join?不会造成mmap泄露?
调用pthread_create,可以不用调用pthread_join?不会造成mmap泄露?
2023-03-30 19:32:54
160
原创 libmemunreachable+malloc debug分析内存泄露
libmemunreachable+malloc debug分析内存泄露
2023-03-28 17:09:08
318
基于QT4的简易绘图小软件
2020-08-05
基于QT4的简易文本编辑器小软件
2020-08-05
基于QT4的简易计算器小软件
2020-08-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人