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");

运行结果

相关文章
|
16天前
|
人工智能 安全 Linux
|
19天前
|
调度 开发者
核心概念解析:进程与线程的对比分析
在操作系统和计算机编程领域,进程和线程是两个基本而核心的概念。它们是程序执行和资源管理的基础,但它们之间存在显著的差异。本文将深入探讨进程与线程的区别,并分析它们在现代软件开发中的应用和重要性。
38 4
|
1月前
|
运维 JavaScript jenkins
鸿蒙5.0版开发:分析CppCrash(进程崩溃)
在HarmonyOS 5.0中,CppCrash指C/C++运行时崩溃,常见原因包括空指针、数组越界等。系统提供基于posix信号机制的异常检测能力,生成详细日志辅助定位。本文详解CppCrash分析方法,涵盖异常检测、问题定位思路及案例分析。
50 4
|
1月前
|
运维 监控 JavaScript
鸿蒙next版开发:分析JS Crash(进程崩溃)
在HarmonyOS 5.0中,JS Crash指未处理的JavaScript异常导致应用意外退出。本文详细介绍如何分析JS Crash,包括异常捕获、日志分析和典型案例,帮助开发者定位问题、修复错误,提升应用稳定性。通过DevEco Studio收集日志,结合HiChecker工具,有效解决JS Crash问题。
50 4
|
23天前
|
缓存 算法 Linux
Linux内核中的调度策略优化分析####
本文深入探讨了Linux操作系统内核中调度策略的工作原理,分析了不同调度算法(如CFS、实时调度)在多核处理器环境下的性能表现,并提出了针对高并发场景下调度策略的优化建议。通过对比测试数据,展示了调度策略调整对于系统响应时间及吞吐量的影响,为系统管理员和开发者提供了性能调优的参考方向。 ####
|
3月前
|
NoSQL Linux Redis
linux安装单机版redis详细步骤,及python连接redis案例
这篇文章提供了在Linux系统中安装单机版Redis的详细步骤,并展示了如何配置Redis为systemctl启动,以及使用Python连接Redis进行数据操作的案例。
90 2
|
3月前
|
人工智能 监控 Shell
常用的 55 个 Linux Shell 脚本(包括基础案例、文件操作、实用工具、图形化、sed、gawk)
这篇文章提供了55个常用的Linux Shell脚本实例,涵盖基础案例、文件操作、实用工具、图形化界面及sed、gawk的使用。
755 2
|
3月前
|
Unix Linux 网络安全
python中连接linux好用的模块paramiko(附带案例)
该文章详细介绍了如何使用Python的Paramiko模块来连接Linux服务器,包括安装配置及通过密码或密钥进行身份验证的示例。
138 1
|
2月前
|
NoSQL Linux 程序员
进程管理与运行分析
进程管理与运行分析
26 0
|
2月前
|
存储 Linux
服务器数据恢复—Linux操作系统网站服务器数据恢复案例
服务器数据恢复环境: 一台linux操作系统网站服务器,该服务器上部署了几十个网站,使用一块SATA硬盘。 服务器故障&原因: 服务器在工作过程中突然宕机。管理员尝试重新启动服务器失败,于是将服务器上的硬盘拆下检测,发现很多坏扇区。联系当地的一家数据恢复公司处理,但是没有成功。
下一篇
DataWorks