linux之task_struct

每个进程中都有一个进程控制块--PCB。PCB--维护进程相关的信息。然而,linux内核的进程控制块就是task_struct结构体,它可以保存进程的信息。

所有运行在系统里的进程都以task_struct链表的形式存在内核里。

每个进程都将它的信息放在task_struct结构体中,既然它是一个结构体,那么它里边包含些什么内容呢?

》》

1.进程标识符:

pid:进程

ppid:父进程

ppid         pid




运行(R)的为父进程;僵死状态(Z)的为子进程。

2.进程状态:

常见的进程状态有:R(运行状态),S(可中断的休眠状态),D(不可中断的休眠状态),T(停止状态),t(暂停状态),

x(死亡状态),Z(僵死状态)

s:

3.进程优先级:

进程cpu资源分配的优先。进程的优先级的值越小,越早被执行。用PRI来表示。。

在这里,还有一个概念是NI

NI是不是优先级呢?当然不是啦。但是它是影响优先级变化的一个因素(nice(nice -n -5 +可执行程序名),renice(renice -5 -p +进程号))。公式这样来表示:PRI(new)=PRI(old)+nice。

nice的使用:

nice -n -5 +可执行程序  就可以改变它的优先级啦。

还是举个例子吧:









按照上面的步骤执行,最终就通过nice将它的优先级改变了哦。

当然你想改变它的优先级只需要调整nice的大小即可。





本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/382878.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言模拟实现标准库函数之memcpy()

memcpy() 1.如果我们需要对一个数组初始化,把数组的内容全部置0,那么能不能用strcpy() int main() {char arr1[10] { 0 };char arr2[10] " abcdefg ";strcpy(arr2, arr1);system("pause");return 0; } 我…

说说堆及堆排序

堆:是一种数组对象,它可以被看成是一种二叉树结构。 我们把堆的二叉树存储方式分为两种:即大堆和小堆。那么问题来了,什么大堆?什么是小堆? 大堆:让每个父节点的值都大于孩子节点的值。 小堆…

linux之父子进程的输出

首先,我们来回忆一下父进程与子进程,前几节讲了如何创建子进程,像这样的,pid_t id fork(); 这样我们就创建好了一个子进程,然而fork()函数的返回值是什么呢?这里要记住:子进程返回0&#xff0c…

linux---谈谈vfork和fork的区别及exit与return

fork():创建子进程的函数,是大家比较熟悉的吧。pid_t id fork(); 这里的vfork();也是创建子进程的函数。现在我们来剖析一下它们吧。 第一例: 先看一个fork()的例子哦。 对于fork()而言,创建子进程成功后直接打印出父子进程执…

C语言模拟实现标准库函数之qsort()

qsort 编译器函数库自带的快速排序函数。 void qsort(void*base,size_t num,size_t width,int(__cdecl*compare)(const void*,const void*)); 参数解释: void*base-待排序数组首地址size_t num-数组中待排序元素数量size_t width-各元素的占用空间大小int(__cde…

linux之管道

管道(PIPE)是linux中一个重要的通信方式,在进程中,我们通过从一个进程中读取到的数据转到另一个进程中的写数据中,这时就要有不同的进程之间共享同一份资源,就是所谓的进程间通信。由于进程的特点是资源独占…

linux之多线程(1)

我们之前讲了进程,今天我们重新认识另外一个概念---线程。我们首先会想到的是进程和线程有什么区别和联系,对吧?进程是由程序执行起来,跑在操作系统的,是系统进行资源分配和调度的基本单位。进程具有资源独占性&#x…

linux之睡眠函数(my_sleep)

我们在程序中,很多次用到sleep()函数,让它睡眠几秒后再执行该进程。今天呢,我要给大家实现一下sleep函数。 看看代码哦: 运行结果: 结果中每隔三秒钟,打印一条语句。实现了sleep(3)的功能。 关于sleep函数…

C语言 防止头文件被多次引用

comm.h和comm.c是公共模块。 test1.h和test1.c使用了公共模块。 test2.h和test2.c使用了了公共模块。 test.h和test.c使⽤用了了test1模块和test2模块。 这样最终程序中就会出现两份comm.h的内容。这样就造成了了文件内容的重复。 1.方法1 文件开头加上这一句就ok #prag…

详解强制类型转换

今天谈谈类型转换的问题吧,之前我们也遇到过类型转换,比如c语言中这样的赋值: 显然,i和j是不同类型的变量,但是却可以完成赋值,结果是这样的: 其实它们是做了隐式的类型转换,相当于&…

c++之类型萃取

刚刚我们接触过模板类,类似于这样的: 在这个类中,我们如何知道它是什么类型的呢?这里,我们可以在类中加入一个内嵌类型,如: 这样就可以知道它是用户自定义的还是本身类型就拥有的,我…

时间复杂度空间复杂度

我们编过不少代码,起初学习的时候我们习惯性的认为,只要代码能正确的运行就ok啦~很少考虑代码的优化带来的好处。今天说一下影响代码性能的两个重要指标--时间复杂度&空间复杂度。 时间复杂度:就是函数(指数学中的函数&#…

C语言 函数递归例题解析

1.接受一个整形值(无符号),把它转换为 字符并打印它模拟实现strlen()函数。3.求n的阶乘4.斐波那契数列总结 1.接受一个整形值(无符号),把它转换为 字符并打印它 void fun(int x) {if (x > 9){fun(x/10)…

剖析printf函数

printf是什么,对于起初学习c语言的同学来说肯定都特别的疑惑。在这里,解答一下:它是一个函数。既然是一个函数的话,想必肯定有返回值和参数吧。那么它的返回值和参数是什么呢? 1、看一下这个例子,可能更好…

大端小端详解

文章目录为什么有大端小端?大端:低位放在高地址,高位放在低地址小端:低位放在低地址,高位放在高地址面试考点:代码代码2一道面试题为什么有大端小端? 大端:低位放在高地址&#xff0…

详解volatile关键字

volatile字面意思&#xff1a;易变的。在计算机里&#xff0c;是防止优化的意思&#xff0c;然而是怎么防止优化的呢&#xff1f;待我一一道来哦。 先看这样一个例子&#xff1a; <span style"font-size:18px;">#include<iostream> using namespace std…

C语言 有符号字符型输出 面试题

1.第一题 int main() {int a 128;printf("%u\n", a);system("pause"); } 输出结果 128 #include <stdio.h> #include <stdlib.h>int main() {char a 128;printf("%u\n", a);system("pause"); } 输出结果 42949671…

有趣的链表相关题型

链表&#xff1a;也是线性表的一种。形象的来说&#xff1a; 就像火车的一个个车厢一样&#xff0c;一个个的链起来的。它有一个特点&#xff1a;它的头没有前驱&#xff0c;尾没有后继。 为什么会引入链表这个概念呢&#xff1f;之前我们知道的顺序表&#xff0c;是用数组的形…

有趣的约瑟夫环问题

大家有没有听过约瑟夫环这个问题呢&#xff1f;我们先来看看它是一个什么样的问题~ 约瑟夫环&#xff08;Josephus&#xff09;问题是由古罗马的史学家约瑟夫&#xff08;Flavius Josephus&#xff09;提出的。该问题的说法不一&#xff0c;传说他参加并记录了公元66—70年犹太…

一系列链表题

1、链表的倒序输出&#xff1a;(输出4&#xff0c;3&#xff0c;2&#xff0c;1)在这里&#xff0c;可以使用递归的方式&#xff1a; <span style"font-size:18px;">void Reverse(pNode pHead) {if(pHead){Reverse(pHead->next);cout<<pHead->data…