实验二Linux进程调度及用户管理

合集下载

Linux2 调度进程

Linux2  调度进程

Linux2 调度进程在Fedora Core Linux系统中,允许多个进程并发执行。

但是,通常情况下,系统中的资源总是有限的,如果系统中并发执行的进程数量过多,就会造成系统的整体性能下降,尤其是当系统中存在黑客进程或者病毒进程时,甚至可能会造成系统瘫痪。

因而,有必要根据一定的策略对系统中的进程进行调度,例如,将可疑的进程终止,将不紧急的进程挂起或者降低其优先级等。

系统管理员或者普通用户都可以对进程进行调度,但是执行这种操作时要非常小心,因为有些进程是与系统运行相关联的,不能对它们有错误的调度。

可以使用如下所示的任一种方法进行进程调度:●在系统监视器的“进程”选项页中进行调度。

●在top命令的执行过程中使用交互命令进行调度。

●在命令行中直接执行各种调度进程的命令。

下面将介绍如何使用命令行命令调度进程。

1.更改进程的优先级在fedora系统中,各个进程都是具有特定的优先级的,系统在为某个进程分配CPU使用时间时是根据进程的优先级进行判定的。

有些进程比较重要,需要先执行,以提高整个程序的执行效率,而有些不太重要的进程,其优先级可以低一些。

通常情况下,大多数用户进程的优先级是相同的,但是可以使用Fedora提供的某些命令改变进程的优先级。

通过执行“ps -l”命令可以查看当前用户进程的优先级,如下所示。

PRI表示进程的优先级,它是由操作系统动态计算的,是实际的进程优先级;NI所表示的是请求进程执行优先级,它可由进程拥有者或者超级用户进行设置,NI会影响到实际的进程优先级。

下面介绍两个可以改变进程优先级的命令。

(1)nice命令格式:nice 【选项】命令功能:在启动进程时指定请求进程执行优先级。

该命令较常用的一个选项是“-n”,n值(即NI值)的范围是从-20到19。

-20代表最高的NI优先级,19代表最低的NI优先级。

如果没有该参数,将自动设置NI值为10。

默认情况下,只有超级用户才有权提高请求进程的优先级,而普通用户只能降低请求进程的优先级。

实验2 Linux进程控制

实验2 Linux进程控制

实验2 Linux 进程控制一. 实验目的1.学会查看和杀死进程。

2.加深对进程概念的理解,明确进程与程序的区别。

3.熟悉linux 下vi 的使用。

二. 实验指导1. 查看系统中的进程格式:ps [选项]例如:ps //显示当前用户在shell 下所运行的进程。

ps -u osmond //显示用户osmond 的进程。

ps -aux //显示系统中正在运行的所有进程的详细信息。

2. 杀死系统中的进程格式:kill [signal] PIDPID 是进程的识别号;signal 是向进程发出的进程信号。

3. vi 文本编辑工具进入Linux 的字符界面,输入vi file ,进入vi 编辑程序。

vi 提供了输入模式(insert mode )和命令模式(command mode )。

使用者进入vi 后,即处在命令模式下,此刻键入i 转换到输入模式。

在输入模式下,按ESC 可切换到命令模式。

命令模式下,常用的指令有::q! 离开vi ,并放弃刚在缓冲区内编辑的内容:wq 将缓冲区内的资料写入磁盘中,并离开vi:n 光标直接跳到第n:w 将当前编辑的内容存盘ESC 离开输入模式4. 有关进程控制系统调用三.实验内容1. 请在字符界面下完成下列作业控制操作:• 显示当前运行的进程• 运行cat 命令函数名调用格式 功能 fork() int fork()例:pid=fork(); 创建一个新进程,fork( )返回值意义如下: 0:在子进程中,pid 变量保存的fork( )返回值为0,表示当前进程是子进程。

>0:在父进程中,pid 变量保存的fork( )返回值为子进程的id 值(进程唯一标识符)。

-1:创建失败。

execl() int execl(新程序名,0) 重新加载进程,用新程序替换原进程。

如execl("bin/ls",0); 用bin/ls 替换原进程。

wait () int wait(int status) 例: wait(); 等待子进程运行结束。

操作系统实验报告进程调度

操作系统实验报告进程调度

操作系统实验报告进程调度操作系统实验报告:进程调度引言在计算机科学领域中,操作系统是一个重要的概念,它负责管理和协调计算机系统中的各种资源,包括处理器、内存、输入/输出设备等。

其中,进程调度是操作系统中一个非常重要的组成部分,它负责决定哪个进程在何时获得处理器的使用权,以及如何有效地利用处理器资源。

实验目的本次实验的目的是通过对进程调度算法的实验,深入理解不同的进程调度算法对系统性能的影响,并掌握进程调度算法的实现方法。

实验环境本次实验使用了一台配备了Linux操作系统的计算机作为实验平台。

在该计算机上,我们使用了C语言编写了一些简单的进程调度算法,并通过模拟不同的进程调度场景进行了实验。

实验内容1. 先来先服务调度算法(FCFS)先来先服务调度算法是一种简单的进程调度算法,它按照进程到达的顺序进行调度。

在本次实验中,我们编写了一个简单的FCFS调度算法,并通过模拟多个进程同时到达的情况,观察其对系统性能的影响。

2. 短作业优先调度算法(SJF)短作业优先调度算法是一种根据进程执行时间长度进行调度的算法。

在本次实验中,我们编写了一个简单的SJF调度算法,并通过模拟不同长度的进程,观察其对系统性能的影响。

3. 时间片轮转调度算法(RR)时间片轮转调度算法是一种按照时间片大小进行调度的算法。

在本次实验中,我们编写了一个简单的RR调度算法,并通过模拟不同时间片大小的情况,观察其对系统性能的影响。

实验结果通过实验,我们发现不同的进程调度算法对系统性能有着不同的影响。

