文档库 最新最全的文档下载
当前位置:文档库 › 实验二Linux进程调度及用户管理

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

实验二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文件;存盘退出。内容参见下表左列。

【操作步骤1-新建】

【操作步骤2-存盘】

【操作要求2】利用vi新建password.txt文件;内容参见上表右列。【操作步骤】

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

【操作步骤1-挂起】

【操作步骤2-显示】

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

S06:12345678

S07:12345678

S08:12345678

S09:12345678

S10:12345678

S11:12345678

【操作步骤1-作业切换】

【操作步骤2-vi操作】

【操作要求5】返回虚拟终端1(root用户);将helen用户的进程优先数改为-3。【操作步骤】

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

【操作步骤1-启动进程】

【操作步骤2-显示进程】

4.2基本用户管理和组群管理

【操作要求1】创建student用户;启动虚拟终端3,用student用户登录;修改自己的登录口令。

【操作步骤-创建】

【操作步骤-修改口令】

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

【工作环境比较】

【操作要求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位顺序号,即

注:用户信息保存在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构成控制并发程序执行,维护系统环境的依据。

Linux 用户管理命令

Linux 用户管理命令 Useradd user //建立用户名为user的新用户 与用户管理相关的配置文件 →/etc/default/useradd 配置文件的定义 useradd -D 如不指定任何参数,useradd显示目前预设的值; →/etc/passwd //记录用户密码 →/etc/groups //记录用户组 →finger longcpu //查询一下amdcpu 用户的信息; →root@localhost ~]# useradd -e 11/04/2005 cooler 注:添加用户cooler,并设置其有效期为2005年11月04日; →[root@localhost ~]# passwd cooler 注:设置用户cooler密码; Changing password for user cooler. New UNIX password: 注:设定cooler的密码; Retype new UNIX password: 注:核实设定密码; passwd: all authentication tokens updated successfully. 注:设置成功;有效期的记录是写在/etc/shadow文件中 → passwd 作为普通用户和超级权限用户都可以运行,但作为普通用户只能更改自己的用户密码,但前提是没有被root用户锁定;如果root用户运行passwd ,可以设置或修改任何用户的密码; passwd 命令后面不接任何参数或用户名,则表示修改当前用户的密码;请看下面的子; [root@localhost ~]# passwd 注:没有加任何用户,我是用root用户来执行的passwd 表示修改root用户的密码;下面也有提示; Changing password for user root. New UNIX password: 注:请输入新密码; Retype new UNIX password: 注:验证新密码; passwd: all authentication tokens updated successfully. 注:修改root 密码成功;

实验一进程调度实验报告书

淮海工学院计算机工程学院实验报告书 课程名:《操作系统原理A》 题目:进程调度 班级:软件132 学号:2013122907 姓名:孙莹莹

操作系统原理实验——进程调度实验报告 一、目的与要求 1)进程是操作系统最重要的概念之一,进程调度是操作系统内核的重要功能,本实验要求用C 语言编写一个进程调度模拟程序,使用优先级或时间片轮转法实现进程调度。本实验可加深对进程调度算法的理解。 2)按照实验题目要求独立正确地完成实验内容(编写、调试算法程序,提交程序清单及及相关实验数据与运行结果) 3)于2015年4月18日以前提交本次实验报告(含电子和纸质报告,由学习委员以班为单位统一打包提交)。 二、实验内容或题目 1)设计有5个进程并发执行的模拟调度程序,每个程序由一个PCB表示。 2)模拟调度程序可任选两种调度算法之一实现(有能力的同学可同时实现两个调度算法)。 3)程序执行中应能在屏幕上显示出各进程的状态变化,以便于观察调度的整个过程。 4)本次实验内容(项目)的详细说明以及要求请参见实验指导书。 三、实验步骤与源程序 (1)流程图

(2)实验步骤 1)PCB的结构:优先级算法中,设PCB的结构如下图所示,其中各数据项的含义如下: Id:进程标识符号,取值1—5。 Priority:优先级,随机产生,范围1—5。 Used:目前已占用的CPU时间数,初值为0;当该进程被调用执行时,每执行一个时间片,Used加1。 Need:进程尚需的CPU时间数,初值表示该进程需要运行的总时间,取值范围为5—10。并随机产生,每运行一个时间片need减1;need为0则进程结束。 Status:进程状态R(运行),W(就绪),F(完成);初始时都处于就绪状态。 Next:指向就绪队列中下一个进程的PCB的指针。 2)初始状态及就绪队列组织: 5个进程初始都处于就绪状态,进程标识1—5,used初值都为0。各进程的优先级随机产生,范围1—5。处于就绪状态的进程,用队列加以组织,队列按优先级由高到低依次排列,队首指针设为head,队尾指针为tail。 3)调度原则以及运行时间的处理: 正在执行的进程每执行一个时间片,其优先级减1(允许优先级为负)。进程调度将在以下情况发生:当正在运行的程序其优先级小于就绪队列队首进程的优先级时。程序中进程的运行时间以逻辑时间片为单位。

