操作系统第2次实验报告:创建进程

聂戴成

201821121012

计算1811

 

#include<stdio.h>
#include<sys/types.h>
#include<unistd.h>
int main(){
	pid_t fpid;
	int count=0;
	fpid=fork();
	if(fpid<0)
		printf("error int fork!");
	else if(fpid==0){
		printf("Child process,myprocess id is %d\n",getpid());
		count++;
	}
	else{
		printf("Parent proess,my process id is %d\n",getpid());
		count++;
		fpid=fork();
		if(fpid<0)
			printf("error int fork!");
		else if(fpid==0){
			printf("Child process,myprocess id is %d\n",getpid());
			count++;
		}
		else{
			printf("Parent proess,my process id is %d\n",getpid());
			count++;
		}
	}
	printf("Count: %d\n",count);
	sleep(300);
	return 0;
}

 

解读:

-ps ef:

 

操作系统第2次实验报告:创建进程

 操作系统第2次实验报告:创建进程

 

 

 UID:创建进程的用户

PID:系统分配给进程的数字ID

PID分配法:

  • 对于pid<300的情况值允许分配一次,不可再改变。也就是进程pid分配范围为(300, 32768);
  • 每个pid分配成功,便会把当前的pid设置到last_pid, 那么下次pid的分配便是从last_pid+1开始 往下查找。这就意味着当last_pid+1或者附近的进程,刚被杀并回收该pid,此时再创建新进程,很有可能会复用 pid.
作者:锐心凌志
链接:https://www.jianshu.com/p/9810b33d2b4e
来源:简书
 
因而PID是顺序+1的
 
PPID:父进程的PID
 
因而2,3个进程的PPID是1的PID
 
 C是进程的CPU占用率
因为进程被挂起了所以占用率为0
 
STIME是进程时的系统时间
 
TTY是终端名
pts是虚拟终端
/7代表是第七个虚拟终端
 
还有:
1、串行端口终端(/dev/ttySn)
2、伪终端(/dev/pty/)
3、控制终端(/dev/tty)
4、控制台终端(/dev/ttyn, /dev/console)
5、其他类型
 
TIME,表示进程执行起到现在总的CPU占用时间
 
CMD,表示启动这个进程的命令,它其实就是一个启动进程的命令
 
 
ps  -aux
操作系统第2次实验报告:创建进程

 

 操作系统第2次实验报告:创建进程

 

 %MEM表示内存占比

VSZ,如果一个程序完全驻留在内存中一共需要会用多少内存;

RSS,表示进程当前实际上占用了多少内存;

STAT,表示当前进程的状态,(S表示处于休眠状态,D表示不可终端的状态,Z表示僵尸进程,X表示死掉的进程);

因为三个进程都被挂起了所以是S,+表示在前台进程组

START,启动这个命令的时间点;

TIME,进程执行起到现在总的CPU占用时间;

COMMAND,表示启动这个进程的命令。

 

 疑问:为什么用不同的命令查看进程,进程的同一个属性有时用不同的字符来表示

 

操作系统第2次实验报告:创建进程

上一篇:ORacle数据库导入导出数据


下一篇:VMware Linux虚拟机连接不上网络