当前位置:文档之家› Linux课程设计进程控制

Linux课程设计进程控制

Linux课程设计进程控制
Linux课程设计进程控制

课程设计报告

课程名称Linux操作系统课程设计

指导教师张玲

起止日期2014-03-01 至2014-06-13

实验项目实验二进程控制

学院信息与通信工程学院

专业电子信息工程

学生姓名

班级/学号

成绩

指导老师签字

1. 课程设计概述

本次课设意在利用进程控制相关的系统调用编程进行进程控制实验,观察进程从创建、运行到终止的控制过程,加深对进程概念的理解。

1.1 课程设计的目的

本实验的目的是掌握进程的概念,理解进程的创建、执行、等待、终止的过程。熟悉有关进程控制的命令和系统调用,理解Shell 的工作原理。

1.2 课程设计的内容

1) 进程控制命令

● 使用进程控制命令ps ,kill 监视和控制进程的活动

2) 编程部分

● 用fork ,wait ,exec 系统调用编程实现进程控制;

● 编写一个简单的shell 。

1.3 设计原理

进程是一个其中运行着一个或多个线程的地址空间和这些线程所需要的系统资源。

构建的文件构架如图:

图1 实验目录树的结构 2012010948

exp2 exp1 exp3

vis vis2

2.实验步骤

2.1操作

2.1.1进程控制命令(在此终端窗口的操作截图见图1)

1.执行ps命令,查看bash进程的PID:

PID就是各进程的身份标识,程序一运行系统就会自动分配给进程一个独一无二的PID。进程中止后PID被系统回收。

2.在后台运行一个yes进程:

yes > /dev/null &

3.用ps -f命令观察yes进程的pid和ppid,用ps u命令观察yes进程的状态。

yes进程的父进程是哪个进程?通过查看yes程序的PPID可知其父进程为bash

4.根据命令名搜索特定的进程:

ps-ef|grep yes:

5.用kill命令杀掉yes进程:

kill 【PID】:

图1 进程控制命令

2.1.2进程控制系统调用(此部分操作截图见图2、3)

1.利用fork()和wait()来控制进程的执行:

?在exp2目录下编写一个程序fork_wait.c。该程序用fork创建了一个子进程,而后子进程先输出自己的信息,再睡眠10秒后结束。父进程等待子进程,收集到子进程结束信

息后输出信息,然后结束。

编译:gcc-o fork_wait fork_wait.c 运行:./fork_wait

?修改此程序,使父进程先睡眠一段时间,然后再收集(wait)子进程。重新编译并在后台运行该程序(./fork_wait &),在子进程已终止而父进程尚未收集它时,用ps u观

察子进程的僵尸状态。

在父进程分支的开始处调用函数sleep(40)睡眠40秒。用ps u可以看见一个Z

2.利用exec()置换程序的执行代码文件:

?在exp2目录下编写一个程序exec_test.c,使子进程执行另一个程序,如echo。

编译:gcc-o exec_test exec_test.c 运行:./exec_test

?修改程序exec_test.c,使子进程执行一个可持续运行一段时间命令,重新编译并在后台运行程序(./exec_test &),用ps -f 命令观察子进程执行的命令名CMD。

添加一句sleep 40。即:execl("/bin/sleep", "sleep", "40", NULL);

图2 进程控制系统调用-fork_wait

图2 进程控制系统调用-fork_wait

2.1.3Mini Shell编程(此部分操作截图见图4、5)

1.在exp2目录编写一个简单的shell程序—Mini Shell,它接收输入的命令并解释执行。

?Linux的命令分为内部命令和外部命令两种。内部命令由Shell程序自己实现,如cd、pwd等,外部命令是位于磁盘上(多数在/bin和/usr/bin目录下)的可执行程序。Mini Shell

只实现两个内部命令:pwd和quit(退出),它可执行所有不带选项和参数的外部命令,

如date、who、cal、ls等。

2.(选做1)修改Mini Shell程序,使它可执行只带一个命令选项或参数的命令行,如ls -a、

cat file、echo hello等。

?用strtok函数将读入的命令行cmd以空格为分隔符拆为两个字符串cmd1和cmd2:

cmd1=strtok(cmd," ");

cmd2=strtok(NULL," ");

此时的cmd1即为命令名,cmd2即为命令的选项或参数。判断cmd2,若为空则执行系

统调用execlp(cmd1, cmd1, NULL),否则执行execlp(cmd1, cmd1, cmd2, NULL)

3.(选做2)修改Mini Shell程序,可做任何你认为可以改进的修改,如界面、提示、处理输

入错误、增强功能等。

图4 Mini Shell编程-1

图5 Mini Shell-2

图6 Mini Shell-3

3.实验结论与评价

3.1进程控制命令

此部分操作较为简单,主要在帮助理解进程的概念和进程的PID,掌握基本的进程操作如ps kill 和后台运行一个程序等。通过这一部分的操作我了解到进程是什么,进程和程序有什么不一样,子进程和父进程之间的关系。

3.2进程控制系统调用

fork_wait是本次实验的第一个编程题,通过已经给好的代码我了解到了几个在Linux中常用的函数,如sleep(),getpid(),fork(),wait() 等,我更加清晰地在修改程序的过程中理解了子进程和父进程的关系,更重要的是我学会了通过简单函数来对进程进行控制。观察到了特殊的僵尸进程:僵尸进程(zombie)是指已终止运行,但尚未被清除的进程。

exec_test是本次试验的第二个编程题,这次学习到的函数是execl(),第一参数path字符指针所指向要执行的文件路径,接下来的参数代表执行该文件时传递的参数列表:argv[0],argv[1]... 最后一个参数用空指针NULL作结束。利用这个函数实现了用exec()置换程序的执行代码文件的功能。

3.3Mini Shell编程

这一部分的操作较为复杂,占用了实验的大部分时间。让我意识到我们的编程能力还有待提高,尤其是字符串、文件等部分。选作一的地方通过空格把命令名和参数分开分别执行,需要分清是应该先读命令再分开还是先分开再读命令,选作二我增添了几个Mini Shell内部命令,修改了界面。

4.程序清单

4.1fork_wait.c

#include

#include

#include

main()

