01 2024 档案
摘要:CPU写内存的时候有两种方式: 1. write through: CPU同时写内存和写cache。2. write back: CPU只写到cache中。cache的硬件使用LRU算法将cache里面的内容替换到内存。通常是这种方式。 我们假设MEM里面有一块红色的区域,并且CPU读过它,于是红色
阅读全文
摘要:系统调用 应用与内核通信的方式中,最常用的就是系统调用。如常见的open、write、read、ioctl等系统调用。当系统调用时,触发一个软中断,处理器进入内核模式。参数传递到内核空间,完成通信过程。内核完成服务之后,将数据返回给应用,并设置处理器为用户模式。 copy_to_user() / c
阅读全文
摘要:1、compat_ioctl:支持64bit的driver必须要实现的ioctl,当有32bit的userspace application call 64bit kernel的IOCTL的时候,这个callback会被调用到。如果没有实现compat_ioctl,那么32位的用户程序在64位的ke
阅读全文
摘要:如果调用者使用了共享库的符号,则调用者的数据段会有一个GOT,用于记录共享库符号的地址;如果共享库A作为调用者使用了共享库B的符号,则共享库A的数据段也会有一个GOT。由于编译的时候不能知道共享库的符号地址,所以调用者通过GOT获取共享库的符号地址,运行时链接只需要修改位于数据段的GOT的内容,不需
阅读全文
摘要:智能指针存在的意义 智能指针主要解决以下问题: (1)内存泄漏:内存手动释放,使用智能指针可以自动释放。 (2)共享所有权指针的传播和释放,比如多线程使用同一个对象时析构问题。 智能指针的实现依赖于C++语言的RAII(资源获取即初始化)技术,即资源的获取和释放应该与对象的构造和析构分别相关联。这意
阅读全文