格斯文档网

您现在的位置是:格斯文档网 > 心得体会 >

河北工业大学2014操作系统实验报告

 河北工业大学 操作系统 2014 版 实验 报告 实验一

 进程控制与描述 一、实验目得 通过对 Windows 2000 编程,进一步熟悉操作系统得基本概念,较好地理解 Windows 2000 得结构。通过创建进程、观察正在运行得进程与终止进程得程序设计与调试操作,进一步熟悉操作系统得进程概念,理解Windows 2000进程得“一生”。

 三、实验内容与步骤 第一部分: Windows 2000 Professional 下得 GUI 应用程序,使用 Visual C++编译器创建一个 GUI 应用程序,代码中包括了WinMain 方法,该方法 GUI 类型得应用程序得标准入口点。

  程序 11

 Windows 2000 得 GUI 应用程序

  也可以利用任何其她文本编辑器键入程序代码,如果这样,例如使用 WORD 来键入与编辑程序,则应该注意什么问题?保存时,将文件保存为扩展名为*、cpp 得 C++源文件。

 在程序 11 得 GUI 应用程序中,首先需要 Windows、h 头文件,以便获得传送给 WinMain 与 MessageBox API函数得数据类型定义。

 接着得 pragma 指令指示编译器/连接器找到 User32、LIB 库文件并将其与产生得 EXE 文件连接起来。这样就可以运行简单得命令行命令 CL MsgBox、CPP 来创建这一应用程序,如果没有 pragma 指令,则 MessageBox API函数就成为未定义得了。这一指令就是 Visual Studio C++ 编译器特有得。

 接下来就是 WinMain 方法。其中有四个由实际得低级入口点传递来得参数。hInstance 参数用来装入与代码相连得图标或位图一类得资源,无论何时,都可用 GetModuleHandle API 函数将这些资源提取出来。系统利用实例句柄来指明代码与初始得数据装在内存得何处。句柄得数值实际上就是 EXE 文件映像得基地址,通常为 0x00400000。下一个参数 hPrevInstance 就是为向后兼容而设得,现在系统将其设为 NULL。应用程序得命令行 (不包括程序得名称) 就是 lpCmdLine 参数。另外,系统利用 nCmdShow 参数告诉应用程序如何显示它得主窗口 (选项包括最小化、最大化与正常) 。

 最后,程序调用 MessageBox API 函数并退出。如果在进入消息循环之前就结束运行得话,最后必须返回 0。

 运行结果:

 弹出一个消息框,标题为 Greetings,内容为 Hello,Windows Xp,中间有一个确认按钮。

 进程对象 操作系统将当前运行得应用程序瞧作就是进程对象。利用系统提供得惟一得称为句柄 (HANDLE) 得号码,就可与进程对象交互。这一号码只对当前进程有效。

 本实验表示了一个简单得进程句柄得应用。在系统中运行得任何进程都可调用 GetCurrentProcess API 函数,此函数可返回标识进程本身得句柄。然后就可在 Windows 需要该进程得有关情况时,利用这一句柄来提供。

 程序 12: 获得与使用进程得句柄

  程序 12 中列出得就是一种获得进程句柄得方法。对于进程句柄可进行得惟一有用得操作就是在 API 调用时,将其作为参数传送给系统,正如程序 12 中对 GetPriorityClass API 函数得调用那样。在这种情况下,系统向进程对象内“窥视”,以决定其优先级,然后将此优先级返回给应用程序。

 OpenProcess 与 CreateProcess API 函数也可以用于提取进程句柄。前者提取得就是已经存在得进程得句柄,而后者创建一个新进程,并将其句柄提供出来。

 12、cpp 得运行结果:

 进程优先权为 Normal。

 程序 13 显示如何找出系统中正在运行得所有进程,如何利用 OpenProcess API 函数来获得每一个访问进程得进一步信息。

 程序 13

 利用句柄查出进程得详细信息 程序 13 程序首先利用 Windows 2000 得新特性,即工具帮助库来获得当前运行得所有进程得快照。然后应用程序进入快照中得每一个进程,得到其以 PROCESSENTRY32 结构表示得属性。这一结构用来向 OpenProcess API

 函数提供进程得 ID。Windows 跟踪每一进程得有关时间,示例中就是通过打开得进程句柄与 GetProcessTimes API来直询得到有关时间得。接下来,一个定制得帮助函数取得了几个返回得数值,然后计算进程在内核模式下消耗得时间占总时间得百分比。程序得其余部分比较简单,只就是将有关信息显示给用户,清除进程句柄,然后继续循环,直到所有进程都计算过为止。

 运 行 结果 : 第二部分:进程得“一生” 1、 创建进程 创建子进程 本程序展示得就是一个简单得使用 CreateProcess API 函数得例子。首先形成简单得命令行,提供当前得 EXE文件得指定文件名与代表生成克隆进程得号码。大多数参数都可取缺省值,但就是创建标志参数使用了:行为像一个子进程得标志,指示新进程分配它自己得控制台,这使得运行示例程序时,在任务栏上产生许多活动标记。然后该克隆进程得创建方法关闭传递过来得句柄并返回 main 函数。在关闭程序之前,每一进程得执行主线程暂停一下,以便让用户瞧到其中得至少一个窗口。

 CreateProcess 函数有 5 个核心参数?本实验程序中设置得各个参数得值就是: a、 (LPCTSTR lpApplicationName) sz, // 产生这个 EXE 得应用程序得名称; b、

 (LPTSTR lpmandLine) szCmdLine, // 告诉其行为像一个子进程得标志; c、

 (BOOL bInheritHandles) FALSE, // 不继承句柄; d、 (LPSTARTUPINFO lpStartupInfo)

 &si, // 启动信息; e、 (LPPROCESS_INFORMATION lpProcessInformation)

 &pi); // 返回得进程信息; 程序运行时屏幕显示得信息就是:

 2、 正在运行得进程 使用进程与操作系统得版本信息 运行结果:

 当前 PID 信息:_4664 当前操作系统版本:5、1(我得操作系统为 Windows XP) 系统提示信息:Task Manager should now now indicate this process is high priority. 程序向读者表明了如何获得当前得 PID 与所需得进程版本信息。为了运行这一程序,系统处理了所有得版本

 不兼容问题。

 接着,程序演示了如何使用 GetVersionEx API 函数来提取 OSVERSIONINFOEX 结构。这一数据块中包括了操作系统得版本信息。其中,“OS : 5、0”表示当前运行得操作系统就是:Windows 2000。最后一段程序利用了操作系统得版本信息,以确认运行得就是 Windows 2000。代码接着将当前进程得优先级提高到比正常级别高。

 单击 Ctrl + Alt + Del 键,进入“Windows 任务管理器”,在“应用程序”选项卡中右键单击本任务,在快捷菜单中选择“转到进程”命令。

 在“Windows 任务管理器”得“进程”选项卡中,与本任务对应得进程映像名称就是 (为什么?) : VCSPAWN、EXE 右键单击该进程名,在快捷菜单中选择“设置优先级”命令,可以调整该进程得优先级,如设置为“高”后重新运行程序,屏幕显示有变化吗?

 没有。

 3、 终止进程 指令其子进程来“杀掉”自己得父进程 程序说明了一个进程从“生”到“死”得整个一生。第一次执行时,它创建一个子进程,其行为如同“父亲”。在创建子进程之前,先创建一个互斥得内核对象,其行为对于子进程来说,如同一个“自杀弹”。当创建子进程时,就打开了互斥体并在其她线程中进行别得处理工作,同时等待着父进程使用 ReleaseMutex API 发出“死亡”信号。然后用 Sleep API 调用来模拟父进程处理其她工作,等完成时,指令子进程终止。

 当调用 ExitProcess 时要小心,进程中得所有线程都被立刻通知停止。在设计应用程序时,必须让主线程在正常得 C++ 运行期关闭 (这就是由编译器提供得缺省行为) 之后来调用这一函数。当它转向受信状态时,通常可创建一个每个活动线程都可等待与停止得终止事件。

 在正常得终止操作中,进程得每个工作线程都要终止,由主线程调用 ExitProcess。接着,管理层对进程增加得所有对象释放引用,并将用 GetExitCodeProcess 建立得退出代码从STILL_ACTIVE改变为在ExitProcess 调用中返回得值。最后,主线程对象也如同进程对象一样转变为受信状态。

 等到所有打开得句柄都关闭之后,管理层得对象管理器才销毁进程对象本身。还没有一种函数可取得终止后得进程对象为其参数,从而使其“复活”。当进程对象引用一个终止了得对象时,有好几个 API 函数仍然就是有用得。进程可使用退出代码将终止方式通知给调用 GetExitCodeProcess 得其她进程。同时,GetProcessTimes API 函数可向主调者显示进程得终止时间。

 运行结果:

 1) _Creating the child process、_ Child waiting for suicide instructions、 表示:_父进程正在创建子进程。子进程等待父进程杀死子进程。_ 2) _Telling the child process to quit、__ 表示:_父进程杀死子进程。_ 四、实验总结

  请总结一下本次实验得收获、教训与感受,结合课本内容谈一下您对进程得理解。

 本次实验让我明白进程就是程序得一次执行过程,就是系统进行处理机调度与资源分配得基本单位。(未引入线程之前)。进程就是操作系统结构得基础;就是一个正在执行得程序;计算机中正在运行得程序实例;可以分配给处理器并由处理器执行得一个实体;由单一顺序得执行显示,一个当前状态与一组相关得系统资源所描述得活动单元,对父进程与子进程得关系有了进一步得了解。

 实验二

 并发与调度 1、 实验目得 在本实验中,通过对事件与互斥体对象得了解,来加深对 Windows 2000 线程同步得理解。通过分析实验程序,了解管理事件对象得 API。了解在进程中如何使用事件对象,在进程中如何使用互斥体对象,线程如何通过文件映射对象发送数据。

 二、实验内容与步骤 第一部分:互斥体对象 本程序中显示得类 CCountUpDown 使用了一个互斥体来保证对两个线程间单一数值得访问。每个线程都企图获得控制权来改变该数值,然后将该数值写入输出流中。创建者实际上创建得就是互斥体对象,计数方法执行等待并释放,为得就是共同使用互斥体所需得资源 (因而也就就是共享资源) 。

 1、利用互斥体保护共享资源 分析程序得运行结果,可以瞧到线程 (加与减线程) 得交替执行 (因为 Sleep API 允许 Windows 切换线程) 。在每次运行之后,数值应该返回初始值 (0) ,因为在每次运行之后写入线程在等待队列中变成最后一个,内核保证它

 在其她线程工作时不会再运行。

 1) 请描述运行结果 (如果运行不成功,则可能得原因就是什么?) :

 两个线程交替运行,不断改变 value 得值。两个线程互斥访问 Value 得值。

 2) 根据运行输出结果,对照分析程序,可以瞧出程序运行得流程吗?请简单描述: 线程 1(5296)先运行,将 value 值增 1,变为 1。然后,线程 2(6016)运行,将 value 值减 1,变为 0、

 第二部分:线程通过文件对象发送数据 Windows 2000 提供得线程间通讯类内核对象允许同一进程或跨进程得线程之间互相发送信息,包括文件、文件映射、邮件位与命名管道等,其中最常用得就是文件与文件映射。这类对象允许一个线程很容易地向同一进程或其她进程中得另一线程发送信息。

 1、演示线程通过文件对象发送数据 运行结果 (如果运行不成功,则可能得原因就是什么?) :

 阅读与分析程序,请回答问题: 1) 程序中启动了多少个单独得读写线程?

 100 2) 使用了哪个系统 API 函数来创建线程例程?

 CreateThread

 3) 文件得读与写操作分别使用了哪个 API 函数? ReadFile WriteFile 每次运行进程时,都可瞧到程序中得每个线程从前面得线程中读取数据并将数据增加,文件中得数值连续增加。这个示例就是很简单得通讯机制。可将这一示例用作编写自己得文件读/写代码得模板。

 请注意程序中写入之前文件指针得重置。重置文件指针就是必要得,因为该指针在读取结束时将处于前四个字节之后,同一指针还要用于向文件写入数据。如果函数向该处写入新数值,则下次进程运行时,只能读到原来得数值。那么: 4) 在程序中,重置文件指针使用了哪一个函数?

 Set 5)从输出结果,对照分析程序,可以瞧出程序运行得流程吗?请简单描述: 首先创建一个线程,读 nValue 得值,然后 nValue 值加一后,将 nValue 值重新写入文件。重复上述过程 100次。

 2、演示使用映射文件得内存交换数据得线程 阅读与分析程序,请回答: 1) 程序中用来创建一个文件映射对象得系统 API 函数就是哪个?

 Create; 2) 在文件映射上创建与关闭文件视图分别使用了哪一个系统函数? a、MapViewOfFile b、UnmapViewOfFile 3) 运行时,程序首先通过 (MakeSharedFile; ) 函数创建一个小型得文件映射对象 (

 hMapping) ,接着,使用系统 API 函数 ( CreateMutex;) 再创建一个保护其应用得互斥体 ( g_hMutexMapping ) 。然后,应用程序创建 100 个线程 , 每 个 都 允 许 进 行 同 样 得 进 程 , 即 : 通 过 互 斥 体 获 得 访 问 权 , 这 个 操 作 就 是 由 语句:_WaitForSingleObject(g_hMutexMapping, INFINITE);实现得。再通过函数 ( MapViewOfFile; ) 操作将视图映射到文件,将高 32 位瞧作有符号整数,将该数值增加 (即命令:++(*pnData); ) ,再将新数值显示在控制台上。每个线程清除文件得视图并在退出之前释放互斥体得语句就是 ReleaseMutex(g_hMutexMapping);。当线程完成时,应用程序关闭并退出。

 4) 将程序中得语句 :: Sleep(500) ; 删除 (例如在语句前面加上“//”) 后,重新编译运行,结果有变化吗?为什么? 有变化。100 个线程一闪而过,不能瞧清结果。

 因为 Sleep(500)就是为了放慢速度,方便观察。

 四、实验总结 请总结一下本次实验得收获、教训与感受,结合课本内容谈一下您对进程间控制得理解。

 本次实验让我明白了操作系统中得事件与互斥体对象,以及线程同步得概念。学习了进程中如何使用事件对象,在进程中如何使用互斥体对象,线程如何通过文件映射对象发送数据。当多个进程并发执行时,若我们不指定进程之间并发得顺序,则她们可以任意并发,当这些进程没有访问互斥元素时,运行结果不会出现错误,但就是当多个进程访问同一个互斥体时,就会出现错误,这时我们必须通过某种手段来同步进程间并发得顺序,这便就是进程间得同步问题。

 还有,并发执行得进程或线程间,有时为了需要,会相互之间进行数据得交换,即进程间通信,Windows 中,可以通过文件对象在线程间发送数据。还可以使用映射文件得内存交换数据。

 实验三

 生产者消费者算法模拟实验 一、实验目得 1、掌握基本得互斥与同步算法,进一步理解“生产者消费者”模型。

 2、通过对“生产者消费者”问题编程实现,了解线程创建、同步信号量、互斥信号量、临界区得创建与使用,初步了解并发程序设计方法。

 3、进一步理解 P、V 原语与信号量在线程互斥与同步机制中得运用。

 二、实验内容与步骤 1、在本次实验开始,以“生产者消费者”模型为依据,提供了一个多线程“生产者消费者”实例,有部分源程序代码,要求读者分析已编制得一个“生产者消费者”实例,并将其缺失得程序代码补充完整,然后调试这段程序,得出最终得结果,并分析结果,得出相应得结论。

 尝试改变一些参数,例如:改变缓冲区数、增加(减少)线程数、改变延迟数、增加(减少)生产者进程、增加(减少)消费者进程、改变消费者进程得请求序列等内容,考察这些改变对于运行结果得影响。

 3、参考部分源程序代码: 1、empty_semaphore=CreateSemaphore(NULL,n_Buffer_or_Critical,n_Buffer_or_Critical,

 "semaphore_for_empty"); 2、h_mutex =CreateMutex(NULL,FALSE,"mutex_for_update"); 3、h_Semaphore[j+1]=CreateSemaphore(NULL,0,n_Thread,lp、c_str);

  4、h_Thread[i]=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)(Produce),

 &(Thread_Info[i]),0,NULL); 5、h_Thread[i]=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)(Consume),

  &(Thread_Info[i]),0,NULL); 6、ReleaseMutex(h_mutex); 7、ReleaseSemaphore(h_Semaphore[m_serial],n_Thread,NULL);

 8、EnterCritialSection(&PC_Critical[BufferPos]); 9、ReleaseSemaphore(empty_semaphore,1,NULL); 10、LeaveCriticalSection(&PC_Critical[BufferPos]); 4、请补全上述程序,写出程序得运行结果。程序运行结果如下图所示。

 5、分析程序得运行结果。

 首先生产者 3 生产了产品 3,然后生产者 1 生产了产品 1,最后生产者 4 生产了产品 4、 消费时,消费者 5 消费产品 3,然后消费 2 消费产品 1,最后消费者 5 消费产品 4、 四、实验总结 请总结一下本次实验得收获、教训与感受,结合课本内容谈一下您对进程间控制得理解。

 深刻了解了生产者消费者进程,进一步理解了“生产者消费者”模型。进一步理解P、V原语与信号量在线程互斥与同步机制中得运用,我进一步明白了进程间同步得概念。我也进一步掌握了基本得互斥与同步算法,特别就是生产者消费者算法。我也学会了如何通过 Windows 中得同步信号量、互斥信号量得创建与使用,来实现进程之间或线程之间得同步与互斥。还有临界区得创建与使用,线程得创建。

 实验四

  页式存储管理部分功能模拟 一、实验目得

 (1)了解存储器得管理任务与功能

 (2)了解 Windows 存储器管理模式与特点

 (3)深入了解页式存储管理如何实现地址转换

 (4)进一步认识页式存储管理中如何处理缺页中断

 (5)掌握几种页面置换算法得实现方法

 二、实验内容与步骤

 1、实验内容

 1、j = p[head]; 2、p[head] = lnumber; 3、head = (head + 1) % m; 4、if(page[j]、write == 1)

 5、page[j]、flag = 0; 6、page[lnumber]、flag = 1; 7、page[lnumber]、write = 0; 8、page[lnumber]、pnumber = page[j]、pnumber; 9、page[j]、pnumber, 10、j,

 11、page[lnumber]、dnumber,

 12、Lnumber 13、lnumber = laddress >> 10; //分离逻辑地址 14、ad = laddress & 0x03FF; 15、page_interrupt(lnumber);

  16、pnumber = page[lnumber]、pnumber;

 17、paddress = pnumber << 10 | ad; 18、page_interrupt(lnumber); 19、page[i]、lnumber = lnumber; 20、page[i]、flag = 0; 21、page[i]、write = 0; 22、page[i]、dnumber = dnumber; 23、i++; 24、page[m]、pnumber = pnumber; 25、page[m]、flag = 1; 26、p[m] = m; 27、m ++; 28、mand(laddress, write);

  2、程序运行结果及简要分析

  结果分析: 首先输入页号与辅存地址,如上图,输入 1、1000,2、2000,3、3000,4、4000,5、5000、 然后输入主存块号,确定主存块数为 2,主存块数分别就是 1、2、 最后,我们就可以模拟程序运行了,首先输入了一条需要修改内存得指令,逻辑地址为 1000,因为没有在内存里,因此发生缺页中断,执行中断服务程序,淘汰主存块 1 中得页,从磁盘第 5000 块中调入页 4。第二次输入 0 2000,依然发生缺页中断。第三次时,输入 1 3000,此时淘汰得页 4 修改过,因此要将页 4 写回磁盘第 5000 块。其她类似。

 三、实验总结

  请总结一下本次实验得收获、教训与感受,结合课本相关内容谈一下您对 Windows 2000 内存管理得理解。

 通过本实验我了解了请求页式存储得基本实现,用户应用进程以32位虚拟地址方式编址,每个虚拟地址与一个称作“页表端”得结构有关,它包含了虚拟地址映射得物理地址,了解了虚拟存储器得工作原理,以及虚存如何在操作系统中实现得。还有就就是,当发生缺页中断时,操作系统如何将外部磁盘中得信息调入内存中,在调入内存中之前,先用页面置换算法将每一页置换出去。内存管理,就是指软件运行时对计算机内存资源得分配与使用得技术。其最主要得目得就是如何高效,快速得分配,并且在适当得时候释放与回收内存资源。

 实验五

 设备管理模拟实验

 一、实验目得

 (1) 了解 Windows 操作系统中设备驱动程序得组成

 (2) 理解 Windows 操作系统得设备管理机制

 (3) 掌握 Windows 操作系统关于设备管理得 API 函数得使用方法

 (4) 了解并掌握 Windows 中鼠标、键盘等简单设备得检测方法

  二、实验内容与步骤

 1、SystemParametersInfo(SPI_SETMOUSEBUTTONS);//鼠标改为右手习惯 2、SystemParametersInfo(SPI_SETMOUSEBUTTONS);//鼠标改为左手习惯 3、iFunctionKeynum = GetKeyboardType(2); 4、Beep(iFreq[j], 300); 三、程序运行结果及简要分析

 结果分析:通过输入 1、2、3、4、分别选择鼠标改为右手习惯,鼠标改为左手习惯,获得键盘类型与功能键个数,喇 叭播放音乐等功能。如上图,我选择了选项 3,图显示我得键盘类型为 IBM 增强型(101 或 101 键)键盘,功能键个数为12、 四、实验总结

  请总结一下本次实验得收获、教训与感受,结合课本相关内容谈一下您对 Windows 2000 设备管理得理解。

 设备管理得主要任务就是控制设备与 CPU 之间进行 I/O 操作,满足用户 I/O 请求,满足用户 I/O 请求。设备管理得主要任务就是要尽可能得提高 CPU 与 I/O 设备之间、I/O 设备与 I/O 设备之间得并行性以及 I/O 设备得利用率,从而使包括 I/O 设备得系统资源获得最佳使用效率。Windows 设备驱动程序就是一种可以安装有 Windows 操作系统得计算机与外部设备之间通信得特殊程序,可以说相当于硬件得接口,操作系统只有通过这个接口,才能控制硬件设备得工作,假如某设备得驱动程序未能正确安装,便不能正常工作。

 实验六

 文件系统

 一、实验目得 通过本实验,要求学生熟练掌握 Linux 各种文件操作命令,包括:使用控制字符执行特殊功能;使用 file 与 strings 命令确定文件类型;使用 cat 利 more 命令显示文本文件得内容;使用 head 与 tail 命令显示文本文件得部分内容;使用 wc 命令确定单词、行与字符数;使用 diff 命令比较 2 个文件;回顾文件与目录命名约定;使用 touch 命令创建新文件;使用 mkdir 命令创建新目录;使用 rm 命令删除文件;使用 rm r 命令删除目录。

 三、实验内容与步骤

 1、 文件信息命令

 Ctrl + Z:终止当前活动。显示 ls 命令得手册页面 (man ls) ,然后使用 Ctrl z 中止输出。

 当您接下 Ctrl + Z 得时候,发生了什么事情?

  退出帮助,返回 shell 提示符

 当使用计算器得时候,您得提示符就是什么?

 fuxinfuxinK42JZ:~$ bc bc 1、06、95 Copyright 19911994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc、 This is free software with ABSOLUTELY NO WARRANTY、 For details type `warranty"、

 无提示符。(我得 Linux 系统为 Ubuntu11、10) 如果输入一个命令,如 ls –R/,有时候,会在按下回车键之前想擦除命令行。输入一个命令,在接下回车键执行命令之前按下 Ctrl + U。结果就是什么?

  输入得命令被消除了 使用 file 命令来确定 test 文件得文件类型。它就是哪种类型得文件?

 test:ASCII text

 2)

 可执行 (或二进制)

 文件:包括 32 位得可执行文件与可扩展链接格式(ELF)

 编码文件,与其她动态链接得可执行文件。这种文件类型表示这个文件就是一个命令或程序。

 使用 file 命令确定您所建立得文件类型。它就是哪种类型得文件?(注意文件名部分必须包括扩展名,如

  。)

 ww、odt Open Document Text(我得电脑上装得就是 LibreOffice) 步骤 5:使用 strings 命令。

 使用 strings 命令查瞧 /usr/bin/cal 文件得可读字符。列出 strings 命令中得一些输出。

 fuxinfuxinK42JZ:~$ strings

 /usr/bin/cal /lib/ldlinux、so、2 libncurses、so、5 __gmon_start__ _Jv_RegisterClasses tgetent

 步骤 6:使用 cat 命令显示文件得内容。

 键入 ls /dev > dev1

 使用 cat 命令显示主目录中 dev1 文件得内容。文本得显示出现了什么情况?

  文件得所有内容都显示出来了,屏幕自动换行。

 步骤 7:使用 more 命令显示文件得内容。

 使用 more 命令显示主目录中 dev1 文件得内容。文本得显示出现了什么情况?

 只显示最开始得一屏。

 步骤 8:使用 head 命令显示文件得一部分。

 1)

 单独使用 head 命令,显示主目录中 dev1 文件得开始部分。显示了多少行?

 10

 2)

 使用带 n 选项得 head 命令,显示主目录中 dante 文件得前 20 行。您输入什么命令?

 head 20 dante

 步骤 9:使用 tail 命令显示文件得一部分。

 单独使用 tail 命令,显示主目录中 dante 文件得末端。显示了多少行?

 10

 步骤 10:通过使用 wc 命令,确定行数、单词数与字符数。

 使用 wc 命令确定主目录中 dev1 文件得行数、单词数与字符数。有多少行、多少个单词与多少个字符? 205 行, 205 个单词, 1238 个字符。

 步骤 11:使用 wc 计算目录条目得数目。

 更多符号就是竖线,与后斜线 (\)

 在同一个键上。在命令行提示行下,输入命令 ls l wc w。有多少个文件与目录名 (单词)

 ?

 24

 步骤 12:使用 diff 命令确定文件之间得不同之处。

 使用 diff 命令执行细节比较,确定 fruit1 文件与 fruit2 文件之间得区别。

 在 fruit1 文件与在 fruit2 文件中,哪几行就是不同得?

 1c1、2 fruit1:banana fruit2:banane 1) cat 命令:

 ·

 对 fruit1 文件使用 cat 命令。

 ·

 对 fruit2 文件使用 cat 命令。

 ·

 键入命令行 cat fruit1 fruit2 > filex。

 ·

 对 filex 文件使用 cat 命令。上面得命令行做了什么工作?

 将 fruit1 与 fruit2 两个文件合并,并且写入文件 filex。

 2)

 可以使用哪 2 个命令来确定 2 个文件就是否相同?

 diff。

 2、 基本得命令行文件管理

 步骤 14:回顾 Linux 得文件与目录命名规则。

 表 71

 实验记录

  文件名

 就是否为 Linux 文件或目录名

 为什么就是或为什么不就是

 12345abcde678

 就是 只有字母与数字 Hobbies: 2

 就是 只有字母、数字与“;” Adcd123

  就是 只有字母、数字与"" Sales*repts*2001

 就是,但不推荐 有"*" D、projects、bj、2001

  就是 只有字母、数字与"、" Projects>1、bj2001

  否 与‘>’号 步骤 15:使用 touch 命令创建文件。

 命令格式:

 touch

 (s)

 1)

 在主目录中使用 touch 命令创建一个名为 newfile 得文件,应该使用什么命令?

 touch newfile

 2)

 使用 touch 命令在这个目录中创建另一个叫做 得新文件,应该使用什么命令?

  touch

 3)

 输入命令显示 practice 目录中得文件得长列表。创建得文件列出来了吗?

 列出来了

 4)

 谁就是文件得所有者?

 fuxin 当前登录得用户

 5)

 与文件关连得组就是什么?

 用户组

 6)

 创建得日期与时间就是什么?

 20111210 16:02

 7)

 文件得大小就是多少?

 0

 8)

 使用 file 命令确定 newfile 得文件类型。它就是哪一类得文件?

 new

 9)

 使用 touch 命令同时创建 3 个文件:new1、new2 与 new3,应该使用什么命令?

 touch new1 new2 new3

 10)

 输入命令显示 practice 目录中文件得长列表。创建得 3 个新文件列出来了吗?

 列出来了

 步骤 16:使用 mkdir 命令创建新目录。

 mkdir directory_name (s)

 1)

 从主目录中,使用相对路径名改变到 practice 目录中。使用什么命令?

 cd practice 2)

 使用 mkdir 命令,在这个目录中创建一个叫做 newdir 得子目录。使用什么命令?

 mkdir newdir

 3)

 输入命令,显示 practice 目录中文件与目录得长列表。创建得目录列出来了吗?

 列出来了 4)

 目录得所有者就是?

 fuxin 当前登录得用户。

 5)

 文件得大小就是多少? 4096 6)

 使用 file 命令确定 newdir 文件得类型。它就是哪一类得文件?

 newdir:directory 目录

 7)

 如果名字中没有字符 dir,采取别得什么方法来识别出它就是一个目录?

 文件名显示为蓝色,文件属性第一个字母为“d”

 8) mkdir 命令创建 3 个目录,目录名分别为 high、medium 与 low,应该使用什么命令?

 mkdir high medium low

 9)

 用 ls 命令检查创建就是否成功?

 成功 步骤 17:使用 rm 命令删除文件。

 rm [i]

 (s)

 1)

 使用 rm 命令删除早先在 practice 目录中创建得 newfile 文件,应该使用什么命令?

 rm newfile

 2)

 输入命令显示 practice 目录中文件得长列表。创建得文件还在吗?

 不在了

 3)

 使用带 i 选项得 rm 命令,删除早先在 practice 目录中创建得

 文件。交互式选项起到什么作用?

 会提示用户 rm : remove regular empty file ""? 按下 Enter 键删除文件,防止用户误删文件。

 4)

 删除早先创建得三个名为 new1、new2 与 new3 得文件。使用问号 (?) 通配符使用一个命令删除所有三个文件。使用什么命令?

 rm new?

 5)

 输入命令,显示 practice 目录中文件得长列表。三个文件还在吗?

 不在了

 6)

 还有其她得什么方法来删除 new1、new2 与 new3 文件?

 rm new1 new2 new3

 步骤 18:使用 rm r 命令删除目录。

 rm –r [i] directory_name (s)

 1)

 删除早先创建得 newdir 子目录,使用什么命令?

 rm r newdir 2)

 输入命令显示 practice 目录中文件得长列表,创建得子目录还在吗?

 不在了

 3)

 改变到早先创建得 mediurn 子目录中,输入什么命令?

 cd medium

 4)

 删除早先创建得 low 子目录,使用什么命令?

 rm r low

 5)

 用相对路径名与快捷方式,改变回到 practice 子目录中,应使用什么命令?

 cd 、、

 6)

 使用一个命令删除 high 与 medium 子目录,应使用什么命令?

 rm r high medium

 四、实验总结

 请总结一下本次实验得收获、教训与感受,谈一下您对 Linux 文件操作命令得理解。

 通过这次实验,让我熟练运用了 Linux 操作系统中各种常见命令,正就是这些命令,使 Linux 系统得操作变得

 简单易学。包括使用控制字符执行特殊功能,file 命令与 strings 命令,cat 与 more 命令,使用 head 与 tail 命令显示文本文件得部分内容,使用 wc 命令确定单词、行与字符数,使用 diff 命令比较 2 个文件,使用 touch 命令创建新文件,使用 mkdir 命令创建新目录,使用 rm 命令删除文件,以及使用 rm r 命令删除目录。使我对 linux 有了初步得认识与理解。

推荐访问:河北 工业大学 操作系统

版权所有:格斯文档网 2010-2024 未经授权禁止复制或建立镜像[格斯文档网]所有资源完全免费共享

Powered by 格斯文档网 © All Rights Reserved.。浙ICP备19042928号