在FCFS 算法下,长作业会导致短作业等待时间过长;在SJF算法下,长作业会导致短作业饥饿现象;而RR算法则能够较好地平衡不同进程的执行。

因此,在实际应用中,需要根据具体情况选择合适的进程调度算法。

结论本次实验通过对进程调度算法的实验,深入理解了不同的进程调度算法对系统性能的影响,并掌握了进程调度算法的实现方法。

同时,也加深了对操作系统的理解,为今后的学习和研究打下了良好的基础。

最新实验二-实验报告(进程管理)

最新实验二-实验报告(进程管理)

最新实验二-实验报告(进程管理)实验目的:1. 理解操作系统中进程的概念及其特性。

2. 掌握进程管理的基本原理和方法。

3. 学习进程创建、撤销、阻塞和唤醒等操作。

4. 熟悉进程间的同步与通信机制。

实验环境:- 操作系统:Linux/Unix- 编程语言:C/C++- 开发工具:GCC编译器,GDB调试器实验内容:1. 创建进程:编写程序,使用系统调用fork()创建子进程,并观察父进程与子进程的行为差异。

2. 进程撤销:实现一个程序,通过系统调用exit()或abort()撤销进程,并观察其对进程组和会话的影响。

3. 进程阻塞与唤醒:设计并实现一个父进程和多个子进程的程序,其中子进程执行阻塞操作(如sleep()),父进程负责唤醒这些子进程。

4. 进程同步:利用信号量或管程等同步机制,实现两个并发进程的同步操作。

5. 进程通信:通过管道(PIPE)、消息队列、共享内存等IPC机制,实现进程间的信息交换。

实验步骤:1. 设计并编写创建进程的程序代码。

2. 在Linux环境下使用GCC编译程序,并记录编译过程。

3. 运行程序,使用GDB等工具调试程序,并观察fork()的执行效果。

4. 实现进程撤销的程序,并记录exit()和abort()的不同行为。

5. 编写进程阻塞与唤醒的程序,并通过实验观察不同进程状态的变化。

6. 完成进程同步的代码实现,并测试死锁及其解决方法。

7. 编写并测试进程通信的程序,确保信息能够正确传递。

实验结果:- 展示创建进程前后的系统状态变化,包括进程表和内存分配情况。

- 记录进程撤销后,父进程收集子进程状态的输出。

- 展示进程阻塞与唤醒的输出结果,验证进程状态转换的正确性。

- 展示进程同步的实验结果,包括死锁的产生与解决。

- 展示进程通信的测试结果,验证信息传递的准确性。

实验分析:- 分析进程创建和撤销的系统资源变化。

- 讨论进程阻塞与唤醒机制的效率和应用场景。

- 探讨进程同步与通信的复杂性及其在多线程编程中的重要性。

操作系统实验2——进程控制

操作系统实验2——进程控制

实验2 进程控制一、实验目的加深对进程概念的理解,明确进程和程序和区别;进一步认识并发执行的实质;分析进程争用资源的现象。

二、实验内容1. 熟悉Linux进程控制常用命令。

2. 输入进程创建、控制的程序并调试程序。

三、实验预备知识1. 进程控制常用命令(1)ps 命令功能:查看目前的系统中有哪些进程,以及它们的执行情况。

常用命令格式及功能如下:ps 查看系统中属于自己的进程ps au 查看系统中所有用户的进程ps aux 查看系统中包含系统内部的及所有用户的进程主要输出列说明:USER:进程所有者的用户名PID:进程号TTY:进程从哪个终端启动TIME:此进程所消耗的CPU时间COMMAND:正在执行的命令或进程名称(2)top 命令功能:动态显示进程,实时监测进程状态。

与ps命令相似,只是top命令在执行后会以指定的时间间隔来刷新显示信息,以使top所显示的进程状态总是当前时刻的。

(3)kill 命令功能:结束或终止进程。

常用命令格式及功能如下:kill 5302 杀死PID为5302的进程kill -9 5302 强行杀死PID为5302的进程(4)echo $变量名功能:查看外壳变量的设定值。

例:echo $$ 显示当前进程PID2.常用系统调用函数常用系统调用函数、程序的说明、参数及定义如下:(1)fork()函数功能:创建一个新进程函数格式:int fork()其中返回int取值意义如下:小于0:创建失败0: 创建成功,在子进程中返回0值大于0: 创建成功,在父进程中返回子进程id值-1:创建失败(2)wait()函数功能:父进程等待子进程终止,以便对子进程进行善后处理。

函数格式:int wait(int *statloc)参数定义:statloc 指出子进程终止状态码的位置。

若不关心子进程的终止状态,可传递一个空指针。

返回值:正常返回时,为终止子进程的PID;错误返回时为-1;其他为0。

实验二:Linux进程管理

实验二:Linux进程管理
实验二:Linux进程管理
姓名
学号
上机时间
实验
内容
在Linux系统中,进行进程启动、调度、监控和管理
实验
目的
1.能够借助Linux进程调度命令,在系统中设置计划任务
2.能够使用Linux中各种进程监控命令,对系统中的进程进行监控和管理实验 Nhomakorabea工具
1.VMware Workstation
2.Red Hat Enterprise Linux 5
实验步骤
1.进入模拟机,Red Hat Enterprise Linux 5进程启动
2.进程调度
3查看在线用户,其中
NAME:登录用户帐号LINE:登录使用的终端
TIME:登录时间IDLE:显示用户空闲时间
COMMENT:用户从什么地方登录的网络地址
W命令进程查看,显示当前用户正在进行的进程命令行
进行ps命令监控,分为-a和-aux操作,- a选项可查看当前所有用户的所有进程,- aux组合选项,可显示最详细的进程情况
进行top动态监控
关闭和强制关闭PID为177的程序进程,其中killalll为关闭所有进程
总结
通过本节实验,学习了在Linux系统中,进行进程启动、调度、监控和管理,以及各种命令行的运行、监控及管理。

