<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[qq_45806499的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qq_45806499</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_45806499]]></copyright><item><title><![CDATA[Linux系统木马解决]]></title><link>https://blog.youkuaiyun.com/qq_45806499/article/details/147795139</link><guid>https://blog.youkuaiyun.com/qq_45806499/article/details/147795139</guid><author>qq_45806499</author><pubDate>Thu, 08 May 2025 16:47:56 +0800</pubDate><description><![CDATA[二进制程序逆向查看发现，其是通过sys_execve动态加载的恶意二进制程序或脚本。但执行的名称是动态的，逆向代码里涉及到文件和环境变量，不好查找。查看了所有的环境变量和二进制文件里的字符串信息，还是确定不了。命令去扫描后台隐藏进程，发现有隐藏进程，kill杀掉后htop的cpu占用就恢复正常了，但过一会仍会重新恢复成之前极高的cpu占用情况。在删除这个定时任务后就没有再发生cpu资源被大量占用的情况，于是把这个定时任务里执行的。里没有，到/etc/cron.d目录里查，在。此时确定电脑中木马了，使用。]]></description><category></category></item><item><title><![CDATA[boost解析ini配置文件错误——conversion of data to type “i“ failed]]></title><link>https://blog.youkuaiyun.com/qq_45806499/article/details/146320252</link><guid>https://blog.youkuaiyun.com/qq_45806499/article/details/146320252</guid><author>qq_45806499</author><pubDate>Mon, 17 Mar 2025 17:10:37 +0800</pubDate><description><![CDATA[ini文件中在行后加上注释符号会导致类型被解析成。下面加的注释方式可以。]]></description><category></category></item><item><title><![CDATA[RISCV下Dovetail移植（2）——原子操作]]></title><link>https://blog.youkuaiyun.com/qq_45806499/article/details/146052486</link><guid>https://blog.youkuaiyun.com/qq_45806499/article/details/146052486</guid><author>qq_45806499</author><pubDate>Wed, 05 Mar 2025 20:51:44 +0800</pubDate><description><![CDATA[但riscv提供amo指令，AMO 指令能够在一个指令中完成读取、修改和写回操作，这些操作是不可分割的，不会被中断或重新排序，因此并不需要修改中断。Dovetail将Linux中的中断全部虚拟化，来实现无论何时都能被中断以提供evl的实时性。在这种中断保护被虚拟化的情况下，需要在所有需要。]]></description><category></category></item><item><title><![CDATA[RISCV下Dovetail移植（1）——pipeline]]></title><link>https://blog.youkuaiyun.com/qq_45806499/article/details/146041765</link><guid>https://blog.youkuaiyun.com/qq_45806499/article/details/146041765</guid><author>qq_45806499</author><pubDate>Wed, 05 Mar 2025 20:39:01 +0800</pubDate><description><![CDATA[handle_arch_irq函数是函数指针，Dovetail对处理中断的handler函数（例如handle_simple_irq ），即handle_arch_irq所指函数，插入。函数执行（handle_arch_irq 是 Linux 内核中用于处理中断的全局函数指针，其主要作用是将中断处理从底层硬件中断控制器过渡到内核的中断处理机制）。函数，arch_do_IRQ_pipelined是需要我们根据不同架构调用相应的Linux中断程序进行处理。Dovetail需要拦截处理中断的函数，即上文提到的。]]></description><category></category></item><item><title><![CDATA[xenomai4的dovetail学习（5）——文件和网络]]></title><link>https://blog.youkuaiyun.com/qq_45806499/article/details/145996844</link><guid>https://blog.youkuaiyun.com/qq_45806499/article/details/145996844</guid><author>qq_45806499</author><pubDate>Mon, 03 Mar 2025 23:05:45 +0800</pubDate><description><![CDATA[在Dovetail中，evl希望能够复用使用和管理。但Dovetail在带外上下文中使用Linux内核的（虚拟文件系统）服务来实现对文件的访问控制，current->files可能无法安全地从带外阶段被访问。Dovetail提供了一种简单机制，在VFS中插入hook函数，evl可以在设备驱动在Linux内核注册时调用该hook函数完成在evl中的注册。为区分设备驱动是否支持oob请求，struct file中包含一个名为oob_data的指针。]]></description><category></category></item><item><title><![CDATA[xenomai4的dovetail学习（4）——交替调度]]></title><link>https://blog.youkuaiyun.com/qq_45806499/article/details/145912455</link><guid>https://blog.youkuaiyun.com/qq_45806499/article/details/145912455</guid><author>qq_45806499</author><pubDate>Mon, 03 Mar 2025 19:15:20 +0800</pubDate><description><![CDATA[evl需要为每个进程维护专属数据集，Dovetail 在通用的 struct mm_struct 描述符中添加了一个名为 oob_state 的成员，类型为 struct oob_mm_state。evl需要某个线程从inband阶段返回用户模式之前进行拦截，例如，你可能希望强制该线程在离开Linux内核并恢复用户模式执行之前切换回oob阶段。task_struct用来描述进程，与架构无关的，而thread_info是task_struct的一部分，与架构相关的，是一个。通过在evl中调度一个具有。]]></description><category></category></item><item><title><![CDATA[xenomai4的dovetail学习（3）——自旋锁和远程调用]]></title><link>https://blog.youkuaiyun.com/qq_45806499/article/details/145901414</link><guid>https://blog.youkuaiyun.com/qq_45806499/article/details/145901414</guid><author>qq_45806499</author><pubDate>Thu, 27 Feb 2025 19:58:13 +0800</pubDate><description><![CDATA[锁验证器会自动协调实际和虚拟中断状态，因此它可以为在带内和带外上下文中定义的锁构造提供正确的诊断。这意味着当启用 LOCKDEP 时，硬和混合自旋锁包含在验证集中。然而，当启用 LOCKDEP 时，延迟数据可能会非常糟糕，因为锁验证器可能需要在 CPU 禁用中断的情况下执行大量工作，以强制执行临界区。其功能与常规的smp_call_function_single()函数在语义上等价，但不同之处在于，在带外（out-of-band）阶段运行回调函数，并且关闭硬中断（hard irqs off）。]]></description><category></category></item><item><title><![CDATA[xenomai4的dovetail学习（2）——oob和中断管理]]></title><link>https://blog.youkuaiyun.com/qq_45806499/article/details/145881418</link><guid>https://blog.youkuaiyun.com/qq_45806499/article/details/145881418</guid><author>qq_45806499</author><pubDate>Wed, 26 Feb 2025 22:29:53 +0800</pubDate><description><![CDATA[当 Dovetail 收到硬件中断时，会在进入中断处理流程时调用 irq_enter_pipeline()，在退出中断处理流程时调用 irq_exit_pipeline()。内核 API 只能控制带内（in-band）阶段的中断禁用， **hard_local_irq_*()**控制实际的硬件中断。只能是 RESCHEDULE_OOB_IPI、TIMER_OOB_IPI 或 CALL_FUNCTION_OOB_IPI类型的IPI，irq_switch_oob()函数开启或关闭指定中断切换到oob阶段处理。]]></description><category></category></item><item><title><![CDATA[xenomai4的dovetail学习（1）——概览]]></title><link>https://blog.youkuaiyun.com/qq_45806499/article/details/145778809</link><guid>https://blog.youkuaiyun.com/qq_45806499/article/details/145778809</guid><author>qq_45806499</author><pubDate>Wed, 26 Feb 2025 16:07:12 +0800</pubDate><description><![CDATA[因此，在自主内核和linux之间需要区分中断屏蔽和传递的优先级，带外阶段（oob，自主内核内）用于处理高优先级的中断，不会被带内阶段的linux操作延迟。控制的，而不是直接禁用硬件中断。中断流水线位于硬件和中断管理之间，当调用 local_irq_save()、local_irq_disable() 或类似 spin_lock_irqsave() 的锁控制屏蔽操作时，这个。的延迟，对于某些内核组件，尤其是那些需要可预测且非常短的响应时间（例如几微秒）的组件，这种中断屏蔽机制是一个主要障碍。]]></description><category></category></item><item><title><![CDATA[riscv xv6学习笔记]]></title><link>https://blog.youkuaiyun.com/qq_45806499/article/details/144804405</link><guid>https://blog.youkuaiyun.com/qq_45806499/article/details/144804405</guid><author>qq_45806499</author><pubDate>Fri, 31 Jan 2025 15:37:18 +0800</pubDate><description><![CDATA[记录做实验时对xv6 2020操作系统的观察和理解，环境搭建Ubuntu20.04，交叉编译工具链直接apt安装就行，自己编译反而会因为选择的qemu和编译工具版本不匹配导致无法启动xv6。
代码仓库网址：https://github.com/cmyhhhh/xv6-labs-2020/在Makefile的UPROGS里加入$U/_sleep\，用于后续清理编译后的文件。

