2019年3月6日

摘要: 一、问题的引出 在执行modprobe 的时候,发现oprofile这个动态模块可以在加载时指定参数,强制使用timer=1来让内核使用定时器方式来进行系统的监控。从常识上来说,这个timer参数肯定不是在用户态解析出来的,因为模块加载毕竟是一个模块特有的框架性东西,不可能在用户态做专门出来,所以就 阅读全文
posted @ 2019-03-06 20:29 tsecer 阅读(664) 评论(0) 推荐(0) 编辑
摘要: 一、引入 OProfile是Linux下性能检测的重要工具,对于系统的优化和评估有意义。例如我们的某一个单板发现CPU利用率很低,也就是真正的工作任务执行的时间不长,所以我们要分析一下系统中是哪些任务占用了大量的CPU时间,此时就需要使用OProfile工具了。 二、原理 现在大部分的CPU都在硬件 阅读全文
posted @ 2019-03-06 20:27 tsecer 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 一、起因 使用busybox制作了一个cpio.gz的文件系统,然后使用这个文件系统作为qemu的启动盘进行启动,最后发现可以识别出是一个cpio文件系统,但是到最后还是出现了panic,说是找不到文件系统。大致的错误类型为"VFS: Cannot open root device \" …… pa 阅读全文
posted @ 2019-03-06 20:26 tsecer 阅读(650) 评论(0) 推荐(0) 编辑
摘要: 一、0号和1号进程 通俗的讲,0号进程就是以start_kernel为入口的一个任务,也就是内核本身,这个任务的task_struct结构就是我们在编译的时候静态初始化的init_task结构,这个结构的位置和地址在可执行文件生成的时候就已经确定,其中的大部分成员都按照所需进行了初始化。 1号任务就 阅读全文
posted @ 2019-03-06 20:25 tsecer 阅读(4955) 评论(0) 推荐(0) 编辑
摘要: 一、解决问题和适用范围 主要是用来等待一个条件,这个条件可能需要另一个线程来满足这个条件。这个和我们平常适用的pthread_mutex_lock的最大不同在于后者保护的一般是一个代码段(也就是关键区),或者一个变量,但是由于一般来说这个变量的访问是在一个关键区中,所以可以认为是一个关键区。 但是对 阅读全文
posted @ 2019-03-06 20:23 tsecer 阅读(436) 评论(0) 推荐(0) 编辑
摘要: 一、问题 在看nanosleep的时候,看到这个函数返回的错误码是-ERESTART_RESTARTBLOCK,所以就比较好奇的看了这个地方的代码,然后看到是在do_signal和handle_signal函数中判断了这些错误码的意义。然后就看一下它们具体的意义。 二、信号的发送 sys_kill( 阅读全文
posted @ 2019-03-06 20:22 tsecer 阅读(1253) 评论(0) 推荐(0) 编辑
摘要: 一、目的和背景 这种实现的方法,就是在一个理想的时间段内,所有的进程都应该获得一次调度的执行机会(但是执行的时间可能要根据优先级不同,由于非实时任务的优先级static_priority只能通过nice修改,所以nice是修改非实时任务优先级的一个基本方法)。这样的好处是“不患寡而患不均”,即使CP 阅读全文
posted @ 2019-03-06 20:20 tsecer 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 一、分层 分层就是一个层尽量的承担比较小的功能,一个层只完成自己的功能,这样的通用性会比较好。当然,如果只是完成一个功能,那么可以同时把所有的功能都在一层实现,这样对某个功能或者协议来说是比较方便的,但是从维护和使用起来就比较混乱。 TCP提供的机制包括 可靠传输 和 流量控制。这两个功能是TCP的 阅读全文
posted @ 2019-03-06 20:20 tsecer 阅读(1334) 评论(0) 推荐(0) 编辑
摘要: 一、内核中路由表 在ip_rt_init函数中,初始化了一个缓冲结构: if (!rt_hash_table) panic("Failed to allocate IP route cache hash table\n"); 注意:这个并不是内核中我们创建的静态路由表,这个静态路由表是我们通过 ip 阅读全文
posted @ 2019-03-06 20:18 tsecer 阅读(549) 评论(0) 推荐(0) 编辑
摘要: 一、问题 当我们希望一个套接口能够接收到一个主机上所有网卡上收到的某个端口的数据的报文的时候,我们一般给bind传递的地址是 /* Address to accept any incoming messages. */#define INADDR_ANY ((unsigned long int) 0 阅读全文
posted @ 2019-03-06 20:16 tsecer 阅读(299) 评论(0) 推荐(0) 编辑

导航