实验二--单处理器系统的进程调度

实验二单处理器系统的进程调度 (附实验报告) 1.实验目的 加深对进程概念的理解,明确进程和程序的区别; 深入了解系统如何组织进程、创建进程; 进一步认识如何实现处理器调度。 2.实验预备知识 进程的概念; 进程的组织方式; 进程的创建; 进程的调度。 3.实验内容

编写程序完成单处理机系统中的进程调度,要求采用时间片轮转调度算法。实验具体包括:首先确定进程控制块的内容,进程控制块的组成方式;然后完成进程创建原语和进程调度原语;最后编写主函数对所作工作进程测试。 4.提示与讲解 这个实验主要要考虑三个问题:如何组织进程、如何创建进程和如何实现处理器调度。 考虑如何组织进程,首先就要设定进程控制块的内容。进程控制块PCB 记录各个进程执行时的情况。不同的操作系统,进程控制块记录的信息内容不一样。操作系统功能越强,软件也越庞大,进程控制块记录的内容也就越多。这里的实验只使用了必不可少的信息。一般操作系统中,无论进程控制块中信息量多少,信息都可以大致分为以下四类: ①标识信息 每个进程都要有一个惟一的标识符,用来标识进程的存在和区别于其他进程。这个标识符是必不可少的,可以用符号或编号实现,它必须是操作系统分配的。在后面给出的参考程序中,采用编号方式,也就是为每个进程依次分配一个不相同的正整数。 ②说明信息

用于记录进程的基本情况,例如进程的状态、等待原因、进程程序存放位置、进程数据存放位置等等。实验中,因为进程没有数据和程序,仅使用进程控制块模拟进程,所以这部分内容仅包括进程状态。 ③现场信息 现场信息记录各个寄存器的内容。当进程由于某种原因让出处理器时,需要将现场信息记录在进程控制块中,当进行进程调度时,从选中进程的进程控制块中读取现场信息进行现场恢复。现场信息就是处理器的相关寄存器内容,包括通用寄存器、程序计数器和程序状态字寄存器等。在实验中,可选取几个寄存器作为代表。用大写的全局变量AX、BX、CX、DX模拟通用寄存器、大写的全局变量PC模拟程序计数器、大写的全局变量PSW模拟程序状态字寄存器。 ④管理信息 管理信息记录进程管理和调度的信息。例如进程优先数、进程队列指针等。实验中,仅包括队列指针。 因此可将进程控制块结构定义如下: struct pcb {int name; int status;

Linux的用户和组群管理

二、Linux的用户和组的管理实验步骤 1.桌面环境下,单击主菜单\系统设置\用户和组群菜单,进行用户与组群的添加、修改、删 除操作,注意理解修改用户时,口令信息中各设置参数的含义。 添加:单击工具栏-添加用户,在弹出的”创建新用户”窗口中输入用户名 修改:直接双击该用户,在弹出的窗口中直接进行修改; 删除:在用户管理器里面选中需要删除的用户,直接单击删除按钮,会询问“直接删除主目录?”,点击确定既可。 2.用户管理器显示所有的用户的信息,并利用搜索过滤器查找所有以s开头的用户。

3.用groupadd命令创建一名为czn组群,并指定其GID为600. 4.用useradd命令创建chf用户,并指定其主要组群为czn,用户ID为600。 5.用id命令查看chf用户的UID、GID修改情况。 6.用passwd命令修改root、chf用户的密码。 修改根root的密码: 修改chf的密码: 7.用vi打开passwd、shadow、group、gshadow文件,熟悉文件中各项的含义。 打开passwd: vi /etc/passwd 打开shadow: vi /etc/shadow 打开group: vi /etc/group 打开gshadow: vi /etc/gshadow 8.用passwd命令删除chf用户密码,并尝试以chf用户登录,看看是不需要密码。 不需要密码进入用户 而进入原先设置密码的root就需要输入密码后方能进入:

9.用passwd命令锁定和解锁chf用户,并尝试以chf用户登录,看看是否能登录。 命令:passwd –l chf 锁定之后不能登陆用户chf Passwd –u chf 解锁后能够登陆用户chf 10.用usermod命令修改chf用户,使其用户名为chen,UID为601. 命令:usermod –l chen chf 修改用户名 Usermod –u 601 chen 11.用groupmod命令修改czn组群,使其组群名为czn1,用id chen 命令查看变化情况。 修改组群名:groupmod –n czn1 czn 查看:id chen 12.用groupmod命令修改czn组群,使其GID为601,用id chen 命令查看变化情况。 修改GID:groupmod –g 601 czn 查看:id chen 13.创建test1,test2用户,查看/home文件夹下目录情况。 创建用户:Useradd test1 Useradd test1 查看:vi/home home下多了用户test1和test2 14.用userdel test1与userdel –r test2删除两个用户并查看/home文件夹的变化情况。 执行以上命令后发现:使用userdel test1并不删除test1的主目录,而 userdel –r test2删除了主目录

实验21 进程调度

实验2、1 进程调度 一、 实验目的 多道程序设计中,经常就是若干个进程同时处于就绪状态,必须依照某种策略来决定那个进程优先占有处理机。因而引起进程调度。本实验模拟在单处理机情况下的处理机调度问题,加深对进程调度的理解。 二、 实验要求 1. 设计进程调度算法,进程数不定 2. 包含几种调度算法,并加以实现 3. 输出进程的调度过程——进程的状态、链表等。 三、 参考例 1.题目——优先权法、轮转法 简化假设 1) 进程为计算型的(无I/O) 2) 进程状态:ready 、running 、finish 3) 进程需要的CPU 时间以时间片为单位确定 2.算法描述 1) 优先权法——动态优先权 当前运行进程用完时间片后,其优先权减去一个常数。 2) 轮转法 四、 实验流程图 开始 键盘输入进程数n,与调度方法的选择 优先权法? 轮转法 产生n 个进程,对每个进程产生一个PCB,并用随机数产生进程的优先权及进程所需的CPU 时间 按优先权大小,把n 个进程拉成一个就绪队列 撤销进程就绪队列为空? 结束 N Y Y