系统调用接口xv6实验里已经申明好，user/user.h文件定义了系统调用和工具接口，usys.pl用于生成usys.S文件，usy]]></description><category></category></item><item><title><![CDATA[riscv nommu架构下RROS移植汇总]]></title><link>https://blog.youkuaiyun.com/qq_45806499/article/details/143243814</link><guid>https://blog.youkuaiyun.com/qq_45806499/article/details/143243814</guid><author>qq_45806499</author><pubDate>Fri, 25 Oct 2024 21:11:25 +0800</pubDate><description><![CDATA[启动命令：]]></description><category></category></item><item><title><![CDATA[RISC-V Non-MMU Linux学习笔记]]></title><link>https://blog.youkuaiyun.com/qq_45806499/article/details/141923182</link><guid>https://blog.youkuaiyun.com/qq_45806499/article/details/141923182</guid><author>qq_45806499</author><pubDate>Thu, 05 Sep 2024 16:33:26 +0800</pubDate><description><![CDATA[另外，在 RISC-V Linux 下，关闭 MMU 以后，内核和应用都将工作在纯 Machine Mode 模式，原有的 Machine Mode 的 Firmware 也不再需要，所以，这里也涉及到整个软件架构的变化，从原有的 M/S/U 三层权限变成更为扁平的 M/U 两层权限。它在内部实现上与标准的ELF格式有所不同，特别是在程序链接表（PLT）的实现上，但对程序员来说，从外部来看，它仍然是一个ELF文件。在MMU的情况下:使用虚拟页读入文件，对文件的改变反映到内存中，fork时复制；]]></description><category></category></item><item><title><![CDATA[riscv linux内核内存学习笔记]]></title><link>https://blog.youkuaiyun.com/qq_45806499/article/details/141781348</link><guid>https://blog.youkuaiyun.com/qq_45806499/article/details/141781348</guid><author>qq_45806499</author><pubDate>Thu, 05 Sep 2024 09:55:46 +0800</pubDate><description><![CDATA[内核中的物理内存由伙伴系统(buddy system)进行管理，它的分配粒度是以物理页帧(page)为单位的，但内核中有大量的数据结构只需要若干bytes的空间，倘若仍按页来分配，势必会造成大量的内存被浪费掉。在内核中，经常会使用一些链表，链表中会申请许多相同结构的结构体，比如文件对象，进程对象等等，如果申请比较频繁，那么为它们建立一个内存池，内存池中都是相同结构的结构体，当想申请这种结构体时，直接从这种内存池中取一个结构体出来，是有用且速度极快的。为了减小TLB的缺失率，通常TLB为全相联的结构。]]></description><category></category></item><item><title><![CDATA[cron定时运行python任务并附上出现的错误]]></title><link>https://blog.youkuaiyun.com/qq_45806499/article/details/141869191</link><guid>https://blog.youkuaiyun.com/qq_45806499/article/details/141869191</guid><author>qq_45806499</author><pubDate>Tue, 03 Sep 2024 19:19:11 +0800</pubDate><description><![CDATA[使用crontab -l可以查看已有的定时任务，日志记录在/var/log/cron.log中，但/var/log/cron.log可能没有，需要手动开启。之后，重启rsyslog服务：sudo systemctl restart rsyslog.service，接着重启cron任务：sudo systemctl restart cron.service，/var/log/cron.log就出现了。]]></description><category></category></item><item><title><![CDATA[riscv架构下Linux中断学习笔记]]></title><link>https://blog.youkuaiyun.com/qq_45806499/article/details/141632369</link><guid>https://blog.youkuaiyun.com/qq_45806499/article/details/141632369</guid><author>qq_45806499</author><pubDate>Sun, 01 Sep 2024 10:52:03 +0800</pubDate><description><![CDATA[RISCV的架构设计就决定了必须要有程序运行在M模式下，来为S模式提供一些基础的服务，RISCV为此定义了SBI(Supervisor Binary Interface)接口规范，让运行在S模式下的操作系统在不同的RISCV处理器上都可以使用标准的SBI接口来使用相应的功能。，简称M模式、S模式和U模式。同理，在 __restore 恢复 Trap 上下文的时候，我们也必须从内核地址空间切换回应用地址空间，因为应用的代码和数据只能在它自己的地址空间中才能访问，应用是看不到内核地址空间的。]]></description><category></category></item><item><title><![CDATA[RROS学习笔记和代码连接汇总]]></title><link>https://blog.youkuaiyun.com/qq_45806499/article/details/141560822</link><guid>https://blog.youkuaiyun.com/qq_45806499/article/details/141560822</guid><author>qq_45806499</author><pubDate>Mon, 26 Aug 2024 12:16:59 +0800</pubDate><description><![CDATA[https://blog.youkuaiyun.com/qq_45806499/article/details/141282404
https://blog.youkuaiyun.com/qq_45806499/article/details/141368988
https://blog.youkuaiyun.com/qq_45806499/article/details/141421149
https://blog.youkuaiyun.com/qq_45806499/article/details/141529960


]]></description><category></category></item><item><title><![CDATA[arm64架构下的linux内核中断——学习笔记]]></title><link>https://blog.youkuaiyun.com/qq_45806499/article/details/141421149</link><guid>https://blog.youkuaiyun.com/qq_45806499/article/details/141421149</guid><author>qq_45806499</author><pubDate>Sun, 25 Aug 2024 22:33:45 +0800</pubDate><description><![CDATA[资料来源：
https://github.com/carloscn/blogARMv8包含4个异常等级，由privilege level整合而来：ARMv8分为普通世界（normal world）和安全世界（secure world），两个世界通过硬件进行隔离，安全世界目的是保证数据和程序安全，例如指纹认证就在安全世界执行。secure monitor负责控制两个世界之间的相互访问。Hypervisor 是一种软件，它在物理服务器和操作系统之间创建一个抽象层，允许多个操作系统和应用程序共享一个物理服务器。T]]></description><category></category></item><item><title><![CDATA[双内核操作系统学习笔记——Dovetail和RROS]]></title><link>https://blog.youkuaiyun.com/qq_45806499/article/details/141529960</link><guid>https://blog.youkuaiyun.com/qq_45806499/article/details/141529960</guid><author>qq_45806499</author><pubDate>Sun, 25 Aug 2024 20:50:17 +0800</pubDate><description><![CDATA[双内核主要依靠中断来分发任务给linux kernel和实时os。资料来源：https://www.bilibili.com/video/BV1Zt421G7wS/]]></description><category></category></item><item><title><![CDATA[linux中断和异常的区别]]></title><link>https://blog.youkuaiyun.com/qq_45806499/article/details/141368988</link><guid>https://blog.youkuaiyun.com/qq_45806499/article/details/141368988</guid><author>qq_45806499</author><pubDate>Tue, 20 Aug 2024 21:58:59 +0800</pubDate><description><![CDATA[对于可屏蔽中断，除了受本身的屏蔽位的控制外，还都要受一个总的控制，即CPU标志寄存器中的中断允许标志位IF(Interrupt Flag)的控制，IF位为1，可以得到CPU的响应，否则，得不到响应。典型的可屏蔽中断源的例子是打印机中断，CPU对打印机中断请求的响应可以快一些，也可以慢一些。异步中断分为可屏蔽硬件中断和不可屏蔽中断，不可屏蔽中断源一旦提出请求，cpu必须无条件响应，而对于可屏蔽中断源的请求，cpu可以响应，也可以不响应。中断是统称，但作为与异常并列的概念时，是另一种含义，即异步中断。]]></description><category></category></item><item><title><![CDATA[linux内核中断处理学习笔记—x86]]></title><link>https://blog.youkuaiyun.com/qq_45806499/article/details/141282404</link><guid>https://blog.youkuaiyun.com/qq_45806499/article/details/141282404</guid><author>qq_45806499</author><pubDate>Tue, 20 Aug 2024 16:54:17 +0800</pubDate><description><![CDATA[中断就是当软件或者硬件需要使用 CPU 时引发的 事件（event），通过APIC来处理中断请求。当一个中断发生时，操作系统必须确保下面的步骤顺序：内核必须暂停执行当前进程(取代当前的任务)；内核必须搜索中断处理程序并且转交控制权(执行中断处理程序)；中断处理程序结束之后，被中断的进程能够恢复执行。每个中断处理程序的地址都保存在中断描述符表（Interrupt Descriptor Table, IDT）中。]]></description><category></category></item></channel></rss>