当前位置:文档之家› 兰州大学操作系统实验十文件系统观察题目和答案

兰州大学操作系统实验十文件系统观察题目和答案

兰州大学操作系统实验十文件系统观察题目和答案
兰州大学操作系统实验十文件系统观察题目和答案

实验十

实验名称:10

文件系统观察

实验目的:

1.学习和掌握文件系统的基本概念

2.学习对文件和文件系统的观察和操作

3.学习和使用文件系统的权限控制

实验时间

3学时

预备知识:

1.基本命令

命令名主要选项功能说明

ls -a, -l, -i 列出指定文件

stat 显示文件系统信息

cd 切换目录

pwd 报告当前路径

touch -a, -m 创建新文件

mv -i, -u 移动

cp -a, -i, -l, -s, -R 复制

rm -i,-r 删除文件

mkdir -p 创建目录

rmdir 删除目录(空目录)

ln -s 建立链接

find -type, -name, -ctime 查找文件

locate 快速查找文件

grep -i,-l, -r, -v, -n 查找文件内容

chmod -R 添加、删除、指派文件或目录的权限

chown 改变文件属主

chgrp 改变文件组

umask 查看、设置权限掩码

mkfs -t 创建文件系统

mke2fs -j, -b, -i 创建ext2/ext3文件系统

mount -t, -o, -a 挂载文件系统

umount 卸载文件系统

df -i, -h, -k, -a 提供硬盘及其分区、其它驱动器在文件系统中的装入位

置以及它们所占用的空间大小等信息。

du -c, -h 提供关于文件和目录所占空间的信息

fsck 检查文件系统

2.文件类型

类型说明

普通文件一组连续的数据用一个名称表示

目录实施了分级文件系统的结构

设备文件要访问硬件的每个程序都必须通过对应的设备文件来访问硬件

链接对存储在文件系统中其他点的文件的引用

套接字通过文件系统实施两个本地运行的进程之间的数据交换

FIFO 在进程之间交换数据

3.文件和目录的权限保护

每个文件和目录都具有一定的访问权限。指派的权限决定给定用户的访问级别。权限的指派分为三个级别:

用户(u,owner):指派给文件或目录所有者的权限决定了所有者的访问级别。

组(group):为组指派的权限确定了组成员对文件或目录的访问级别。

其他(other):指派给该实体的权限用于已鉴定的用户,这些用户本身不是组的成员但已和文件或目录相关联。

可以对文件或目录指派以下三种权限:

读(r):该权限允许读取文件并列出目录内容。

写(w):该权限允许修改文件。还允许在目录内创建或删除文件。

执行(x):该权限允许执行文件。还允许访问目录。

可以使用命令ls -l 显示当前目录中的内容以及指派的对每个文件或子目录的访问权限。

例如,输入ls -l 显示myfile.txt 的权限如下:

每个文件和目录都指定有数字权限值。该值有3位数字。第一位数字表示指派给文件或目录所有者的权限。第二位数字表示指派给和文件及目录相关的组的权限。第三位数字表示指派给其他用户的权限。

每位数字都是指派的以下三个值的和:读:4;写:2;执行:1。

默认情况下系统以访问方式666创建文件,并以访问方式777创建目录。要修改(限制)这些默认访问方式设置,可以使用命令umask。该命令将和3位数字值(如022)一起使用,从默认权限中删除在umask 中设置的权限。

此外,还有三种特殊的文件权限:

字母编号名称文件目录

t 或T 1

粘滞位(stick

bit)

不适用只有文件的所有者、根用户或目录所有者可

以删除文件。通常应用于目录 /tmp/。

s 或

S 2 SGID (SetGID)运行程序时将进程的

组ID设置为文件组的

组ID。

在此目录下创建的文件属于目录所在的组,

而不属于用户的主组。

在此目录下创建的新目录将继承SGID 位。

s 或

S 4

SUID

(SetUserID)

运行程序时将进程的

用户ID设置为文件所

有者的用户ID。

不适用

4.Linux支持的文件系统

4.1 传统的文件系统

Linux支持的传统文件系统不将数据或元数据记入日记。

这些文件系统包括:

■ ext2。ext2 文件系统基于inode,为提高速度而设计,既高效又不容易产生文件碎片。

■ minix。minix 文件系统比较旧,限制较多(它是首个 Linux 文件系统),但对于软盘或 RAM 磁盘,有时仍会使用此文件系统,因为 minix 极低的文件系统开销

可增加数据存储量。

■MS-DOS/VFAT。FAT (文件分配表)是Microsoft Windows所使用的主文件系统。VFAT 是FAT的32位版本,包含长文件名。

■HPFS。HPFS(高性能文件系统)是IBM OS/2文件系统的原始文件系统。

4.2 日记文件系统

以下可用于 Linux 的文件系统包含日记功能:

■ext3。ext3 是 ext2 文件系统支持日记的版本。

■ReiserFS。ReiserFS 最初由 Hans Reiser 设计,该文件系统将整个磁盘分区视作一个单独的数据库表,不但存储文件元数据,而且存储文件本身。

目录、文件和文件元数据通过一种被称为“平衡树”的高效数据结构进行组织,此结构可显著提升许多应用程序的速度,尤其是那些大量使用小文件的应用程序。

■NTFS。NTFS (新技术文件系统)是 Windows NT 使用的文件系统。使用 Unicode 字符集,支持长达 255 个字符的文件名。目前 Linux 系统只支持对该文件系统的读取。

■JFS。此日记文件系统是 IBM 在 2001 年发布的正式产品版。

■XFS。XFS 是来自 SGI 的高性能日记文件系统。它提供了系统崩溃后的快速恢复、较快的处理速度、高可伸缩性和适用的带宽。

XFS 将先进的日记技术与全面的 64 位寻址和可伸缩的结构和算法相结合。

■Veritas's' VxFS。VxFS 是一个商用日记文件系统, 2001 年首次随 Linux 提供,经常用在 Unix 平台上。

