0%

本文介绍了读者写者问题中实现写者优先的解决方案,要求写者线程优先级高于读者线程。当写者到来或正在写时,读者线程需被阻塞,直到所有写者完成写操作后才允许读者读取文件;而在没有写者时,读者线程可同时读取文件。通过信号量和互斥锁的配合,伪代码实现了写者优先的调度逻辑,确保线程安全和优先级规则的正确性。

阅读全文 »

本文介绍了某顶会论文中的强化跨域知识蒸馏(RCD-KD)框架,该框架结合强化学习和对抗性训练,解决时间序列数据中的无监督域适应问题,同时降低模型复杂度以便在资源受限设备上部署。通过动态选择目标样本和域不变特征学习,RCD-KD在多个公共数据集上表现出优越性能,显著提升模型的泛化能力和鲁棒性,同时减少计算资源需求

阅读全文 »

本文介绍了Linux内核调试的基本流程,包括源码获取、内核编译、文件系统镜像加载、QEMU启动以及GDB调试。通过关闭内核地址随机化(KASLR)和开启调试信息,确保内核可调试性。文章详细描述了如何使用syzkaller生成文件系统镜像,并通过QEMU启动虚拟机进行调试。最后,通过GDB远程连接到虚拟机内核,完成断点设置和调试操作

阅读全文 »

本文分析了CVE-2016-5195(Dirty Cow)漏洞,这是一个存在于Linux内核中的本地权限提升漏洞,影响范围为Linux Kernel > 2.6.22。漏洞利用了内核的Copy-On-Write机制中的竞态条件,允许攻击者向只读文件写入任意内容,从而实现权限提升。文章通过PoC代码复现了漏洞,并详细介绍了其成因,包括写时拷贝、页式内存管理和缺页中断处理。通过破坏COW过程,攻击者可以修改系统关键文件(如passwd或su),最终获得root权限

阅读全文 »

本文分析了fork()系统调用的“一次调用和两次返回”现象。fork()用于创建子进程,父子进程共享代码,但通过写时拷贝技术避免完全复制内存。调用fork()后,内核完成内存分配、数据结构复制、进程列表更新及调度操作。父进程返回子进程的PID以便管理子进程,子进程返回0表示自身无子进程。深入内核代码可发现,fork()通过copy_process()和copy_thread()函数分别设置父子进程的返回值,确保进程间通信和调度的正确性。

阅读全文 »

本文介绍了堆的基础知识,包括堆管理结构arena、内存块chunk的结构与分类,以及堆分配与释放的机制。文章详细描述了chunk的类型(如allocated chunk、top chunk)及其在堆中的管理方式,并分析了bin的分类(如fastbin、smallbin、largebin、unsorted bin)及其存储和分配策略。通过对堆内存管理的深入解析,帮助读者理解堆的工作原理及其在程序运行中的作用。

阅读全文 »