{

int rid, cid;

printf("****fork-test by 2012010948****\n"); //将your-sid改为你的学号

rid = fork();

if ( rid < 0 ) printf("error in fork!");

else if ( rid == 0 ) { // 子进程

printf("I am child, my PID is %d. I will sleep a while.\n", getpid());

sleep(10); // 睡眠10秒

printf("I am down.\n");

}

else { // 父进程

//sleep(30); //睡眠30秒

cid=wait(NULL);

printf("I am parent, I caught a child with PID of %d.\n", cid);

}

exit(0);

}

}

4.2exec_test.c

#include

#include

#include

main()

{

int rid;

printf("****exec-test by 2012010948****\n"); //将your-sid改为你的学号

rid = fork();

if ( rid < 0 ) printf("error in fork!");

else if ( rid == 0 ) { // 子进程

printf("I am child, I will change to echo!\n");

execl("/bin/echo", "echo", "Hello! ", NULL);

}

else wait(NULL); // 父进程

exit(0);

}

4.3mini_shell.c

#include

#include

#include

#include

void pwd();

main()

{

int id;

char cmd[80];

printf("****mini-shell by your-sid****\n"); //将your-sid改为你的学号

while(1) {

printf("Mini Shell> "); //显示命令提示符

fgets(cmd, 80, stdin); //从键盘读入命令行

cmd[strlen(cmd)-1]=0; //将行尾字符置为字符串结束符0

if ( strcmp(cmd, "quit") == 0 ) exit(0); //内部命令quit

if ( strcmp(cmd, "pwd") == 0 ) pwd(); //内部命令pwd

else { //外部命令

id=fork();

if (id<0) { printf("Fork error!\n"); exit(1);}

if ( id == 0 ) {

if (execlp(cmd, cmd, NULL)<0)

printf("Command error!\n");

exit(2);

}

wait(NULL);

}

}

}

void pwd()

{

char dir[50];

getcwd(dir,50);

printf("%s\n", dir);

}

4.4mini_shell.c选作一

#include

#include

#include

#include

void pwd();

main()

{

int id;

char cmd[80];

char* cmd1;

char* cmd2;

char* cmd3;

char y;

printf("2012010948\n"); //将your-sid改为你的学号

printf("Thank you for using me. Do you want any help?(y/n)");

getchar();

scanf("%c",&y);

if(y='n')

printf("thanks");

else if(y='y')

printf("ok");

while(1) {

printf("Mini Shell> "); //显示命令提示符

fgets(cmd, 80, stdin); // 从键盘读入命令行

cmd[strlen(cmd)-1]=0; //将行尾字符置为字符串结束符0

cmd1=strtok(cmd," ");

cmd2=strtok(NULL," ");

cmd3=strtok(NULL," ");

if ( strcmp(cmd1, "quit") == 0 ) exit(0); //内部命令quit

if ( strcmp(cmd1, "pwd") == 0 ) pwd(); //内部命令pwd

else { //外部命令

id=fork();

if (id<0) { printf("Fork error!\n"); exit(1);}

if ( id == 0 ) {

if(cmd2!=NULL)

{ if(cmd3==NULL)

{

if (execlp(cmd1, cmd1, cmd2,NULL)<0)

printf("Command error!\n");

exit(2);

}

else

{

if (execlp(cmd1, cmd1, cmd2,cmd3,NULL)<0)

printf("Command error!\n");

exit(2);

}

}

else

{

if (execlp(cmd1, cmd1,NULL)<0)

printf("Command error!\n");

exit(2);

}

}

wait(NULL);

}

}

}

void pwd()

{

char dir[50];

getcwd(dir,50);

printf("%s\n", dir);

}

4.5mini_shell.c选作二

#include

#include

#include

#include

void pwd();

main()

{

int id;

char cmd[80];

char *cmd1;

char *cmd2;

printf("********************************\n");

printf("****mini-shell by 2012010948****\n"); //将your-sid改为你的学号

printf("********************************\n");

while(1) {

printf("Mini Shell> "); //显示命令提示符

fgets(cmd, 80, stdin); //从键盘读入命令行

cmd[strlen(cmd)-1]=0; //将行尾字符置为字符串结束符0

printf("%s\n", cmd);

cmd1=strtok(cmd," ");

cmd2=strtok(NULL," "); //将命令行分开成两部分

if ( strcmp(cmd, "quit") == 0 ) exit(0); //内部命令quit

if ( strcmp(cmd, "where") == 0 ) pwd(); //内部命令pwd

if ( strcmp(cmd, "tired") == 0 ) {sleep(5); printf("i'm down\n");} //内部命令pwd else { //外部命令

id=fork();

if (id<0) { printf("Fork error!\n"); exit(1);}

if ( id == 0 ) {

if(cmd2==NULL) execlp(cmd1, cmd1, NULL);

else execlp(cmd1, cmd1, cmd2, NULL);

if (execlp(cmd, cmd, NULL)<0)

printf("Command error!\n");

exit(2);

}

wait(NULL);

}

}

}

void pwd()

{

char dir[50];

getcwd(dir,50);

printf("%s\n", dir);

}

参考文献

[1]张玲. Linux操作系统基础、原理与应用,北京:清华大学出版社,2014年2月。

[2]Neil Matthew, Richard Stones. Linux程序设计(第3版). 陈健等译. 北京:人民邮电出版社, 2007.

[3]Mark G. Sobell. Linux命令、编辑器与Shell编程. 杨明军等译. 北京:清华大学出版社, 2007.

(完整版)操作系统毕业课程设计说明书-基于Linux的模拟文件系统的设计与实现

中北大学 操作系统课程设计 说明书 学院、系:软件学院 专业:软件工程 学生姓名:徐春花学号: 设计题目:基于Linux的模拟文件系统的设计与实现 起迄日 期: 2014年6月14日- 2014年6月26日指导教薛海丽

师: 2014 年 6月 26 日 前言 简单地说,Linux是一套免费使用和自由传播的类Unix操作系统,它主要用于基于Intel x86系列CPU的计算机上。这个系统是由世界各地的成千上万的程序员设计和实现的。其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的Unix兼容产品。 Linux不仅为用户提供了强大的操作系统功能,而且还提供了丰富的应用软件。用户不但可以从Internet上下载Linux及其源代码,而且还可以从Internet上下载许多Linux的应用程序。可以说,Linux本身包含的应用程序以及移植到Linux上的应用程序包罗万象,任何一位用户都能从有关Linux的网站上找到适合自己特殊需要的应用程序及其源代码,这样,用户就可以根据自己的需要下载源代码,以便修改和扩充操作系统或应用程序的功能。这对Windows NT、Windows98、MS-DOS或OS2

