linux进程控制 实验报告

合集下载

进程控制实验报告

进程控制实验报告

一、实验目的本次实验旨在通过Linux操作系统的实践操作,加深对进程控制概念的理解。

通过学习进程的创建、调度、同步、通信等基本操作,掌握进程控制的基本方法,并了解进程间通信的机制。

二、实验环境1. 硬件环境:Intel(R) Core(TM) i5-3210M CPU2.50GHz,4.00GB内存。

2. 软件环境:64位Linux操作系统。

三、实验内容1. 进程的创建与终止2. 进程的调度与优先级3. 进程同步与互斥4. 进程间通信四、实验步骤1. 进程的创建与终止(1)使用`fork()`函数创建子进程,通过比较返回值判断创建是否成功。

```cpid_t pid = fork();if (pid < 0) {perror("fork failed");exit(1);}```(2)使用`exit()`函数终止进程。

```cexit(0);```2. 进程的调度与优先级(1)使用`nice()`函数调整进程优先级。

```cnice(10); // 降低进程优先级```(2)使用`priority_seta()`函数设置进程优先级。

```cstruct sched_param param;param.sched_priority = 10;if (sched_setscheduler(pid, SCHED_RR, &param) == -1) { perror("sched_setscheduler failed");exit(1);}```3. 进程同步与互斥(1)使用`semaphore_t`类型的信号量实现进程同步。

```csemaphore_t sem;sem_init(&sem, 0, 1);sem_wait(&sem);// 执行临界区代码sem_post(&sem);sem_destroy(&sem);```(2)使用`mutex_t`类型的互斥锁实现进程互斥。

linux进程管理的实验报告

linux进程管理的实验报告

实验报告:Linux进程管理1. 引言本实验报告将详细介绍Linux系统中进程管理的相关知识和操作。

进程管理是操作系统中的一个重要组成部分,它负责控制和调度系统中运行的各个进程,确保系统资源的合理分配和进程的正常运行。

在本实验中,我们将通过一系列步骤来了解Linux系统中进程的创建、监控和控制。

2. 实验环境为了完成本实验,我们需要在一台运行Linux操作系统的计算机上进行操作。

本实验报告基于Ubuntu 20.04 LTS操作系统进行撰写,但是适用于大多数Linux 发行版。

3. 实验步骤步骤一:创建新进程在Linux系统中,可以通过fork()系统调用来创建新的进程。

以下是一个简单的示例代码:#include <stdio.h>#include <unistd.h>int main() {pid_t pid = fork();if (pid == 0) {// 子进程逻辑printf("这是子进程\n");} else if (pid > 0) {// 父进程逻辑printf("这是父进程\n");} else {// 进程创建失败printf("进程创建失败\n");}return0;}步骤二:查看进程信息Linux系统提供了多种命令来查看系统中运行的进程信息。

以下是一些常用的命令:•ps:显示当前终端下的进程列表。

•top:实时显示进程的CPU、内存等资源占用情况。

•pstree:以树状结构显示进程的层次关系。

步骤三:杀死进程有时候我们需要终止一个运行中的进程,可以使用kill命令来发送终止信号给目标进程。

以下是一个示例:kill <PID>请将<PID>替换为目标进程的进程ID。

步骤四:进程优先级调整通过调整进程的优先级,可以影响进程在系统中的调度顺序。

在Linux系统中,可以使用nice命令来调整进程的优先级。

linux操作系统实验五

linux操作系统实验五

linux操作系统实验五实验五进程管理子系统——进程控制实验类别:设计型实验时数:6学时开课单位:计算机学院实验地点:健翔校区计算中心一、实验目的◆掌握进程的概念,深入理解进程的含义。

认识并理解并发环境中进程执行的实质问题,了解构成并发机制的进程创建过程。

能够使用系统调用完成进程创建,形成多个进程并发的环境。

◆了解在进程创建后通过对进程控制的系统调用,可实现对进程的有效控制。

