linux 系统调用时怎么知道当前上下文属于那个进程,linux – 编写系统调用来计算进程的上下文切换...
如果您的系统调用只应报告统计信息,则可以使用内核中已有的上下文切换计数代码.
struct rusage {
...
long ru_nvcsw; /* voluntary context switches */
long ru_nivcsw; /* involuntary context switches */
};
您可以通过运行来尝试:
$/usr/bin/time -v /bin/ls -R
....
Voluntary context switches: 1669
Involuntary context switches: 207
其中“/ bin / ls -R”是任何程序.
通过在内核源代码中搜索“struct rusage”,您可以在kernel / sys.c中找到更新rusage结构的this accumulate_thread_rusage.它从struct task_struct * t读取;字段t-> nvcsw;和t-> nivcsw;:
1477 static void accumulate_thread_rusage(struct task_struct *t,struct rusage *r)
1478 {
1479 r->ru_nvcsw += t->nvcsw; // <<=== here
1480 r->ru_nivcsw += t->nivcsw;
1481 r->ru_minflt += t->min_flt;
1482 r->ru_majflt += t->maj_flt;
然后你应该在kernel文件夹中搜索nvcsw和nivcsw来查找内核如何更新它们.
4124 if (likely(prev != next)) { // <= if we are switching between different tasks
4125 sched_info_switch(prev,next);
4126 perf_event_task_sched_out(prev,next);
4127
4128 rq->nr_switches++;
4129 rq->curr = next;
4130 ++*switch_count; // <= increment nvcsw or nivcsw via pointer
4131
4132 context_switch(rq,prev,next); /* unlocks the rq */
指针switch_count是同一文件的line 4091或line 4111.
linux 系统调用时怎么知道当前上下文属于那个进程,linux – 编写系统调用来计算进程的上下文切换...相关推荐
- linux字符界面忘记登录密码,个性化修改Linux登录时的字符界面
如果采用root账号登录编辑/etc/bashrc内容,那所有其他帐号登录都会提示相同的内容,如果想每个用户进行配置,那就去每个帐号的目录下去配置吧. 这里提供改一个文件所有帐号都能看到的个性显示内容 ...
- linux启动 profile,Linux 启动时profile、bashrc、~/.bash_profile、~/.bashrc、~/.bash_profile执行顺序以及文件说明...
Linux 启动时profile.bashrc.~/.bash_profile.~/.bashrc.~/.bash_profile执行顺序以及文件说明 一.执行顺序 登录linux时,/etc/pro ...
- 【Linux 内核】CFS 调度器 ③ ( 计算进程 “ 虚拟运行时间 “ )
文章目录 一.计算进程 " 虚拟运行时间 " 一.计算进程 " 虚拟运行时间 " 在上一篇博客 [Linux 内核]CFS 调度器 ② ( CFS 调度器 &q ...
- Linux内核设计与实现 总结笔记(第五章)系统调用
系统调用 内核提供了用户进程和内核交互的接口,使得应用程序可以受限制的访问硬件设备. 提供这些接口主要是为了保证系统稳定可靠,避免应用程序恣意妄行. 一.内核通信 系统调用在用户空间进程和硬件设备之间 ...
- Linux入门时必学文件处理个命令
Linux系统信息存放在文件里,文件与普通的公务文件类似.每个文件都有自己的名字.内容.存放地址及其它一些管理信息,如文件的用户.文件的大小等.文件可以是一封信.一个通讯录,或者是程序的源语句.程序的 ...
- 初步了解Linux strace 命令和跟踪进程产生的系统调用
strace strace常用来跟踪进程执行时的系统调用和所接收的信号. 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切 ...
- linux写时复制技术初探
COW技术初窥: 在Linux程序中,fork()会产生一个和父进程完全相同的子进程,但子进程在此后多会exec系统调用,出于效率考虑,linux中引入了"写时复制"技术,也就是只 ...
- Linux 写时复制机制原理
在 Linux 系统中,调用 fork 系统调用创建子进程时,并不会把父进程所有占用的内存页复制一份,而是与父进程共用相同的内存页,而当子进程或者父进程对内存页进行修改时才会进行复制 -- 这就是著名 ...
- Linux写时拷贝技术(copy-on-write)
COW技术初窥: 在Linux程序中,fork()会产生一个和父进程完全相同的子进程,但子进程在此后多会exec系统调用,出于效率考虑,linux中引入了"写时复制"技术,也就是只 ...
最新文章
- 序列拼接工具Bowtie使用说明
- Matlab | Matlab从入门到放弃(9)——浮点数取整
- 2017.9.19 禁忌 失败总结
- Servlet的生命周期和工作原理
- 彻底理解SVD奇异值分解(singular value decomposition)
- java ee 结构图,javaee体系结构图
- 计算机网络-应用层笔记
- Quartz 数据库表
- 加上华为mate30系列,9月还有5场新机发布会,你更期待哪场
- 英语作文《健康的重要性》
- 【Java】面向对象编程题
- 陶哲轩实分析 习题6.6.5
- mina自定义编解码
- Kafka入门经典教程
- java第一个代码Hello,World
- 跨平台长连接组件设计及可插拔改造
- Dirty Approach之无招胜有招
- 机器学习必备:2018年前20名Python人工智能和机器学习开源项目
- 四:es聚和函数Aggregations
- Uipath学习(1):Uipath变量及数据类型
热门文章
- SpringBoot 整合Redis 单机、哨兵、集群
- Linux Shell脚本专栏_批量主机远程执行命令脚本_08
- window下远程监控linux下tomcat的jvm
- html-文本框和单选框
- .class和getClass()的区别
- php mysql 地理位置_PHP MySql和地理位置
- 易商云页面认证失败是什么情况_Serverless 云原生框架 Malagu:认证与授权
- 5求的值c语言编辑,C语言中怎样求1+3+5~~~~~+9值并 – 手机爱问
- BugkuCTF-Crypto题你喜欢下棋吗
- java减治法深度优先查找_排序|减治法实现排序