当前位置:网站首页 > 日常百科 > 正文

Linux启动进程的方法有哪些?

作者:king发布时间:2024-02-03分类:日常百科浏览:34


导读:今天哈哈社小编给各位讲解下方法的进程的意思,也会对Linux启动进程的方法有哪些?(linux启动进程的方法有哪些选项)进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现...
今天哈哈社小编给各位讲解下方法的进程的意思,也会对Linux启动进程的方法有哪些?(linux启动进程的方法有哪些选项)进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在我们开始吧! Linux启动进程的方法有哪些?有手动启动和调度启动两种方法,其中调度启动常用的命令为at、batch和crontab. 希赛里看来的资料,希望对你有帮助!先来先服务调度算法。 优先级调度算法。 短作业优先调度算法 轮转调度算法 响应比高优先调度算法Linux启动进程的方法有哪些?你试一下


#include
//using namespace std;
#define MAX 10
struct task_struct
{
char name[10]; /*进程名称*/
int number; /*进程编号*/
float come_time; /*到达时间*/
float run_begin_time; /*开始运行时间*/
float run_time; /*运行时间*/
float run_end_time; /*运行结束时间*/
int priority; /*优先级*/
int order; /*运行次序*/
int run_flag; /*调度标志*/
}tasks[MAX];
int counter; /*实际进程个数*/
int fcfs(); /*先来先服务*/
int ps(); /*优先级调度*/
int sjf(); /*短作业优先*/
int hrrn(); /*响应比高优先*/
int pinput(); /*进程参数输入*/
int poutput(); /*调度结果输出*/

void main()
{ int option;
pinput();
printf("请选择调度算法(0~4):\n");
printf("1.先来先服务\n");
printf("2.优先级调度\n");
printf(" 3.短作业优先\n");
printf(" 4.响应比高优先\n");
printf(" 0.退出\n");
scanf("%d",&option);
switch (option)
{case 0:
printf("运行结束。\n");
break;
case 1:
printf("对进程按先来先服务调度。\n\n");
fcfs();
poutput();
break;
case 2:
printf("对进程按优先级调度。\n\n");
ps();
poutput();
break;
case 3:
printf("对进程按短作业优先调度。\n\n");
sjf();
poutput();
break;
case 4:
printf("对进程按响应比高优先调度。\n\n");
hrrn();
poutput();
break;
}
}
int fcfs() /*先来先服务*/
{
float time_temp=0;
inti;
intnumber_schedul;
time_temp=tasks[0]****e_time;
for(i=0;i<counter;i++)
{
tasks[i].run_begin_time=time_temp;
tasks[i].run_end_time=tasks[i].run_begin_time+tasks[i].run_time;
tasks[i].run_flag=1;
time_temp=tasks[i].run_end_time;
number_schedul=i;
tasks[number_schedul].order=i+1;
}
return 0;
}

int ps() /*优先级调度*/
{
float temp_time=0;
inti=0,j;
intnumber_schedul,temp_counter;
intmax_priority;
max_priority=tasks[i].priority;
j=1;
while((j<counter)&&(tasks[i]****e_time==tasks[j]****e_time))
{
if (tasks[j].priority>tasks[i].priority)
{
max_priority=tasks[j].priority;
i=j;
}
j++;
} /*查找第一个被调度的进程*/
/*对第一个被调度的进程求相应的参数*/
number_schedul=i;
tasks[number_schedul].run_begin_time=tasks[number_schedul]****e_time;
tasks[number_schedul].run_end_time=tasks[number_schedul].run_begin_time+tasks[number_schedul].run_time;
tasks[number_schedul].run_flag=1;
temp_time=tasks[number_schedul].run_end_time;
tasks[number_schedul].order=1;
temp_counter=1;
while (temp_counter<counter)
{
max_priority=0;
for(j=0;j<counter;j++)
{if((tasks[j]****e_time<=temp_time)&&(!tasks[j].run_flag))
if (tasks[j].priority>max_priority)
{
max_priority=tasks[j].priority;
number_schedul=j;
}
} /*查找下一个被调度的进程*/
/*对找到的下一个被调度的进程求相应的参数*/
tasks[number_schedul].run_begin_time=temp_time;
tasks[number_schedul].run_end_time=tasks[number_schedul].run_begin_time+tasks[number_schedul].run_time;
tasks[number_schedul].run_flag=1;
temp_time=tasks[number_schedul].run_end_time;
temp_counter++;
tasks[number_schedul].order=temp_counter;

}return 0;
}