注意: 1.产生的各种随机数的取值范围加以限制,如所需的CPU 时间限制在1~20之间。 2.进程数n 不要太大通常取4~8个 3.使用动态数据结构 4.独立编程 5.至少三种调度算法 6.若有可能请在图形方式下,将PCB 的调度用图形成动画显示。 五.实验过程: (1)输入:进程流文件(1、txt),其中存储的就是一系列要执行的进程, 每个作业包括四个数据项: 进程名 进程状态(1就绪 2等待 3运行) 所需时间 优先数(0级最高) 进程0 1 50 2 进程1 2 10 4 进程2 1 15 0 进程3 3 28 5 进程4 2 19 1 进程5 3 8 7 输出: 进程执行流等待时间,平均等待时间 本程序包括:FIFO 算法,优先数调度算法,时间片轮转调度算法 产生n 个进程, 的时间片数,已占用CPU 的时间片数置为0 按进程产生的先后次序拉成就绪队列链 =0? 撤销该进程 就绪队列为空不? =轮转时间片数? N Y Y Y 结束 N

Linux编程用户信息管理系统

一绪论 §1.1设计背景 Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。它主要用于基于Intel x86系列CPU的计算机上。这个系统是由全世界各地的成千上万的程序员设计和实现的。 §1.2设计目的 在Linux系统的/etc目录下有这样一个文件passwd,该文件里包含系统中所有用户信息的记录,记录里包含每个用户的如下信息:用户名、密码、用户ID、组ID、用户全名、用户主目录和用户登录所用的shell。请设计一个脚本(shell)程序能实现增加、删除、查找和显示特定用户信息的功能。你们可以通过创建一些UNIX/LINUX shell 脚本文件来满足以上需求。 二需求分析 §2.1系统概述 §2.1.1 任务概述 Linux作为多用户、多任务的操作系统,其系统资源是所有用户共享的。对用户的管理是操作系统的重点。LINUX课程设计要用shell编程实现,将理论学习付诸实践。设计一个脚本(shell)程序能实现增加、删除、查找和显示特定用户信息的功能。 §2.1.2需求规定 程序要包括四个文件,即menu,add,delete,passwd四个文件。passwd文件是用来保存用户信息;menu文件是主菜单,要求运行的时候能显示一个菜单供用户选择;addusers 文件是用来增加信息;deluser文件是用来删除信息。在主Shell脚本文件里(必须以 menu 命名)要有一个多操作选项的菜单以便用户从中选择。对于任务6和7,需要编写单独的Shell 脚本文件(必须分别命名为addusers和deluser)并且在主脚本menu文件中调用这些脚本

进程调度算法实验报告

操作系统实验报告(二) 实验题目:进程调度算法 实验环境:C++ 实验目的:编程模拟实现几种常见的进程调度算法,通过对几组进程分别使用不同的调度算法,计算进程的平均周转时间和平均带权周转时间,比较 各种算法的性能优劣。 实验内容:编程实现如下算法: 1.先来先服务算法; 2.短进程优先算法; 3.时间片轮转调度算法。 设计分析: 程序流程图: 1.先来先服务算法 开始 初始化PCB,输入进程信息 各进程按先来先到的顺序进入就绪队列 结束 就绪队列? 运行 运行进程所需CPU时间 取消该进程 2.短进程优先算法

3.时间片轮转调度算法 实验代码: 1.先来先服务算法 #include #define n 20 typedef struct { int id; //进程名

int atime; //进程到达时间 int runtime; //进程运行时间 }fcs; void main() { int amount,i,j,diao,huan; fcs f[n]; cout<<"请输入进程个数:"<>amount; for(i=0;i>f[i].id; cin>>f[i].atime; cin>>f[i].runtime; } for(i=0;if[j+1].atime) {diao=f[j].atime; f[j].atime=f[j+1].atime; f[j+1].atime=diao; huan=f[j].id; f[j].id=f[j+1].id; f[j+1].id=huan; } } } for(i=0;i #define n 5 #define num 5 #define max 65535 typedef struct pro { int PRO_ID; int arrive_time;

