时间:2022-12-23 17:36编辑:九州下载来源:www.wzjsgs.com
top中的TIME+表示的就是进程或线程使用的CPU时间.
比如进程的TIME+的值为12:34.56表示进程累计使用的CPU时间为12分钟34.56秒.
另外,time也可以用来计算程序运行消耗的时间.
因为sleep调用不会消耗CPU时间,所以real并不能反映程序使用的CPU时间.
个人认为程序在用户空间和内核空间的耗时之和(user+sys)约等于程序使用的CPU时间.
代码示例:
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#define READ_TERMINAL 0
#define WRITE_TERMINAL 1
int main() {
int file_descriptors;
pid_t pid_f;
char PipeBuf={‘a’,‘0’};
int read_ret=0;
pipe(file_descriptors);
pid_f=fork();
if (pid_f<0)
{
printf(“fork error!n”);
exit(1);
}
else if (pid_f==0)
{
//子进程向父进程发一则消息
printf(“Write in Pipe To FatherProcess!n”);
close(file_descriptors);
sleep(1);
write(file_descriptors,“Child Send”,sizeof(“Child Send”));
//open(file_descriptors);
}
else
{
//父进程接收(读取)消息
printf(“Read in Pipe From ChildProcess!n”);
//通过fcntl()修改为使得读管道数据具有非阻塞的特性
int flag=fcntl(file_descriptors,F_GETFL,0);
flag |= O_NONBLOCK;
if(fcntl(file_descriptors,F_SETFL,flag) < 0){
perror(“fcntl”);
exit(1);
}
close(file_descriptors);
read_ret=read(file_descriptors,PipeBuf,sizeof(PipeBuf));//没阻塞的读
printf(“Read Message are : %sn”,PipeBuf);
进程是已经被加载到内存的正在运行的程序,程序才是静态的
linux进程调度:
无论是在批处理系统还是分时系统中,用户进程数一般都多于处理机数、这将导致它们互相争夺处理机。
另外,系统进程也同样需要使用处理机。
这就要求进程调度程序按一定的策略,动态地把处理机分配给处于就绪队列中的某一个进程,以使之执行。
linux进程调度基本属性:
1.多态性 从诞生、运行,直至消灭
2.多个不同的进程可以包括相同的程序
3.三种基本状态 它们之间可进行转换
4.并发性并发执行的进程轮流占用处理器
linux进程调度原理:
调度程序运行时,要在所有可运行状态的进程中选择最值得运行的进程投入运行。
在每个进程的task_struct结构中有以下四项:policy、priority、counter、rt_priority。
这四项是选择进程的依据。
其中,policy是进程的调度策略,用来区分实时进程和普通进程,实时进程优先于普通进程运行;
priority是进程(包括实时和普通)的静态优先级;
counter是进程剩余的时间片,它的起始值就是priority的值;
由于counter在后面计算一个处于可运行状态的进程值得运行的程度goodness时起重要作用,因此,counter也可以看作是进程的动态优先级。
rt_priority是实时进程特有的,用于实时进程间的选择。
linux 下查看进程可以使用的命令:
1、ps命令查找与进程相关的PID号:
2、ps a 显示现行终端机下的所有程序,包括其他用户的程序。
3、ps -A 显示所有程序。
4、ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。
5、ps -e 此参数的效果和指定"A"参数相同。
6、ps e 列出程序时,显示每个程序所使用的环境变量。
7、ps f 用ASCII字符显示树状结构,表达程序间的相互关系。
8、ps -H 显示树状结构,表示程序间的相互关系。
9、ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。
10、ps s 采用程序信号的格式显示程序状况。
11、ps S 列出程序时,包括已中断的子程序资料。
12、ps -t<终端机编号> 指定终端机编号,并列出属于该终端机的程序的状况。
专业数据统计,95%的用户会因为[不安全]提示而放弃访问,从而给网站造成用户流失。问题就出在不安全的HTTP 明文传输协议上。2018年2月初,谷歌旗下Chrome浏览器宣布“封杀”HTTP协议的网站,并将这些网站标示为“Not Secure”(不安全)。
2023-03-03 21:141、do-while语句是一种后测试循环语句,即循环体中的代码执行后才会对退出条件进行求值。2、循环体内的代码至少执行一次。do-while的语法如下:do{ statement }while(expression)下面是一个例子:letxhs=0 do{ xhs+=2 }while(xhs<10)在上面的
2023-02-26 12:191、while语句是一种先测试循环语句,即先检测退出条件,再执行循环体内的代码。2、while循环体内的代码有可能不会执行。下面是 while 循环的语法:while(expression){ statement }实例leti=0 while(i<10){ i+=2 }在这个例子中,变量 xhs 从 0 开
2023-02-26 12:181、for语句也是先测试语句,只不过增加了进入循环之前的初始化代码.以及循环执行后要执行的表达式(loop-expression),语法如下:for(initialization;expression;loop-expression){ statement }下面是一个用例:letxhsLength=10 for(letxhs=0;xh
2023-02-26 12:17说明1、for-of语句是一种严格的迭代语句,用于遍历可迭代对象的元素。2、for-of循环将按照可迭代对象的next()方法产生值的顺序迭代元素。关于可迭代对象,请参考ES6系列的Iterator。如果尝试迭代的变量不支持迭代,for-of语句就会出错。语法:只
2023-02-26 12:16说明1、switch语句可用于所有的数据类型(在许多语言中,它只能用于数值),因此可以使用字符串甚至对象。2、条件值不一定是常量,或者是一个变量或者一个表达式。实例switch('helloxhsRookies'){ case'hello'+'xhsRookies&#
2023-02-26 12:15发布日期:2022-10-29人气:641
发布日期:2022-10-10人气:555
发布日期:2022-09-29人气:335
发布日期:2022-09-04人气:311
发布日期:2023-01-16人气:226
发布日期:2022-10-02人气:149
发布日期:2022-11-07人气:145