linux 实验2__进程调度算法

linux 实验2__进程调度算法

实验2 进程调度算法2.1 实验目的进程管理是操作系统中的重要功能,用来创建进程、撤消进程、实现进程状态转换,它提供了在可运行的进程之间复用CPU的方法。

在进程管理中,进程调度是核心,因为在采用多道程序设计的系统中,往往有若干个进程同时处于就绪状态,当就绪进程个数大于处理器数目时,就必须依照某种策略决定哪些进程优先占用处理器。

本实验模拟在单处理器情况下的进程调度,目的是加深对进程调度工作的理解,掌握不同调度算法的优缺点。

下面回顾一下进程管理的相关内容。

2.1.1 进程控制块为了管理和控制进程,系统在创建每一个进程时,都为其开辟一个专用的存储区,用以随时记录它在系统中的动态特性。

而当一个进程被撤消时,系统就收回分配给它的存储区。

通常,把这一存储区称为该进程的“进程控制块”(Process Control Block)。

由于PCB是随着进程的创建而建立,随着进程的撤消而取消的,因此系统是通过PCB 来“感知”一个个进程的,PCB是进程存在的唯一标志。

随操作系统的不同,PCB的格式、大小以及内容也不尽相同。

一般地,在PCB中大致应包括如下4方面的信息。

·标识信息:进程名等。

·说明信息:进程状态、程序存放位置、数据存放位置等。

·现场信息:通用寄存器内容、控制寄存器内容、断点地址等。

·管理信息:进程优先数、队列指针等。

2.1.2 进程控制块队列在多道程序设计环境里,同时会创建多个进程。

当计算机系统只有一个CPU时,每次只能让一个进程运行,其他的进程或处于就绪状态,或处于阻塞状态。

为了对这些进程进行管理,操作系统要做三件事。

(1)把处于相同状态的进程的PCB,通过各自的队列指针链接在一起,形成一个个队列。

通常有运行队列、就绪队列、阻塞队列。

(2)为每一个队列设立一个队列头指针,它总是指向排在队列之首的进程的PCB。

(3)排在队尾的进程的PCB,它的“队列指针”项内容应该为“NULL”,或一个特殊的符号,以表示这是该队的队尾PCB。

Linux终端中的系统进程调度和管理命令

Linux终端中的系统进程调度和管理命令

Linux终端中的系统进程调度和管理命令Linux操作系统作为一种开源的操作系统,具有高度的可定制性和灵活性。

在Linux终端中,系统进程调度和管理是非常重要的一部分。

本文将探讨Linux终端中常用的系统进程调度和管理命令。

一、进程调度命令1. ps命令ps命令用于查看当前系统的进程状态。

在终端中输入"ps"命令,即可列出当前运行的所有进程,并且提供各种详细信息,如进程ID (PID)、状态、CPU使用率等。

示例:```$ psPID TTY TIME CMD1 ? 00:00:01 init2 ? 00:00:00 kthreadd3 ? 00:00:00 migration/04 ? 00:00:00 ksoftirqd/0...```2. top命令top命令是一个实时的进程查看工具,用于查看当前系统的进程状态和系统资源的使用情况。

在终端中输入"top"命令,即可实时地显示进程列表和各个进程的资源占用情况。

示例:```$ toptop - 20:30:50 up 1 day, 1:35, 3 users, load average: 0.02, 0.02, 0.00 Tasks: 256 total, 1 running, 255 sleeping, 0 stopped, 0 zombie%Cpu(s): 0.2 us, 0.2 sy, 0.0 ni, 99.6 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 stKiB Mem : 4044080 total, 834456 free, 2679908 used, 532716 buff/cacheKiB Swap: 4194300 total, 0 free, 4194300 used. 1185820 avail Mem...```3. nice命令nice命令用于设置进程的优先级。

进程的调度实验报告(3篇)

进程的调度实验报告(3篇)

第1篇一、实验目的通过本次实验,加深对操作系统进程调度原理的理解,掌握先来先服务(FCFS)、时间片轮转(RR)和动态优先级(DP)三种常见调度算法的实现,并能够分析这些算法的优缺点,提高程序设计能力。

二、实验环境- 编程语言:C语言- 操作系统:Linux- 编译器:GCC三、实验内容本实验主要实现以下内容:1. 定义进程控制块(PCB)结构体,包含进程名、到达时间、服务时间、优先级、状态等信息。

2. 实现三种调度算法:FCFS、RR和DP。

3. 创建一个进程队列,用于存储所有进程。

4. 实现调度函数,根据所选算法选择下一个执行的进程。

5. 模拟进程执行过程,打印进程执行状态和就绪队列。