linux用户管理

实验项目(四) 用户管理 一、学习目的 1、掌握文件和目录的访问权限设置的命令 2、掌握创建新用户的方法 3、掌握用户管理的基本命令 4、掌握用户身份的转换 5、掌握组的管理 二、学习任务 第一部分文件和目录的访问权限用户:root 工作目录:/home 1、查看当前umask参数 Umask 2、在/home目录下创建新目录dir1 说明,用mkdir命令创建目录,比如mkdir dir1 mkdir /home/dir1 3、显示目录dir1的详细信息,记录目录的权限信息 Ls -l /home/dir1 4、改变umask参数为066 Umask 0066 5、创建新目录dir2 Mkdir dir2 6、显示目录dir1的详细信息,记录目录的权限信息 Ls -l /home/dir1 7、创建新文件file1 Touch file1 8、显示文件file1的详细信息,记录文件file1的文件权限 Ls –l file1 9、为dir1的同组用户增加写权限 Chomd 664 dir1 10、改变file1的文件权限为755 Chmod 755 file1 第二部分用户管理的基本命令(一)创建用户

1、增加新用户user1,用户主目录:/home/user1 Useradd –c /home/user1 user1 2、设置user1密码为user111 Passwd user1 user111 3、增加新用户user2,用户主目录:/user/user2 Useradd –c /user/user2 user2 4、设置 user2 的密码为空 Passwd user2 5、以user1用户身份登陆 Su user1 6、将/home/file1文件拷贝到user1的用户主目录下,能够执行成功吗? 可以,Cp –r /home/file1 /home/user1 7、将/home/file1文件拷贝到 /home/dir1目录下,能够执行成功吗? 可以,Cp –r /home/file1 /home/dir1 8、切换到root用户 Su root 9、将/home/file1文件拷贝到 /home/dir1目录下,能够执行成功吗?为什么? 可以,Cp –r /home/file1 /home/dir1 10、执行# chown user1 /home/dir1,命令作用是什么? 改变文件所属用户 11、切换回user1用户 Su user1 12、将/home/file1文件拷贝到 /home/dir1目录下,能够执行成功吗?为什么? Cp –r /home/file1 /home/dir1 思考题:/etc/passwd和/etc/shadow的文件权限对于系统安全有何作用? /etc/passwd文件存放用户的宿主目录、shell环境等资料,用户必须有权限查看,所以不能设置为700。而/etc/shadow文件的默认权限一般是400。 (二)删除用户 1、#userdel user1 2、#userdel -r user2 思考:步骤1和步骤2的执行结果有什么异同? 第一个只删除用户但不删除用户的主目录。第二个删除文件的用户和主目录 步骤1要达到和步骤2同样结果,还需要增加哪些操作 Rm –rf user1

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

一、实验目的 通过对进程调度算法的设计,深入理解进程调度的原理。 进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。 进程调度分配处理机,是控制协调进程对CPU的竞争,即按一定的调度算法从就绪队列中选中一个进程,把CPU的使用权交给被选中的进程。 进程通过定义一个进程控制块的数据结构(PCB)来表示;每个进程需要赋予进程ID、进程到达时间、进程需要运行的总时间的属性;在RR中,以1为时间片单位;运行时,输入若干个进程序列,按照时间片输出其执行序列。 二、实验环境 VC++6.0 三、实验内容 实现短进程优先调度算法(SPF)和时间片轮转调度算法(RR) [提示]: (1) 先来先服务(FCFS)调度算法 原理:每次调度是从就绪队列中,选择一个最先进入就绪队列的进程,把处理器分配给该进程,使之得到执行。该进程一旦占有了处理器,它就一直运行下去,直到该进程完成或因发生事件而阻塞,才退出处理器。 将用户作业和就绪进程按提交顺序或变为就绪状态的先后排成队列,并按照先来先服务的方式进行调度处理,是一种最普遍和最简单的方法。它优先考虑在系统中等待时间最长的作业,而不管要求运行时间的长短。 按照就绪进程进入就绪队列的先后次序进行调度,简单易实现,利于长进程,CPU繁忙型作业,不利于短进程,排队时间相对过长。 (2) 时间片轮转调度算法RR

原理:时间片轮转法主要用于进程调度。采用此算法的系统,其程序就绪队列往往按进程到达的时间来排序。进程调度按一定时间片(q)轮番运行各个进程. 进程按到达时间在就绪队列中排队,调度程序每次把CPU分配给就绪队列首进程使用一个时间片,运行完一个时间片释放CPU,排到就绪队列末尾参加下一轮调度,CPU分配给就绪队列的首进程。 固定时间片轮转法: 1 所有就绪进程按 FCFS 规则排队。 2 处理机总是分配给就绪队列的队首进程。 3 如果运行的进程用完时间片,则系统就把该进程送回就绪队列的队尾,重新排队。 4 因等待某事件而阻塞的进程送到阻塞队列。 5 系统把被唤醒的进程送到就绪队列的队尾。 可变时间片轮转法: 1 进程状态的转换方法同固定时间片轮转法。 2 响应时间固定,时间片的长短依据进程数量的多少由T = N × ( q + t )给出的关系调整。 3 根据进程优先级的高低进一步调整时间片,优先级越高的进程,分配的时间片越长。 多就绪队列轮转法: (3) 算法类型 (4)模拟程序可由两部分组成,先来先服务(FCFS)调度算法,时间片轮转。流程图如下:

