
面经之操作系统
文章平均质量分 78
介绍一些操作系统的知识
黑猫爱小鹿
这个作者很懒,什么都没留下…
展开
-
valgrind查看内存泄漏
valgrind查看内存泄漏 文章目录valgrind查看内存泄漏 valgrind --tool=memcheck --leak-check=full ./a.out 可以检测如下问题: 如果malloc/realloc/calloc和free的数量不同,则会报告如下的内容。 ==3375== HEAP SUMMARY: ==3375== in use at exit: 128 bytes in 1 blocks ==3375== total heap usage: 4,900 all原创 2022-03-02 15:45:02 · 394 阅读 · 0 评论 -
进程间通信的方式及原理
# 进程间通信的方式 文章目录# 进程间通信的方式消息队列使用步骤消息队列使用步骤 管道 消息队列 信号 信号量 socket 消息队列 首先消息队列就是内核维护的一块链表区域,只要是有足够权限的进程都可以向队列中添加消息,只要是有读权限的进程都可以在里面拿出消息 克服了信号承载信息少,以及管道只能承载无格式字节流以及有限缓冲区大小的缺点 消息队列是随着内核可持续的 消息队列信息的传递是基于拷贝的,所以效率低下 消息队列只有内核重启或者人工删除的时候才会消失,所以不用的时候请关闭 进程通过key原创 2022-03-02 15:42:29 · 1067 阅读 · 0 评论 -
手把手带你了解链接全过程(二)
手把手带你了解链接全过程(二) 文章目录手把手带你了解链接全过程(二)位置无关代码`PIC`数据引用`PIC`函数引用库打桩机制处理目标文件的工具 link 位置无关代码 这是共享库实现的原理. 也就是,可以加载而无需重定位的代码称为位置无关代码(Position-Independent Code PIC),Gcc使用-fpic编译,且编译共享库必须使用 在X86-64系统中,不需要做特殊处理.目标模块中的符号的引用会自动成为PIC PIC数据引用 通过上述过程完成对动态库数据的引用 PIC函数引用 其中原创 2022-01-24 11:47:25 · 378 阅读 · 0 评论 -
手把手带你了解链接全过程(一)
手把手带你了解链接全过程(一) 文章目录手把手带你了解链接全过程(一)目标文件可重定位目标文件格式目标文件分类**链接器的作用****符号和符号表****符号解析**静态库链接器如何引用静态库重定位加载可执行目标文件动态链接库应用程序中加载和链接共享库 目标文件 可重定位目标文件格式 首先要知道 目标文件就是纯粹的字节块的集合 这些块中有: 包含程序代码,程序数据,链接器与加载器的数据结构 .text已编译程序代码 .rodata只读数据 .data已经初始化的全局和静态变量 .bss未初始化全局原创 2022-01-17 15:59:46 · 2002 阅读 · 0 评论 -
linux零拷贝技术
Linux零拷贝技术 文章目录Linux零拷贝技术基础知识1. 物理内存和虚拟内存1.1. 物理内存1.2. 虚拟内存1.3 为什么用虚拟内存1.4 虚拟内存的好处1.5 虚拟内存的坏处1.6 多级页表1.7 快表内核空间以及用户空间为什么会有内核态用户态的切换Linux I/O读写方式I/O中断原理传统的IO操作零拷贝技术实现方法用户态直接IO其实就是用户态的程序绕过内核直接访问磁盘IOmmp+writesendfileDMA辅助sendfile写时复制参考链接 零拷贝从字面上理解就可以知道,零拷贝就是c转载 2021-08-17 16:45:40 · 171 阅读 · 0 评论 -
同步异步IO阻塞非阻塞IO有缓存无缓存IO
同步异步IO阻塞非阻塞IO有缓存无缓存IO 同步异步IO 所谓同步异步其实就是相对于用户来说的 当内核缓冲区有数据的时候,用户就需要取读取,这时候就是用户就是一个一个取读取。 而异步就是当内核度缓冲区有数据的时候,这时候我们提前会内核注册一个信号(也可以叫做通知函数),当有数据的时候,内核去读,用户可以先去干别的事情,这时候当读满的时候,再通过信号去通知用户去一次性把数据读取出来。这也是实现reactor和proreactor的原理 .就跟搬鸡蛋的很像,先把东西搬到篮子里(内核区缓存)再一次性搬到目的地(用原创 2021-08-10 09:05:25 · 237 阅读 · 0 评论