4.3 虚拟文件系统(VFS)转换

对于用户或程序,无论使用哪种文件系统格式都无关紧要。数据始终显示相同的界面。这是通过虚拟文件系统转换(VFS,也称为虚拟文件系统)实现的。这是内核中的一个抽象层次,提供为进程定义的界面。它包含打开文件、写入文件和读取文件等功能。

5.Linux文件系统格式

Linux 的文件系统格式的独特之处是数据和管理信息是分开的。每个文件都通过inode (索引节点或信息节点)来描述。在这些节点中,每个节点都有128个字节,包含除文件名之外有关此文件的所有信息。这些信息包括:文件所有者、访问权限、文件大小、各种时间(修改时间、访问时间和修改inode的时间)等详细资料,以及指向文件数据块的链接。

但是Inode不包含文件名。文件名包含在目录中。目录包含其它文件的信息,此信息包含文件的inode 编号及其名称。目录可作为一张表格,在此表格中,inode编号逐行分配给文件名。

6.Linux文件系统分区

分区类型

(Intel 平台上)每个硬盘都有一个带有4项空格的分区表。分区表中的一项可以对应于一个主分区或一个扩展分区。但只允许有一个扩展分区项。

主分区由指派给特定操作系统的一系列连续的柱面(物理磁盘区域)组成。如果只有主分区,只能使用4个分区,因为分区表中仅限4项。

扩展分区同样是一系列连续的磁盘柱面,但扩展分区可以再分为多个逻辑分区。

逻辑分区不要求在分区表中有对应的项。换句话说,扩展分区是逻辑分区的容器。由于扩展分区应包括剩下的所有可用的柱面范围,所以配置扩展分区前请先配置主分区。

配置扩展分区后,在扩展分区内创建多个逻辑分区。对于SCSI磁盘,逻辑分区的最大数目是15个,对于(E)IDE 磁盘,逻辑分区的最大数目是63个。

设备和分区命名

设备名称

第一个IDE硬盘上的主设备/dev/hda

第一个IDE硬盘上的从设备/dev/hdb

第二个IDE硬盘上的主设备(经常是CDROM) /dev/hdc

第二个IDE硬盘上的从设备/dev/hdd

第一个SCSI硬盘/dev/sda

第二个SCSI硬盘/dev/sdb

第三个SCSI硬盘/dev/sdc

分区名称

第一个IDE硬盘上的第一个分区/dev/hda1

第一个IDE硬盘上的第二个分区/dev/hda2

第一个IDE硬盘上的第一个逻辑分区/dev/hda5

第一个IDE硬盘上的第二个逻辑分区/dev/hda6

实验要求:

1.分别以root和普通用户身份登录并进入各自的主目录,通过命令报告你的当前路径。

2.在一个目录下执行ls命令,验证-l,-a,-i选项的作用,什么时候会列出”.”和”..”目录?设

计一个关于使用命令的实验,验证这两个目录的含义和作用当前上一级

3.创建一个目录,并在其中创建几个文件,分别用rm和rmdir删除目录,观察有何不同。

空目录

4.以root身份创建一个新文件,观察其默认的权限;然后用vi编辑该文件;将该文件权

限改为只有用户可读,其他权限均无;以root身份创建一个脚本,该脚本使用cat命令在屏幕上显示前面创建文件的内容;将脚本文件按设置为所有用户可执行;分别以root 和普通用户身份登录,执行脚本,观察结果;为cat文件加SUID权限,再重复前一步

操作,观察结果,说明原因。

5.为一个已经存在的文件分别创建多个硬链接和多个符号链接,观察二者的不同,删除链

接时又有何不同?为什么?

6.报告你当前使用的系统已经挂载了那些文件系统(mnt 挂载可移动设备),挂载点(目录

节点)、文件系统类型(索引组织文件系统)mount 和对应设备文件以及设备和分区分别是什么?硬盘的当前使用情况(数据及索引节点)。Descripe df

实验报告:

实验名称:

实验日期:

实验设备号:

实验目的:

实验步骤:(完成实验要求的工作,需列出执行命令和执行结果,并有相关分析和解释。)认识和体会:

实验名称:10

文件系统观察

实验目的:

4.学习和掌握文件系统的基本概念

5.学习对文件和文件系统的观察和操作

6.学习和使用文件系统的权限控制

实验要求:

7.分别以root和普通用户身份登录并进入各自的主目录,通过命令报告你的当前路径。

8.在一个目录下执行ls命令,验证-l,-a,-i选项的作用,什么时候会列出”.”和”..”目录?设

计一个关于使用命令的实验,验证这两个目录的含义和作用

”.”显示当前目录”..”显示上一级目录

9.创建一个目录,并在其中创建几个文件,分别用rm和rmdir删除目录,观察有何不同。

rm代表删除空目录,rmdir代表删除文档

10.以root身份创建一个新文件,观察其默认的权限;然后用vi编辑该文件;将该文件权

限改为只有用户可读,其他权限均无;以root身份创建一个脚本,该脚本使用cat命令在屏幕上显示前面创建文件的内容;将脚本文件按设置为所有用户可执行;分别以root 和普通用户身份登录,执行脚本,观察结果;为cat文件加SUID权限,再重复前一步操作,观察结果,说明原因。

以root创建的默认权限是rw-r--r—

chmod a+x 有用户可执行

为cat文件加SUID权限,

原因; SUID权限:运行程序时将进程的用户ID设置为文件所有者的用户ID。

11.为一个已经存在的文件分别创建多个硬链接和多个符号链接,观察二者的不同,删除链

接时又有何不同?为什么?

区别:

(1)软链接可以跨越文件系统,硬链接不可以。