等商品化操作系统来说是无法做到的。 Linux具有:稳定、可靠、安全的优点,并且有强大的网络功能。其中有对读、 写进行权限控制、审计跟踪、核心授权等技术,这些都为安全提供了保障。在相关软 件的支持下,可实现WWW、FTP、DNS、DHCP、E-mail等服务,还可作为路由器 使用,利用IPCHAINSIPTABLE网络治理工具可构建NAT及功能全面的防火墙。 Linux是在GNU公共许可权限下免费获得的,是一个符合POSIX标准的操作系 统。Linux操作系统软件包不仅包括完整的Linux操作系统,而且还包括了文本编辑 器、高级语言编译器等应用软件。它还包括带有多个窗口管理器的X-Windows图形 用户界面,如同我们使用Windows NT一样,允许我们使用窗口、图标和菜单对系 统进行操作。 目录 1需求分析 (3) 1.1 功能介绍 (3) 1.2 目的及意义 (5) 1.2.1 目的 (5) 1.2.2 意义 (6) 1.3 设计成果 (7) 2总体设计 (8) 2.1功能介绍 (8) 2.2模块关联 (9) 3详细设计 (12)

linux进程控制 实验报告

长安大学 操作系统实验报告 实验课程:操作系统 实验名称:linux进程控制 学院:信息学院 专业:软件工程 学号:2406090106 姓名:刘建 日期:2012-5-09

一、实验目的 熟悉进程的创建过程,了解系统调用函数fork() 和execl()。 二、实验内容 1、阅读实例代码fork1,并编辑、编译、运行,记录程序的运行结果,尝试给出合理的解释,查阅有关资料,掌握系统调用fork( )的用法,返回值的意义。 2、阅读实例代码fork2,并编辑、编译、运行,记录程序的运行结果,尝试给出合理的解释,查阅有关资料,掌握在程序中运行一个操作系统命令和运行一个程序的方法。 3、修改fork2,使之能把运行的命令和程序作为参数传给fork2。 三、设计思想 1、程序框架

pid = -1 pid = 0pid> 0 2、用到的文件系统调用函数 fork() 和execl() 四、调试过程 1、测试数据设计 (1)fork1 命名程序1: 编写程序1:

编译程序1: 运行程序1: (2)fork2

编写程序2: 运行程序2:

(3)修改fork2 编写修改程序2: 修改后的运行结果: 2、测试结果分析 (1)对于程序1:因为系统调用fork()函数是一次调用两次返回值,而且先生成子进程还是父进程是不确定的,所以第一次执行生成子进程的时候返回的pid = 0,判断pid!=-1,所以输出了I’m the child. I’m the parent. 第二次,执行父进程的时候,返回的是子进程的进程号pid> 0,即pid的值仍然不为-1,所以又输出了一次I’m the child. I’m the parent。 (2)对于程序2:第一次调用fork()函数时,由于执行的是子进程还是父进程是随机的,所以第一次对父进程返回的是子进程的进程号(大于0),即pid> 0,所以输出I’m the parent. Program end.当第二次执行子进程时返回值是0,即pid = 0,所以输出I’m the child. 并调用了execl()函数,查看了指定路径中的文件。

Linux 系统课程设计报告

Linux 系统课程设计报告 专业班级: 学号: 姓名: 同组成员: 2016年6月2日星期四

序论实验要求 实验目的 了解Linux内核源代码的目录结构及各目录的相关内容。 了解Linux内核各配置选项内容和作用。 掌握Linux内核配置文件的作用。 掌握Linux内核的编译过程。 掌握将新增内核代码加入到Linux内核结构中的方法。 实验指引 尽管目前Linux 2.6版本内核已经增加了很多对ARM体系甚至是S3C2440 CPU 的支持,但仍然需要对内核作一些小的修改来适应我们的开发板,并且需要重新配置、编译和重新生成新的内核映像。本实验从软硬件准备到下载到开发板等一系列连贯的操作来进行嵌入式Linux内核的移植。本实验的内核版本为2.6.29.1。 第一章Linux内核基础知识 1.1Linux版本 Linux主要的版本定义为“[主].[次].[发布].[修改]”的样式,次版本为奇数表示此版本为开发中版本,次版本为偶数表示此版本为稳定版本。 Linux内核的版本号可以从源代码的顶层目录下的Makefile中看到,比如2.6.29.1内核的Makefile中: VERSION = 2 PATCHLEVEL = 6 SUBLEVEL = 29 EXTRA VERSION = .1 其中的“VERSION”和“PATCHLEVEL”组成主版本号,比如 2.4、2.5、2.6等,稳定版本的德主版本号用偶数表示(比如2.6的内核),开发中的版本号用奇数表示(比如2.5),它是下一个稳定版本内核的前身。“SUBLEVEL”称为次版本号,它不分奇偶,顺序递增,每隔1~2个月发布一个稳定版本。“EXTRAVERSION”称为扩展版本号,它不分奇偶,顺序递增,每周发布几次扩展本版号。 1.2什么是标准内核 按照资料上的习惯说法,标准内核(或称基础内核)就是指主要在https://www.doczj.com/doc/1015970319.html,/维护和获取的内核,实际上它也有平台属性的。这些linux

linux实验项目 进程控制操作

重庆电力高等专科学校 实 验 报 告 书 实验名称:Linux文件命令学院:信息工程学院 指导老师:黄泽伟 班级:软件1311 学号:201303100243 姓名:周贵波

实验项目进程控制操作 一、实验目的 1.了解进程的概念。 2.熟悉Linux的前台与后台进程控制操作。 3.掌握利用进程监控工具来维护系统的正常运行。 二、实验环境 安装了Red Hat Linux9.0和windows虚拟机系统的计算机一台。 三、实验内容 1.Linux的前台与后台进程控制操作。 2.系统监视器(system monitor)的使用和系统维护。 四、实验步骤 1.进程的前台工作方式 1)yes ok ←┘ 终端窗口显示___ok___,此时键盘能否输入其它命令____不能___,为什么? 2)按键:Ctrl+Z,暂停一个前台进程的运行,并转为挂起进程。 3)jobs ←┘记录下看到的结果_____yes ok_________________。 4)fg %1 ←┘作用:把挂起进程转为前台进程执行; 5)再按键:Ctrl+Z 作用与2)相同; 6)jobs ←┘记录下看到的结果________yes ok______________。 7)bg %1 ←┘作用:重新运行挂起进程,但以后台方式运行; 8)此时能否再按键:Ctrl+Z暂停一个后台进程的运行?____不能__,