实验一-进程调度实验

实验一-进程调度实验 实验一进程调度实验 一、实验目的 用高级语言编写和调试一个进程调度程序,以加深对进程的概念 及进程调度算法的理解 二、实验类别 综合性实验。综合高级语言编程、进程调度模型、进程调度算法及数据结构等多方面的知识 三、实验示例 例题:设计一个有N个进程共行的进程调度程序 进程调度算法:采用最高优先数优先的调度算法(即把处理机分配给优先数最高的进程)和先来先服务算法。 每个进程有一个进程控制块(PCB)表示。进程控制块可以包含如下信息:进程名、优先数、到达时间、需要运行时间、已用CPU时间、进程状态等等。 进程的优先数及需要的运行时间可以事先人为地指定(也可以由随机数产生)。进程的到达时间为进程输 入的时间。 进程的运行时间以时间片为单位进行计算。 每个进程的状态可以是就绪W(Wait )、运行R(Run )、或完成F

(Finish )三种状态之一。 就绪进程获得CPU后都只能运行一个时间片。用已占用CPU 时间加1来表示。 如果运行一个时间片后,进程的已占用CPU时间已达到所需要的运行时间,则撤消该进程,如果运行一个时间片后进程的已占用CPU时间还未达所需要的运行时间,也就是进程还需要继续运行,此时应将进程的优先数减1 (即降低一级),然后把它插入就绪队列等待CPU。 每进行一次调度程序都打印一次运行进程、就绪队列、以及各个 进程的PCB,以便进行检查。 重复以上过程,直到所要进程都完成为止。 调度算法的流程图如下:

进程调度源程序如下: //jin gche ndiaodu.cpp #in elude "stdio.h"

linux 新建用户、用户组及用户权限

Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。每个用户账号都拥有一个惟一的用户名和各自的口令。用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。 实现用户账号的管理,要完成的工作主要有如下几个方面: ·用户账号的添加、删除与修改。 ·用户口令的管理。 ·用户组的管理。 一、Linux系统用户账号的管理 用户账号的管理工作主要涉及到用户账号的添加、修改和删除。 添加用户账号就是在系统中创建一个新账号,然后为新账号分配用户号、用户组、主目录和登录Shell 等资源。刚添加的账号是被锁定的,无法使用。 1、添加新的用户账号使用useradd命令,其语法如下: 代码: useradd 选项用户名 其中各选项含义如下: 代码: -c comment 指定一段注释性描述。 -d 目录指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。 -g 用户组指定用户所属的用户组。 -G 用户组,用户组指定用户所属的附加组。 -s Shell文件指定用户的登录Shell。 -u 用户号指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。 用户名指定新账号的登录名。 例1: 代码: # useradd –d /usr/sam -m sam 此命令创建了一个用户sam, 其中-d和-m选项用来为登录名sam产生一个主目录/usr/sam(/usr为默认的用户主目录所在的父目录)。 例2: 代码: # useradd -s /bin/sh -g group –G adm,root gem 此命令新建了一个用户gem,该用户的登录Shell是/bin/sh,它属于group用户组,同时又属于

实验一-进程调度实验

实验一-进程调度实验

实验一进程调度实验 一、实验目的 用高级语言编写和调试一个进程调度程序,以加深对进程的概念及进程调度算法的理解 二、实验类别 综合性实验。综合高级语言编程、进程调度模型、进程调度算法及数据结构等多方面的知识 三、实验示例 例题:设计一个有 N个进程共行的进程调度程序 进程调度算法:采用最高优先数优先的调度算法(即把处理机分配给优先数最高的进程)和先来先服务算法。 每个进程有一个进程控制块(PCB)表示。进程控制块可以包含如下信息:进程名、优先数、到达时间、需要运行时间、已用CPU时间、进程状态等等。 进程的优先数及需要的运行时间可以事先人为地指定(也可以由随机数产生)。进程的到达时间为进程输 入的时间。 进程的运行时间以时间片为单位进行计算。 每个进程的状态可以是就绪W(Wait)、运行R(Run)、或完成F(Finish)三种状态之一。 就绪进程获得CPU后都只能运行一个时间片。用已占用CPU 时间加1来表示。 如果运行一个时间片后,进程的已占用CPU时间已达到所需要的运行时间,则撤消该进程,如果运行一个时间片后进程的已占用CPU时间还未达所需要的运行时间,也就是进程还需要继续运行,此时应将进程的优先数减1(即降低一级),然后把它插入就绪队列等待CPU。 每进行一次调度程序都打印一次运行进程、就绪队列、以及各个进程的PCB,以便进行检查。 重复以上过程,直到所要进程都完成为止。 调度算法的流程图如下:

