
linux基础
文章平均质量分 72
wudongxu
这个作者很懒,什么都没留下…
展开
-
虚拟机linux上网
虚拟机使用NAT上网的配置以及Bridged方式原创 2011-02-28 18:59:00 · 1559 阅读 · 1 评论 -
linux调度器(三)——周期性调度器与CFS
注:这里并没有详细分析到每个内部函数,如果要了解这些细节的话,可以看后面的OTHER CFS CLASS API及CFS主要的内部函数。 周期性调度器在调度框架上由scheduler_tick完成:在每一个cpu的时钟周期都触发一次该函数调用,它更新运行队列的时钟及load,然后调用当前进程的调度器类的周期调度函数。 update_rq_clock(rq); /* 更新运行队列的时钟rq原创 2013-02-06 20:29:54 · 7402 阅读 · 0 评论 -
linux调度器(八)——实时调度与SMP
实时调度器类实时调度类有两类进程:循环进程SCHED_RR:循环进程有时间片,随着进程的运行时间会减少。当时间片用完时又将其置为初值,并将进程置于队列末尾。先进先出SCHED_FIFO:没有时间片调度,运行后可执行任意长时间直到自己放弃CPU。实际上两类进程在相同优先级队列上都是先进先出的,只是一个有时间片一个没有时间片。 现在实时进程的调度其实就是使用之前内核的O(1)原创 2013-02-06 20:42:45 · 9537 阅读 · 0 评论 -
linux调度器(九)——调度器的配置参数
调度器的配置参数/proc/sys/kernel/sched_min_granularity_ns(4000000ns):sysctl_sched_min_granularity,表示进程最少运行时间,防止频繁的切换,对于交互系统(如桌面),该值可以设置得较小,这样可以保证交互得到更快的响应(见周期调度器的check_preempt_tick过程)/proc/sys/kernel/sc原创 2013-02-06 20:44:45 · 22387 阅读 · 1 评论 -
linux调度器(十)——调度器/proc信息解读
注下面的时间或时刻都是从rq->clock中获得的,而这个值是由update_rq_clock底层cpu来更新的。并且很多信息是需要内核配置CONFIG_SCHEDSTATS才有。/proc//sched$cat /proc/28733/sched cpu_test (28733, #threads: 1)--------------------------原创 2013-02-06 20:46:16 · 24911 阅读 · 0 评论 -
linux调度器(六)——应用层理解CFS及组调度
上面我们介绍了CFS及组调度相关的主要内容,但可能很多人还跟我一样有点云里雾里的,下面我们直接从应用层面上也查看CFS及组调度的效果。首先对于非组调度,决定它们运行时间的唯一因素就是weight,也就是我们知道的nice,我们可以通过renice来重新调整进程的优先级,然后再使用taskset将它们限定在同一个CPU上(CFS只是保证一个CPU的公平,所以你可以看到一个有趣的现象:如指定两个进程的原创 2013-02-06 20:38:57 · 9820 阅读 · 1 评论 -
linux调度器(一)——概述
本次分析的kernel代码为2.6.32-220。并且我们先不考虑SMP。当前linux的调度程序由两个调度器组成:主调度器,周期性调度器(两者又统称为核心调度器);并且每个调度器包括两个内容:调度框架(其实质就是两个函数框架)及调度器类。调度器类是实现了不同调度策略的实例,如 CFS、RT class。它们的关系如下图:图 调度器的组成当前的内核支持两种调度器类(sched_se原创 2013-02-06 14:08:06 · 17941 阅读 · 0 评论 -
linux调度器(二)——CFS模型
本系列文章阅读的core是:2.6.32-220这里使用“模型”而不是“算法”是因为这东西实在不好用算法描述(但是它却运行得很好,包括性能)。 核心思想: 把CPU总时间按运行队列的所有se的权重分配给每个se。每个se使用cpu的顺序由它们已使用的cpu虚拟时间(vruntime)决定的,已使用的虚拟时间越少,它在运行队列的位置越靠左,那么它再次被调度执行的概率也就越高。原创 2013-02-06 20:23:30 · 7785 阅读 · 0 评论 -
linux调度器(四)——主调度器与CFS
当内核从系统调用返回,或者从中断处理程序返回,内核都会检查当前进程是否设置了TIF_NEED_RESCHED标志;或者进程主动放弃CPU时(sched_yield,sleep或者收到SIGSTOP,SIGTTOP信号)都会进入主调度器。同样的我们先看一下主调度的框架部分,该部分就是sched.c:schedule(void):关闭内核抢占如果进程之前是不可运行并且被内核抢占了,那么如果它现原创 2013-02-06 20:33:44 · 6884 阅读 · 1 评论 -
使用systemtap获得内核函数的局部变量
使用systemtap获得内核局部变量 这两天在看内核的cgroup源码,就想着通过某个工具来获得一些调试信息如bt,参数返回值等,像在调试应用程序一样使用gdb来获得这些信息。所以就有了对systemtap的真正实践。注:我测试的机器使用的内核是:2.6.32-220.23.1.tb704.el6.x86_64(这是我们公司的内核),我看的源码是http://www.ke原创 2012-12-28 17:26:48 · 9377 阅读 · 1 评论 -
cgroup学习(八)——CPUSET子系统
对于CPUSET子系统我们主要解释对cpuset.cpus的操作。Read操作根据《cgroup学习(三)——伪文件》可以很容易的跟踪到代码,并解读,所以我们这里就不赘述,直接解释write及attach操作。首先我们看一下write操作的bt(使用systemtap见《使用systemtap获得内核函数的局部变量》):sudo sh -c "echo 0-3 > cpuset.cpus"1原创 2013-01-09 18:23:57 · 10420 阅读 · 0 评论 -
linux内存保护机制及进程间通信原理
本文简单地介绍了Linux内存保护的原理及进程间通信的本质原创 2011-03-07 20:33:00 · 6127 阅读 · 0 评论 -
【转】Linux 的多线程编程的高效开发经验
linux多线程开发,递归锁,条件变量,绝对时间转载 2011-03-13 22:32:00 · 1183 阅读 · 0 评论 -
Linux文件系统学习(二)之重要数据结构
超级块 索引节点 目录项 file对象原创 2011-05-21 19:16:00 · 4900 阅读 · 0 评论 -
Linux文件系统学习(一)之相关概念
linux文件系统 vfs原创 2011-05-21 19:09:00 · 1937 阅读 · 0 评论 -
Linux文件系统学习(三)之结构关系
file_system_type、vfsmonut、super_block关系file、dentry、inode关系原创 2011-05-21 19:30:00 · 2488 阅读 · 1 评论 -
转:linux gcc 编译时头文件和库文件搜索路径
转自:http://blog.csdn.net/rlj021/archive/2008/12/16/3530939.aspx一、头文件 gcc 在编译时寻找所需要的头文件 : ※搜寻会从-I开始 ※然后找gcc的环境变量 C_INCLUDE_转载 2011-09-16 20:25:08 · 238 阅读 · 0 评论 -
【转】Linux各种信号
通过kill -l命令可以查看信号对应的数字值 SIGHUP 终止进程 终端线路挂断SIGINT 终止进程 中断进程 Ctrl-CSIGQUIT 建立CORE文件终止进程,并且生成core文件SIGILL 建立CORE文件 非法指令SIGTRAP 建立CORE文件 跟踪自陷SIGBUS 建立CORE文件转载 2011-04-09 12:59:00 · 1218 阅读 · 0 评论 -
rpm包的制作及动态库问题
rpm包的制作概要rpm:Redhat Package Manager,是一种二进制的文件,安装(称解压可能更合适,只是它还包括一些数据库的操作,判断依赖关系等)后可以直接运行的软件包,所以它们是平台相关的,即与体系结构操作系统完全一一对应的软件包。本文档主要从以下几个方面进行介绍:l rpm的简单使用命令l rpm包的制作流程l 无法找到动态库分析l rpm包原创 2011-09-23 16:59:54 · 8500 阅读 · 0 评论 -
cgroup学习(七)——cpu子系统
CPU子系统 对于CPU子系统最常见的参数就是cpu.shares,我们来通过《cgroup学习(三)——伪文件》的表格来跟踪一下对该参数的读写操作。 通过systemtap我们可以看到读的bt:(cat cpu.shares)2327 (cat) cpu_shares_read_u64 call trace: 0xffffffff8104d0a0 : c原创 2013-01-06 21:01:48 · 8113 阅读 · 0 评论 -
linux调度器(五)——进程管理与CFS
进程调度初始化 由于该过程涉及到进程的管理模块,这个模块的详细过程我们将在以后的机会介绍,所以这里,我们主要扣出与调度相关的内容。进程的创建内核入口为do_fork,首先我们简单的看一下它的主要行为:图 do_fork与CFS的交互 上图我们只是画了do_fork最普通的fork操作,及正常的启动状态,上面的三个sched_class函数调用就是原创 2013-02-06 20:36:24 · 7104 阅读 · 0 评论