键盘能否输入其它命令__不能_____,为什么? 9)用鼠标点击,关闭终端窗口。 2.进程的后台工作方式 除上面把前台进程转到后台进程的过程外,一般在shell提示符下,输入的命令后加上&,即以后台方式运行命令。再次进入终端方式。 1)xclock & ←┘后台进程1,记录其时钟的时间___16:40____ xcalc & ←┘后台进程2 find / -name ?*.jpg‘–print > templist & ←┘后台进程3 2)jobs ←┘有几个后台进程:__2______,记录显示结果: xclock xcalc & ps ←┘记录下看到的结果: 4036 pts/0 00:00:00 bash 4061 pts/0 00:00:00 xcalc 4063 pts/0 00:00:00 ps 3)fg %1 ←┘将时钟进程转到前台运行。 4)按键:Ctrl+Z, 将时钟进程挂起,记录时钟的时间___16:50______。 jobs ←┘观察显示结果____xcalc &________________。 回顾上述操作,经过二~三分钟后,看图形时钟有走动吗?____否___。 5)bg %1 ←┘ 将挂起的时钟进程转到后运行,现在再观察时钟是否会有变化,为什么? 有后台继续运行 jobs ←┘ kill %2 ←┘杀死计算器进程,看计算器是否消失__否______。 6)ps ←┘ 观察屏幕显示,记录时钟(xclock)进程的进程号pid=__________。 7)kill ←┘ pid为xclock的进程号,作用__newline____________。 试比较与上述步骤5)中的kill命令的区别。 8)ls –l ←┘是否有templist文件? ____否____。 9)rm templist ←┘删除临时文件。

linux课程设计报告

目录 1.什么是Linux2 2.Linux系统的特性2 1.开放性2 2.多用户2 3.多任务2 4.良好的用户界面2 5.设备独立性2 6.提供了丰富的网络功能3 7.可靠的系统安全3 8.良好的可移植性3 3.常用操作命令3 1、ping命令3 2、ifconfig命令4 3.ftp命令4 4、netstat命令4 4.Samba配置5 5.ftp服务器配置6 6.shell编程6 总结9 参考文献 (9)

前言 今天,自由软件Linux正越来越显示出其咄咄逼人的气势。在传统由微软的windowsNT、Nowell 的Netware和UNIX占据的网络操作系统市场上,Linux正日益成为一个令人生畏的对手。 据估计现在全球已有800万Linux用户,有29%的互联网服务器采用了Linux系统,这一数字超过微软WindowsNT6个百分点。在1998年Linux将保持25%的年增长率,超过其他操作系统增长的总和。 随着IBM、Intel、Oracle、CA、网景为代表的众多IT巨头们纷纷宣布支持Linux、那些曾经对Linux 不屑一顾的著名软件公司的老板们不得不回过头来重新审视这个有Internet上的一群业余 1.什么是Linux Linux是一套免费使用和自由传播的UNIX操作系统,它主要用于基于Intel系列CPU的计算机上。这个系统是由世界各地的成千上万的程序员设计和实现的。其目的是建立不受任何商品化软件的制约的,全世界都能自由使用的UNIX兼容产品。Linux的出现,最早开始于一位名叫Linux Torvalds 的计算机爱好者,当时他是芬兰赫尔辛基大学的学生。他的目的是想要设计一个代替Minix(Minix 是由一位名叫Andrew Tannebaum的计算机教授编写的一个操作系统示教程序)的操作系统,这个操作系统可用于386、486或奔腾处理器的个人计算机上,并且具有UNIX操作系统的全部功能,因而开始了Linux出行的设计。 2.Linux系统的特性 1.开放性 开放性是指系统遵循世界标准规X,特别是遵循开放系统互连(OSI)国际标准。凡遵循国际标准所开发的软件的硬件,都能彼此兼容,可方便地实现互连。 2.多用户 多用户是指系统资源可以被不同用户各自拥有,即每个用户对自己的资源(例如:文件,设备)有特定的权限,互不影响,Linux和UNIX都具有多用户的特性。 3.多任务 多任务是现代计算机的最主要的一个特点。它是指计算机同时执行多个程序,而且各个程序的运行互相独立。Linux系统调度每一个进程平等地访问CPU。由于CPU的处理速度非常快,其结果是启动的应用程序看起来好像在并行运行。事实上,从CPU执行一个应用程序中的一组指令到Linux调度CPU,再次运行这个程序之间只有很短的时间延迟,用户是感觉不出来的。 4.良好的用户界面 Linux向用户提供了两种界面:用户界面和系统调用界面。Linux的传统用户界面基于文本的命令行界面,即shell。它既可以联机使用,又可存在文件上脱机使用。Linux还为用户图形用户界面。5.设备独立性

2011180021-Linux操作系统-课程设计报告-基于Linux的进程调度模拟程序

河南中医学院 《linux操作系统》课程设计报告 题目:基于Linux的进程调度模拟程序 所在院系:信息技术学院 专业年级:2011级计算机科学与技术完成学生:2011180021 郭姗 指导教师:阮晓龙 完成日期:201X 年06 月22 日 目录 1. 课程设计题目概述3 2. 研究内容与目的4 3. 研究方法5 4. 研究报告6 5. 测试报告/实验报告7 6. 课题研究结论8 7. 总结9

