实验四 进程和计划任务管理
- 格式:doc
- 大小:27.00 KB
- 文档页数:1
操作系统实验报告进程管理操作系统实验报告:进程管理引言操作系统是计算机系统中的核心软件,负责管理计算机的硬件资源和提供用户与计算机之间的接口。
进程管理是操作系统的重要功能之一,它负责对计算机中运行的各个进程进行管理和调度,以保证系统的高效运行。
本实验报告将介绍进程管理的基本概念、原理和实验结果。
一、进程管理的基本概念1. 进程与线程进程是计算机中正在运行的程序的实例,它拥有独立的内存空间和执行环境。
线程是进程中的一个执行单元,多个线程可以共享同一个进程的资源。
进程和线程是操作系统中最基本的执行单位。
2. 进程状态进程在运行过程中会经历不同的状态,常见的进程状态包括就绪、运行和阻塞。
就绪状态表示进程已经准备好执行,但还没有得到处理器的分配;运行状态表示进程正在执行;阻塞状态表示进程由于某些原因无法继续执行,需要等待某些事件的发生。
3. 进程调度进程调度是操作系统中的一个重要任务,它决定了哪个进程应该获得处理器的使用权。
常见的调度算法包括先来先服务(FCFS)、最短作业优先(SJF)和时间片轮转等。
二、进程管理的原理1. 进程控制块(PCB)PCB是操作系统中用于管理进程的数据结构,它包含了进程的各种属性和状态信息,如进程标识符、程序计数器、寄存器值等。
通过PCB,操作系统可以对进程进行管理和控制。
2. 进程创建与撤销进程的创建是指操作系统根据用户的请求创建一个新的进程。
进程的撤销是指操作系统根据某种条件或用户的请求终止一个正在运行的进程。
进程的创建和撤销是操作系统中的基本操作之一。
3. 进程同步与通信多个进程之间可能需要进行同步和通信,以实现数据共享和协作。
常见的进程同步与通信机制包括互斥锁、信号量和管道等。
三、实验结果与分析在本次实验中,我们使用了一个简单的进程管理模拟程序,模拟了进程的创建、撤销和调度过程。
通过该程序,我们可以观察到不同调度算法对系统性能的影响。
实验结果显示,先来先服务(FCFS)调度算法在一些情况下可能导致长作业等待时间过长,影响系统的响应速度。
实验4 Windows 基本进程管理一、实验目的通过观察任务管理器,来观察各个进程的动态信息。
二、实验工具1、一台Windows XP 操作系统的计算机。
2、计算机装有Microsoft Visual Studio C++6.0 专业版或企业版。
三、预备知识●任务管理器:了解用户计算机上正在运行的程序和进程的相关信息。
●Windows 环境中的编程相关内容参见本次实验参考资料部分。
四、基本实验(按照基本实验内容完成)以下给出一个参考示例:1、观察任务管理器:步骤一:进入Windows XP;步骤二:按Ctrl + Alt + Delete(或按Ctrl + Shift + Esc)都可以调出任务管理器;步骤三:点击菜单“查看”—>“选择列”,可以看到一些选项。
这里,我们可以查看每个进程的PID,CPU使用时间,内存的使用情况,当前的进程是系统的还是用户的,每个句柄的数量,每个进程的优先级等等。
步骤五:点击“性能”,可以看到CPU的使用情况,内存的使用情况。
2、通过命令观察进程情况步骤一:点击“开始”—>“运行”,输入“cmd”,进入“命令提示符”下;步骤二:输入“tasklist”;步骤三:继续输入“tasklist /?”,来寻找帮助,里面有更详细的解释(也可参见实验3中相关内容)。
3、通过命令来关闭一个进程步骤一:点击“开始”—>“运行”,输入“cmd”,进入“命令提示符”下;步骤二:输入“tasklist”后回车执行;步骤三:继续输入“taskkill /PID 208 /T”。
这里为了更直观,我打开了一个记事本,并演示关闭记事本这个进程第一次没有空格,错误,第二次可以看到记事本被成功关闭记事本的进程五、实验编程(按照实验编程内容完成)以下给出一个参考示例:1、进行一个简单的Windows的图形用户接口(GUI)编程步骤一:进入Windows XP;步骤二:进入Microsoft Visual Studio C++6.0;步骤三:在菜单栏中单击“文件”->“新建”->“文件”->“C++ Source File”,选择路径(如D:\1.cpp),并命名为1.cpp;步骤四:将下面的程序源代码输入;步骤五:单击Windows系统的“开始”按钮->点击“运行”->输入“cmd”;步骤六:依次输入命令为:cd\d: //这里是作者存放的源程序地方,如果是放在其它地方,则利用cd命令进入源程序的地方。
[root@localhost ~]# ps 显示当前用户会话中打开的进程PID TTY TIME CMD4321 pts/1 00:00:00 bash4420 pts/1 00:00:00 ps[root@localhost ~]# ps aux 以简单列表的形式显示出所有进程信息USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDroot 1 0.0 0.1 2072 664 ? Ss 15:43 0:00 init [5]root 2 0.0 0.0 0 0 ? S< 15:43 0:00 [migration/0]root 3 0.0 0.0 0 0 ? SN 15:43 0:00 [ksoftirqd/0]root 4 0.0 0.0 0 0 ? S< 15:43 0:00 [watchdog/0]root 5 0.0 0.0 0 0 ? S< 15:43 0:00 [events/0][root@localhost ~]# ps -elf 以长格式显示系统中所有的进程信息F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD4 S root 1 0 0 75 0 - 518 - 15:43 ? 00:00:00 init1 S root2 1 0 -40 - - 0 migrat 15:43 ? 00:00:00 [mig]1 S root 3 1 0 94 19 - 0 ksofti 15:43 ? 00:00:00 [kso][root@localhost ~]# ps aux | grep bash 过滤出包含bash的进程信息root 4064 0.0 0.1 6504 628 ? Ss 15:45 0:00 /usr/bin/ssh-agent /bin/sh -c exec -l /bin/bash -c "/usr/bin/dbus-launch --exit-with-session /etc/X11/xinit/Xclients" root 4321 0.0 0.4 5640 1504 pts/1 Ss 15:46 0:00 bashroot 4672 0.0 0.1 5020 696 pts/1 R+ 16:01 0:00 grep bash[root@localhost ~]# top 查看进程动态信息top - 16:04:42 up 20 min, 2 users, load average: 0.00, 0.00, 0.00Tasks: 120 total, 2 running, 116 sleeping, 0 stopped, 2 zombieCpu(s): 0.3%us, 0.3%sy, 0.0%ni, 99.3%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%stMem: 360884k total, 354720k used, 6164k free, 14852k buffersSwap: 1052248k total, 0k used, 1052248k free, 209276k cachedPID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND4230 root 20 0 39864 20m 10m S 0.0 5.9 0:00.15 puplet4158 root 15 0 128m 20m 16m S 0.0 5.8 0:01.07 vmtoolsd[root@localhost ~]# pgrep -l "log" 查询进程名中包含log的进程及其PID号2987 syslogd2990 klogd[root@localhost ~]# pgrep -l -U root -t tty1 查询用户root在tty1终端上运行的进程及PID号3583 mingetty[root@localhost ~]# pstree -aup 查看当前系统的进程树,包括各进程对应的PID号,用户名,完整命令等init,1├─acpid,3198├─anacron,3482 -s├─atd,3490├─auditd,2963│├─audispd,2965││└─{audispd},2966│└─{auditd},2964├─automount,3278│├─{automount},3279│├─{automount},3280│├─{automount},3283│└─{automount},3286├─avahi-daemon,3516,avahi[root@localhost ~]# cp /dev/cdrom haha.iso & 后台运行复制任务[1] 4355[root@localhost ~]# firefox http://localhost & 在后台运行火狐浏览器,不影响终端的使用[1] 4559[root@localhost ~]# jobs -l 查看当前终端中在后台运行的进程任务[1]+ 4559 Running firefox http://localhost &bg命令可以将后台中暂停执行(ctrl+z组合键挂起)的任务恢复运行fg 1命令可以将后台任务重新恢复到前台运行[root@localhost ~]# firefox http://localhost & 后台运行[1] 4842[root@localhost ~]# fg 1 恢复到前台运行firefox http://localhost[root@localhost ~]# pgrep -l "firefox" 查看firefox进程的PID5108 firefox[root@localhost ~]# kill 5108 终止firefox进程[root@localhost ~]# /usr/lib/firefox-3.0.18/run-mozilla.sh: line 131: 5108 已终止"$prog" ${1+"$@"}[root@localhost ~]# kill -9 5108 强制终止[root@localhost ~]# killall -9 firefox 杀死进程[root@localhost ~]# /usr/lib/firefox-3.0.18/run-mozilla.sh: line 131: 5215 已杀死"$prog" ${1+"$@"}[root@localhost ~]# pkill -9 -U "hehe" 强行杀死用户hehe的进程一次性计划任务:[root@localhost ~]# service atd status 查看atd服务是否已经运行atd (pid 3490) 正在运行...[root@localhost ~]# date 查看日期2015年01月31日星期六17:05:38 CST[root@localhost ~]# at 17:10 设置当天17点10分回车at> shutdown -r now<EOT> 重启系统job 1 at 2015-01-31 17:10 ctrl+d提交[root@localhost ~]# atq 查询计划任务1 2015-01-31 17:10 a root[root@localhost ~]# atrm 1 删除第一个计划任务[root@localhost ~]# atq 再查看已经没有计划任务周期性任务设置:[root@localhost ~]# service crond status 查看crond服务是否已经运行crond (pid 3440) 正在运行...[root@localhost ~]# crontab -e 编辑计划任务列表55 23 * * 7 /bin/cp /etc/passwd /home/jerry/pwd.txt每周日晚上23:55将/etc/passwd文件的内容复制到宿主目录中保存为pad.txt[root@localhost ~]# crontab -l 查看当前计划任务[root@localhost ~]# crontab -l -u hehe 查看用户hehe的计划任务删除计划任务可crontab -e编辑,然后删除其中内容若要清空所有任务计划,可以执行crontab -r命令。
★进程管理实验报告_共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族调用可以执行给定程序。
第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. 实验四:分析利用软中断通信实现进程同步的机理在实验四中,我们分析了利用软中断通信实现进程同步的机理。
实验四进程和计划任务管理进程和计划任务管理是计算机操作系统的核心功能之一。
无论是操作系统还是应用软件,进程和计划任务的管理都至关重要。
进程是计算机中程序执行的基本单位,每个进程都有其独立的运行环境和数据空间。
而计划任务则是计算机根据用户设置和系统需求,自动执行特定任务的能力。
在本次实验中,我们将深入了解进程和计划任务管理的基本原理,掌握常用的进程管理命令,学习计划任务的创建、修改和删除等操作。
一、实验目的1.理解进程和计划任务的概念,掌握进程的基本管理命令。
2.学会创建、修改和删除计划任务,实现自动化管理。
3.提高计算机系统的运行效率,优化系统资源分配。
二、实验环境本次实验在Windows10操作系统上进行,要求学生熟悉实验环境,掌握基本的系统操作。
三、实验内容1.进程管理(1)查看进程我们要学会查看当前系统中运行的进程。
可以使用“任务管理器”命令来查看进程。
打开命令提示符,输入“taskmgr”并回车,弹出任务管理器界面。
在“进程”标签下,可以查看当前系统中所有的进程。
(2)结束进程当某个进程异常或需要终止时,我们可以使用“taskkill”命令来结束进程。
命令格式为:“taskkill/PIDprocess-id/F”。
其中,process-id为要结束的进程ID。
例如,要结束进程ID为的进程,可以输入命令:“taskkill/PID/F”并回车。
(3)启动进程有时,我们需要启动一个已经停止的进程。
可以使用“start”命令来启动进程。
命令格式为:“start/bmand”。
其中,mand为要启动的程序命令。
例如,要启动记事本程序,可以输入命令:“start/bnotepad”并回车。
2.计划任务管理(1)创建计划任务计划任务可以帮助我们自动执行一些重复性的工作。
在Windows 系统中,可以使用“任务计划程序”来创建计划任务。
打开“任务计划程序”,“创建基本任务”,填写任务名称、描述以及触发器(何时触发任务)。
一、实验背景及目的进程是操作系统中基本的活动单位,进程管理是操作系统核心功能之一。
为了深入理解进程的概念、进程状态转换、进程同步与互斥等知识,我们进行了进程管理实验。
本次实验旨在通过编写程序,模拟进程的创建、调度、同步与互斥等操作,加深对进程管理的理解。
二、实验内容及方法1. 进程创建与状态转换(1)使用系统调用fork()创建子进程,观察父进程和子进程的状态转换过程。
(2)使用系统调用exec()替换子进程的内容,观察子进程状态变化。
2. 进程调度(1)编写进程调度程序,实现最高优先数优先调度算法和先来先服务调度算法。
(2)模拟进程就绪队列,观察调度算法对进程执行顺序的影响。
3. 进程同步与互斥(1)使用信号量实现进程同步,观察进程同步效果。
(2)使用互斥锁实现进程互斥,观察进程互斥效果。
4. 进程通信(1)使用管道实现进程间通信,观察通信效果。
(2)使用共享内存实现进程间通信,观察通信效果。
三、实验结果与分析1. 进程创建与状态转换实验结果显示,使用fork()创建子进程后,父进程和子进程的状态均为运行态。
当父进程调用exec()替换子进程内容后,子进程状态变为僵尸态,父进程状态变为运行态。
这说明进程在创建和替换过程中,其状态发生了相应的变化。
2. 进程调度实验结果显示,最高优先数优先调度算法和先来先服务调度算法均能正确执行。
最高优先数优先调度算法下,优先级高的进程先执行;先来先服务调度算法下,先到达的进程先执行。
这说明两种调度算法均能实现进程的合理调度。
3. 进程同步与互斥实验结果显示,使用信号量实现进程同步时,进程能正确地按照规定的顺序执行;使用互斥锁实现进程互斥时,进程能正确地实现互斥访问共享资源。
这说明信号量和互斥锁在进程同步与互斥方面具有重要作用。
4. 进程通信实验结果显示,使用管道实现进程间通信时,进程能正确地接收和发送数据;使用共享内存实现进程间通信时,进程能正确地访问共享内存中的数据。
《操作系统》课程实验报告一、实验目的本次《操作系统》课程实验的主要目的是通过实际操作和观察,深入理解操作系统的工作原理、进程管理、内存管理、文件系统等核心概念,并掌握相关的操作技能和分析方法。
二、实验环境1、操作系统:Windows 10 专业版2、开发工具:Visual Studio Code3、编程语言:C/C++三、实验内容(一)进程管理实验1、进程创建与终止通过编程实现创建新进程,并观察进程的创建过程和资源分配情况。
同时,实现进程的正常终止和异常终止,并分析其对系统的影响。
2、进程同步与互斥使用信号量、互斥锁等机制实现进程之间的同步与互斥。
通过模拟多个进程对共享资源的访问,观察并解决可能出现的竞争条件和死锁问题。
(二)内存管理实验1、内存分配与回收实现不同的内存分配算法,如首次适应算法、最佳适应算法和最坏适应算法。
观察在不同的内存请求序列下,内存的分配和回收情况,并分析算法的性能和优缺点。
2、虚拟内存管理研究虚拟内存的工作原理,通过设置页面大小、页表结构等参数,观察页面的换入换出过程,以及对系统性能的影响。
(三)文件系统实验1、文件操作实现文件的创建、打开、读取、写入、关闭等基本操作。
观察文件在磁盘上的存储方式和文件系统的目录结构。
2、文件系统性能优化研究文件系统的缓存机制、磁盘调度算法等,通过对大量文件的读写操作,评估不同优化策略对文件系统性能的提升效果。
四、实验步骤(一)进程管理实验步骤1、进程创建与终止(1)使用 C/C++语言编写程序,调用系统函数创建新进程。
(2)在子进程中执行特定的任务,父进程等待子进程结束,并获取子进程的返回值。
(3)通过设置异常情况,模拟子进程的异常终止,观察父进程的处理方式。
2、进程同步与互斥(1)定义共享资源和相关的信号量或互斥锁。
(2)创建多个进程,模拟对共享资源的并发访问。
(3)在访问共享资源的关键代码段使用同步机制,确保进程之间的正确协作。
(4)观察并分析在不同的并发情况下,系统的运行结果和资源竞争情况。
进程管理实验报告进程管理实验报告引言:进程管理是操作系统中的重要概念,它负责调度和控制计算机系统中的各个进程,确保它们能够有序地执行。
本实验旨在通过实际操作和观察,深入了解进程管理的原理和方法,并通过实验结果分析其影响因素和优化策略。
实验一:进程创建与终止在本实验中,我们首先进行了进程的创建和终止实验。
通过编写简单的程序,我们能够观察到进程的创建和终止过程,并了解到进程控制块(PCB)在其中的作用。
实验结果显示,当一个进程被创建时,操作系统会为其分配一个唯一的进程ID,并为其分配必要的资源,如内存空间、文件描述符等。
同时,操作系统还会为该进程创建一个PCB,用于存储该进程的相关信息,如进程状态、程序计数器等。
当我们手动终止一个进程时,操作系统会释放该进程所占用的资源,并将其PCB从系统中删除。
这样,其他进程便可以继续使用这些资源,提高系统的效率和资源利用率。
实验二:进程调度算法进程调度算法是决定进程执行顺序的重要因素。
在本实验中,我们通过模拟不同的进程调度算法,比较它们在不同场景下的表现和效果。
我们选择了三种常见的进程调度算法:先来先服务(FCFS)、最短作业优先(SJF)和轮转调度(RR)。
通过设置不同的进程执行时间和优先级,我们观察到不同调度算法对系统吞吐量和响应时间的影响。
实验结果显示,FCFS算法适用于执行时间较短的进程,能够保证公平性,但在执行时间较长的进程出现时,会导致等待时间过长,影响系统的响应速度。
SJF 算法在执行时间较长的进程时表现出色,但对于执行时间较短的进程,可能会导致饥饿现象。
RR算法能够在一定程度上平衡各个进程的执行时间,但对于执行时间过长的进程,仍然会影响系统的响应速度。
实验三:进程同步与互斥在多进程环境中,进程之间的同步和互斥是必不可少的。
在本实验中,我们通过模拟进程间的竞争和互斥关系,观察进程同步与互斥的实现方式和效果。
我们选择了信号量机制和互斥锁机制作为实现进程同步和互斥的方法。
实验四进程和计划任务管理
一、实验目的
1.调整多项服务的运行级别状态。
2.管理系统中的进程。
3. 设置计划运行的系统管理任务。
参见第9、10章PPT后实验要求
二、实验重难点
设置计划运行的系统管理任务。
三、实验内容与要求
优化Linux系统中的服务
☐需求描述:
⏹设置Linux系统每次开机后自动进入字符模式界面
⏹使用ntsysv调整多项服务vsftpd、httpd、crond、iptables等的运行级别状态
⏹使用chkconfig调整cups、gpm、iptables、crond、vsftpd等服务的运行级别
状态
⏹对比图形界面与字符界面对内存的占用情况
☐实现思路
⏹修改系统默认运行级别为3
⏹通过工具设置服务的默认启动状态
⏹优化启动过程
管理进程及设置计划任务
☐需求描述
⏹管理系统中的进程
⏹设置计划运行的系统管理任务
☐实现思路
⏹使用ps、pgrep命令查看进程信息并用kill命令终止进程
⏹下载cpu测试工具,结合ps、top命令查找cpu占用较高的进程
⏹通过crontab命令工具设置计划任务
四、实验学时
4学时
五、实验设备与环境
⏹装有VMWare 的主机80台
⏹Red Hat Enterprise Linux 主机。