掌握在进程执行中对进程进行睡眠、同步、撤销等控制方法。

◆进一步认识并发执行的实质,分析进程竞争资源的现象,学习解决进程互斥的方法。

二、实验环境操作系统:任何Unix/Linux及Sun Solaris 或windows 系列应用系统:gcc编译器。

若OS为windows系列,则还需相应的模拟环境三、预备知识1、L INUX系统中进程的含义在LINUX中,进程既是一个独立拥有资源的基本单位,又是一个独立调度的基本单位。

进程是并发环境中的实体,每个进程用一个task_struct的数据结构来表示,用来管理系统中的进程,因而task_struct就是LINUX系统中的PCB。

另外,系统内核中还有一个task向量表,是指向系统中每一个task_struct数据结构的指针的数组,因而task向量表就是LINUX系统中的PCB表。

2、L INUX中的进程创建除了init进程外,LINUX中的所有进程都是由其他进程创建的。

LINUX 中提供了系统调用fork和clone,可被进程用来创建子进程。

但系统调用fork 和clone其实都是调用内核函数do_fork(),通过克隆当前进程来创建子进程的。

四、实验内容本实验要求在LINUX/UNIX环境下用C语言编写三个多进程并发执行的程序,基本涉及了LINUX/UNIX进程管理子系统中较为常用的有关进程控制的系统调用。

实验内容如下:(1)使用fork()系统调用创建进程,使父、子进程分别运行不同的代码(要求子进程在父进程之前运行):子进程:①以长格式显示当前目录的情况;②分屏显示file1的内容。

进程管理实验报告_共10篇 .doc

进程管理实验报告_共10篇 .doc

★进程管理实验报告_共10篇范文一:_进程管理实验报告进程管理实验报告一、进程与线程1.实验目的:1.通过本实验学习Linux中创建进程的方法。

2.学习系统调用fork的使用方法。

3.学习系统调用exec族调用的使用方法。

2.实验准备1.进程的创建创建一个进程的系统调用很简单,只要调用fork函数就可以了。

#includepid_tfork();当一个进程调用了fork以后,系统会创建一个子进程,这个子进程和父进程是不同的地方只有它的进程ID和父进程ID,其他的都一样,就像父进程克隆(clone)自己一样,当然创建两个一模一样的进程是没有意义的,为了区分父进程和子进程,我们必须跟踪fork调用返回值。

当fork调用失败的时候(内存不足或者是用户的最大进程数已到)fork返回—1,否则fork的返回值有重要的作用。

对于父进程fork返回子进程ID,而对于fork 子进程返回0,我们就是根据这个返回值来区分父子进程的。

2.关于fork的说明使用该函数时,该函数被调用一次,但返回两次,两次返回的区别是子进程的返回值是0,而父进程的返回值则是新子进程的进程ID。

将子进程ID返回给父进程的理由是:因为一个进程的子进程可以多于一个,所以没有一个函数可以是一个子进程获得其所有子进程的进程ID。

而fork函数使子进程得到的返回值是0的理由是:一个子进程只会有一个父进程,所以子进程总是可以调用函数getpid获得其父进程的进程ID。

3.系统调用exec族调用的说明父进程创建子进程后,子进程一般要执行不同的程序。

为了调用系统程序,我们可以使用系统调用exec族调用。

Exec族调用有以下五个函数:intexecl(constchar*path,constchar*arg,?);intexeclp(constchar*file,constchar*arg,?);intexecle(constchar*path,constchar*arg,?);intexecv(constchar*path,constchar*argv[]);intexecvp(constchar*file,constchar*argv[]);exec族调用可以执行给定程序。

进程管理实验报告分析(3篇)

进程管理实验报告分析(3篇)

第1篇一、实验背景进程管理是操作系统中的一个重要组成部分,它负责管理计算机系统中所有进程的创建、调度、同步、通信和终止等操作。

为了加深对进程管理的理解,我们进行了一系列实验,以下是对实验的分析和总结。

