扬州大学操作系统实验报告书_第1页
扬州大学操作系统实验报告书_第2页
扬州大学操作系统实验报告书_第3页
扬州大学操作系统实验报告书_第4页
扬州大学操作系统实验报告书_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 操作系统原理 实 验 报 告 书 班级 软件 1102 学号 姓名 指导教师 徐向英 2012 2013 学年 第 二 学期 2 实验名称 实验名称 LINUX 用户界面用户界面 实验时间 实验时间 2013 年年 4 月月 9 日日 第第 6 周周 星期星期 二二 一 实验目的 1 熟悉 Linux 字符操作界面 熟练掌握常用 Shell 命 令 2 熟悉 Linux 文本编辑方法 学会编辑软件 VI 的使 用 3 了解 Linux 编译器 gcc 的功能 掌握基于 Linux 平台的 C 程序的开发 二 实验预习 预备知识的问题及回答 1 为什么在 Linux 系统中 诸如光盘 U 盘等要先挂载而后才能使用 如何获得 U 盘的 设备名 装载点在文件系统中的位置是什么 由于文件系统的差异 Linux 在默认情况下并不支持软盘 光盘 U 盘 所以需要通过 装在相应盘片才可以访问其中的数据 装载点是挂载文件系统的目录位置 2 从虚拟机界面退出进入 Windows OS 界面的操作是 Ctrl Alt 从 Windows OS 界面进入虚拟机界面的方法是 鼠标点击虚拟机界面 3 权限的含义是什么 如何使用数字法设定文件的权限 Linux 系统中的每个文件和目录都有相应的访问许可权限 访问权限分为只读 r 可写 w 和可执行三种 有三种不同类型的用户可以对文件或者目录进行访问 分别是文件所有 者 u 同组用户 g 和其它用户 o 所有的文件和目录都被创建他们的人所拥有 只要 你是这个文件的所有者或者你登陆为用户 你就拥有了改变所有者 群组和其他人权限的 权利 使用数字法改变权限 命令格式 chmod 权限数值 文件名 3 说明 给指定文件赋予数值所规定的权限 在数字设定法中 每种权限设置均可以用数值来代表 其中 0 表示没有权限 1 表示可执行权限 2 表示可写权限 4 表示可读权限 这些值之和便可以用来设定特定权 限 4 什么过滤操作 在 Linux 中如何实现 过滤操作 将一个命令的输出作为一个命令的输入 Linux 实现的命令格式 命令 命令 5 在 Linux 中挂载 u 盘并能显示其文档的中文信息 所使用的挂载命令是 Mount dev sdal mnt usb 6 什么是 vi 其三种操作模式的含义是什么 给出三种工作模式间的转换图 命令模式 vi 启动后的默认模式 控制光标的移动 复制删除文字 进入输入模式和末行 模式 输入模式 进行文字输入 末行模式 保存文件 退出 VI 三 实验内容 包含实验所用命令或相关程序源代码 1 shell 操作命令 给出每题所用的操作命令 给出每题所用的 Shell 命令或命令结果 命令或命令结果 1 创建名为 stu1 stu2 的 2 个用户 设置密码分别为 student1 和 student2 并将它们设 为组 group1 中的成员 4 groupadd group1 useradd stu1 g group1 su stu1 Spasswd stu1 回车后敲入密码 student1 exit useradd stud2 g group1 su stu2 passwd stu2 exit 2 在每个用户的主目录下建立 2 个目录 分别命名为 dir1 和 dir2 su stu1 cd mkdir dir1 exit su stu2 cd mkdir dir2 exit 3 查找 stu1 用户主目录 下属各子目录的默认存取权限 并给出结论 su stu1 cd ls 1 用户主目录权限为 drwx 即目录的用户可读 写 执行 同组和其它的用户无任何 权限 su stu cd ls 1 Dir1 目录权限为 drwxr xr x 即目录的用户可读 写 执行 4 调试 pwd 和 cd 命令 回答下列关于 Linux 文件系统中目录的有关问题 用户主目录的绝对路径如何表示 home stu1 home stu2 5 根目录如何表示 root 和 分别表示什么目录 子目录 父目录 表示什么目录 用户主目录 当前目录如何表示 Cd 5 新建用户 stu3 设置其密码为 student3 并将其设置为 group2 中成员 尔后 以 stu3 登录 在其主目录下建立名为 text 的目录 在 text 目录下再建立名为 dir1 的子目录 并使其成为当前目录 groupadd group2 useradd stu3 g group2 su stu3 passwd 回车后敲入密码 student3 cd mkdir text mkdir dir1 cd text dir1 6 使用 cat sneakers txt 命令 分析命令行 cat sneakers txt 的显示结果 cat sneakers txt buy some sneakers then go to the coffee shop then buy some coff D cat sneakers txt 从键盘中创建一个名为 sncakers txt 文件 文件内容为 buy some sncakers Then go to the coffee shop Then buy some coff 6 7 使用上题的方法 在 dir1 目录中建立 home txt 文件 其内容为 bring the coffee home take off shoes put on sneakers make some coffee relax cd home stu1 dir1 cat home txt Bring the coffee home Take off shoes Put on sneakers Make some coffee Relax ctrl d 8 试写出实现下列功能的 shell 命令 将 home txt 文件移至其上级目录中 即 text 目录下 mv home txt 将 home txt 添加到 sneakers txt 尾部形成新的文件 saturday txt cat cneakers txt asturday txt cat home txt Saturday txt 将 text 目录树从 stu3 用户主目录下移至 stu2 主目录下 使用特权用户方法 su mv home stu3 text home stu2 修改目录权限方法 cp home stu3 text home stu2 7 9 试画出上述命令后 用户 stu1 stu2 和 stu3 主目录中的目录树 3 棵子树 2 Linux C 程序开发程序开发 1 编写 Linux C 程序 把一个文件的内容复制到另一个文件中 即实现简单的 copy 功 能 要求 程序输入的第一个参数是源文件 第二个参数是目标文件 源程序 include include include include Int main int argc char argv FILE in out Char ch If argc 3 Printf you forgot to enter a filename n Exit 0 8 If in fopen argv 1 r NULL Printf can nit open outfile n Exit 0 If out fopen argv 2 w NULL Prntf can not open outfile Exit 0 While feof in fputc in out Fclose in Fclose out 运行命令 gcc o test copy c test file1 c file2 c 9 2 编写 Linux C 程序 列出 stu2 主目录中的文件信息 并将其中 saturday txt 文件的权 限设置为文件所有者可读可写 同组用户只读 其他用户无权限 源程序 include include include include Int main int argc char argv DIR dp Struct dirent dirp Int n 0 If arge 2 Printf a signle argement is required Exit 0 If dp opendir argv 1 NULL Printf can not open s args 1 Exit 0 While dirp readdir dp NULL System chmod 640 home stu2 text dir1 Saturday txt 10 运行命令 gcc o test list c test home stu2 11 实验名称 实验名称 SHELL 程序设计程序设计 实验时间 实验时间 2013 年年 4 月月 11 日日 第第 6 周周 星星 期期 4 一 实验目的 熟悉 SHELL 脚本编程的步骤 掌握基于 Bash 的 Shell 脚本开发 二 实验预习 预备知识的问题及回答 1 Linux 系统默认的 shell 语言是什么 欲查看该 shell 的版本 应使用什么命令 Bash shell echo BASH VERSION 2 预习 shell 有关变量和参数的相关知识 回答下列问题 1 假设用户进行了如下的赋值操作 person jenny 试给出下面命令的输出结果 1 echo person person 2 echo person jenny 3 echo person person 4 echo person jenny 2 填充下列与环境变量 位置变量和预定义变量相关的表格 Shell 变量定义 HOME保存用户注册目录的绝对路径 PATH保存用冒号分割的目录路径 PWD当前工作目录的据对路径名 PS1主提示符 特权用户为 普通用户为 12 0当前 shell 程序的文件名 位置参数的个数 前一个命令执行后返回的状态 当前进程的 PID 3 写出下列 expr 命令的输出 1 expr index value a 2 expr value v u 3 expr aaa a 4 expr aaa a 5 expr 2 3 6 expr 2 3 7 expr 2 3 8 expr 5 expr 2 3 9 expr length operating system 10 expr substr linux 2 3 2 4 3 1 2 3 5 6 mon numeric argument 16 inu 三 实验内容 1 编写 Shell 脚本 从命令行中接收一个二元算术表达式并计算其结果 源程序 bin bash Iftest 3 Then Case s2 in let z 1 3 let z 1 3 let z 1 3 x x let z 1 3 echo warning 2 invalid operator exit Esac Echo answer is sz Else Echo usage 0 value1 operator value2 fi 13 运行 Chmod a x jisuan jisuan 2 3 2 编写一个以文件列表作为输入的过滤器程序 要求文件名含有以句点 分隔的后缀 过滤器输出每个文件的不带句点和后缀的文件名 源程序 Read flag While test flag Do Location expr location 1 Basename expr substr flag 1 location Echo basecname Read flag done 14 运行 Chmod a x letter letter 3 将下面的 shell 脚本命名为 myscript 分析其功能 count cmd echo while count gt 0 do cmd cmd count count expr count 1 done eval cmd 命令行输入 chmod a x myscript myscript first second third 运行结果 Third second first 脚本功能分析 将命令行输入的参数倒叙显示 4 设计一个程序 cuts 它从标准输入读入数据 获取由第一个参数 n 和第二个参数 m 所 限定范围的数据 包括这两个字符 n 和 m 都是整数 例如 cuts 11 14 This is a test of cuts program 输入 test 显示结果 源程序 bin bash Read bline Echo aline cut c 1 2 15 实验名称 实验名称 进程控制与通信进程控制与通信 实验时间 实验时间 2013 年年 5 月月 7 日日 第第 10 周周 星期星期 2 一 实验目的 1 加深进程的概念理解 体会进程创建过程 经一部 认识进程的异步并发特征 2 了解 Linux 进程通信原理 3 掌握 Linux 进程控制和进程通信相关的系统调用 二 实验预习 预备知识的问题及回答 1 写出下列系统调用功能 1 fork 用于 创建进程 2 getpid 用于 获取当前的进程 ID 号 3 wait 用于 等待子进程结束 4 exit 用于 进程自我终止 5 pipe 用于 常见无名管道 6 signal 用于 在信号和信号处理函数之间建对应关系 7 kill 用于 发送信号给指定进程 2 阅读 fork 系统调用 用伪码写出其实现流程 Pid fork 16 If pid 为负 Print 当前进程是子进程 Else if pid 为 0 Print 当前进程是父进程 3 图示 pipe 系统调用生成无名管道时所涉及的数据结构 4 在 UNIX 系统中运行下面程序 最多可以产生多少个进程 画出进程家族树 main fork fork 17 fork 8 个 5 下列程序运行后 a 的值是多少 main int a pid a 55 pid fork if pid 0 printf error in fork exit 0 else if pid 0 sleep 5 a 99 printf a d n a sleep 5 exit 0 else sleep 7 printf a d n a wait 0 a 99 a 55 最终 a 55 三 实验内容 1 调试下面的程序 观察可能的并发结果 给出简要分析 并画出进程家族树 include include include main int status int pid1 1 pid2 1 pid3 1 pid1 fork 18 if pid1 0 printf pid1 0 my process id is d n getpid else if pid1 0 printf pid1 0 my process id is d n getpid pid2 fork if pid2 0 printf pid2 0 my process id is d n getpid else if pid2 0 printf pid2 0 my process id is d n getpid pid3 fork if pid3 0 printf pid3 0 pid1 d pid2 d my process id is d n pid1 pid2 getpid else if pid3 0 printf pid3 0 pid1 d pid2 d my process id is d n pid1 pid2 getpid wait exit 0 2 编程实现进程间管道通信 要求 父子进程共享一无名管道 两个子进程作为发送方分别向管道发送一行信息 父 进程先读出子进程 P1 发来的信息行 将其转换为大写字母输出 再读出子进程 P2 发 19 来的信息行 将其转换为小写字母输出 源程序 Int filedes 2 Char buffer 80 Main Pipe filedes Char str1 80 Char str2 80 Int pid1 pid2 I While pid fork 1 If pid1 0 Lockf filedes 1 1 0 Printf child1 input String1 n Scanf s str1 Write filedes 1 str sizeof str1 Lockf filedes 1 0 0 Exit 0 Else While pid fork 1 If pid2 0 Lockf filedes 1 1 0 Printf child2 input string2 n Scanf s str2 Write filedes 1 str2 sizeof stru2 Lockf fildes 1 0 0 Exit 0 Else If waitpid pid1 null 0 pid1 Read filedes 0 buffer 80 For i 0 i sizeof str1 i buffer i toupper buffer i Printf parent child1 s n buffer Else Printf waitpid1 error If waitpid pid2 NULL 0 pid2 20 Read filees 0 bufferm80 For i 0 i sizeof str2 i Buffer i tolower buffer i Printf parent child2 s n buffer Else Printf waitpid2 error 运行与测试 21 附加题 3 学习下面共享存储区的内容 并用共享存储区的方式实现 观察者 报告者 问题 共享的 count 变量存于共享存储区 并验证 与时间有关的错误 共享存储操作使得两个或两个以上的进程可以共用一段物理内存 一般情况下 两个进程 的数据区是完全独立的 父进程用 fork 创建子进程后 子进程会复制父进程数据到自己的 数据区 1 创建共享内存 include int shmget key t key size t size int permflags 参数 key 是共享内存的标识 size 是共享内存段的最小字节数 permflags 是访问权限 值 的设置同 semget 一样 2 共享内存的控制 include int shmctl int shmid int command struct shmid ds shm stat command 可设为 IPC STAT IPC SET IPC RMID 参数 shm stat 指向存放属性的结构体 具体内容请参考手册 3 共享内存的附接和断开 include void shmat int shmid const void addr int shmflags int shmdt const void addr 由于两个函数需指出进程地址空间中的地址 因此比较复杂 简化的方法是将 shmat 中的 地址设为 NULL 源程序 22 运行与测试 23 实验名称 实验名称 虚拟存储虚拟存储 实实验时间 验时间 2013 年年 5 月月 21 日日 第第 12 周周 星星 期期 2 一 实验目的 1 掌握虚拟存储器的概念 理解实现虚拟存储器的基 本方法 2 体会分页存储器管理中 页面置换的过程 3 进一步认识多种页面置换算法的实现机制 二 实验预习 预备知识的问题及回答 1 描述请求分页的地址转换过程 24 2 解释 FIFO 页面置换算法所产生的 Belady 现象 Belady 现象是指当进程分配的内存块数增加时 进程缺页率反而上升的现象 FIFO 算法在 页面置换时 总是淘汰先进入主存的页面 而先进入主存的页面并不一定是以后用不到的 页面 如果这些页面以后需要访问 则将产生缺页 因此即使分配的内存块数增加 缺页 25 率依然有可能上升 这是由于使用的页面置换算法不合理导致的 三 实验内容 1 计算并输出下列页面置换算法在不同内存容量 4 页至 32 页 下的命中率 1 最佳置换算法 OPT 2 先进先出算法 FIFO 3 最近最久未用页面置换算法 LRU 具体要求如下 1 通过随机函数产生一个指令序列 共 320 条指令 指令地址的生成原则如下 1 50 的指令是顺序执行的 2 25 的指令是均匀分布在前地址部分 3 25 的指令是均匀分布在后地址部分 程序中的具体实施方法是 1 在 0 319 的指令地址之间随机选取一起点地址 m 2 顺序执行一条指令 即执行地址为 m 1 的指令 3 在前地址 0 m 1 中随机执行一条指令 该指令的地址为 m 4 顺序执行一条指令 即执行地址为 m 1 的指令 5 在后地址 m 2 319 中随机执行一条指令 重复上述步骤 1 5 直到执行 320 条指令为止 将指令序列变换成为页地址流 设 页面大小为 1k 用户内存容量为 4 页逐步增加到 32 页 用户虚存容量为 32k 假定在用户虚存中 每页存放 10 条指令 即 320 条指令在虚存中的存放方法为 第 0 条 第 9 条指令在第 0 页 第 10 条 第 19 条指令在第 1 页 26 第 310 条 第 319 条指令在第 31 页 按以上方式用户指令共组成 32 页 据此可得出指令地址 m 和页面号 page 以及页内位移量 offset 之间的计算公式为 page m 10 offset m 10 页地址流长度为 320 源程序 Int page stream 320 Int b 32 Void ran Int instruct 320 Int I j m m1 m2 Srand getpid I 0 While i 320 M rand 320 Instruct i m I If m 1 320 Instruct i m 1 I M1 read m 1 Instruct i m1 I If m1 1 320 Instruct i m1 1 I M1 read m 1 Instruct i m1 I If m1 1 320 Inst

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论