进程调度源程序如下: //jingchendiaodu.cpp #include "stdio.h"

#include #include #define getpch(type) (type*)malloc(sizeof(type)) #define NULL 0 struct pcb { /* 定义进程控制块PCB */ char name[10]; char state; int super; int ntime; int rtime; struct pcb* link; }*ready=NULL,*p; typedef struct pcb PCB; sort() /* 建立对进程进行优先级排列函数*/ { PCB *first, *second; int insert=0; if((ready==NULL)||((p->super)>(ready->super))) /*优先级最大者,插入队首*/ { p->link=ready; ready=p; } else /* 进程比较优先级,插入适当的位置中*/ { first=ready; second=first->link; while(second!=NULL) { if((p->super)>(second->super)) /*若插入进程比当前进程优先数大,*/ { /*插入到当前进程前面*/ p->link=second; first->link=p;

实验三进程调度蔡凤武

实验三进程调度蔡凤武 进程调度实验目的 1、理解有关进程控制块、进程队列的概念。 2、掌握进程优先权调度算法和时间片轮转调度算法的处理逻辑。 实验内容与基本要求 1、设计进程控制块PCB的结构,分别适用于优先权调度算法和时间片轮转调度算法。 2、建立进程就绪队列。 3、编制两种进程调度算法:优先权调度算法和时间片轮转调度算法。 实验报告内容一.优先权调度算法和时间片轮转调度算法原理。对于优先权调度算法,其关键是在于是采用静态优先权还是动态优先权,以及如何确定进程的优先权。静态优先权是在创建进程是确定的,并且规定它在进程的整个运行期间保持不变。动态优先权要配合抢占调度方式使用,它是指在创建进程时所赋予的优先权,可以随着进程的推进而发生改变,以便获得更好的调度性能。在就绪队列中等待调度的进程,可以随着等待时间的增加,其优先权也以某个速率增加。因此,对于优先权初值很低的进程,在等待足够时间后,其优先权也可能升为最高,从而获得调度,占用处理器并执行。对已时间片轮转调度算法,系统将所

有的就绪进程按进路就绪队列的先后次序排列。每次调度时把CPU 分配给队首进程,让其执行一个时间片,当时间片用完,由计时器发出时钟中断,调度程序则暂停改程序的执行,使其退出处理器,并将它送人就绪队的末尾,等待下一轮调度执行。然后,把cpu分配给就绪队列中新的队首进程,同时让它执行一个时间片。二.程序流程图。结束就绪队列为空吗三.程序及注释。 #include #include #include #include #include #include #define P_NUM5#define P_TIME50 enum st { ready, execute, block, finish};//状态定义进程//struct pcb{ char name[4];//进程名字// int priority;//进程优先权// int cputime;//CPU运行时间// int needtime;//进程运行需要的时间// int count;//进程执行次数// int round;//时间片轮转轮次// st process;//进程状态// pcb *next;};//定义进程//pcb *get_process(){ pcb *q; pcb *t; pcb *p; int i=0; cout<<"input name and time"<>q->name; cin>>q->needtime; q->cputime=0; q->priority=P_TIME-q- >needtime; q->process=ready; q->next=NULL; if(i==0) { p=q; t=q; } else { t->next=q; t=q;} i++; } return p;//输入模拟测试的进程名和执行所需的时间,初始设置可模拟5个进程的调度//}void display (pcb *p){ cout<<"name"<<"

实验一 单处理器系统进程调度(正确)

实验一单处理器系统进程调度 一、实验目的 1.加深对进程概念的理解,明确进程和程序的区别。 2.深入了解系统如何组织进程、创建进程。 3.进一步认识如何实现处理器调度。 二、实验预备知识 1.进程的概念。 2.进程的组织方式。 3.进程的创建。 4.进程的调度。 三、实验内容 编写程序完成单处理机系统中的进程调度,要求采取用时间片轮转调度算法。试验具体包括:首先确定进程控制块的内容,进程控制块的组成方式;然后完成进程创建、调度原语;最后编写主函数对所做工作进行测试。 四、提示 这个实验主要要考虑三个问题:如何组织进程、如何创建进程和如何实现处理器调度。 考虑如何组织进程,首先就要设定进程控制块的内容。进程控制块PCB,记录各个进程执时的情况。不同的操作系统,进程控制块记录的信息内容不_样。操作系统功能越强,软件也越庞大,进程控制块记录的内容也就越多。这里的实验只使用了必不可少~信息。一般操作系统中,无论进程控制块中信息量多少,信息都可以大致分为以下四类: (1)标识信息 每个进程都要有一个惟一的标识符,用来标识进程的存在和区别于其他进程。这个标识符是必不可少的,可以用符号或编号实现,它必须是操作系统分配的。在后面给出的参考程序中,采用编号方式,也就是为每个进程依次分配一个不相同的正整数。 (2)说明信息 用于记录进程的基本情况,例如进程的状态、等待原因、进程程序存放位置、进程数据存放位置等等。实验中,因为进程没有数据和程序,仅使用进程控制块模拟进程,。所以这部分内容仅包括进程状态。 {int head; int tail; }ready;//定义指向就绪队列的头指针head和尾指针tail int pfree;//定义指向空闲进程控制块队列的指针 进程创建是一个原语,因此在实验中应该用一个函数实现,进程创建的过程应该包括: (1)申请进程控制块:进程控制块的数量是有限的,如果没有空闲进程控制块,则进程 不能创建,如果申请成功才可以执行第二步; (2)申请资源:除了进程控制块外,还需要有必要的资源才能创建进程,如果申请资 源不成功,则不能创建进程,并且归还已申请的进程控制块:如果申请成功,则执行第三步,实验无法申请资源,所以模拟进程忽略了申请资源这一步 (3)填写进程控制块:将该进程信息写入进程控制块内,实验中只有进程标识符、进 程状态可以填写,每个进程现场信息中的寄存器内容由于没有具体数据而使用进程(模拟进程创建时,需输入进程标识符字,进程标识符本应系统建立,并且是惟一一的,输入时注

