计算机本科操作系统实验课实验题目
操作系统 上机操作实验题目

实验一批处理系统的作业调度一、实验目的1.加深对作业概念的理解。
2.深入了解批处理系统如何组织作业、管理作业和调度作业。
二、实验预备知识1.作业的概念。
2.作业的创建。
3.作业的调度。
三、实验内容编写程序完成批处理系统中的作业调度,要求采用响应比高者优先的作业调度算法。
实验具体包括:首先确定作业控制块的内容,作业控制块的组成方式;然后完成作业调度;最后编写主函数对所做工作进行测试。
四、提示与讲解操作系统根据允许并行工作的道数和一定的算法从系统中选取若干作业把它们装入主存储器,使它们有机会获得处理器运行,这项工作被称为“作业调度”。
实现这部分功能的程序就是“作业调度程序”。
作业调度的实现主要有两个问题,一个是如何将系统中的作业组织起来;另一个是如何进行作业调度。
为了将系统中的作业组织起来,需要为每个进入系统的作业建立档案以记录和作业相关的信息,例如作业名、作业所需资源、作业执行时间、作业进入系统的时间、作业信息存储器中的位置、指向下一个作业控制块的指针等信息。
这个记录作业相关信息的数据块称为作业控制块(JCB),并将系统中等待作业调度的作业控制块组织成一个队列,这个队列称为后备队列。
一个作业全部信息进入系统后,就为其建立作业控制块,并挂入后备队列。
当进行作业调度时,从后备队列中查找选择作业。
由于实验中没有实际作业,作业控制块中的信息内容只使用了实验中需要的数据。
作业控制块中首先应该包括作业名;其次是作业所需资源,根据需要,实验中只包括需要主存的大小(采用可移动的动态分区方式管理主存,作业大小就是需要主存的大小)、需要打印机的数量和需要磁带机的数量;采用响应比作业调度算法,为了计算响应比,还需要有作业的估计执行时间、作业在系统中的等待时间;另外,指向下一个作业控制块的指针必不可少。
实验中,作业控制块及队列的数据结构定义如下:typedef struct jcb {char name[4]; //作业名int length; //作业长度,所需主存大小int printer; //作业执行所需打印机的数量int tape; //作业所需磁带机的数量int runtime; //作业估计执行时间int waittime; 作业在系统中的等待时间int next; //指向下一个作业控制块的指针}JCB //作业控制块类型定义存放作业控制块的区域:define n 10 //假定系统中可容纳的作业数量为nJCB jobtable[10]; //作业表int jobcount ; //系统内现有作业数量将作业控制块组织成一个队列,实验中采用静态链表的方式模拟作业的后备队列,如下图所示。
电大操作系统(本科)实验报告1-5

中央广播电视大学计算机科学与技术专业操作系统(本科)实验报告院系:______ _________班级:___ _____学生:____ _________学号: _ _____指导教师:___ __ ___完成日期 2015 年月日2.弹出个对话框选择——下一步3.之后有两个对话框,咱们这里选——自定义,下一步4.设置完向导后双击CD-ROM1(IDE1:0)选项在连接选项卡中选择使用ISO映像并找到ubuntu映像位置5.确定之后单机命令标题下的——启动此虚拟机,选项,之后虚拟机出现在安装linux界面上(开始时英文,如果英语不太好的童鞋可按F2键选择中文,例如像me),之后就开始真正装linux了6.安装7.各种同意,下一步选择语言中文简体8.这里可以更改网络配置,下一步9.设置主机10.设置完整用户名和登录口令11.进行磁盘分区12.复制安装系统文件13.安装GRUB14.结束安装15.启动系统到登录界面16.进入系统17.由于关机需要root权限,需对root设置密码,并切换到root用户18.关闭系统七、实验结果分析:成功安装ubuntu,关机需要root权限,正确关机实训2一、实验题目:Linux 应用及shell编程二、实验目的和要求:目的1.掌握Linux一般命令格式和常用命令。
2.学会使用vi编辑器建立、编辑文本文件。
3.了解shell的作用和主要分类。
4.学会bash脚本的建立和执行方式。
5.理解bash的基本语法。
6.学会编写简单的shell脚本。
要求1.登录进入系统,修改个人密码。
2.使用简单命令:date,cal,who,echo,clear等,了解Linux命令格式。
3.进入vi。
建立一个文件,如file.c。
进入插入方式,输入一个C语言程序的各行容,故意制造几处错误。
最后,将该文件存盘。
回到shell状态下。
4.运行gcc file.c -o myfile,编译该文件,会发现错误提示。
操作系统实验题

1、在操作系统中,进程与线程的主要区别是什么?A. 进程是资源分配的基本单位,线程是处理器调度的基本单位B. 进程和线程都是资源分配和处理器调度的基本单位C. 线程是资源分配的基本单位,进程是处理器调度的基本单位D. 进程和线程都不涉及资源分配问题(答案:A)2、以下哪种调度算法可能会导致饥饿问题?A. 先来先服务(FCFS)B. 短作业优先(SJF)C. 时间片轮转(Round Robin)D. 优先级调度(非抢占式)(答案:B)3、在操作系统的存储管理中,分段存储管理方式的主要目的是?A. 提高内存利用率B. 实现内存保护C. 方便用户编程D. 提高程序运行速度(答案:C)4、关于死锁,以下哪个说法是正确的?A. 死锁是指多个进程因竞争资源而无限期等待的现象B. 死锁只可能发生在多道批处理系统中C. 死锁发生时,系统中一定存在多个进程同时处于就绪状态D. 预防死锁的方法之一是破坏“请求和保持”条件,即要求进程一次性申请所有所需资源(答案:A,注:同时D也是预防死锁的一种方法,但题目要求选择正确说法,A更直接描述了死锁的定义)5、在操作系统的文件系统中,目录结构的主要作用是?A. 实现文件的按名存取B. 提高文件存储的效率C. 增强文件系统的安全性D. 便于用户对文件进行备份(答案:A)6、下列哪一项不是虚拟内存技术的优点?A. 扩大内存容量B. 提高内存利用率C. 简化内存管理D. 加快程序运行速度(在某些情况下可能因换页开销而减慢)(答案:D)7、在操作系统的设备管理中,缓冲区的设置主要是为了?A. 提高设备利用率B. 缓和CPU与I/O设备之间速度不匹配的矛盾C. 实现设备的即插即用D. 减少I/O操作的次数(答案:B)8、关于操作系统的中断机制,以下哪个说法是错误的?A. 中断是由硬件或软件发出的,用于请求CPU处理的事件B. 中断处理过程中,CPU会暂停当前程序的执行,转而执行中断处理程序C. 中断向量表是存储中断处理程序入口地址的表D. 在所有情况下,中断处理程序的执行优先级都高于当前正在运行的程序(答案:D,注:中断处理程序的优先级通常较高,但并非在所有情况下都绝对高于所有正在运行的程序,特别是在某些实时系统中可能有更复杂的优先级策略)。
大学计算机基础实验指导与习题 第2章 Windows操作系统

14
实验2-2 Windows XP资源 管理器的应用
四、练习实验 1.在E:盘上建立文件夹,名为“计算机基础”。 2.查找“sunset.jpg”所在位置,并将其复制到 “计算机基础”文件夹中。 3.将“计算机基础”文件夹中的“sunset.jpg”改 名为“我的图片.jpg”。 4.在桌面上为“我的图片.jpg”创建快捷方式,并尝 试用新建立的快捷方式打开该文件。 5.查看“我的图片.jpg”文件的信息,包括文件的大 小、文件的名称(包括文件主名和扩展名)、文件建 立与修改日期等。 6.在E:盘中,分别以连续成组、非连续、反向和全 选方式选择文件或文件夹。
2
实验2-1 Windows XP基本操作
2.掌握窗口的基本操作。 (1)打开“我的电脑”窗口,熟悉窗口的组成。 窗口是由标题栏、菜单栏、工具栏、状态栏、工作 区域及滚动条等几部分组成。 (2)练习下列窗口操作操作: ①移动窗口。 ②适当调整窗口的大小,使滚动条出现。利用滚动 条来改变窗口显示的内容。 ③先将窗口最小化,然后再将窗口复原。 ④先将窗口最大化,然后再将窗口复原。 ⑤关闭窗口。
实验2-1 Windows XP基本操作
一、实验目的 1.掌握Windows XP的启动和退出。 2.熟悉Windows XP的桌面布局。 3.了解对话框中的常见组成元素。 4.熟悉窗口的基本操作。 5.熟悉菜单的使用。
1
实验2-1 Windows XP基本操作
二、实验内容和步骤 1.启动Windows XP,熟悉桌面、对话框的组成, 学会对桌面的图标和对话框等进行操作。 (1)打开计算机,进入Windows XP。观察桌面 的组成,认识应用程序和图标。 ①查看任务栏的属性。 ②改变任务栏及各区域大小。 ③熟悉桌面常用的图标。 ④熟悉“开始”菜单的使用。 (2)熟悉对话框的组成要素,了解基本操作。
操作系统实验题目

操作系统实验上机准备:➢熟悉Cygwin环境➢编译源程序使用gcc 源程序名–o 目标文件名(缺省为a.out)。
➢学习Linux(Unix)的常用命令。
➢学习vi 编辑器的使用。
➢C语言语法1 进程管理1.1 实验目的加深对于进程并发执行概念的理解。
实践并发进程的创建和控制方法。
观察和体验进程的动态特性。
进一步理解进程生命期期间创建、变换、撤销状态变换的过程。
掌握进程控制的方法,了解父子进程间的控制和协作关系。
练习Linux系统中进程创建与控制有关的系统调用的编程和调试技术。
1.2 实验说明1)与进程创建、执行有关的系统调用说明进程可以通过系统调用fork()创建子进程并和其子进程并发执行.子进程初始的执行映像是父进程的一个复本.子进程可以通过exec()系统调用族装入一个新的执行程序。
父进程可以使用wait()或waitpid()系统调用等待子进程的结束并负责收集和清理子进程的退出状态。
fork()系统调用语法:#include <unistd.h>pid_t fork(void);fork成功创建子进程后将返回子进程的进程号,不成功会返回-1. exec 系统调用有一组6个函数,其中示例实验中引用了execve 系统调用语法:#include <unistd.h>int execve(const char *path, const char *argv[], const char * envp[]); path 要装入的新的执行文件的绝对路径名字符串.argv[] 要传递给新执行程序的完整的命令参数列表(可以为空).envp[] 要传递给新执行程序的完整的环境变量参数列表(可以为空). Exec 执行成功后将用一个新的程序代替原进程,但进程号不变,它绝不会再返回到调用进程了。
如果exec 调用失败,它会返回-1。
getpid()---获取进程的pid● 每个进程都执行自己独立的程序,打印自己的pid ,每个父进程打印其子进程的pid;● 每个进程都执行自己独立的程序,打印自己的pid ,父进程打印其子进程的pid;● 编写一个命令处理程序,能处理max(m,n), min(m,n)和 average(m,n,l)这几个命令。
大学计算机基础实验1-操作系统实验