(2)硬链接不管有多少个,都指向的是同一个索引节点,会把结点连接数增加,只要结点的链接数不是0,文件就一直存在,不管你删除的是源文件还是链接的文件。只要有一个存在,文件就存在(其实也不分什么源文件和链接文件的,因为他们指向都是同一个索引节点的)。当你修改源文件或者链接文件任何一个的时候,其他的文件都会做同步的修改。软链接不直接使用索引节点号作为文件指针,而是使用文件路径名作为指针。所以删除链接文件对源文件无影响,但是删除源文件,链接文件就会找不到要指向的文件。软链接有自己的inode,并在磁盘上有一小片空间存放路径名,但软链接文件没有属于自己的文件块。(3)软链接可以对一个不存在的文件名进行链接。

(4)软链接可以对目录进行链接。

12.报告你当前使用的系统已经挂载了那些文件系统(mnt 挂载可移动设备),挂载点(目录

节点)、文件系统类型(索引组织文件系统)mount 和对应设备文件以及设备和分区分别是什么?硬盘的当前使用情况(数据及索引节点)。

实验报告:

认识和体会:

1.linux文件系统的树形结构:

linux文件系统采用了多级目录的树型层次结构管理文件。

树型结构的最上层是根目录,用/表示,在根目录之下是各层目录和文件。

在每层目录和文件都由多个字符组成的目录名或文件名。

系统在运行中通过使用命令或系统调用进入任何一层目录,这时系统所处的目录成为当前目录。

2.用绝对路径和相对路径。文件类型:普通文件目录文件设备文件管道文件

3.Linux设置了文件保护机制,其中之一就是给文件都设定了一定的访问权限。对文件访

问主要是三种处理操作:读取,写入,执行。

4.文件是存储在块设备上的,是以物理块为单位的,是块设备上划分的大小相同的存储

区域,如磁盘扇区。一个文件系统一般使用块设备上的一个独立的逻辑分区。

5.在系统运行期间磁盘上超级块要读入到内存,在内存建立一个超级块的映像。

操作系统实验题目2

实验报告撰写要求实验报告要求具有以下内容: 一、实验目的 二、实验内容 三、实验要求 四、算法流程图 五、给出测试数据及运行结果 六、实验体会或对改进实验的建议

实验1 进程调度(2学时) 一、实验目的 通过实验加强对进程调度算法的理解和掌握。 二、实验内容 编写程序实现基于优先级的时间片轮转调度算法。 三、实验要求 1、假定系统有5个进程,每个进程用一个进程控制块PCB来代表,进程控制块的结构如下图1.1所示: 图1.1 其中: 进程名:作为进程的标识,假设五个进程的进程名分别为p1,p2,p3,

p4,p5。 指针:进程按顺序排成循环链表,用指针指出下一个进程的进程控制块首地址,最后一个进程中的指针指出第一个进程的进程控制块首地址。 要求运行时间:假设进程需要运行的单位时间数。 已运行时间:假设进程已经运行的单位时间数,初值为0。 状态:可假设有两种状态,就绪状态和结束状态。进程的初始状态都为就绪状态。 2、每次运行所设计的处理器调度程序调度进程之前,为每个进程随机确定它的要求运行时间。 3、此程序是模拟处理器调度,因此,被选中的进程并不实际启动运行,而是执行 已运行时间+1 来模拟进程的一次运行,表示进程已经运行过一个单位时间。 4、在所设计的程序中应有显示语句,能显示每次被选中的进程名以及运行一次后进程队列的变化。

实验2 银行家算法(2学时) 一、实验目的 理解银行家算法,掌握进程安全性检查的方法及资源分配的方法。 二、实验内容 编写程序实现银行家算法,并验证程序的正确性。 三、实验要求 编制模拟银行家算法的程序,并以下面给出的例子验证所编写的程序的正确性。 例子:某系统有A、B、C、D 4类资源共5个进程(P0、P1、P2、P3、P4)共享,各进程对资源的需求和分配情况如下表所示。 现在系统中A、B、C、D 4类资源分别还剩1、5、2、0个,请按

操作系统课程设计答案

// tjty.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include #define Bsize 3 #define Psize 20 struct pageInfor { int content;//页面号 int timer;//被访问标记 }; class PRA { public: PRA(void); int findSpace(void);//查找是否有空闲内存 int findExist(int curpage);//查找内存中是否有该页面 int findReplace(void);//查找应予置换的页面 void display(void);//显示 void FIFO(void);//FIFO算法 void LRU(void);//LRU算法 void Optimal(void);//OPTIMAL算法 void BlockClear(void);//BLOCK恢复 pageInfor * block;//物理块 pageInfor * page;//页面号串 private: }; PRA::PRA(void) { int QString[20]={7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1}; block = new pageInfor[Bsize]; for(int i=0; i

block[i].timer = 0; } page = new pageInfor[Psize]; for(i=0; i= block[pos].timer) pos = i;//找到应予置换页面,返回BLOCK中位置return pos; } void PRA::display(void) {

湖南大学2013年操作系统期末试卷

答案仅为参考 1.Which of the following scheduling alogrithms could result in starvation and why? (1)First-come,first-served (2)Shortest job first (3)Round robin (4)Priority【来自课后习题】 答:最短工作优先调度和优先级调度算法会引起饥饿。优先级调度算法会使某个低优先级进程无穷等待CPU,此时,可能发生两种情况,要么进程最终能进行,要么系统最终崩溃并失去所有未完成低优先级进程。 解决方式——老化,老化是一种技术,以逐渐增加在系统中等待很长时间的进程的优先级。(最短工作优先调度会使工作长度最大的进入无限等待CPU) 2.Can a resource allocation graph (资源分配图) have cycle without deadlock(死锁)? If so,state why and draw a sample graph(画一个死锁点的图); if no,state why not? 答:有死锁,死锁部分为P2-R4-P5-R3。 3.What is the cause of thrashing(颠簸)? How dose the system detect(检测)thrashing? Once it detects thrashing,what can the system do to eliminate(消除)this problem?【来自课后习题】 答:分配的页数少于进程所需的最小页数时发生颠簸,并迫使它不断地页错误。该系统可通过对比多道程序的程度来估计CPU利用率的程度,以此来检测颠簸。降低多道程序的程度可以消除颠簸。 4.某Demand Paging system,拥有逻辑空间64页,每页2KB,拥有物理空间1MB。 (1)写出逻辑地址的格式。 解:11位页内地址,5位页号 (2)若不考虑访问权限等,进程的页表最多有多少项?每项至少有多少位? 解:因为有32个逻辑页面,所以页表有32项。因为有1M/2K= 2的9次方物理块,所以每个页表项至少有9位 (3)如果物理空间减少一半,页表结构应相应作怎样的改变? 解:32项,每项至少需要8位

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