实验二 进程调度

实验一 进程调度 一、 实验目的 多道程序设计中,经常是若干个进程同时处于就绪状态,必须依照某种策略来决定那个进程优先占有处理机。因而引起进程调度。本实验模拟在单处理机情况下的处理机调度问题,加深对进程调度的理解。 二、 实验要求 1. 设计进程调度算法,进程数不定 2. 包含几种调度算法,并加以实现 3. 输出进程的调度过程——进程的状态、链表等。 三、 参考例 1.题目——优先权法、轮转法 简化假设 1) 进程为计算型的(无I/O ) 2) 进程状态:ready 、running 、finish 3) 进程需要的CPU 时间以时间片为单位确定 2.算法描述 1) 优先权法——动态优先权 当前运行进程用完时间片后,其优先权减去一个常数。 2) 轮转法 四、 实验流程图 开始 键盘输入进程数n ,和调度方法的选择 优先权法? 轮转法 产生n 个进程,对每个进程产生一个PCB ,并用 随机数产生进程的优先权及进程所需的CPU 时间 按优先权大小,把n 个进程拉成一个就绪队列 撤销进程就绪队列为空? 结束 N Y Y

注意: 1.产生的各种随机数的取值范围加以限制,如所需的CPU 时间限制在1~20之间。 2.进程数n 不要太大通常取4~8个 3.使用动态数据结构 4.独立编程 5.至少三种调度算法 6.若有可能请在图形方式下,将PCB 的调度用图形成动画显示。 五.实验过程: (1)输入:进程流文件(1.txt ),其中存储的是一系列要执行的进程, 每个作业包括四个数据项: 进程名 进程状态(1就绪 2等待 3运行) 所需时间 优先数(0级最高) 进程0 1 50 2 进程1 2 10 4 进程2 1 15 0 进程3 3 28 5 进程4 2 19 1 进程5 3 8 7 输出: 进程执行流等待时间,平均等待时间 本程序包括:FIFO 算法,优先数调度算法,时间片轮转调度算法 产生n 需的时间片数,已占用CPU 的时间片数置为0 按进程产生的先后次序拉成就绪队列链 =0? 撤销该进程 就绪队列为空吗? =轮转时间片数? N Y Y Y 结束 N

实验四 Linux下用户和组的管理

实验四Linux下用户和组的管理、磁盘限额 一. 实验目的: 1.掌握在Linux系统下利用命令方式实现用户和组的管理; 2.掌握利用Linux-conf进行用户和组的管理; 3.掌握磁盘限额的实现方法。 二. 实验内容: 1.用户和组的管理; 2.磁盘限额。 三. 实验步骤: 1. 用户的管理 创建一个新用户user01,设置其主目录为/home/user01:#useradd –d /home/user01 -m user01 查看/etc/passwd文件的最后一行,看看是如何记录的。 查看文件/etc/shadow文件的最后一行,看看是如何记录的。 给用户user01设置密码:#passwd user01。 再次查看文件/etc/shadow文件的最后一行,看看有什么变化。 使用user01用户登录系统,看能否登录成功。。 锁定用户user01:#passwd -l user01。 查看文件/etc/shadow文件的最后一行,看看有什么变化。 再次使用user01用户登录系统,看能否登录成功。 解除对用户user01的锁定:#passwd -u user01 更改用户user01的帐户名为user02:#usermod –l user02 user01。 查看/etc/passwd文件的最后一行,看看有什么变化。 删除用户user02。 2. 组的管理 创建一个新组,stuff:#groupadd stuff。 查看/etc/group文件的最后一行,看看是如何设置的。 创建一个新帐户user02,并把他的起始组和附属组都设为stuff:#useradd –g stuff –G stuff user02。 查看/etc/group文件中的最后一行,看看有什么变化。 给组stuff设置组密码:#gpasswd stuff。 在组stuff中删除用户user02:#gpasswd –d user02 stuff。 再次查看/etc/group文件中的最后一行,看看有什么变化。 删除组stuff。 3. 用Linux-conf创建用户和组 进入X-Window图形界面。 在终端中输入userconf命令,启动Linux-conf的用户管理子程序,在打开的界面中练习用户、组的 设置。 4. 磁盘限额 启动vi来编辑/etc/fstab文件。 把/etc/fstab文件中的home分区添加用户和组的磁盘限额。 用quotacheck命令创建https://www.wendangku.net/doc/441720969.html,er和aquota.group文件:#quotacheck -guva 给用户user01设置磁盘限额功能:#edquota -u user01。 将其blocks的soft设置为4000,hard设置为5000;inodes的设置为4000,hard设置为5000。编辑 完成后保存并退出。 重新启动系统。 用quotaon命令启用quota功能:#quotaon –ugva。 切换到用户user01,查看自己的磁盘限额及使用情况。

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