二、实验目的1. 加深对进程概念的理解,明确进程和程序的区别。

2. 进一步认识并发执行的实质。

3. 分析进程争用资源的现象,学习解决进程互斥的方法。

4. 了解Linux系统中进程通信的基本原理。

三、实验内容1. 使用系统调用fork()创建两个子进程,父进程和子进程分别显示不同的字符。

2. 修改程序,使每个进程循环显示一句话。

3. 使用signal()捕捉键盘中断信号,并通过kill()向子进程发送信号,实现进程的终止。

4. 分析利用软中断通信实现进程同步的机理。

四、实验结果与分析1. 实验一:父进程和子进程分别显示不同的字符在实验一中,我们使用fork()创建了一个父进程和两个子进程。

在父进程中,我们打印了字符'a',而在两个子进程中,我们分别打印了字符'b'和字符'c'。

实验结果显示,父进程和子进程的打印顺序是不确定的,这是因为进程的并发执行。

2. 实验二:每个进程循环显示一句话在实验二中,我们修改了程序,使每个进程循环显示一句话。

实验结果显示,父进程和子进程的打印顺序仍然是随机的。

这是因为并发执行的进程可能会同时占用CPU,导致打印顺序的不确定性。

3. 实验三:使用signal()捕捉键盘中断信号,并通过kill()向子进程发送信号在实验三中,我们使用signal()捕捉键盘中断信号(按c键),然后通过kill()向两个子进程发送信号,实现进程的终止。

实验结果显示,当按下c键时,两个子进程被终止,而父进程继续执行。

这表明signal()和kill()在进程控制方面具有重要作用。

4. 实验四:分析利用软中断通信实现进程同步的机理在实验四中,我们分析了利用软中断通信实现进程同步的机理。

linux的进程管理实验总结

linux的进程管理实验总结

linux的进程管理实验总结Linux的进程管理实验总结1. 引言Linux中的进程管理是操作系统的核心功能之一,在实际的系统运行中起着重要的作用。

进程管理能够有效地分配系统资源、管理进程的运行状态和优先级,以及监控进程的行为。

本文将以Linux的进程管理实验为主题,分步骤介绍实验过程及总结。

2. 实验目的本次实验的目的是理解Linux中进程的概念,掌握进程的创建、运行和终止的基本操作,以及进程的状态转换过程。

3. 实验环境本次实验使用的是Linux操作系统,可以选择使用虚拟机安装Linux或者使用Linux主机进行实验。

4. 实验步骤4.1 进程的创建在Linux中,可以使用系统调用fork()来创建一个新的子进程。

在实验中,可以编写一个简单的C程序来调用fork()系统调用,实现进程的创建。

具体步骤如下:(1)创建一个新的C程序文件,例如"process_create.c"。

(2)在C程序文件中,包含必要的头文件,如<stdio.h>和<unistd.h>。

(3)在C程序文件中,编写main()函数,调用fork()函数进行进程的创建。

(4)编译并运行该C程序文件,观察控制台输出结果。

实验中,可以通过观察控制台输出结果,判断新的子进程是否被成功创建。

4.2 进程的运行在Linux中,通过调用系统调用exec()可以用一个新的程序替换当前进程的执行。

可以使用exec()函数来实现进程的运行。

具体步骤如下:(1)创建一个新的C程序文件,例如"process_run.c"。

(2)在C程序文件中,包含必要的头文件和函数声明,如<stdio.h>和<unistd.h>。

(3)在C程序文件中,编写main()函数,调用execl()函数来执行一个可执行程序。

(4)编译并运行该C程序文件,观察控制台输出结果。

实验中,可以通过观察控制台输出结果,判断新的程序是否被成功执行。

实验报告5Linux进程管理