一、实验目的 通过对进程调度算法的设计,深入理解进程调度的原理。 进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。 进程调度分配处理机,是控制协调进程对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)调度算法,时间片轮转。流程图如下:

操作系统实验报告 附思考题

课程设计(综合实验)报告( 2015 -- 2016 年度第 1 学期) 名称:操作系统综合实验 题目:oslab综合实验 院系:计算机系 班级: 学号: 学生姓名: 指导教师: 设计周数:分散进行 成绩: 日期:2015 年10 月29 日

实验1 实验环境的使用 一、综合实验的目的与要求 熟悉操作系统集成实验环境OS Lab 的基本使用方法。 练习编译、调试EOS 操作系统内核以及EOS 应用程序。 二、实验正文 1.启动 OS Lab 2.1 执行项目 Windows 控制台窗口内容显示 2.2 调试项目 2.2.1 使用断点中断执行 2.2.2 单步调试 2.2.2 .3单步调试结果显示: 练习使用“逐语句”功能和“跳出”功能 2.2.3 查看变量的值 快速监视 添加监视 2.2.4 调用堆栈 调用堆栈显示内容 进入Func 函数 双击 main 函数所在的行表示此函数是当前调用堆栈中的活动函数。 3 新建EOS 内核项目 4 EOS 应用程序项目的生成和调试 4.1 新建EOS 应用程序项目 4.2 调试项目 添加断点后单步调试结果显示 4.3 查看软盘镜像文件中的内容 4.4修改EOS 应用程序项目名称 5 退出OS Lab 6 保存EOS 内核项目 三、综合实验总结或结论 思考与练习: 1.在哪些情况下应该使用“逐过程”调试,在哪些情况下应该使用“逐语句”调试。

答:逐语句为每执行一行语句,如果碰到函数调用它就会进入到函数里面。而逐过程碰到函数时不进入函数,把函数调用当成一条语句去执行。 2. 生成EOS SDK 文件夹的目的和作用。明白文件夹的组织结构和各个文件的来源和作用。查看EOS 应用程序包含了SDK 文件夹中的哪些头文件,是如何包含的? (1)EOS SDK为应用程序调用系统API提供服务,可作为用户编程中使用的工具包集合。(2)其主要包括INC头文件LIB文件夹、导入库文件和BIN文件夹、动态链接库、可执行程序、二进制文件。 (3)包含的头文件有:eos.h负责导出API函数,eosdef.h声明负责导出函数类型的定 义,error.h负责导出错误码。 (4)EOS应用程序在项目的头文件中只是包含了eos.h文件,在eos.h文件中又包含了eosdef.h和error.h文件。 实验 2 操作系统的启动 一、综合实验的目的与要求 跟踪调试 EOS 在 PC 机上从加电复位到成功启动全过程,了解操作系统的启动过程。 查看 EOS 启动后的状态和行为,理解操作系统启动后的工作方式。 二、实验正文 1. 准备实验 新建一个 EOS Kernel 项目。打开boot.asm 和loader.asm 两个汇编文件。生成项目。找到loader.bin 文件,记录下此文件的大小 1566 字节。 2 调试 EOS 操作系统的启动过程 2.1 使用 Bochs 做为远程目标机 找到“远程目标机”属性,将此属性值修改为“BochsDebug” 2.2 调试 BIOS 程序 2.2.1在 Console 窗口中输入调试命令 sreg 后按回车,其中 CS 寄存器信息行中的 “ s=0xf000”表示 CS 寄存器的值为 0xf000。 2.2.2 输入调试命令 r 后按回车,显示当前 CPU 中各个通用寄存器的值。其中 “ rip:0x00000000:0000fff0”表示 IP 寄存器的值为 0xfff0。 2.2.3输入调试命令 xp /1024b 0x0000,查看开始的 1024 个字节的物理内存。在 Console 中输出的这1K 物理内存的值都为 0,说明 BIOS 中断向量表还没有被加载到此处。 2.2.4输入调试命令 xp /512b 0x7c00,查看软盘引导扇区应该被加载到的内存位置。输出的内存值都为 0,说明软盘引导扇区还没有被加载到此处。

操作系统实验报告一

重庆大学 学生实验报告 实验课程名称操作系统原理 开课实验室DS1501 学院软件学院年级2013专业班软件工程2 班学生姓名胡其友学号20131802 开课时间2015至2016学年第一学期 总成绩 教师签名洪明坚 软件学院制

《操作系统原理》实验报告 开课实验室:年月日学院软件学院年级、专业、班2013级软件工 程2班 姓名胡其友成绩 课程名称操作系统原理 实验项目 名称 指导教师洪明坚 教师 评语教师签名:洪明坚年月日 1.实验目的: ?进入实验环境 –双击expenv/setvars.bat ?检出(checkout)EPOS的源代码 –svn checkout https://www.doczj.com/doc/e18207079.html,/svn/epos ?编译及运行 –cd epos/app –make run ?清除所有的临时文件 –make clean ?调试 –make debug ?在“Bochs Enhanced Debugger”中,输入“quit”退出调试 –调试指令,请看附录A 2.实验内容: ?编写系统调用“time_t time(time_t *loc)” –功能描述 ?返回从格林尼治时间1970年1月1日午夜起所经过的秒数。如果指针loc 非NULL,则返回值也被填到loc所指向的内存位置 –数据类型time_t其实就是long ?typedef long time_t; 3.实验步骤: ?Kernel space –K1、在machdep.c中,编写系统调用的实现函数“time_t sys_time()”,计算用户秒数。需要用到 ?变量g_startup_time,它记录了EPOS启动时,距离格林尼治时间1970年1午夜的秒数 ?变量g_timer_ticks