实验一进程调度实验 专业:XXXXX 学号:XXXXX 姓名:XXX 实验日期:20XX年XX月XX日

一、实验目的 通过对进程调度算法的模拟加深对进程概念和进程调度算法的理解。 二、实验要求 编写程序实现对5个进程的调度模拟,要求至少采用两种不同的调度算法分别进行模拟调度。 三、实验方法内容 1.算法设计思路 将每个进程抽象成一个控制块PCB,PCB用一个结构体描述。 构建一个进程调度类。将进程调度的各种算法分装在一个类中。类中存在三个容器,一个保存正在或未进入就绪队列的进程,一个保存就绪的进程,另一个保存已完成的进程。还有一个PCB实例。主要保存正在运行的进程。类中其他方法都是围绕这三个容器可以这个运行中的PCB展开。 主要用到的技术是STL中的vector以维护和保存进程容器、就绪容器、完成容器。 当程序启动时,用户可以选择不同的调度算法。然后用户从控制台输入各个进程的信息,这些信息保存到进程容器中。进程信息输入完毕后,就开始了进程调度,每调度一次判断就绪队列是否为空,若为空则系统时间加一个时间片。判断进程容器中是否有新的进程可以加入就绪队列。 2.算法流程图 主程序的框架: 开始 选择调度算法void FCFS();//先来先服务 void SJF();//最短进程优先调度void RR();//简单时间片轮转void PD();//最高优先数优先 输入进程信息 将输入容器中以满足进入条件的进程调入就绪队列 判断就绪容器和输入容器是否为空!processScheduler.m_WaitQueue.empty()|| !processScheduler.m_ProcessQueue.empt() void ProcessQueueProcess(); //查看当前时间下,有无进程加 入。若有则把该进程调入就绪队列 void PCBInput();//输入进程信息 Y 打印各进程信息 进行统计计算周转 时间等 结束void PCBDisplay(); //打印当前状况下。就绪队列、完成队列、运行中的进程信息 void SchedulerStatistics(); //调度统计,计算周转时间等 按照选择的算法开 始选择就绪队列的 进程开始执行 void ProcessSelect(); //若当前就绪队列不为空则根 据选择的调度算法开始调度,否则,系统时间加一个时间片.以等待新的进程到

进程调度算法实验报告doc

进程调度算法实验报告 篇一:操作系统进程调度算法模拟实验报告 进程调度算法模拟 专业:XXXXX 学号:XXXXX 姓名:XXX 实验日期:20XX年XX月XX日 一、实验目的 通过对进程调度算法的模拟加深对进程概念和进程调度算法的理解。 二、实验要求 编写程序实现对5个进程的调度模拟,要求至少采用两种不同的调度算 法分别进行模拟调度。 三、实验方法内容 1. 算法设计思路 将每个进程抽象成一个控制块PCB, PCB用一个结构体描述。 构建一个进程调度类。将进程调度的各种算法分装在一个类中。类中存 在三个容器,一个保存正在或未进入就绪队列的进程,一个保存就绪的进程,另一个保存已完成的进程。还有一个PCB实例。主要保存正在运行的进程。类中其他方法都是围绕这三个容器可以这个运行中的PCB展开。

主要用到的技术是STL中的vector以维护和保存进程容器、就绪容器、 完成容器。 当程序启动时,用户可以选择不同的调度算法。然后用户从控制台输入 各个进程的信息,这些信息保存到进程容器中。进程信息输入完毕后,就开始了进程调度,每调度一次判断就绪队列是否为空,若为空则系统时间加一个时间片。判断进程容器中是否有新的进程可以加入就绪队列。 2. 算法流程图主程序的框架: ();//先来先服务 ();//最短进程优先调度//简单时间片轮转//最高优先数优先//输入进程信息 ();.m_WaitQueue.empty()||.m_ProcessQueue.empt() (); (); 进程调度过程: ; 3. 算法中用到的数据结构 struct fcfs{//先来先服务算法从这里开始char name[10];float arrivetime;float servicetime;float starttime;float finishtime;float zztime;float

相关文档
相关文档 最新文档