1、课程设计题目概述 随着Linux系统的逐渐推广,它被越来越多的计算机用户所了解和应用. Linux是一个多任务的操作系统,也就是说,在同一个时间内,可以有多个进程同时执行。如果读者对计算机硬件体系有一定了解的话,会知道我们大家常用的单CPU计算机实际上在一个时间片断内只能执行一条指令,那么Linux是如何实现多进程同时执行的呢?原来Linux使用了一种称为"进程调度(process scheduling)"的手段,首先,为每个进程指派一定的运行时间,这个时间通常很短,短到以毫秒为单位,然后依照某种规则,从众多进程中挑选一个投入运行,其他的进程暂时等待,当正在运行的那个进程时间耗尽,或执行完毕退出,或因某种原因暂停,Linux就会重新进行调度,挑选下一个进程投入运行。因为每个进程占用的时间片都很短,在我们使用者的角度来看,就好像多个进程同时运行一样了。本文就是对进程调度进行研究、实验的。 本文首先对Linux系统进行了简要的介绍, 然后介绍了进程管理的相关理论知识。其次,又介绍最高优先数优先的调度算法(即把处理机分配给优先数最高的进程)、先来先服务算法的相关知识,并对进程调度进行最高优先数优先的调度算法和先来先服务算法模拟实验,并对比分析两种算法的优缺点,从而加深对进程概念和进程调度过程/算法的理解 设计目的:在多道程序和多任务系统中,系统内同时处于就绪状态的进程可能有若干个。也就是说能运行的进程数大于处理机个数。为了使系统中的进程能有条不紊地工作,必须选用某种调度策略,选择某一进程占用处理机。使得系统中的进程能够有条不紊的运行,同时提高处理机的利用率以及系统的性能。所以设计模拟进程调度算法(最高优先数优先的调度算法、先来先服务算法),以巩固和加深处理进程的概念,并且分析这两种算法的优缺点。关键词:linux 进程调度调度算法

linux网络编程课设报告

《Linux网络编程》 课程设计 班级: 姓名: 指导老师:

一、设计背景 Linux操作系统作为一个开源的操作系统被越来越多的人所应用,它的好处在于操作系统源代码的公开化!只要是基于GNU公约的软件你都可以任意使用并修改它的源代码。通过这次课程设计能更好的学习网络编程知识和掌握LINUX平台上应用程序设计开发的过程,将大学四年所学知识综合运用,为未来的工作学习打下基础。 二、设计目的 1、学习epoll 跟FTP被动模式 2、掌握linux基本命令,例如ls、cd、login; 3、学会如何编译、运行 三、环境要求 1、centos 64位操作系统 2、gcc编译器 四、设计原理 4.1客户端 客户端程序的主要任务有以下3个: (1)、分析用户输入的命令。 (2)、根据命令向服务器发出请求 (3)、接受服务器返回请求的结果 客户端为用户提供了3种命令:(1)、get:从服务器下载文件(2)、list:列出客户端当前目录的内容(3)、quit离开 4.2 服务器端 (1)、分析请求代码。 (2)、根据请求代码做相应的处理 (3)、等待返回结果或者应答信息

五、软件测试结果

六、部分主代码 #include "ftserve.h" int main(int argc, char *argv[]) { int sock_listen, sock_control, port, pid; if (argc != 2) { printf("usage: ./ftserve port\n"); exit(0); } port = atoi(argv[1]); // create socket if ((sock_listen = socket_create(port)) < 0 ) { perror("Error creating socket"); exit(1); } while(1) { // wait for client request

Linux程序设计上机指导书3:Linux进程控制

上机三:Linux进程控制 1.目的 (1)掌握系统调用fork(),exex(),exit()等实现进程创建; (2)掌握进程的终止方式(return、exit、_exit、abort); (3)掌握僵尸进程的产生和避免,以及wait,waitpid的使用; (4)了解守护进程的创建。 2.内容 主要上机分析代码文件。 systemtest.c 6-3.c 6-4.c 6-8.c 6-9.c 其他略。 3.步骤 1)Linux进程的创建 创建进程可以采用几种方式。可以执行一个程序(这会导致新进程的创建),也可以在程序内调用一个fork 或exec来创建新进程。fork 调用会导致创建一个子进程,而exec 调用则会用新程序代替当前进程上下文。exec系列函数并不创建新进程,调用exec前后的进程ID是相同的。

exec函数的主要工作是清除父进程的可执行代码映像,用新程序的代码覆盖调用exec 的进程代码。如果exec执行成功,进程将从新程序的main函数入口开始执行。调用exec 后,除进程ID保持不变外,还有下列进程属性也保持不变。 (1)进程的父进程ID。 (2)实际用户ID和实际用户组ID。 (3)进程组ID、会话ID和控制终端。 (4)定时器的剩余时间。 (5)当前工作目录及根目录。 (6)文件创建掩码UMASK。 (7)进程的信号掩码。 与exec系统调用不同,system将外部可执行程序加载执行完毕后继续返回调用进程。 【例6.3】设计一个程序,用fork函数创建一个子进程,在子进程中,要求显示子进程号与父进程号,然后显示当前目录下的文件信息,在父进程中同样显示子进程号与父进程号。

linux网络编程课程设计

Linux 网络编程》课程设计 班级: 姓名: 指导老师:

、设计背景 Linux 操作系统作为一个开源的操作系统被越来越多的人所应用,它的好处在于操作系统源代码的公开化!只要是基于GNU公约的软件你都可以任意使用并修改它的源代码。通过这次课程设计能更好的学习网络编程知识和掌握LINUX平台上应用程序设计开发的过程,将大学四年所学知识综合运用,为未来的工作学习打下基础。 二、设计目的 1学习epoll跟FTP被动模式 2、掌握linux 基本命令,例如ls 、cd、login ; 3、学会如何编译、运行 三、环境要求 1、centos 64 位操作系统 2、gcc 编译器 四、设计原理 4.1 客户端 客户端程序的主要任务有以下 3 个: (1)、分析用户输入的命令。 (2)、根据命令向服务器发出请求 (3)、接受服务器返回请求的结果 客户端为用户提供了 3 种命令:(1)、get: 从服务器下载文件(2)、list: 列出客户端当前目录的内容(3)、quit 离开 服务器端 (1)、分析请求代码。 (2)、根据请求代码做相应的处理 (3)、等待返回结果或者应答信息 五、软件测试结果

六、部分主代码 #include "" int main(int argc, char *argv[]) { int sock_listen, sock_control, port, pid; if (argc != 2) { printf("usage: ./ftserve port\n"); exit(0); } port = atoi(argv[1]); uth", "r"); if (fd == NULL) { perror("file not found"); exit(1); } while ((num_read = getline(&line, &len, fd)) != -1) { memset(buf, 0, MAXSIZE); strcpy(buf, line); pch = strtok (buf," "); strcpy(username, pch); if (pch != NULL) { pch = strtok (NULL, " "); strcpy(password, pch); } // remove end of line and whitespace trimstr(password, (int)strlen(password)); if ((strcmp(user,username)==0) && (strcmp(pass,password)==0)) { auth = 1; break; } } free(line); fclose(fd); return auth; } * Log in connected client