int sjf() /*短作业优先*/
{
float temp_time=0;
inti=0,j;
intnumber_schedul,temp_counter;
float run_time;
run_time=tasks[i].run_time;
j=1;
while((j<counter)&&(tasks[i]****e_time==tasks[j]****e_time))
{
if (tasks[j].run_time<tasks[i].run_time)
{
run_time=tasks[j].run_time;
i=j;
}
j++;
} /*查找第一个被调度的进程*/
/*对第一个被调度的进程求相应的参数*/
number_schedul=i;
tasks[number_schedul].run_begin_time=tasks[number_schedul]****e_time;
tasks[number_schedul].run_end_time=tasks[number_schedul].run_begin_time+tasks[number_schedul].run_time;
tasks[number_schedul].run_flag=1;
temp_time=tasks[number_schedul].run_end_time;
tasks[number_schedul].order=1;
temp_counter=1;
while (temp_counter<counter)
{
for(j=0;j<counter;j++)
{
if((tasks[j]****e_time<=temp_time)&&(!tasks[j].run_flag))
{run_time=tasks[j].run_time;number_schedul=j;break;}
}

for(j=0;j<counter;j++)
{if((tasks[j]****e_time<=temp_time)&&(!tasks[j].run_flag))
if(tasks[j].run_time<run_time)
{run_time=tasks[j].run_time;
number_schedul=j;
}
}
/*查找下一个被调度的进程*/
/*对找到的下一个被调度的进程求相应的参数*/
tasks[number_schedul].run_begin_time=temp_time;
tasks[number_schedul].run_end_time=tasks[number_schedul].run_begin_time+tasks[number_schedul].run_time;
tasks[number_schedul].run_flag=1;
temp_time=tasks[number_schedul].run_end_time;
temp_counter++;
tasks[number_schedul].order=temp_counter;
}return 0;
}