湖南大学数据库实验2

数据库系统概论实验报告 题目交互式SQL 学生姓名刘家宇 学生学号20110801126 专业班级计科一班 指导老师王永恒 完成日期 2014/5/9

一、实验目的 1.熟悉数据库的交互式SQL工具。 2.熟悉通过SQL对数据库进行操作。 3.完成实验要求的上机练习。 二、实验环境及工具 在windows XP环境下,利用MySQL 及其交互式查询工具来熟悉SQL。 三、实验内容 1.在MySQL中建立一个数据库,进行实验所要求的各种操作,所有的SQL操作均 在此建立的新库里进行。 其中对数据库的操作包括: 1) 各类查询操作(单表查询,连接查询,嵌套查询,集合查询)。 2) 各类更新操作(插入数据,修改数据,删除数据)。 2.在MySQL中定义一个视图,进行实验所要求的各种操作,所有的SQL操作均在 此建立的新视图里进行。 其中对数据库的操作包括: 1)视图的定义(创建和删除); 2)视图的查询; 3)视图的更新(注意更新的条件)。 四、实验上机练习 1.创建course ,student ,sc 表:

2.Student 表中插入数据: 3.Student 表中修改数据:

4.Student表中的查询操作: 例:查询选修IS专业的学生的姓名: 5.建立选择“IS”专业的学生的视图: 6.更新视图数据:

五、实验中出现的问题及解决方案 问题: 建立course表的时候输入语句如下: Create table course (cno char(9) primary key, Cname char(20), Cpno char(4), Ccredit smallint, Foreign key cpno references course (cno) ); 出现错误; 解决方法: 查阅相关书籍发现时语法错误,修改如下: Create table course (cno char(9) primary key, Cname char(20), Cpno char(4), Ccredit smallint, Foreign key (cpno) references course (cno) );

操作系统原理实验-系统内存使用统计5

上海电力学院 计算机操作系统原理 实验报告 题目:动态链接库的建立与调用 院系:计算机科学与技术学院 专业年级:信息安全2010级 学生姓名:李鑫学号:20103277 同组姓名:无 2012年11 月28 日上海电力学院

实验报告 课程名称计算机操作系统原理实验项目线程的同步 姓名李鑫学号20103277 班级2010251班专业信息安全 同组人姓名无指导教师姓名徐曼实验日期2012/11/28 实验目的和要求: (l)了解Windows内存管理机制,理解页式存储管理技术。 (2)熟悉Windows内存管理基本数据结构。 (3)掌握Windows内存管理基本API的使用。 实验原理与内容 使用Windows系统提供的函数和数据结构显示系统存储空间的使用情况,当内存和虚拟存储空间变化时,观察系统显示变化情况。 实验平台与要求 能正确使用系统函数GlobalMemoryStatus()和数据结构MEMORYSTATUS了解系统内存和虚拟空间使用情况,会使用VirtualAlloc()函数和VirtualFree()函数分配和释放虚拟存储空间。 操作系统:Windows 2000或Windows XP 实验平台:Visual Studio C++ 6.0 实验步骤与记录 1、启动安装好的Visual C++ 6.0。 2、选择File->New,新建Win32 Console Application程序, 由于内存分配、释放及系统存储 空间使用情况均是Microsoft Windows操作系统的系统调用,因此选择An application that support MFC。单击确定按钮,完成本次创建。 3、创建一个支持MFC的工程,单击完成。

操作系统实验题目及实验报告要求

操作系统实验题目及实验 报告要求 Prepared on 21 November 2021

实验报告实验课程:操作系统实验 学生姓名:王桥 学号: 24 专业班级:计科123班 2014年 6月3 日 目录 一、实验一 (1) 二、实验二 (7) 三、实验三 (21) 四、实验四 (28) 五、实验五 (33)

南昌大学实验报告 ---(1)操作系统安装及其接口环境 学生姓名:王桥学号: 24 专业班级:计科123班 实验类型:■验证□综合□设计□创新实验日期:实验成绩: 一、实验目的 熟悉Windows1(执行程序) 2.模拟PV操作同步机构,且用PV操作解决生产者——消费者问题。 模拟PV操作同步机构,且用PV操作解决生产者——消费者问题。 [提示]: (1) PV操作同步机构,由P操作原语和V操作原语组成,它们的定义如下: P操作原语P(s):将信号量s减去1,若结果小于0,则执行原语的进程被置成等待信号量s的状态。 V操作原语V(s):将信号量s加1,若结果不大于0,则释放一个等待信号量s的进程。 这两条原语是如下的两个过程: procedure p (var s: semaphore); begin s:=s-1; if s<0 then W(s) end {p} procedure v (var s: semaphore); begin s: =s+1; if s<=0 then R(s) end {V} 其中W(s)表示将调用过程的进程置为等待信号量s的状态;R(s)表示释放一个等待信号量s的进程。 在系统初始化时应把semaphore定义为某个类型,为简单起见,在模拟实验中可把上述的semaphore直接改成integer。 (2)生产者——消费者问题。 假定有一个生产者和消费者,生产者每次生产一件产品,并把生产的产品存入共享缓冲器以供消费者取走使用。消费者每次从缓冲器内取出一件产品去消费。禁止生产者将产品放入已满的缓冲器内,禁止消费者从空缓冲器内取产品。假定缓冲器内可同时存放10件产品。那么,用PV操作来实现生产者和消费者之间的同步,生产者和消费者两个进程的程序如下: B:array [0..9] of products; s 1,s 2 : semaphore; IN, out; integer; IN:=0;out:=0;