操作系统实验(一)Windows系统基本操作【实验目的】1.掌握Windows的启动与关闭。
2.了解Windows桌面的组成。
3.掌握鼠标器的操作方法。
4.掌握汉字输入法的选用。
5.了解使用帮助系统的基本方法。
6.掌握任务栏和开始菜单的设置与使用。
7.使用“我的电脑”与“资源管理器”浏览计算机。
8.掌握桌面对象、快捷方式的建立、删除。
9.掌握回收站的使用。
【实验内容】1.Windows的启动与关闭。
(1)根据上机的实验环境登录进入Windows系统(登录名和密码由任课教师指定),观察Windows 系统桌面的组成。
(2)关闭Windows。
2.鼠标的基本操作练习,要求如下;(1)用鼠标的“拖曳”操作在桌面上移动“我的电脑”的图标。
(2)用鼠标的“单击”、“双击”和“右键单击”打开“我的电脑”窗。
(3)用鼠标的“拖曳”操作改变“我的电脑”窗口的大小和在桌面上的位置。
3.对话框的基本操作练习,要求如下:双击图1.1 任务栏用鼠标“双击”图1.1所示任务栏右端的时间区域,打开“日期/时间属性”对话框,修改计算机的日期和时间。
4.使用Windows帮助系统。
(1)通过“开始∣帮助”命令或“我的电脑”、“网上邻居”等窗口中的“帮助”菜单命令打开Windows帮助窗口。
(2)单击“目录”标签,单击“文件和文件夹”书籍图标,在展示的主题项和下级书目中,查找某主题项,例如“文件和文件夹概述”主题项。
(3)单击“索引”标签,通过在文本框内键入关键字获取帮助信息。
本题要求输入关键字:“窗口”,查找有关“Windows 资源管理器”的帮助信息。
(4)单击“搜索”标签,通过在文本框内键入关键字列出与其相关的帮助主题。
本题要求输入关键字“快捷键”,然后单击“列出主题”,Windows 帮助窗口的左下方将列出相应主题。
选择“Windows 快捷键”主题。
5.使用“我的电脑”浏览计算机,说明以下各个图标代表的对象。
6.使用任务栏上的“开始”按钮和工具栏浏览计算机。
大学计算机基础操作系统基础实验

