Linux源码阅读笔记09-进程NICE案例分析1

简介: Linux源码阅读笔记09-进程NICE案例分析1

task_nice

task_nice函数功能:获取某个进程的nice值,其中nice值为进程的优先级,与静态优先级有关(nice=static_prio-120)。

  • nice的取值范围:-20 ~ 19

内核源码

  • 根据内核的注释可以知道:task_nice返回一个整形,就是进程(任务)的优先级。前面几次的笔记也说过,nice的值越小则进程优先级越高。

使用示例

#include <linux/sched.h>
#include <linux/module.h>
#include <linux/pid.h>
#include <linux/kthread.h>
int MyThreadFunc(void* argc) {
  printk("Prompt:kernel thread function.\n");
  printk("Prompt:kernel thread function static_prio : %d.\n", current->static_prio);
  printk("Prompt:kernel thread function PID : %d.\n", current->pid);
  printk("Prompt:kernel thread function nice : %d.\n", task_nice(current));
  return 0;
}
static int __init TaskNiceFuncInit(void) {
  struct task_struct* new_task;
  int priority;
  new_task = kthread_create_on_node(MyThreadFunc, NULL, -1, "task_nice.c");
  wake_up_process(new_task);
  priority = task_nice(new_task);
  printk("Prompt:child thread PID : %d.\n", new_task->pid);
  printk("Prompt:child thread static_prio : %d.\n", priority);
  printk("Prompt:current thread PID : %d.\n", current->pid);
  printk("Prompt:current thread static_prio : %d.\n", current->static_prio);
  return 0;
}
static void __exit TaskNiceFuncExit(void) {
  printk("Prompt:exit kernel.\n");
}
module_init(TaskNiceFuncInit);
module_exit(TaskNiceFuncExit);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("lenn louis");

运行结果

相关文章
|
1月前
|
Ubuntu Linux Python
Tkinter错误笔记(一):tkinter.Button在linux下出现乱码
在Linux系统中,使用Tkinter库时可能会遇到中文显示乱码的问题,这通常是由于字体支持问题导致的,可以通过更换支持中文的字体来解决。
112 0
Tkinter错误笔记(一):tkinter.Button在linux下出现乱码
|
7天前
|
运维 JavaScript jenkins
鸿蒙5.0版开发:分析CppCrash(进程崩溃)
在HarmonyOS 5.0中,CppCrash指C/C++运行时崩溃,常见原因包括空指针、数组越界等。系统提供基于posix信号机制的异常检测能力,生成详细日志辅助定位。本文详解CppCrash分析方法,涵盖异常检测、问题定位思路及案例分析。
28 4
|
7天前
|
运维 监控 JavaScript
鸿蒙next版开发:分析JS Crash(进程崩溃)
在HarmonyOS 5.0中,JS Crash指未处理的JavaScript异常导致应用意外退出。本文详细介绍如何分析JS Crash,包括异常捕获、日志分析和典型案例,帮助开发者定位问题、修复错误,提升应用稳定性。通过DevEco Studio收集日志,结合HiChecker工具,有效解决JS Crash问题。
24 4
|
29天前
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
81 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
1月前
|
NoSQL Linux 程序员
进程管理与运行分析
进程管理与运行分析
23 0
|
2月前
|
并行计算 API 调度
探索Python中的并发编程:线程与进程的对比分析
【9月更文挑战第21天】本文深入探讨了Python中并发编程的核心概念,通过直观的代码示例和清晰的逻辑推理,引导读者理解线程与进程在解决并发问题时的不同应用场景。我们将从基础理论出发,逐步过渡到实际案例分析,旨在揭示Python并发模型的内在机制,并比较它们在执行效率、资源占用和适用场景方面的差异。文章不仅适合初学者构建并发编程的基础认识,同时也为有经验的开发者提供深度思考的视角。
|
3月前
|
Ubuntu Linux Shell
【linux】PetaLinux 2024.1安装笔记
【linux】PetaLinux 2024.1安装笔记
212 0
|
存储 Unix Linux
浅入分析Linux
Linux 操作系统必须完成的两个主要目的 与硬件部分交互, 为包含在硬件平台上的所有底层可编程部件提供服务 为运行在计算机系统上的应用程序(即所谓的用户空间)提供执行环境 一些操作系统运行所有的用户程序都直接与硬件部分进行交互, 比如典型的MS-DOS。
1002 0
|
3天前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
17 3
|
3天前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
15 2