四、实验步骤1. 定义PCB结构体:```ctypedef struct PCB {char processName[10];int arrivalTime;int serviceTime;int priority;int usedTime;int state; // 0: 等待,1: 运行,2: 完成} PCB;```2. 创建进程队列:```cPCB processes[MAX_PROCESSES]; // 假设最多有MAX_PROCESSES个进程int processCount = 0; // 实际进程数量```3. 实现三种调度算法:(1)FCFS调度算法:```cvoid fcfsScheduling() {int i, j;for (i = 0; i < processCount; i++) {processes[i].state = 1; // 设置为运行状态printf("正在运行进程:%s\n", processes[i].processName); processes[i].usedTime++;if (processes[i].usedTime == processes[i].serviceTime) { processes[i].state = 2; // 设置为完成状态printf("进程:%s 完成\n", processes[i].processName); }for (j = i + 1; j < processCount; j++) {processes[j].arrivalTime--;}}}```(2)RR调度算法:```cvoid rrScheduling() {int i, j, quantum = 1; // 时间片for (i = 0; i < processCount; i++) {processes[i].state = 1; // 设置为运行状态printf("正在运行进程:%s\n", processes[i].processName); processes[i].usedTime++;processes[i].serviceTime--;if (processes[i].serviceTime <= 0) {processes[i].state = 2; // 设置为完成状态printf("进程:%s 完成\n", processes[i].processName); } else {processes[i].arrivalTime++;}for (j = i + 1; j < processCount; j++) {processes[j].arrivalTime--;}}}```(3)DP调度算法:```cvoid dpScheduling() {int i, j, minPriority = MAX_PRIORITY;int minIndex = -1;for (i = 0; i < processCount; i++) {if (processes[i].arrivalTime <= 0 && processes[i].priority < minPriority) {minPriority = processes[i].priority;minIndex = i;}}if (minIndex != -1) {processes[minIndex].state = 1; // 设置为运行状态printf("正在运行进程:%s\n", processes[minIndex].processName);processes[minIndex].usedTime++;processes[minIndex].priority--;processes[minIndex].serviceTime--;if (processes[minIndex].serviceTime <= 0) {processes[minIndex].state = 2; // 设置为完成状态printf("进程:%s 完成\n", processes[minIndex].processName); }}}```4. 模拟进程执行过程:```cvoid simulateProcess() {printf("请选择调度算法(1:FCFS,2:RR,3:DP):");int choice;scanf("%d", &choice);switch (choice) {case 1:fcfsScheduling();break;case 2:rrScheduling();break;case 3:dpScheduling();break;default:printf("无效的调度算法选择。

Linux操作系统实验2-进程调度的操作

Linux操作系统实验2-进程调度的操作

1.查看并创建用户的计划任务列表crontab文件;
1)查看crontab命令的帮助信息;
在终端下键入info crontab, 进入crontab帮助手册:
2)查看用户的计划任务列表;
查看特定用户的计划任务列表:
在终端下键入crontab -l -u duke 列出duke用户的所有定时任务,如下:
终端提示no crontab for duke,说明用户duke目前没有计划任务。

查看当前用户的计划任务列表:
在终端下键入crontab -l 列出当前用户的所有定时任务,如下:
终端提示no crontab for duke,说明用户duke目前没有计划任务。

2.通过crontab文件对调度进程的计划任务进行编排操作。

1)建立crontab文件;
在终端下键入crontab -e ,提示当前无crontab文件,选择编辑器并新建如下:进入VI编辑器,编辑当前crontab文件,可以看到提供了一些注解作说明。

在crontab中输入0 3 * * 1 ls /etc 并保存,实现在每周一早上三点执行ls /etc 命令。

再次查看crontab文件,可以看到已经保存。

2)使用crontab命令安装crontab文件,安排计划任务;
对于位于/home下的crontab文件,使用crontab <filename>载入crontab计划任务中,如图:
3)查看计划任务表,确认计划任务是否已被安排;
键入crontab -l,查看计划任务安排情况,如图:
4)删除计划任务列表。

在终端下键入crontab -r ,删除当前用户的crontab文件,如下:。

实验二Linux进程调度及用户管理

实验二Linux进程调度及用户管理

实验二1 实验名称:Linux进程调度及用户管理2 实验目标2.1 掌握手工启动前后台作业的方法。

2.2 掌握进程与作业管理的相关Shell命令。

2.3 掌握at调度和cron调度的设置方法。

2.4了解系统性能监视的基本方法。

2.5 掌握用户管理基本方法和命令。

2.6 具有批量新建用户能力。

2.7掌握非实时的通信方式。

3 实验环境和准备3.1Windows XP下基于“VMware Workstation”虚拟机环境的Red Hat Enterprise Linux Server 5系统。

3.2将主机改为具有个人学号后3位特征的名称。

4 实验要求、步骤及结果4.1复习vi的基本操作;实现用户间非实时通信;进行作业和进程的基本管理。

【操作要求1】root用户在个人用户主目录下,利用vi新建student.txt文件;存盘退出。

内容参见下表左列。

student.txt文件内容password.txt文件内容S01:x:800:800::/home/S01:/bin/bash S02:x:801:800::/home/S02:/bin/bash S03:x:802:800::/home/S03:/bin/bash S04:x:803:800::/home/S04:/bin/bash S05:x:804:800::/home/S05:/bin/bash S06:x:805:800::/home/S06:/bin/bash S07:x:806:800::/home/S07:/bin/bash S08:x:807:800::/home/S08:/bin/bash S09:x:808:800::/home/S09:/bin/bash S10:x:809:800::/home/S10:/bin/bash S11:x:810:800::/home/S11:/bin/bash S01:12345678 S02:12345678 S03:12345678 S04:12345678 S05:12345678【操作步骤1-新建】【操作步骤2-存盘】【操作要求2】利用vi新建password.txt文件;内容参见上表右列。

Lniux系统下用户的管理实验报告

Lniux系统下用户的管理实验报告

实验四 Lniux系统下用户的管理
一、实验目的
1.掌握在Linux系统下利用命令行方式实现用户管理
2.掌握在Linux系统下利用命令行方式实现用户组管理
二、实验内容
1.用root用户登录系统,查看用户账户文件/etc/passwd和口令文件/etc/shadow的内容。

观察个账户的shell、UID、GID,结果如下:
2.创建一个新用户huihui01,并给用户huihui01设置密码“Huihui01”,然
后查看该用户在shadow文件中口令存储字段内容。

3.用huihui01账号登录系统,观察能否正常登录,然后利用su命令切换为root用户。

4.创建一个新用户huihui02,设置密码为“Huihui02”,工作目录设置为“/home/huihui02”,指定其UID为505,该用户属于huihuis用户组。

5.锁定huihui02用户,观察/etc/shadow文件内容变化。

6.对用户huihui02解除锁定,观察/etc/shadow文件内容变化。

7.创建一个名为computers用户组,然后创建一个名为jack的用户,并将该用户添加到computers用户组。

8.将用户huihui01和huihui02添加到computers用户组中。

9.使用“su”命令进行用户身份切换,注意观察用户切换是否成功。

10.删除本次实训中新建的用户和用户组,并删除相关用户的工作主目录。

三、实验小结
通过本次对用户与组的账号管理实验中,我了解了用户和组的账号类型及相关文件,能熟练的运用shell命令进行用户的管理和组的管理。

实验2Linux进程管理

实验2Linux进程管理

实验2Linux进程管理实验2 Linux进程管理实验目的1、加深对进程概念的理解,明确进程和程序的区别2、进一步认识并发执行的实质3、分析进程争用资源的现象,学习解决进程互斥的方法实验性质验证性实验,必做,3课时预习与实验要求1、阅读Linux的sched.h源码文件,加深对进程概念的理解2、阅读Linux的fork.c源码文件,分析进程的创建过程要用到的系统调用1、int fork( )创建一个新进程头文件:#include#include返回值的意义:0,创建子进程,从子进程返回的id值-1,创建失败大于0,从父进程返回的子进程id值2、lockf(files, function, size)锁定/解锁文件或文件的某段该函数的头文件为:#include参数定义:int lockf(int files, int function, long size)含义:files是文件描述符;function为1(常量F_LOCK)表示互斥锁定,为0(常量F_ULOCK)表示解锁;size是锁定或解锁的字节数,若用0,表示从文件的当前位置到文件尾。

实验内容0、创建进程。

输入并运行下面的程序。

思考为什么会输出两行信息。

【建议用emacs或gedit编辑】int main(){int pid;pid = fork();switch(pid){case -1:printf("fail to create process\n");return 1;case 0: //对于子进程来讲,变量pid的值为0printf("I'm son, my pid is %d, my father's pid is %d\n", getpid(), getppid());break;default: //对于父进程来讲,pid记录了返回的子进程的ID,必然大于0printf("I'm father, my pid is %d, my son's pid is %d\n", getpid(), pid);}return 0;}输出结果并非是一行,而是2行。

《用户管理》实验报告

《用户管理》实验报告

一、实验目的1. 熟悉Linux操作系统的用户管理功能;2. 掌握用户创建、删除、修改等基本操作;3. 了解用户权限的设置和管理;4. 掌握用户组的概念及其应用。

二、实验环境1. 操作系统:Linux CentOS 72. 软件环境:shell命令行界面三、实验内容1. 用户管理的基本概念用户是操作系统中的一种实体,它代表了操作系统的使用者。

用户管理是指对用户进行创建、删除、修改等操作的过程。

在Linux操作系统中,用户管理主要包括以下几个方面:(1)用户账户的创建、删除和修改;(2)用户组的管理;(3)用户权限的设置和管理。

2. 用户管理的基本操作(1)创建用户使用useradd命令创建用户,如下所示:```useradd -m -d /home/username -s /bin/bash username```其中,-m表示创建用户的同时创建用户的主目录;-d表示指定用户的主目录;-s 表示指定用户的shell;username表示用户名。

(2)删除用户使用userdel命令删除用户,如下所示:```userdel -r username```其中,-r表示删除用户及其主目录。

(3)修改用户信息使用usermod命令修改用户信息,如下所示:```usermod -l new_username -d /home/new_username -s /bin/bash username```其中,-l表示修改用户名;-d表示修改用户的主目录;-s表示修改用户的shell。

3. 用户组的管理(1)创建用户组使用groupadd命令创建用户组,如下所示:```groupadd groupname```其中,groupname表示用户组名。

(2)删除用户组使用groupdel命令删除用户组,如下所示:```groupdel groupname```其中,groupname表示用户组名。

(3)修改用户组信息使用groupmod命令修改用户组信息,如下所示:```groupmod -n new_groupname groupname```其中,-n表示修改用户组名。

进程管理操作系统linux实验

进程管理操作系统linux实验

实验进程管理(一)进程的创建实验实验目的1、掌握进程的概念,明确进程的含义2、认识并了解并发执行的实质实验内容1、编写一段程序,使用系统调用fork()创建两个子进程。

当此程序运行时,在系统中有一个父进程和两个子进程活动。

让每一个进程在屏幕上显示一个字符:父进程显示'a',子进程分别显示字符'b'和字符'c'。

试观察记录屏幕上的显示结果,并分析原因。

2、修改上述程序,每一个进程循环显示一句话。

子进程显示'daughter…'及'son ……',父进程显示'parent ……',观察结果,分析原因。

实验准备(1)阅读LINUX的fork.c源码文件(见附录二),分析进程的创建过程。

(2)阅读LINUX的sched.c源码文件(见附录三),加深对进程管理概念的认识。

实验指导一、进程UNIX 中,进程既是一个独立拥有资源的基本单位,又是一个独立调度的基本单位。

一个进程实体由若干个区(段)组成,包括程序区、数据区、栈区、共享存储区等。

每个区又分为若干页,每个进程配置有唯一的进程控制块PCB,用于控制和管理进程。

PCB 的数据结构如下:1、进程表项(Process Table Entry)。

包括一些最常用的核心数据:进程标识符PID、用户标识符UID、进程状态、事件描述符、进程和U区在内存或外存的地址、软中断信号、计时域、进程的大小、偏置值nice、指向就绪队列中下一个PCB 的指针P_Link、指向U 区进程正文、数据及栈在内存区域的指针。

2、U 区(U Area)。

用于存放进程表项的一些扩充信息。

每一个进程都有一个私用的U区,其中含有:进程表项指针、真正用户标识符u-ruid(read user ID)、有效用户标识符u-euid(effective user ID)、用户文件描述符表、计时器、内部I/O参数、限制字段、差错字段、返回值、信号处理数组。

linux进程管理的实验报告

linux进程管理的实验报告

linux进程管理的实验报告Linux进程管理的实验报告引言:Linux操作系统是一种开源的操作系统,以其稳定性和高度可定制性而受到广泛使用。

在Linux系统中,进程管理是一个重要的组成部分,它负责控制和管理系统中运行的进程。

本实验报告旨在探讨Linux进程管理的相关概念和实践。

一、进程的基本概念进程是指在计算机系统中正在运行的一个程序实例。

每个进程都有自己的内存空间、寄存器和状态。

在Linux系统中,每个进程都有一个唯一的进程标识符(PID),用于标识和管理进程。

二、进程的创建和终止在Linux系统中,进程的创建是通过fork()系统调用来实现的。

fork()系统调用会创建一个新的进程,新进程是原进程的一个副本,包括代码、数据和堆栈等。

新进程和原进程共享相同的代码段,但是拥有独立的数据和堆栈。

进程的终止可以通过exit()系统调用来实现。

当一个进程调用exit()系统调用时,它会释放所有的资源,并通知操作系统该进程已经终止。

此外,父进程可以通过wait()系统调用来等待子进程的终止,并获取子进程的退出状态。

三、进程的调度和优先级在Linux系统中,进程的调度是由调度器负责的。

调度器根据进程的优先级和调度策略来确定下一个要运行的进程。

Linux系统中有多种调度策略,如先来先服务(FCFS)、最短作业优先(SJF)、轮转调度(Round Robin)等。

进程的优先级用一个数字表示,范围从-20到19,其中-20表示最高优先级,19表示最低优先级。

较高优先级的进程会被优先调度,以保证其能够及时响应用户的请求。

四、进程的状态转换在Linux系统中,进程可以处于不同的状态,如运行态、就绪态和阻塞态等。

进程的状态转换是由操作系统根据进程的行为和外部事件来控制的。

当一个进程被创建时,它处于就绪态,等待被调度执行。

当进程获得CPU资源并开始执行时,它进入运行态。

当进程需要等待某个事件发生时,如等待用户输入或等待某个文件读写完成,它会进入阻塞态。

实验二 进程管理(linux)

实验二 进程管理(linux)

实验二进程管理(Linux)一、实验类型本实验为设计性实验。

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

2)进一步认识并发执行的实质三、预习要求1)进程的概念2)进程控制的概念及内容3)进程的并发执行4)熟悉互斥的概念5)用到的Linux函数有:fork(),lockf()等。

四、实验基本原理使用fork()系统调用来创建一个子进程,父进程和子进程并发执行,交替输出结果。

使用lockf()系统调用对临界区进行加锁操作,实现对共享资源的互斥使用。

五、实验仪器与设备(或工具软件)实验设备:计算机一台,软件环境要求: Linux操作系统和gcc编译器。

六、实验内容1)进程的创建编写一段程序,使用系统调用fork( ) 创建两个子程序。

当此程序运行时,在系统中有一个父进程和两个子进程活动。

让每一个进程在屏幕上显示一个字符:父进程显示字符“a”;子进程分别显示字符“b”和字符“c”。

运行程序10次,观察记录屏幕上的显示结果,并分析原因。

2)进程的控制修改已编写的程序,将每个进程输出一个字符改为每个进程输出一句话,再观察程序执行时屏幕上出现的现象,并分析原因。

如果在程序中使用系统调用lockf()来给每一个进程加锁,可以实现进程间的互斥,观察并分析出现的现象。

(1)进程的创建参考程序如下:#include<stdio.h>main(){int p1,p2;while((p1=fork())==-1); //p父进程p1子进程1if(p1!=0){while(((p2=fork())==-1); //p父进程p2子进程2if(p2==0) putchar('b');else putchar('c');}else putchar('a');}运行结果:略cab bca bac分析:原因:Fork()函数有三个返回值:1.-1 执行不成功2.0 表示当前正在执行子进程3.其他数值表示当前正在执行父进程,值是子进程的进程标识符PID4.获取当前进程的标识符getpid()5.获取当前进程的父进程的标识符getppid()(2)进程的控制参考程序如下#include<stdio.h>main(){int p1,p2,i;while ((p1=fork())==-1); // 父进程p,子进程p1if(p1==0){for(i=0;i<500;i++)printf("child_p1_ %d\n",i);}else{while((p2=fork())==-1);//父进程p,子进程p2if(p2==0)for(i=0;i<500;i++)printf("chind_p2_ %d\n",i);else for(i=0;i<500;i++)printf("father_p_%d\n",i);}}运行结果:略分析:由于函数printf()输出和字符串之间不会被中断,因此字符串内部的字符顺序输出不变。

实验二: LINUX用户管理

实验二: LINUX用户管理

实验二: LINUX用户管理本讲重点:1、了解管理用户相关命令的语法。

2、熟练掌握管理用户相关命令的使用。

3、熟练用户账号的添加、删除与修改。

4、熟练用户口令的管理。

Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。

用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。

每个用户账号都拥有一个惟一的用户名和各自的口令。

用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。

一、相关的基本概念1、用户(user)的概念Linux用户分为三类:超级用户(root)、专有用户、普通用户。

超级用户该帐号为系统管理员帐号,对系统有安全的控制权,可以对系统进行任何设置和修改。

专有用户创建这类用户可用来完成特定任务的,如以对系统的某些文件进行管理,它们针对某些文件有较高的操作权力。

如ftp管理用户等等。

普通用户可登陆Linux进行某些使用操作,它们不属于超级用户和专用用户。

安装好linux后,系统默认的帐号为root。

2、用户组(group)的概念用户组(group)就是具有相同特征的用户(user)的集合体;Linux下,每个文件又属于一个用户组。

当创建一个文件或目录时,系统会赋予它一个用户组关系,chgrp命令可以改变文件的组关系。

比如有时我们要让多个用户具有相同的权限,比如查看、修改某一文件或执行某个命令,这时我们需要用户组,我们把用户都定义到同一用户组,我们通过修改文件或目录的权限,让用户组具有一定的操作权限,这样用户组下的用户对该文件或目录都具有相同的权限,这是我们通过定义组和修改文件的权限来实现的。

举例:我们为了让一些用户有权限查看某一文档,比如是一个时间表,而编写时间表的人要具有读写执行的权限,我们想让一些用户知道这个时间表的内容,而不让他们修改,所以我们可以把这些用户都划到一个组,然后来修改这个文件的权限,让用户组可读,这样用户组下面的每个用户都是可读的。

管理linux系统实验报告

管理linux系统实验报告

管理linux系统实验报告实验背景Linux 是一种以Unix 为基础设计的开源操作系统,广泛应用于服务器领域和嵌入式系统中。

作为一个管理员,熟悉并掌握Linux 系统的管理能力是十分重要的。

本次实验旨在加深理解Linux 的基本管理技能,并通过实践加以应用。

实验内容本次实验包括以下几个部分:1. 用户管理2. 文件权限管理3. 进程管理4. 磁盘管理5. 系统日志管理实验步骤1. 用户管理通过命令行创建一个新用户,并设置密码。

其中,新用户需要有管理员权限(sudo)。

bashsudo adduser <用户名>sudo passwd <用户名>sudo usermod -aG sudo <用户名>2. 文件权限管理创建一个新的文件夹,并设置不同的权限给不同的用户组:bashmkdir test_directorychown <用户名>:<用户组> test_directorychmod 750 test_directory3. 进程管理查看当前正在运行的进程列表,并进行进程的查找、结束操作:bashps auxkill <PID>4. 磁盘管理查看系统的磁盘使用情况,并对硬盘进行挂载和卸载操作:bashdf -hsudo mount /dev/<设备名> /mntsudo umount /mnt5. 系统日志管理查看系统日志,并分析其中的信息:bashtail /var/log/syslog实验总结通过本次实验,我学习到了Linux 系统的基本管理技能。

用户管理、文件权限管理、进程管理、磁盘管理和系统日志管理是运维人员必须掌握的基本技能。

合理设置用户权限、熟练运用命令行工具、了解硬盘的使用情况以及分析系统日志,都有助于提高系统的安全性和稳定性。

在实验过程中,我发现通过多次实践才能真正熟练掌握这些技能。

同时,还需要时常查阅相关的文档和资料,以便了解更多命令和技巧。

实验二Linux基本命令进程管理

实验二Linux基本命令进程管理

实验二Linux基本命令: 进程管理实验目的:通过实验熟悉Linux操作系统环境,掌握与进程相关命令的使用方法。

实验要求1.掌握Linux系统中进程的组织结构2.掌握会话、进程、进程组和作业的关系3.理解前后台进程与控制终端的关系实验内容一: 观察进程的组织结构输入命令pstree观察当前系统中各进程的父子关系。

$ pstree观察init进程与其他进程的关系,分析pstree、login和bash进程之间的关系二: 管理终端上运行的进程理解会话、进程、进程组、前台进程、后台进程和作业的关系1. 运行作业以后台的方式运行下列进程$ find / -name *.c | grep "linux" &>/dev/null &系统将产生两个进程find和grep,观察它们的进程号、父进程号、进程组号和会话号;分析它们之间的关系2. 浏览系统所有进程$ ps -efj >~/psdata //将系统所有进程详细信息保存至文件$ vi ~/psdata //在vi编辑器中打开文件观察find和grep进程的信息。

三: 作业管理1. 运行多个作业运行下列作业$ find / -name *.c &>/dev/null &$ find / -name *.s 1>out1 2>out2 &$ find / -name *.a &>1 &2. 显示作业状态显示当前运行中的作业$ jobs3. 前后台作业切换将2号作业切换至前台$ fg %2。

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

实验二1 实验名称:Linux进程调度及用户管理2 实验目标2.1 掌握手工启动前后台作业的方法。

2.2 掌握进程与作业管理的相关Shell命令。

2.3 掌握at调度和cron调度的设置方法。

2.4了解系统性能监视的基本方法。

2.5 掌握用户管理基本方法和命令。

2.6 具有批量新建用户能力。

2.7掌握非实时的通信方式。

3 实验环境和准备3.1Windows XP下基于“VMware Workstation”虚拟机环境的Red Hat Enterprise Linux Server 5系统。

3.2将主机改为具有个人学号后3位特征的名称。

4 实验要求、步骤及结果4.1复习vi的基本操作;实现用户间非实时通信;进行作业和进程的基本管理。

【操作要求1】root用户在个人用户主目录下,利用vi新建student.txt文件;存盘退出。

内容参见下表左列。

student.txt文件内容password.txt文件内容S01:x:800:800::/home/S01:/bin/bash S02:x:801:800::/home/S02:/bin/bash S03:x:802:800::/home/S03:/bin/bash S04:x:803:800::/home/S04:/bin/bash S05:x:804:800::/home/S05:/bin/bash S06:x:805:800::/home/S06:/bin/bash S07:x:806:800::/home/S07:/bin/bash S08:x:807:800::/home/S08:/bin/bash S09:x:808:800::/home/S09:/bin/bash S10:x:809:800::/home/S10:/bin/bash S11:x:810:800::/home/S11:/bin/bash S01:12345678 S02:12345678 S03:12345678 S04:12345678 S05:12345678【操作步骤1-新建】【操作步骤2-存盘】【操作要求2】利用vi新建password.txt文件;内容参见上表右列。

【操作步骤】【操作要求3】将vi password.txt作业挂起;显示当前所有进程的详细信息。

【操作步骤1-挂起】【操作步骤2-显示】【操作要求4】将挂起的vi作业切换到前台;继续向password.txt文件输入以下内容,输入完成后存盘退出。

password.txt文件的后段内容:S06:12345678S07:12345678S08:12345678S09:12345678S10:12345678S11:12345678【操作步骤1-作业切换】【操作步骤2-vi操作】【操作要求5】返回虚拟终端1(root用户);将helen用户的进程优先数改为-3。

【操作步骤】【操作要求6】返回虚拟终端2(helen用户);后台再次启动ftp进程;显示进程的详细信息。

【操作步骤1-启动进程】【操作步骤2-显示进程】4.2基本用户管理和组群管理【操作要求1】创建student用户;启动虚拟终端3,用student用户登录;修改自己的登录口令。

【操作步骤-创建】【操作步骤-修改口令】【操作要求2】将普通用户student切换为超级用户并使用相应环境,比较超级用户和普通用户工作环境。

【操作步骤】【工作环境比较】工作环境普通用户student 超级用户root命令提示行用户主目录【操作要求3】新建名为“class15”的组群,GID=800。

【操作步骤及结果】注:可直接跳到4.3批量新建多个用户帐号【操作要求4】利用vi命令,修改/etc/hosts文件的最后一列的内容与现主机名相同。

学习并利用“mail”命令向student用户发送一封邮件,内容为“Please hand in the experimental report.”,主题“Urge the experimental report.”,并抄送给helen用户。

【操作步骤1-vi】【操作步骤2-学习】【操作步骤3-发邮件】【操作要求5】启动虚拟终端2;helen用户登录,接收、阅读邮件,并回复“I know”;后台启动ftp进程;显示进程的优先级。

【操作步骤1-收邮件并回复】【操作步骤2-启动进程】【操作步骤3-显示优先级】【操作要求6】删除student用户同时删除其个人用户主目录。

【操作步骤-删除用户】4.3批量新建多个用户帐号【操作要求1】为某学习小组的10位同学批量创建用户账号。

用户账号为“S”+ 2位顺序号,即S01~S11,初始口令均为“12345678”,且均隶属于GID为800的组群、假设UID从800开始顺序编号。

注:用户信息保存在student.txt文件中,口令保存在password.txt中。

(参见本文件4.1)【截取/etc/group相关内容】【操作步骤1】【截取/etc/passwd相关内容】提示:cat命令,截取UID>=500内容【截取/etc/shadow相关内容】【操作步骤2】【截取/etc/passwd相关内容】【截取/etc/shadow相关内容】【操作步骤3】【截取/etc/passwd相关内容】【截取/etc/shadow相关内容】【操作步骤4】【截取/etc/passwd相关内容】【截取/etc/shadow相关内容】【抄写student.txt文件第一行和最后一行内容】St001:x:800:800::/home/st001:/bin/bash……St010:x:800:800::/home/st010:/bin/bash【抄写password.txt文件第一行和最后一行内容】St001:12345678……St010:12345678【操作要求2】启动虚拟终端3,S10登陆。

【截取登陆界面】4.4 at进程调度【操作要求1】设置一个10分钟后执行的at调度。

要求:统计系统中登录用户数,并将结果保存到who.txt 文件中;向所有登录用户发送“The Computer Will Shutdown in 5 Minutes!”的消息;并在5分钟后重新启动系统。

【操作步骤-设置at调度】【操作步骤-at命令】【操作要求2】显示进程详细状态;显示等待中的at调度。

【操作步骤1-显示进程】【操作步骤2-显示at调度】【操作要求3】删除等待中的at调度。

【操作步骤】4.5 cron进程调度【操作要求1】查看系统时间。

设置crontab调度,(时间节点依照上课时间而变,主要还是要看到执行结果)①每天晚上8:50查看系统中进程的状态;②每周一~五的9:00统计登入用户数并保存在who.txt文件中。

③每月13,18,20日16:55向各位登录用户发送“Pleas submit financial statement.”信息。

【操作步骤1-查看系统时间】【操作步骤2-设置cron调度】【操作要求2】显示crontab调度的内容。

【操作步骤及结果】【操作要求3】查看crontab调度的执行结果。

【操作步骤及结果截图①】【操作步骤及结果截图②】【操作步骤及结果截图③】5 评价5.1实验评价实验涉及到了上课的所有内容,设计十分全面和周到。

不仅让我们回忆了自己学习过的知识,巩固了相关知识,同时又有关于进程的阅读要求,扩展了视野。

5.2自我评价整个实验重点在于了解Linux操作系统的桌面环境和掌握基本shell命令的使用。

知识点在课堂上上机操作的时候老师教过,但还有一部分的题需要我们自己学习老师发的辅导资料完成实验,这其中就考验了我们的自觉性。

我们遇到不懂的问题可以问同学或者上网查但绝对不可以直接不动脑子的放弃或抄。

比如:最后一个题目中编辑用户信息文件和用户口令文件的格式不太懂,我经过网上搜查资料,彻底搞懂之后完成题目。

6 思考题6.1简述线程与进程的主要区别。

线程是指进程内的一个执行单元,也是进程内的可调度实体。

进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。

线程和进程的区别在于,子进程和父进程有不同的代码和数据空间,而多个线程则共享数据空间,每个线程有自己的执行堆栈和程序计数器为其执行上下文。

多线程主要是为了节约CPU时间,发挥利用,根据具体情况而定。

线程的运行中需要使用计算机的内存资源和CPU。

6.2 Linux操作系统可以描述进程的哪几种状态。

运行状态(正在使用CPU)、就绪状态(等待分配CPU)、堵塞状态(等待输入/输出等)6.3简述从“程序”到“作业”再到“进程”的动态演变过程。

“程序”正准备进入到内存,被称之为“作业”。

然而当这个作业进入到内存后,称之为“进程”。

程序被加载到内存,首地址送入程序计数器。

作业从外存的后备队列进入内存的就绪队列等待运行,依照某种算法将外存上处于后备队列中的若干个作业调入内存,PCB记录进程当前时刻的状态及与其它进程、资源的关系,系统中所有PCB构成控制并发程序执行,维护系统环境的依据。

相关文档
最新文档