实验报告5Linux进程管理实验五 Linux进程管理四、实验过程(实验步骤、记录、数据、分析、结果)(⼀)进程查看、终⽌、挂起及暂停等操作1、使⽤ps命令查看和控制进程1)显⽰本⽤户进程#ps2)显⽰所有⽤户的进程#ps–au3)在后台运⾏cat命令#cat&4)查看进程cat#ps aux |grep cat5)杀死进程cat#kill -9 cat6)再次查看进程cat,看看是否被杀死。

2、使⽤top命令查看和控制进程1)⽤top命令动态显⽰当前的进程。

2)只显⽰某⼀⽤户的进程(u)3)杀死指定进程号的进程(k)3、挂起和恢复进程1)执⾏命令cat2)按【ctrl+z】挂起进程3)输⼊jobs命令,查看作业4)输⼊bg,把cat切换到后台执⾏5)输⼊fg,把cat切换到前台执⾏6)按【ctrl+c】结束进程(⼆)通过at命令实现计划任务1、5分钟后执⾏/bin/date#at now+5minutesat>/bin/dateat>(提⽰:输⼊【ctrl+d】job任务号at 年-⽉-⽇⼩时:分钟如何查看结果?使⽤atq可以查询到已添加的at计划任务2、查找系统中任何以c为后缀名的⽂档,将结果保存到$HOME/findc⽂件中,指定时间为2016年12⽉01⽇早上8点#at 8am 12/01/16at>find / -name ‘*.c’>$HOME/findcat>job任务号at 年-⽉-⽇⼩时:分钟如何查看结果?使⽤atq可以查询到已添加的at计划任务3、2题的命令写到$HOME/findjob中,使⽤at命令执⾏,并将结果保存到$HOME/findfc⽂件中,指定时间为当前时间后5分钟#vi $HOME/findjob内容如下:find / -name ‘*.c’>$HOME/findfc存盘退出#at –f $HOME/findjob now+5minutes4、at命令实现在3天后统计/etc/inittab⽂件的⾏数,将统计结果发送⾄$HOME/initline⽂件中#at now+3daysat>wc–l /etc/inittab>>$HOME/initlineat>5.列出现有的所有at任务,并记下相关信息6、删除某at任务,并进⾏查看是否删除(三)通过cron命令实现计划任务1、使⽤cron命令实现12⽉每天下午2点系统进⾏维护状态,重新启动系统#vi $HOME/shutcron输⼊内容:00 14 * 12 * /sbin/shutdown–r存盘退出#crontab $HOME/shutcron2、使⽤cron命令实现在12⽉1号星期四的17点30分查看/etc/passwd内容,并将查看结果送⾄$HOME/passtext #vi $HOME/checkcron输⼊内容:30 17 1 12 4 more /etc/passwd>$HOME/passtext存盘退出#crontab $HOME/checkcron3、查看当前的crontab⽂件#crontab -l4、⽤户user的crontab⽂件#crontab –u user –r。

Linux操作系统实验--进程

Linux操作系统实验--进程Linux操作实验实验目的:1. 了解有关Linux进程的属性;2. 学习有关Linux的前台、后台进程及守护进程;3. 学习有关Linux命令的顺序执行和并发执行;4. 学习有关挂起和终止进程;5. 了解Linux的信号。

6. 了解你系统中Linux进程的层次结构。

实验内容:实验用到的命令:ps、kill、nice、pstree等1. 进入你的 linux系统2. 在你进入系统中,有多少进程在运行?进程init、sched、cron、inetd的ID是多少。

给出你得到这些信息的会话过程。

3. init、sched、cron和inetd进程的父进程是哪一个?这些父进程的ID是什么?init、sched、cron和inetd进程的优先数是多少?根据优先数从高到低(大到小)列出这些进程。

给出会话过程。

4. 你系统中有多少个HTTP服务进程?它们的进程ID是什么?获得上面每个信息用一个命令实现。

给出你的会话过程。

5. 有多少个sh、bash、csh和tcsh进程运行在你的系统中?给出会话过程。

6. linux系统中,进程可以在前台或后台运行。

前台进程在运行结束前一直控制着终端。