int hrrn() /*响应比高优先*/
{ int j,number_schedul,temp_counter;
float temp_time,respond_rate,max_respond_rate;
/*第一个进程被调度*/
tasks[0].run_begin_time=tasks[0]****e_time;
tasks[0].run_end_time=tasks[0].run_begin_time+tasks[0].run_time;
temp_time=tasks[0].run_end_time;
tasks[0].run_flag=1;
tasks[0].order=1;
temp_counter=1;
/*调度其他进程*/
while(temp_counter<counter)
{
max_respond_rate=0;
for(j=1;j<counter;j++)
{
if((tasks[j]****e_time<=temp_time)&&(!tasks[j].run_flag))
{respond_rate=(temp_time-tasks[j]****e_time)/tasks[j].run_time;
if (respond_rate>max_respond_rate)
{
max_respond_rate=respond_rate;
number_schedul=j;
}
}
} /*找响应比高的进程*/
tasks[number_schedul].run_begin_time=temp_time;
tasks[number_schedul].run_end_time=tasks[number_schedul].run_begin_time+tasks[number_schedul].run_time;
temp_time=tasks[number_schedul].run_end_time;
tasks[number_schedul].run_flag=1;
temp_counter+=1;
tasks[number_schedul].order=temp_counter;
}
return 0;
}
int pinput() /*进程参数输入*/
{ int i;
printf("please input the processcounter:\n");
scanf("%d",&counter);

for(i=0;i<counter;i++)
{printf("******************************************\n");
printf("please input the process of %d th :\n",i+1);
printf("please input the name:\n");
scanf("%s",tasks[i].name);
printf("please input the number:\n");
scanf("%d",&tasks[i].number);
printf("please input the come_time:\n");
scanf("%f",&tasks[i]****e_time);
printf("please input the run_time:\n");
scanf("%f",&tasks[i].run_time);
printf("please input the priority:\n");
scanf("%d",&tasks[i].priority);
tasks[i].run_begin_time=0;
tasks[i].run_end_time=0;
tasks[i].order=0;
tasks[i].run_flag=0;
}
return 0;
}
int poutput() /*调度结果输出*/
{
int i;
float turn_round_time=0,f1,w=0;
printf("name number come_time run_timerun_begin_time run_end_time priority order turn_round_time\n");
for(i=0;i<counter;i++)
{
f1=tasks[i].run_end_time-tasks[i]****e_time;
turn_round_time+=f1;
w+=(f1/tasks[i].run_time);
printf(" %s, %d, %5.3f, %5.3f, %5.3f, %5.3f, %d, %d,%5.3f\n",tasks[i].name,tasks[i].number,tasks[i]****e_time,tasks[i].run_time,tasks[i].run_begin_time,tasks[i].run_end_time,tasks[i].priority,tasks[i].order,f1);
}
printf("average_turn_round_timer=%5.2f\n",turn_round_time/counter);
printf("weight_average_turn_round_timer=%5.2f\n",w/counter);
return 0;
}计算机的发展历史linux查看进程的方法有几种linux查看进程方法:
1. top 命令
top命令查看系统的资源状况
load average表示在过去的一段时间内有多少个进程企图独占CPU
zombie 进程
:不是异常情况。一个进程从创建到结束在最后那一段时间遍是僵尸。留在内存中等待父进程取的东西便是僵尸。任何程序都有僵尸状态,它占用一点内存资源,仅
仅是表象而已不必害怕。如果程序有问题有机会遇见,解决大批量僵尸简单有效的办法是重起。kill是无任何效果的stop模式:与sleep进程应区
别,sleep会主动放弃cpu,而stop是被动放弃cpu ,例单步跟踪,stop(暂停)的进程是无法自己回到运行状态的。
cpu states:
nice:让出百分比irq:中断处理占用
idle:空间占用百分比 iowait:输入输出等待(如果它很大说明外存有瓶颈,需要升级硬盘(SCSI))
Mem:内存情况
设计思想:把资源省下来不用便是浪费,如添加内存后free值会不变,buff值会增大。 判断物理内存够不够,看交换分区的使用状态。
交互命令:
[Space]立即刷新显示
[h]显示帮助屏幕
[k] 杀死某进程。你会被提示输入进程 ID 以及要发送给它的信号。 一般的终止进程可以使用15信号;如果不能正常结束那就使用信号9强制结束该进程。默认值是信号15。在安全模式中此命令被屏蔽。
[n] 改变显示的进程数量。你会被提示输入数量。
[u] 按用户排序。
[M] 按内存用量排序。
[o][O] 改变显示项目的顺序。
[P] 根据CPU使用百分比大小进行排序。
[T] 根据时间/累计时间进行排序。
[Ctrl+L] 擦除并且重写屏幕。
[q] 退出程序。
[r] 重新安排一个进程的优先级别。系统提示用户输入需要改变的进程PID以及需要设置的进程优先级值。输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权。默认值是10。
[S] 切换到累计模式。
[s] 改变两次刷新之间的延迟时间。系统将提示用户输入新的时间,单位为s。如果有小数,就换算成m
s。输入0值则系统将不断刷新,默认值是5
s。需要注意的是如果设置太小的时间,很可能会引起不断刷新,从而根本来不及看清显示的情况,而且系统负载也会大大增加。
缩写含义:
PID每个进程的ID
USER进程所有者的用户名
PRI每个进程的优先级别
NI每个优先级的值
SIZE 进程的代码大小加上数据大小再加上堆栈空间大小的总数,单位是KB RSS 进程占用的物理内存的总数量,单位是KB
SHARE进程使用共享内存的数量
STAT 进程的状态。其中S代表休眠状态;D代表不可中断的休眠状态;R代表运行状态;Z代表僵死状态;T代表停止或跟踪状态
%CPU进程自最近一次刷新以来所占用的CPU时间和总时间的百分比
%MEM进程占用的物理内存占总内存的百分比
TIME进程自启动以来所占用的总CPU时间
CPU CPU标识
COMMAND进程的命令名称
2. ps命令
ps查看当前用户的活动进程,如果加上参数可以显示更多的信息,如-a,显示所有用户的进程
ps ax :tty值为“?”是守护进程,叫deamon 无终端,大多系统服务是此进程,内核态进程是看不到的
ps axf :看进程树,以树形方式现实进程列表敲 ,init是1号进程,系统所有进程都是它派生的,杀不掉
ps axm :会把线程列出来。在linux下进程和线程是统一的,是轻量级进程的两种方式。
ps axu :显示进程的详细状态。
vsz:说此进程一共占用了多大物理内存。
rss:请求常驻内存多少如何强制关闭进程强制关闭进程- -


网上有很多关进程的小软件,但其实Windows自带的工具已经够用。
在命令提示符下,tasklist可以列出当前运行的所有进程名称、PID以及内存占用量。
而ntsd命令就可以强制关闭进程:ntsd -c q -p PID。
tskill命令也可以:tskill PID/PNAME。其中PNAME是希望关闭的进程名称,不加扩展名的。
此外,PID还可以在任务管理其中通过选择列察看。




强制关闭进程命令
有时候由于操作不当,造成某个程序长时间无响应无法关闭,从而无法打开新的实例,很浪费时间。我们可以利用windows自带的命令强壮制关闭该程序的进程,从而达到关闭程序的目地。