操作系统基础实验
蒋里
实验1
1设置任务栏为自动隐藏
2设置智能ABC为默认输入法
3设置显示或隐藏语言栏
4在桌面上显示或隐藏“我的文档”,“我的电脑”,“回收站”
5选择或取消“分组相似任务栏按钮”功能
进行平铺操作
6桌面背景选用“SOAP BUBBLES”并选用拉伸的方式让它覆盖整个桌面
选用三维文字屏保,设置摇摆式旋转并设置等待一分钟
7查看屏幕分辨率
更改分辨率
8查看当前屏幕刷新率60赫兹
9剪贴簿查看器的使用
10使用windows的帮助系统
11windows任务管理器的使用
系统进程数
cpu型号:intel(R)core(TM)i5-2410m 内存容量:2.00GB
操作系统版本:win7
完整的计算机名称:
隶属于的域或工作组:
网络适配器的型号:
12NTFS文件系统实验
压缩前的文件大小:4.15
压缩之后的文件大小:1.32。
计算机操作系统试验lab9

实验九操作系统的安全
1、实验目的
通过对操作系统提供的安全功能的运用,进一步了解操作系统的网络安全特性和安全措施,学习和掌握操作系统安全特性的设置方法,以及初步了解Windows 2000注册表的应用方法和Linux文件权限的设定。
2、实验内容
2.1 Windows 2000安全设置,描述下面每一题的操作步骤
1)停止Guest帐号
2)Windows 2000中的Administrator帐号可以被停用吗?
3)把Windows 2000中的Administrator帐号名改成:guestone。
4)修改Windows 2000注册表注册表,禁止显示上次登录名
5)查看Windows 2000中的共享
6)禁止5题中的一个共享
7)锁住注册表,禁止Administrators和Backup Operators从网络上访问注册表
8)关机时清除文件
2.2 Linux文件权限的设定
1)登录进Linux操作系统,创建文件file1,file2
2)查看file1的存取控制权限
3)将文件file1设置为任何人可以读取
4)将文件file2设置为文件的所有者和同组用户可以修改,而其他人无修改权限
5)将文件file1设置为只有其拥有者可以执行
3、实验准备
1)Windows 2000,Linux。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一套题:文件更名要求:1.在系统中建立一个文件(文件名自定)。
(10分)2.用rename函数编写一个C程序(程序名自定)更改第一点要求中的文件名(文件名自定);在程序中应有如下基本功能:当执行文件时,使用方法出错,请给出提示,如程序名参数1参数2,并退出;如rename函数调用不成功,给出相应的出错信息,否则,给出相应的成功信息。
(60分)3.调试成功。
(20分)4.用相应的命令查看调试结果。
(10分)注:rename函数原型是:itn rename( const char*oldname, const char *newname)#include <stdio.h>#include <stdlib.h>int main(int argc,char *argv[]){if(argc!=3) {printf(“usage:a.out <oldname> <newname>\n”);exit(1);}if(rename(argv[1], argv[2])<0)printf(“ERROR:rename() call failed\n”);elseprintf(:”r ename() call successful\n”);exit(0);}第二套题:改变当前目录到指定目录要求:1.在系统中建立一个用建目录命令(目录名自定)。
(10分)2.用chdir和getwd函数编写一个C程序(程序名自定)改变当前目录到指定目录,然后打印出该目录名。
在程序中应有如下基本功能:当执行文件时,使用方法出错,请给出提示,如程序名参数,并退出;如chdir函数调用不成功,给出相应的出错信息,退出。
否则,调用getwd函数,如getwd函数调用不成功,给出相应的出错信息,退出。
否则,打印该目录名。
(60分)3.调试成功。
(20分)4.用相应的命令查看指定目录。
(10分)注:getwd函数原型是:itn getwd (char*pathbuf);它的功能确定调用进程当前工作目录的绝对路经名,复制该路经名所指、由我们自己提供的字符数组中,然后返回指向该数组的指针。
调用成功返回0,否则,返回-1。
chdir函数原型是:itnchdir ( const char*pathname);它的功能是pathname指定的目录成为当前目录,调用成功返回0,否则,返回-1。
该程序需要有头文件:unistd.h 、stdlib.h、limits.h。
#include <stdio.h>#include <stdlib.h>#include < unistd.h >#include <limits.h>int main(int argc,char *argv[]){char *ptr=malloc(PA TH_MAX+1);if(argc!=2) {printf(“usage:a.out <pathname> \n”);exit(1);}if(chdir (argv[1]) <0){printf(“ERROR chdir call failed\n”); exit(1);}if(getwd (ptr)==NULL){printf(” getwd call failed \n”); exit(1);}printf(” cmd=%s\n”,ptr); exit(0);}第三套题:用fork( )编写一个创建进程的C程序要求:1.用fork( )编写一个创建进程的C程序(程序名自定)。
程序的功能:如果fork( )调用不成功,则作空循环;如成功,子进程执行execl("/bin/ps","ps","-af",(char * )0);父进程执行execl("/bin/ls","ls","","/home/stu",(char * )0);(80分)2.调试成功。
(20分)派生进程执行新程序*/#include <unistd.h>main(){int pid;while((pid=fork())==-1);if(pid==0){execl("/bin/ps","ps","-af",(char * )0);}else{execl("/bin/ls","ls","","/home/stu",(char * )0);}}第四题:用fork( )编写一个创建进程的C 程序1.用fork( )编写一个创建进程的C 程序(程序名自定)。
程序的功能:如果fork( )调用不成功,给出错误信息,退出;如成功,子进程执行execl("/bin/ps","ps","-af",(char * )0);父进程执行系统调用wait(NULL)把自已阻塞下来睡眠,直至子子进程执行execl("/bin/ps","ps","-af",(char * )0)完毕, 父进程并显示出子进程执行完毕的信息printf(“ls completed\n”)。
(80分)2.调试成功。
(20分)#include <unistd.h>main(){int pid;pid=fork();swich(pid){case –1:printf(“fork failed\n ”);exit(1);case 0:execl("/bin/ps","ps","-af",(char * )0);exit(1);default:wait(NULL);printf(“ls completed\n ”);exit(0);}第六题:编写一个程序,用fork 系统调用创建两个了进程。
要求:1.程序运行时,在系统中有一个父进程和两个子进程。
让每一个进程显示一个字符;2.父进程显示字符’A ’,两个子进程分别显示字符’B ’和’C ’。
3.正确写出上面功能的程序。
(60分)4.调试出程序。
(40分)1 2 3 4 5 6 7 8 9 10 #include <stdio.h>#include <stdlib.h>#include <sys/types.h>#include <unistd.h>main(){if ( fork() == 0 ) // 子进程1{printf("b\n");11 12 13 14 15 16 17 18 19 20 21 22 23 24 exit(0);}else{if ( fork() == 0 ) // 子进程2{printf("c\n");exit(0);}printf("a\n"); // 父进程exit(0);}}原程序:见指导书P68。
第七套题:编写一个程序,用fork 系统调用创建两个了进程 要求:1. 序运行时,在系统中有一个父进程和一个子进程。
显示进程标识符;父进程显示字符’It is a parent process!’,子进程显示’ It is a parent process!’。
2. 正确写出上面功能的程序。
(60分)调试出程序。
(40分)main(){ int i;while((i=fork()==-1);printf(“i=%d\n ”,i);if(i) printf(“It is a parent process!\n);else printf(“It is a parent process!\n);}第五套题:编写一个程序,创建两个进程通信要求:1. 用fork( )编写一个创建进程的C 程序,创建两个进程Sever 和Client 通信Client 发来一条信息,Sever 接收一条信息。
2. 正确写出上面功能的程序。
(60分)调试出程序。
(40分)原程序:见指导书P76。
第八套题:编写一个程序,实现进程的管道通信要求:1. 编写一个C 程序,实现进程的管道通信。
使用系统调用pipe()建立一条管道。
两个子进程p1,p2分别向管道各写一句:Child1 is sending message!Child2 is sending message!父进程从管道中读出来自两个子进程的信息,显示在屏幕上。
2.正确写出上面功能的程序。
(60分)调试出程序。
(40分)原程序:见指导书P74。
第九套题:编写一个程序,显示当前目录要求:1.用getwd函数(或者get_current_dir_name())编写一个C程序(程序名自定)获取当前目录,然后打印出该目录名。
正确写出程序60分。
2.调试成功。
40分#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<limits.h>int main(int argc, char* argv[]){char *ptr=(char*)malloc(PA TH_MAX+1);if(argc!=2){printf("Error: assume error\n mvdir arg1\n");return 0;}ptr=get_current_dir_name();if(ptr==NULL)printf("ERROR: getwd\n");elseprintf("mvdir= %s\n",ptr);return 0;}。