若干个命令用分号(;)分隔形成一个命令行,用圆括弧把多个命令挂起来,他们就在一个进程里执行。

使用“&”符作为命令分隔符,命令将并发执行。

可以在命令行末尾加“&”使之成为后台命令。

请用一行命令实现以下功能,它一小时后再屏幕上显示文字“Time for Lunch!”来提醒你去吃午餐。

给出会话过程。

注:可以使用sleep命令7. 写一个命令行,实现find 和sort 命令的并发执行。

find命令显示在你的主目录下foobar文件的路径;sort 命令以GPA作为关键字排序smallFile 文件,且忽略字段间的空格。

两个命令的错误信息重定向到/dev/null中。

find命令的输出重定向到find.out 文件中,sort 命令的输出重定向到sort.out文件中。

操作系统原理实验4-进程控制

《操作系统原理》实验报告
实验序号:4 实验项目名称:进程控制
一、实验目的及要求
1. 加深对进程信号量的理解。

2. 理解进程同步与互斥机制。

3. 掌握Linux操作系统下的进程控制编程。

二、实验设备(环境)及要求
1.虚拟机VMware Workstation、Ubuntu操作系统和C语言编程。

2.编写一段程序,使用系统调用fork()创建两个子进程,再用系统调用signal()让父进程捕捉键盘上来的中断信号(即按Ctrl C键),当捕捉到中断信号后,父进程调用kill()向两个子进程发出信号,子进程捕捉到信号后,分别输出下面信息后终止:
child process 1 is killed by parent!
child process 2 is killed by parent!
父进程等待两个子进程终止后,输出以下信息后终止:
parent process is killed!
三、实验内容与步骤
代码:
在终端上进行测试
四、实验结果与数据处理
五、分析与讨论
了解了计算机进程的管理以及signal()函数的作用。

六、教师评语成绩。

进程管理实验报告

进程管理实验报告
摘要:
进程管理是操作系统中的重要概念之一,它涉及到进程的创建、调度和终止等方面。

本实验通过使用C语言编写一个简单的进程管
理程序来加深对进程管理原理的理解。

实验分为进程创建、调度和
终止三个部分,通过实验结果可以验证进程管理算法的正确性和效率。

1. 引言
进程是计算机中进行资源分配和调度的基本单位,它代表了一
个正在运行的程序。

进程管理是操作系统中的一个核心功能,负责
分配资源、调度进程和管理进程的状态等。

通过对进程管理的研究
和实验,可以深入了解操作系统的工作原理,并且优化进程管理算法,提高系统性能。

2. 实验目的
本实验的主要目的是通过编写一个进程管理程序,实现进程的创建、调度和终止等功能。

通过实验,验证进程管理算法的正确性和效率,并加深对进程管理原理的理解。

3. 实验环境
本实验使用C语言进行编程,采用Linux操作系统。

4. 实验内容
4.1 进程创建
进程创建是指操作系统为程序创建一个进程,使其能够在系统中运行。

在本实验中,我们使用fork()函数创建一个子进程,并通过exec()函数加载可执行文件。

4.2 进程调度
进程调度是指根据一定的算法选择哪个进程优先执行。

常见的调度算法有先来先服务(FCFS)、最短作业优先(SJF)、优先级调度等。

在本实验中,我们选择简单的先来先服务调度算法。

4.3 进程终止。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

长安大学
操作系统实验报告
实验课程:操作系统
实验名称: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()函数,查看了指定路径中的文件。

(3)对于修改后的程序2:改变了系统调用execl()中参数的文件路径和可执行文件名,即可在程序fork2.c中执行另一个程序wyf.c(但要注意可执行文件名是123)。

五、总结
调试过程中遇到的主要问题及解决过程
运行程序2的时候如果不加execl()函数的头文件<unistd.h>会提示警告,而且因为execl()的第三个参数是字符型指针数组,所以要强制转换成指针型,即写成 (char*)0 才行。

相关文档
最新文档