Linux课程设计

摘要 Linux是一款免费的操作系统,用户可以通过网络或其他途径免费获得,并可以任意修改其源代码。这是其他的操作系统所做不到的。正是由于这一点,来自全世界的无数程序员参与了Linux的修改、编写工作,程序员可以根据自己的兴趣和灵感对其进行改变,这让Linux 吸收了无数程序员的精华,不断壮大。 Linux的基本思想有两点:第一,一切都是文件;第二,每个软件都有确定的用途。其中第一条详细来讲就是系统中的所有都归结为一个文件,包括命令、硬件和软件设备、操作系统、进程等等对于操作系统内核而言,都被视为拥有各自特性或类型的文件。 这次的课程设计为了熟悉以下内容Linux 基本网络命令,配置网络文件,建立个人账户,配置samba服务器,配置vsFTp服务器,shell编程。 关键词:Linux 基本网络命令配置网络文件建立个人账户配置samba服务器配置vsFTp服务器 shell编程

Linux课程设计 目录 1. 绪论 (1) 1. 1引言 (1) 2. 操作系统特性 (1) 2.1 linux的主要特性 (1) 2.2 UNIX的主要特点 (2) 3.系统设计 (3) 3.1设计的目的与意义 (3) 3.2课程设计的目标 (3) 3.3课程设计的要求 (3) 4 .课程设计的具体内容 (4) 4.1 基本网络命令及使用方法 (4) 4.2 telnet建立多账户测试 (8) 4.3 配置samba服务器,实现不同系统之间的文件共享 (10) 4.4 配置vsFTP服务器 (11) 4.5 简单shell编程 (14) 总结 (17) 参考文献 (18)

1.绪论 1. 1引言 Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux 版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。Linux是一个领先的操作系统,世界上运算最快的10台超级计算机运行的都是Linux操作系统。严格来讲,Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU 工程各种工具和数据库的操作系统。Linux得名于天才程序员林纳斯?托瓦兹。 Linux操作系统是UNIX操作系统的一种克隆系统,它诞生于1991 年的10 月5 日(这是第一次正式向外公布的时间)。以后借助于Internet网络,并通过全世界各地计算机爱好者的共同努力,已成为今天世界上使用最多的一种UNIX 类操作系统,并且使用人数还在迅猛增长。 Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX 和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。它主要用于基于Intel x86系列CPU的计算机上。这个系统是由全世界各地的成千上万的程序员设计和实现的。其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的Unix兼容产品。 2. 操作系统特性 2.1 linux的主要特性 (1)基本思想 Linux的基本思想有两点:第一,一切都是文件;第二,每个软件都有确定的用途。其中第一条详细来讲就是系统中的所有都归结为一个文件,包括命令、硬件和软件设备、操作系统、进程等等对于操作系统内核而言,都被视为拥有各自特性或类型的文件。至于说Linux是基于Unix的,很大程度上也是因为这两者的基本思想十分相近。 (2)发展领域 职业领域:系统应用类(网管\系统管理和维护人员\安全管理人员中低端行业领域)待遇属于中下。 系统开发类行业(JAVA软件开发\C语言软件开发\WEB开发\嵌入式软件开发)其中嵌入式软件开发是linux应用最广的领域待遇属于中等发展方向:UNIX往高端领域和产业发展,例如:AIX、HP-UX、Solaris 等等。 (3)完全免费 Linux是一款免费的操作系统,用户可以通过网络或其他途径免费获得,并可以任意修改其源代码。这是其他的操作系统所做不到的。正是由于这一点,来自全世界的无数程序员参与了Linux的修改、编写工作,程序员可以根据自己的兴趣和灵感对其进行改变,这让Linux吸收了无数程序员的精华,不断壮大。

Linux课程设计报告

《Linux课程设计》 设计题目:shell 编程实现用户信息管理专业:软件工程 指导教师:蔡照鹏王斌斌 班级: 学号: 姓名: 同组人: 计算机科学与工程学院

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中。Linux是一个领先的操作系统,世界上运算最快的10台超级计算机运行的都是Linux操作系统。严格来讲,Linux这个词本身只表示Linux 内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU 工程各种工具和数据库的操作系统。Linux得名于天才程序员林纳斯·托瓦兹。 Linux操作系统是UNIX操作系统的一种克隆系统,它诞生于1991 年的10 月5 日(这是第一次正式向外公布的时间)。以后借助于Internet网络,并通过全世界各地计算机爱好者的共同努力,已成为今天世界上使用最多的一种UNIX 类操作系统,并且使用人数还在迅猛增长。Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX 和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux 继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。它主要用于基于Intel x86系列CPU的计算机上。这个系统是由全世界各地的成千上万的程序员设计和实现的。其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的Unix兼容产品。

Linux课程设计论文

目录 前言 (2) 正文 (3) 1 课程设计的目的和意义 (3) 2 目标与总体方案 (4) 2.1课程设计的目标 (4) 2.2课程设计的总体方案 (4) 3 课程设计方法和内容 (4) 3.1软硬件环境说明 (4) 3.2常用网络操作命令 (5) 3.3网络配置文件与配置方法 (8) 3.4 TELNET 建立多帐户测试 (9) 3.5配置NFS服务器,实现文件系统的远程挂载 (10) 3.6配置SAMBA服务器 (13) 4 SELL编程 (17) 5 GCC简单使用 (21) 6 FTP服务器配置 (24) 致谢 (26) 参考文献 (27)