30天自制操作系统日志第5天

操作系统实验日志 一、实验主要内容 1、接收启动信息和结构体 在上一章中,xsize和ysize的值都是直接赋值为320*200,但实际上我们需要从asmhead.nas 先前保存下来的值中去。即: 不然的话,当画面模式改变时系统就不能正确运行。所以试着用指针取得图像模式:void HariMain(void) { char *vram; int xsize, ysize; short *binfo_scrnx, *binfo_scrny; int *binfo_vram; init_palette(); /*设定调色板*/ binfo_scrnx = (short *) 0x0ff4;

binfo_scrny = (short *) 0x0ff6; binfo_vram = (int *) 0x0ff8; xsize = *binfo_scrnx; ysize = *binfo_scrny; vram = (char *) *binfo_vram; for(;;) { io_hlt(); /*執行naskfunc里的_io_hlt*/ } } 诶这样是不是说就可以改变画面模式了?于是天真的我: 保存运行一下,以为画面会显示坐标在左上角的320*200,结果发现画面显示错误,forget about it。诶然后发现结构体里这个在汇编里没有定义,可能作者以后讲? 哦先说结构体 可以看做结构体是将一堆变量集中声明,然后作为新的变量用于其他场合。 结构体的运用: (1)先声明结构体: 如上图 (2)后定义结构体变量:struct BOOTINFO abc; 或者定义结构体指针变量:struct BOOTINFO *binfo; 这里binfo表示指针变量后应该首先给指针赋值,可写成:Binfo = (struct

操作系统实验报告

操作系统实验报告 集团企业公司编码:(LL3698-KKI1269-TM2483-LUI12689-ITT289-

实验二进程调度1.目的和要求 通过这次实验,理解进程调度的过程,进一步掌握进程状态的转变、进程调度的策略,进一步体会多道程序并发执行的特点,并分析具体的调度算法的特点,掌握对系统性能的评价方法。 2.实验内容 阅读教材《计算机操作系统》第二章和第三章,掌握进程管理及调度相关概念和原理。 编写程序模拟实现进程的轮转法调度过程,模拟程序只对PCB进行相应的调度模拟操作,不需要实际程序。假设初始状态为:有n个进程处于就绪状态,有m个进程处于阻塞状态。采用轮转法进程调度算法进行调度(调度过程中,假设处于执行状态的进程不会阻塞),且每过t个时间片系统释放资源,唤醒处于阻塞队列队首的进程。 程序要求如下: 1)输出系统中进程的调度次序; 2)计算CPU利用率。 3.实验环境 Windows操作系统、VC++6.0 C语言 4设计思想: (1)程序中进程可用PCB表示,其类型描述如下:

structPCB_type { intpid;//进程名 intstate;//进程状态 2——表示“执行”状态 1——表示“就绪”状态 0——表示“阻塞”状态 intcpu_time;//运行需要的CPU时间(需运行的时间片个数) } 用PCB来模拟进程; (2)设置两个队列,将处于“就绪”状态的进程PCB挂在队列ready中;将处于“阻塞”状态的进程PCB挂在队列blocked中。队列类型描述如下: structQueueNode{ structPCB_typePCB; StructQueueNode*next; } 并设全程量: structQueueNode*ready_head=NULL,//ready队列队首指针 *ready_tail=NULL,//ready队列队尾指 针

湖南大学操作系统期末考试卷2014

1. 什么是多道程序技术,它带来了什么好处? 答:多道程序技术即是指在内存中存放多道作业,运行结束或出错,自动调度内存中另一道作业运行。多道程序主要优点如下: (1)资源利用率高。由于内存中装入了多道程序,使它们共享资源,保持系统资源处于忙碌状态,从而使各种资源得以充分利用。 (2)系统吞吐量大。由于CPU和其它系统资源保持“忙碌”状态,而且仅当作业完成或运行不下去时才切换,系统开销小,所以吞吐量大。 2. 系统调用是OS与用户程序的接口,库函数也是OS与用户程序的接口,这句话对吗?为什么? 答:不正确,系统调用可以看成是用户在程序一级请求OS为之服务的一种手段。而库函数则是在程序设计语言中,将一些常用的功能模块编写成函数,放在函数库中供公共选用。函数库的使用与系统的资源分配并无关系,仍属用户程序而非OS程序,其功能的实现并不由OS完成,且运行时仍在用户状态而非系统状态。 3. Which of the following components of program state are shared across threads in a multithreaded process? a. Register values b. Heap memory c. Global variables d. Stack memory 答:b、c 此处要简单说明原因 4. 下面哪种调度算法会导致饥饿?并说明原因。a. 先到先服务调 度(FCFS) b. 最短作业优先调度(SJF) c. 轮转调度(RR) d. 优先级调度(Priority) 答:b(长作业的可能饥饿)、d(低优先级的可能饥饿) 5. 有结构文件可分为哪几类,其特点是什么? 答:有结构文件可分为以下三类,分别是: (1)顺序文件。它是指由一系列记录,按某种顺序排列所形成的文件。

操作系统原理实验四

实验4 进程控制 1、实验目的 (1)通过对WindowsXP进行编程,来熟悉和了解系统。 (2)通过分析程序,来了解进程的创建、终止。 2、实验工具 (1)一台WindowsXP操作系统的计算机。 (2)计算机装有Microsoft Visual Studio C++6.0专业版或企业版。 3、预备知识 (3)·CreateProcess()调用:创建一个进程。 (4)·ExitProcess()调用:终止一个进程。 4、实验编程 (1)编程一利用CreateProcess()函数创建一个子进程并且装入画图程序(mspaint.exe)。阅读该程序,完成实验任务。源程序如下: # include < stdio.h > # include < windows.h > int main(VOID) ﹛STARTUPINFO si; PROCESS INFORMA TION pi; ZeroMemory(&si,sizeof(si)); Si.cb=sizeof(si); ZeroMemory(&pi,sizeof(pi)); if(!CreateProcess(NULL, “c: \ WINDOWS\system32\ mspaint.exe”, NULL, NULL, FALSE, 0, NULL, NULL, &si,&pi)) ﹛fprintf(stderr,”Creat Process Failed”); return—1; ﹜ WaitForSingleObject(pi.hProcess,INFINITE); Printf(“child Complete”); CloseHandle(pi.hProcess); CloseHandle(pi hThread); ﹜

操作系统实验复习题

一、选择题 1.下列不是Linux操作系统特点的是() A.开放性 B.良好的用户界面 C.良好的可移植性 D.单用户 2.在Linux系统中最高目录是() A.我的计算机 B.C:\ C./ D. home 3.可以代替任意单个字符的通配符是()。 A.? B.# C.@ D.* 4.可以代替任意字符的通配符是()。 A.? B.# C.@ D.* 4.telnet 命令的功能是() A.远程执行命令 B.传输信息C.远程登录 D.查看网络状态 5.常见的Linux发布版本很多,下列不是Linux发布版本的是() A.Red Hat Linux B.红旗Linux C.Fedora Core D.X-Window 6.怎样更改一个文件的权限设置?() A.attrib B.chmod C.change D.file 7.Linux操作系统中下面哪条命令可以把f1.txt复制为f2.txt? ( ) A. cp f1.txt f2.txt B. cat f1.txt f2.txt C. mv f1.txt f2.txt D. copy f1.txt f2.txt 8.设char dat[10],从键盘输入字符串的输入语句是:( ) A. scanf(“%d”,dat); B. scanf(“%s”,dat); C. scanf(“%d”,&dat); D. scanf(“%c”,dat); 9.让父进程等待子进程结束的函数是( ) A.exit(0); B.sleep(1) C.wait(0); D._exit(0); 10. 对标准输出设备(显示器)加锁的函数是( ) A.lockf(1,1,0);; B.lockf(1,0,0); C.lockf(1,0,1);; D.lockf(1,1,1); 11. 对标准输出设备(显示器)解锁的函数是( ) A.lockf(1,1,0);; B.lockf(1,0,0); C.lockf(1,0,1);; D.lockf(1,1,1); 12. linux系统中,预置当接收到软中断信号16跳转到func函数的命令是() A. signal(16,func) B. signal(func,16) C. kill(pid,17) D. kill(17,func) 13. linux系统中,消息队列通信中发送消息的系统调用格式是() A. msgsnd(msgqid,msfp,size,flag) B. msgqid=msgget(key,flag) C.msgrcv(msgqid,msfp,size,type,flag) D. msgctl(msgqid,IPC_RMID,0); 14. linux系统c语言编程中,让进程暂停6秒钟的命令是() A.wait(60) B.wait(0) C.sleep(6) D.sleep(60) 15. linux系统中,让后台运行的PID为1223的进程暂停的命令是() A. kill –CONT 1223 B. kill –STOP 1223 C. kill –KILL 1223 D. kill –EXIT 1223 二、填空 1)linux系统中删除当前目录下的非空子目录/dir1的命令:__rm –r /dir1____ 2)Windows系统中远程登录Linux系统的命令:__telnet ____ 3)linux系统中,显示当前目录所有文件的许可权、拥有者、文件大小、修改

操作系统实验报告4

《操作系统》实验报告 实验序号: 4 实验项目名称:进程控制

Printf(“child Complete”); CloseHandle(pi.hProcess); CloseHandle(pi hThread); ﹜ 修改后: #include #include int main(VOID) { STARTUPINFO si; PROCESS_INFORMA TION pi; ZeroMemory(&si,sizeof(si)); si.cb=sizeof(si); ZeroMemory(&pi,sizeof(pi)); if(!CreateProcess(NULL, "c:\\WINDOWS\\system32\\mspaint.exe", NULL, NULL, FALSE, 0, NULL, NULL, &si,&pi)) { fprintf(stderr,"Creat Process Failed"); return -1; } WaitForSingleObject(pi.hProcess,INFINITE); printf("child Complete"); CloseHandle(pi.hProcess); CloseHandle(pi.hThread); } 在“命令提示符”窗口运行CL命令产生可执行程序4-1.exe:C:\ >CL 4-1.cpp

实验任务:写出程序的运行结果。 4.正在运行的进程 (2)、编程二下面给出了一个使用进程和操作系统版本信息应用程序(文件名为4-5.cpp)。它利用进程信息查询的API函数GetProcessVersion()与GetVersionEx()的共同作用。确定运行进程的操作系统版本号。阅读该程序并完成实验任务。 #include #include

操作系统实验一中断处理

实习一中断处理 一、实习内容 模拟中断事件的处理。 二、实习目的 现代计算机系统的硬件部分都设有中断机构,它是实现多道程序设计的基础。中断机 构能发现中断事件,且当发现中断事件后迫使正在处理器上执行的进程暂时停止执行,而让操作系统的中断处理程序占有处理器去处理出现的中断事件。对不同的中断事件,由于它们的性质不同,所以操作系统应采用不同的处理。通过实习了解中断及中断处理程序的作用。本实习模拟“时钟中断事件”的处理,对其它中断事件的模拟处理,可根据各中断事件的性质确定处理原则,制定算法,然后依照本实习,自行设计。 三、实习题目 模拟时钟中断的产生及设计一个对时钟中断事件进行处理的模拟程序。 [提示]: (1) 计算机系统工作过程中,若出现中断事件,硬件就把它记录在中断寄存器中。中 断寄存器的每一位可与一个中断事件对应,当出现某中断事件后,对应的中断寄存器的某一位就被置成―1‖。 处理器每执行一条指令后,必须查中断寄存器,当中断寄存器内容不为―0‖时,说明有中断事件发生。硬件把中断寄存器内容以及现行程序的断点存在主存的固定单元,且让操作系统的中断处理程序占用处理器来处理出现的中断事件。操作系统分析保存在主存固定单元中的中断寄存器内容就可知道出现的中断事件的性质,从而作出相应的处理。 本实习中,用从键盘读入信息来模拟中断寄存器的作用,用计数器加1 来模拟处理器 执行了一条指令。每模拟一条指令执行后,从键盘读入信息且分析,当读入信息=0 时,表示无中断事件发生,继续执行指令;当读入信息=1 时,表示发生了时钟中断事件,转时钟中断处理程序。 (2)假定计算机系统有一时钟,它按电源频率(50Hz)产生中断请求信号,即每隔20 毫秒产生一次中断请求信号,称时钟中断信号,时钟中断的间隔时间(20 毫秒)称时钟单

操作系统实验题目

操作系统实验 上机准备: 熟悉Cygwin环境 编译源程序使用gcc 源程序名–o 目标文件名(缺省为 a.out)。 学习Linux(Unix)的常用命令。 学习vi 编辑器的使用。 C语言语法

1 进程管理 1.1 实验目的 加深对于进程并发执行概念的理解。实践并发进程的创建和控制方法。观察和体验进程的动态特性。进一步理解进程生命期期间创建、变换、撤销状态变换的过程。掌握进程控制的方法,了解父子进程间的控制和协作关系。练习Linux系统中进程创建与控制有关的系统调用的编程和调试技术。 1.2 实验说明 1)与进程创建、执行有关的系统调用说明 进程可以通过系统调用fork()创建子进程并和其子进程并发执行.子进程初始的执行映像是父进程的一个复本.子进程可以通过exec()系统调用族装入一个新的执行程序。父进程可以使用wait()或waitpid()系统调用等待子进程的结束并负责收集和清理子进程的退出状态。fork()系统调用语法: #include pid_t fork(void); fork成功创建子进程后将返回子进程的进程号,不成功会返回-1. exec 系统调用有一组6个函数,其中示例实验中引用了execve 系统调用语法: #include 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)这几个命令。(使用exec 函数族)