方法如下:

一、打开“运行”,输入CMD,打开一个模拟的DOS窗口。

二、输入ntsd -c q -p Pid

其中Pid所要关闭的程序的进程数,WINDOWSXP下查看方法为,打开任务管理器->查看-->选择列-->勾选PID,确定。此时在进程后面就有了该进程的PID值.Linux中启动进程的方法有哪些?哪种更好用?Linux手工启动进程手工启动进程指的是由用户输入命令直接启动一个进程,根据所启动的进程类型和性质不同,又细分为前台启动和后台启动两种。前台启动进程这是手工启动进程最常用的方式,因为当时输入一个命令并运行,就已经启动了一个进程,而且是一个前台的进程,此时系统其实已经处于一个多进程的状态,一个是shell进程,另一个是新启动的进程。实际上,系统自动时就有许多进程悄悄地在后台运行,不过为了方便阅读,并没有将这些进程包括在内。假如启动一个比较耗时的进程,然后再把该进程挂起,并使用ps命令查看,就会看到该进程在PS显示列表中。将进程挂起,指的是将前台运行的进程放到后台,并且暂停其运行。后台启动进程进程直接从后台运行,用的相对比较少,除非该进程非常耗时,且用户也不急着需要其运行结果的时候,例如,用户需要启动一个需要长时间运行的格式化文本文件的进程,为了不使整个shell在格式化过程中都处于被占用状态,从后台启动这个进程是比较明智的选择。从后台启动进程,其实就是在命令结尾处添加一个&符号。输入命令并运行之后,shell会提供给我们一个数字,此数字就是该进程的进程号。然后直接就会出现提示符,用户就可以继续完成其他工作。手工启动的2种方式,实际上它们有个共同的特点,就是新进程都是由当前shell这个进程产生的,换句话说,是shell创建了新进程,于是称这种关系为进程间的父子关系,其中shell是父进程,新进程是子进程。且一个父进程可以有多个子进程,通常子进程结束后才能继续父进程;当然,如果是从后台启动,父进程就不用等待子进程了。Linux调度启动进程在Linux系统中,任务可以被配置在指定的时间、日期或者系统平均负载量低于指定值时自动启动。例如,Linux预配置了重要系统任务的运行,以便可以使系统能够实时被更新,系统管理员也可以使用自动化的任务来定期对重要数据进行备份。实现调度启动进程的方法有很多,比如通过crontab、cat等命令。如何查看进程看您主要会用哪些辅助工具或者说安全类产品了.经典一些推荐 IceSword ... 最近几年功能强大.名声比较好的推荐SREng1.没有任何辅助工具的话.用系统的 Ctrl+Alt+Del 组合键调出 Windows任务管理器.点击进程.右键》属性看文件夹基本就都能知道了.(当然做得比较好的病毒木马后门啥的用这个就别想看出端倪了)2.我自己用 Comodo Firewall 点击D+.直接就能看到大部分需要的信息了.3.国内好像用360的也不少.那个也带有进程查看吧.具体功能就不清楚了.4.SREng工具.能扫描和看到一切你想和不想看到的...主要是进程.文件.注册表.还有非常多的小功能.推荐具有一定安全知识或系统开发相关人士使用...5.国内有个安全论坛叫 kafan 卡饭. 有个工具区.里面经常有一些类似的工具.都是非常不错的.如何解决Win8任务管理器关闭进程时提示拒绝访问方法/步骤


1、按“Windows +X”组合键,选择进入“运行”;

2、输入“msconfig”(不包括引号,可直接复制),按回车键;

3、进入“系统配置”,选择“服务”,勾选左下角“隐藏所有Microsoft服务“

4、再点击”全部禁用“,点击”应用“;

5、 再点击“服务“边上的”启动“选项,点击”打开任务管理器“;

6、在列出的启动项上,点击右键,选择“禁用“,禁用全部启动项;

7、关闭“任务管理器“,再”系统配置“界面下点击”确定“,根据提示重启电脑。哈哈社推荐内容:加入黑名单能看到微信号吗穿什么颜色的内裤能走运?穿什么颜色的内裤能走运我的理想作文(科学家)400字汽油缸内直喷抖音的张同学是谁?泡脚桶哪个品牌质量好钢化膜上会有划痕吗如何判断一个化学反应的熵变△S是大于0还是小于0如何挑选质量好的陶瓷餐具?哪个品牌比较好?迈锐宝汽车胎压多少正常学生半夜翻墙头被电到,班主任应负什么责任张伯伦是怎么死的?