前言 Linux是一套免费使用和自由传播的类 Unix操作系统,它主要用于基于 Intel x86系列 CPU的计算机上。这个系统是由世界各地的成千上万的程序员设计和实现的。其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的 Unix兼容产品。 Linux 的出现,最早开始于一位名叫 Linus Torvalds的计算机业余爱好者,当时他是芬兰赫尔辛基大学的学生。他的目的是想设计一个代替 Minix(是由一位名叫 Andrew Tannebaum的计算机教授编写的一个操作系统示教程序)的操作系统, UNIX特点: (1)模块化程度高 Linux的内核设计非常精巧,分成进程调度、内存管理、进程间通信、虚拟文件系统和网络接口五大部分;其独特的模块机制可根据用户的需要,实时地将某些模块插入或从内核中移走,使得Linux系统内核可以裁剪得非常小巧,很适合于嵌入式系统的需要. (2)源码公开 由于Linux系统的开发从一开始就与GNU项目紧密地结合起来,所以它的大多数组成部分都直接来自GNU项目。任何人、任何组织只要遵守GPL条款,就可以自由使用Linux 源代码。 (3)广泛的硬件支持 Linux能支持x86、ARM、MIPS、ALPHA和PowerPC等多种体系结构的微处理器。 (4)安全性及可靠性好内核高效稳定 Linux内核的高效和稳定已在各个领域内得到了大量事实的验证。Linux中大量网络管理、网络服务等方面的功能,可使用户很方便地建立高效稳定的防火墙、路由器、工作站、服务器等。为提高安全性,它还提供了大量的网络管理软件、网络分析软件和网络安全软件等。 (5)具有优秀的开发工具 开发嵌入式系统的关键是需要有一套完善的开发和调试工具。传统的嵌入式开发调试工具是在线仿真器(In Circuit Emulator,ICE),它通过取代目标板的微处理器,给目标程序提供一个完整的仿真环境,从而使开发者能非常清楚地了解到程序在目标板上的工作状态,便于监视和调试程序。在线仿真器的价格非常高,而且只适合做非常底层的调试。如果使用的是嵌人式Linux,一旦软硬件能支持正常的串口功能,即使不用在线仿真器,也可以很好地进行开发和调试工作,从而节省了一笔不小的开发费用。嵌入式Linux为开发者提供了一套完整的工具链(Tool Chain),能够很方便地实现从操作系统到应用软件各个级别的调试。 由于UNIX系统对各种数据库,特别是关系型数据库管理系统提供了强大的支持能力,因此主要的数据库厂家,包括Oracle,Informix,Sybase,Progress等都将UNIX作为优选的运行平台,而且创造出极高的性能价格比。

linux_课程设计模板

辽宁工业大学linux 课程设计(论文) 题目:REDHAT LINUX 系统下搭建FTP 服务器 学院:软件学院 专业班级:软件工程125班 学号: 121301143 学生姓名:张白冰 指导教师:陈浩 教师职称:讲师 起止时间: 2012.12.1—2012.12.5

课程设计(论文)任务及评语

目录 第一章安装VSFTP套件 (1) 1.1首先查看我的Redhat5上是否已经安装 (1) 1.2 如果没有安装话,就要选择一种方式安装 (1) 1.3 VsFtp的配置文件 (3) 第二章配置FTP服务器 (4) 2.1最简单的vsfrpd.conf设定 (4) 2.2 配置好FTP服务器后,使用匿名用户及实体用户上传下载文件进行测试。 (5) 第三章总结 (9) 参考文献 (10)

第一章安装VSFTP套件 1.1首先查看我的Redhat5上是否已经安装 rpm -qa| grep vsftpd 如果已经安装就会出现vstfp的版本号相关的信息,如果没有出现就是没有安装1.2 如果没有安装话,就要选择一种方式安装 可以到官方网站去下载 https://www.doczj.com/doc/1015970319.html, 也可以用光盘安装,RedHat 5的安盘里自带的,所以我选择光盘安装 (1)先把光盘挂载到系统上: mount /dev/cdrom /mnt 这样光盘的内容就被挂载到/mnt的设备上,现在可以通过/mnt访问光盘上的内容了 (2)在光盘上安装vsftp,并且启动vsftp rpm -ivh vsftpd* (3)修改启动方式,改为系统启动时,自动启动 chkconfig vsftpd on 也可以查看启动方式 chkconfig --list |grep vsftpd 只要在第2--5为on就能随机启动 (4)启动ftp service vsftpd start (5)连接测试 vsftp默认安装目录是:/etc/vsftpd 默认有一个ftp目录:var/ftp vsftp默认是用允许匿名用户【anonymous】登陆,允许下载,但是不允许上传 如果连不上,可能是linux 防火墙的原因 停止防火墙:service iptables stop 开启防火墙:service iptables start (1)从光盘中找到从光盘中找到从光盘中找到从光盘中找到 vsftp的的的的rpm 安装包安装包安装包安装包

Linux课程设计

Linux课程设计---编写proc文件系统相关的内核模块 学号:20085229 姓名:杜森 班级:08级网络一班 指导教师:于群 日期:2011年6月29号