操作系统实验报告_实验五

实验五:管道通信 实验内容: 1.阅读以下程序: #include #include #include main() { int filedes[2]; char buffer[80]; if(pipe(filedes)<0) //建立管道,filedes[0]为管道里的读取端,filedes[1]则为管道的写入端 //成功则返回零,否则返回-1,错误原因存于errno中 err_quit(“pipe error”); if(fork()>0){ char s[ ] = “hello!\n”; close(filedes[0]); //关闭filedes[0]文件 write(filedes[1],s,sizeof(s)); //s所指的内存写入到filedes[1]文件内 close(filedes[1]); //关闭filedes[0]文件 }else{ close(filedes[1]); read(filedes[0],buffer,80); //把filedes[0]文件传送80个字节到buffer缓冲区内 printf(“%s”,buffer); close(filedes[0]); } } 编译并运行程序,分析程序执行过程和结果,注释程序主要语句。

2.阅读以下程序: #include #include #include main() { char buffer[80]; int fd; unlink(FIFO); //删除FIFO文件 mkfifo(FIFO,0666); //FIFO是管道名,0666是权限 if(fork()>0){ char s[ ] = “hello!\n”;

操作系统原理实验五

实验五线程的同步 1、实验目的 (1)进一步掌握Windows系统环境下线程的创建与撤销。 (2)熟悉Windows系统提供的线程同步API。 (3)使用Windows系统提供的线程同步API解决实际问题。 2、实验准备知识:相关API函数介绍 ①等待对象 等待对象(wait functions)函数包括等待一个对象(WaitForSingleObject ())和等待多个对象(WaitForMultipleObject())两个API函数。 1)等待一个对象 WaitForSingleObject()用于等待一个对象。它等待的对象可以为以下对象 之一。 ·Change ontification:变化通知。 ·Console input: 控制台输入。 ·Event:事件。 ·Job:作业。 ·Mutex:互斥信号量。 ·Process:进程。 ·Semaphore:计数信号量。 ·Thread:线程。 ·Waitable timer:定时器。 原型: DWORD WaitForSingleObject( HANDLE hHandle, // 对象句柄 DWORD dwMilliseconds // 等待时间 ); 参数说明: (1)hHandle:等待对象的对象句柄。该对象句柄必须为SYNCHRONIZE访问。 (2)dwMilliseconds:等待时间,单位为ms。若该值为0,函数在测试对象的状态后立即返回,若为INFINITE,函数一直等待下去,直到接收到 一个信号将其唤醒,如表2-1所示。 返回值: 如果成功返回,其返回值说明是何种事件导致函数返回。

Static HANDLE hHandlel = NULL; DWORD dRes; dRes = WaitForSingleObject(hHandlel,10); //等待对象的句柄为hHandlel,等待时间为10ms 2)等待对个对象 WaitForMultiple()bject()在指定时间内等待多个对象,它等待的对象与 WaitForSingleObject()相同。 原型: DWORD WaitForMultipleObjects( DWORD nCount, //句柄数组中的句柄数 CONST HANDLE * lpHandles, //指向对象句柄数组的指针 BOOL fWaitAll, //等待类型 DWORD dwMilliseconds //等待时间 ); 参数说明: (1)nCount:由指针 * lpHandles指定的句柄数组中的句柄数,最大数是MAXIMUM WAIT OBJECTS。 (2)* lpHandles:指向对象句柄数组的指针。 (3)fWaitAll:等待类型。若为TRUE,当由lpHandles数组指定的所有对象被唤醒时函数返回;若为FALSE,当由lpHandles数组指定的某一个 对象被唤醒时函数返回,且由返回值说明是由于哪个对象引起的函数 返回。 (4)dwMilliseconds:等待时间,单位为ms。若该值为0,函数测试对象的状态后立即返回;若为INFINITE,函数一直等待下去,直到接收到 一个信号将其唤醒。 返回值:、 如果成功返回,其返回值说明是何种事件导致函数返回。 各参数的描述如表2-2所示。

相关主题
文本预览
相关文档 最新文档