一、背景知识: 1、内核模块。 操作系统采用两种体系结构:微内核(Micro kernel),最常用的功能模块被设计成内核模式运行的一个或一组进程,而其它大部分不十分重要的功能模块都作为单独的进程在用户模式下运行!单内核(Monolithic kernel,有时也叫宏内核Macro kernel)!内核一般作为一个大进程的方式存在。该进程内部又可以被分为若干模块,在运行的时候,它是一个独立的二进制映象为了弥补单一体系结构的这一缺陷,Linux操作系统使用了模块机制。用户可以根据需要,在不需要对内核重新编译的情况下,模块可以动态地载入内核或从内核中移出!如图所示,模块可通过 insmod命令插入内核,也可以通过rmmod命令从内核中删除。 2、进程管理 Linux的每一个进程都有自己的属性,用一个task struct数据结构表示,即进程控制块Ⅲ(Process Concrol Block,PCB)。它对进程在其生命周期内涉及的所有事件进行全面的描述,主要有进程标识符(PID)、进程状态信息、进程调度信息、进程所占的内存区域、相关文件的文件描述符、处理器环境信息、信号处理、Linux操作系统内核分析与研究资源安排、同步处理等几个方面。在一个系统中,通常可拥有数百个甚至数千个进程,相应地就有很多进程控 制块。为了有效地对它们加以管理,应该用适当地方式将这些进程控制块组织起来。 进程控制块数据结构主要域定义如下: task_struct结构:在linux/sched.h中 struct task_struct{ volatile long state; //系统进程状态,一共有五种状态: //0 可运行态 //1 可中断的等待态 //2 不可中断的等待态 //3 僵死态

【IT专家】Linux中进程的几种状态

本文由我司收集整编,推荐下载,如有疑问,请与我司联系 Linux中进程的几种状态 2015/03/29 4411 1R (task_running) :可执行状态 ?只有在该状态的进程才可能在CPU上运行。而同一时刻可能有多个进程处于可执行状态,这些进程的task_struct结构(进程控制块)被放入对应CPU的可执行队列中(一个进程最多只能出现在一个CPU的可执行队列中)。进程调度器的任务就是从各个CPU的可执行队列中分别选择一个进程在该CPU上运行。 ?很多操作系统教科书将正在CPU上执行的进程定义为RUNNING状态、而将可执行但是尚未被调度执行的进程定义为READY状态,这两种状态在linux下统一为TASK_RUNNING状态。 ? 2S (task_interruptible):可中断的睡眠状态 ?处于这个状态的进程因为等待某某事件的发生(比如等待socket连接、等待信号量),而被挂起。这些进程的task_struct结构被放入对应事件的等待队列中。当这些事件发生时(由外部中断触发、或由其他进程触发),对应的等待队列中的一个或多个进程将被唤醒。 ?通过ps命令我们会看到,一般情况下,进程列表中的绝大多数进程都处于task_interruptible状态(除非机器的负载很高)。毕竟CPU就这么一两个,进程动辄几十上百个,如果不是绝大多数进程都在睡眠,CPU又怎么响应得过来。 ? 3D (task_uninterrupible)不可中断的睡眠状态 ?与task_interruptible状态类似,进程处于睡眠状态,但是此刻进程是不可中断的。不可中断,指的并不是CPU不响应外部硬件的中断,而是指进程不响应异步信号。绝大多数情况下,进程处在睡眠状态时,总是应该能够响应异步信号的。但是uninterruptible sleep状态的进程不接受外来的任何信号,因此无法用kill杀掉这些处于D状态的进程,无论是”kill”, “kill -9″还是”kill -15″,这种情况下,一个可选的方法就是reboot。

linux课程论文

学号 课程论文 题目:Linux嵌入式应用 作者班级 院部计算机学院专业计算机科学与技术指导教师职称 完成时间2018年1月2日

摘要 进几年来,随着物联网的迅猛发展,嵌入式系统的应用在国内也发展得如火如荼,尤其是Linux嵌入式系统。Linux作为一套免费使用并自由传播的性能稳定的多用户的类Unix操作系统,正在向各个方面广泛扩展及改进应用,在目前嵌入式开发系统中,大约有一半以上使用的是Linux系统。本文主要介绍嵌入式系统的应用现状,以及Linux系统在嵌入式开发中的优势、应用和前景。 关键词: 嵌入式;Linux

ABSTRACT In the past few years, with the rapid development of the Internet of things, the application of embedded system has also been developing at home, especially the Linux embedded system. The spread of Linux as a free of charge and free of stable performance of multi-user unix-like operating system, is widely extended in all directions and improve application, in the embedded development system, there are about more than half are using the Linux system. This paper mainly introduces the application status of embedded system and the advantages, application and prospect of Linux system in embedded development. Key words: Embedded; Linux

Linux课程设计

目录 前言 (1) 正文 (2) 1设计背景 (2) 1.1设计的目的与意义 (2) 1.2课程设计的目标 (2) 1.3课程设计的要求 (2) 1.4课程设计的方案 (2) 2 网络命令 (3) 2.1 常用的网络命令 (3) 2.2 telnet建立多账户测试 (7) 2.3 smba服务器的配置 (9) 2.4 ftp服务器配置 (12) 2.5 shell编程 (15) 总结 (16) 参考文献 (17)

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux 版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中。Linux 是一个领先的操作系统,世界上运算最快的10台超级计算机运行的都是Linux 操作系统。严格来讲,Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU 工程各种工具和数据库的操作系统。Linux得名于天才程序员林纳斯·托瓦兹。 Linux操作系统是UNIX操作系统的一种克隆系统,它诞生于1991 年的10 月5 日(这是第一次正式向外公布的时间)。以后借助于Internet网络,并通过全世界各地计算机爱好者的共同努力,已成为今天世界上使用最多的一种UNIX 类操作系统,并且使用人数还在迅猛增长。 Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX 和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。它主要用于基于Intel x86系列CPU的计算机上。这个系统是由全世界各地的成千上万的程序员设计和实现的。其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的Unix兼容产品。 UNIX特点: (1)模块化程度高 (2)源码公开 (3)广泛的硬件支持 (4)安全性及可靠性好内核高效稳定 (5)具有优秀的开发工具

Linux课程设计进程控制

课程设计报告 课程名称Linux操作系统课程设计 指导教师张玲 起止日期2014-03-01 至2014-06-13 实验项目实验二进程控制 学院信息与通信工程学院 专业电子信息工程 学生姓名 班级/学号 成绩 指导老师签字

1. 课程设计概述 本次课设意在利用进程控制相关的系统调用编程进行进程控制实验,观察进程从创建、运行到终止的控制过程,加深对进程概念的理解。 1.1 课程设计的目的 本实验的目的是掌握进程的概念,理解进程的创建、执行、等待、终止的过程。熟悉有关进程控制的命令和系统调用,理解Shell 的工作原理。 1.2 课程设计的内容 1) 进程控制命令 ● 使用进程控制命令ps ,kill 监视和控制进程的活动 2) 编程部分 ● 用fork ,wait ,exec 系统调用编程实现进程控制; ● 编写一个简单的shell 。 1.3 设计原理 进程是一个其中运行着一个或多个线程的地址空间和这些线程所需要的系统资源。 构建的文件构架如图: 图1 实验目录树的结构 2012010948 exp2 exp1 exp3 vis vis2

2.实验步骤 2.1操作 2.1.1进程控制命令(在此终端窗口的操作截图见图1) 1.执行ps命令,查看bash进程的PID: PID就是各进程的身份标识,程序一运行系统就会自动分配给进程一个独一无二的PID。进程中止后PID被系统回收。 2.在后台运行一个yes进程: yes > /dev/null & 3.用ps -f命令观察yes进程的pid和ppid,用ps u命令观察yes进程的状态。 yes进程的父进程是哪个进程?通过查看yes程序的PPID可知其父进程为bash 4.根据命令名搜索特定的进程: ps-ef|grep yes: 5.用kill命令杀掉yes进程: kill 【PID】: 图1 进程控制命令

相关主题
文本预览
相关文档 最新文档