文档库 最新最全的文档下载
当前位置:文档库 › 河北工业大学操作系统实验报告

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

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

操作系统实验指导书

实验一进程控制与描述

一、实验目的

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

三、实验内容和步骤

第一部分:

Windows 2000 Professional下的GUI应用程序,使用Visual C++编译器创建一个GUI应用程序,代码中包括了WinMain()方法,该方法GUI类型的应用程序的标准入口点。

程序1-1 Windows 2000的GUI应用程序

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

在程序1-1的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需要该进程的有关情况时,利用这一句柄来提供。

程序1-2:获得和使用进程的句柄

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

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

1-2.cpp的运行结果:

进程优先权为Normal。

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

程序1-3 利用句柄查出进程的详细信息

程序1-3程序首先利用Windows 2000的新特性,即工具帮助库来获得当前运行的所有进程的快照。然后应用程序进入快照中的每一个进程,得到其以PROCESSENTRY32结构表示的属性。这一结构用来向OpenProcess() API函数提供进程的ID。Windows跟踪每一进程的有关时间,示例中是通过打开的进程句柄和GetProcessTimes() API来直询得到有关时间的。接下来,一个定制的帮助函数取得了几个返回的数值,然后计算进程在内核模式下消耗的时间占总时间的百分比。程序的其余部分比较简单,只是将有关信息显示给用户,清除进程句柄,然后继续循环,直到所有进程都计算过为止。

运行结果:

第二部分:进程的“一生”

1、创建进程

创建子进程

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

CreateProcess() 函数有5 个核心参数?本实验程序中设置的各个参数的值是:

a. (LPCTSTR lpApplicationName) szFilename, // 产生这个EXE的应用程序的名称;

b. (LPTSTR lpCommandLine) szCmdLine, // 告诉其行为像一个子进程的标志;

c. (BOOL bInheritHandles) FALSE, // 不继承句柄;

d. (LPSTARTUPINFO lpStartupInfo) &si, // 启动信息;

e. (LPPROCESS_INFORMA TION 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) 在程序中,重置文件指针使用了哪一个函数?

SetFilePointer()

5)从输出结果,对照分析程序,可以看出程序运行的流程吗?请简单描述:

首先创建一个线程,读nValue的值,然后nValue值加一后,将nValue值重新写入文件。重复上述过程100次。

2、演示使用映射文件的内存交换数据的线程

阅读和分析程序,请回答:

1) 程序中用来创建一个文件映射对象的系统API函数是哪个?

CreateFileMapping();

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、command(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_SETMOUSEBUTTONSWAP,0,NULL,NULL);//鼠标改为右手习惯

2、SystemParametersInfo(SPI_SETMOUSEBUTTONSWAP,1,NULL,NULL);//鼠标改为左手习惯

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提示符

当使用计算器的时候,你的提示符是什么?

fuxin@fuxin-K42JZ:~$ bc

bc 1.06.95

Copyright 1991-1994, 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 命令确定你所建立的文件类型。它是哪种类型的文件?(注意文件名部分必须包括扩展名,如file ww.sxw 。)

ww.odt Open Document Text(我的电脑上装的是LibreOffice)

步骤 5:使用 strings 命令。

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

fuxin@fuxin-K42JZ:~$ strings /usr/bin/cal

/lib/ld-linux.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 的文件和目录命名规则。

表7-1 实验记录

文件名是否为Linux 文件或目录名为什么是或为什么不是12345abcde678 是只有字母和数字

Hobbies: 2 是只有字母、数字和“;”

Adcd-123 是只有字母、数字和'-' Sales*repts*2001 是,但不推荐有'*'

D.projects.bj.2001 是只有字母、数字和'.'

Projects>1.bj-2001 否与‘>’号

步骤 15:使用 touch 命令创建文件。

命令格式:

touch filename (s)

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

touch newfile

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

touch filenew

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

列出来了

4) 谁是文件的所有者?

fuxin 当前登录的用户

5) 和文件关连的组是什么?

用户组

6) 创建的日期和时间是什么?

2011-12-10 16:02

7) 文件的大小是多少?

8) 使用 file命令确定 newfile的文件类型。它是哪一类的文件?

newfile:empty

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] filename (s)

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

rm newfile

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

不在了

3) 使用带 -i 选项的 rm 命令,删除早先在 practice 目录中创建的 filenew 文件。交互式选项起到什么作用?

会提示用户 rm : remove regular empty file 'filenew'? 按下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有了初步的认识和理解。

网页设计实验报告

实验报告 课程名称网络技术基础实验项目TCP/IP协议配置实验仪器计算机 系别 专业 班级/学号 学生姓名 实验日期 成绩 指导教师

实验一 TCP/IP协议配置 一、实验目的(标题黑体小四) 1.熟练掌握模板的用法。 2.掌握CSS的用法。 3.掌握网站发布的方法。 二、实验内容 1. 创建和使用模板。 2. css的创建和使用。 3. 发布网站。 三、实验课时 4课时 四、实验步骤 创建网站 1、创建一个站点,并创建 images 文件夹存放图片。将示例图片拷贝至images 目录下 2、创建 CSS 文件,名称为 style.css,将其保存至 style文件夹。 3、创建模板文件 tpl.dwt,并保存。结果如下: (1) 给 tpl.dwt 附加样式表 style.css。 在 tpl.dwt 的空白处点击鼠标右键,选择“附加样式表”: 选择 style.css 文件: 完成后,在 tpl.dwt 的 head标签里有如下的代码: (2) 设置模板的背景颜色。打开 CSS 面板,为 style.css 新建一条 css 规则。过程如 下:

将背景颜色设为#ff1e70: 在 style.css 生成如下的代码: body { background-color: #ff1e70? } 3) 制作布局。插入一 2 行 2 列的表格。表格的宽度=316+634=950,其他的设置:让表格居中对齐。 (4) 消除表格两边的空隙。展开 CSS 样式表,双击 body: 双击 body后,打开“body的 CSS 规则定义”对话框,按照下面的方式设置:Style.css 的代码变为: body { background-color: #ff1e70? margin: 0px? }

操作系统实验报告--实验一--进程管理

实验一进程管理 一、目的 进程调度是处理机管理的核心内容。本实验要求编写和调试一个简单的进程调度程序。通过本实验加深理解有关进程控制块、进程队列的概念,并体会和了解进程调度算法的具体实施办法。 二、实验内容及要求 1、设计进程控制块PCB的结构(PCB结构通常包括以下信息:进程名(进程ID)、进程优先数、轮转时间片、进程所占用的CPU时间、进程的状态、当前队列指针等。可根据实验的不同,PCB结构的内容可以作适当的增删)。为了便于处理,程序中的某进程运行时间以时间片为单位计算。各进程的轮转时间数以及进程需运行的时间片数的初始值均由用户给定。 2、系统资源(r1…r w),共有w类,每类数目为r1…r w。随机产生n进程P i(id,s(j,k),t),0<=i<=n,0<=j<=m,0<=k<=dt为总运行时间,在运行过程中,会随机申请新的资源。 3、每个进程可有三个状态(即就绪状态W、运行状态R、等待或阻塞状态B),并假设初始状态为就绪状态。建立进程就绪队列。 4、编制进程调度算法:时间片轮转调度算法 本程序用该算法对n个进程进行调度,进程每执行一次,CPU时间片数加1,进程还需要的时间片数减1。在调度算法中,采用固定时间片(即:每执行一次进程,该进程的执行时间片数为已执行了1个单位),这时,CPU时间片数加1,进程还需要的时间片数减1,并排列到就绪队列的尾上。 三、实验环境 操作系统环境:Windows系统。 编程语言:C#。 四、实验思路和设计 1、程序流程图

2、主要程序代码 //PCB结构体 struct pcb { public int id; //进程ID public int ra; //所需资源A的数量 public int rb; //所需资源B的数量 public int rc; //所需资源C的数量 public int ntime; //所需的时间片个数 public int rtime; //已经运行的时间片个数 public char state; //进程状态,W(等待)、R(运行)、B(阻塞) //public int next; } ArrayList hready = new ArrayList(); ArrayList hblock = new ArrayList(); Random random = new Random(); //ArrayList p = new ArrayList(); int m, n, r, a,a1, b,b1, c,c1, h = 0, i = 1, time1Inteval;//m为要模拟的进程个数,n为初始化进程个数 //r为可随机产生的进程数(r=m-n) //a,b,c分别为A,B,C三类资源的总量 //i为进城计数,i=1…n //h为运行的时间片次数,time1Inteval为时间片大小(毫秒) //对进程进行初始化,建立就绪数组、阻塞数组。 public void input()//对进程进行初始化,建立就绪队列、阻塞队列 { m = int.Parse(textBox4.Text); n = int.Parse(textBox5.Text); a = int.Parse(textBox6.Text); b = int.Parse(textBox7.Text); c = int.Parse(textBox8.Text); a1 = a; b1 = b; c1 = c; r = m - n; time1Inteval = int.Parse(textBox9.Text); timer1.Interval = time1Inteval; for (i = 1; i <= n; i++) { pcb jincheng = new pcb(); jincheng.id = i; jincheng.ra = (random.Next(a) + 1); jincheng.rb = (random.Next(b) + 1); jincheng.rc = (random.Next(c) + 1); jincheng.ntime = (random.Next(1, 5)); jincheng.rtime = 0;

四种实时操作系统特性进行分析和比较

四种实时操作系统特性进行分析和比较 https://www.wendangku.net/doc/fd3398675.html,2006年11月18日21:55ChinaByte 本文对四种实时操作系统(RTOS)特性进行分析和比较。它们是:Lynx实时系统公司的LynxOS、QNX软件系统有限公司的QNX以及两种具有代表性的实时Linux——新墨西哥工学院的RT-Linux和堪萨斯大学的KURT-Linux。 近年来,实时操作系统在多媒体通信、在线事务处理、生产过程控制、交通控制等各个领域得到广泛的应用,因而越来越引起人们的重视。 基本特征概述 *QNX是一个分布式、嵌入式、可规模扩展的实时操作系统。它遵循POSIX.1 (程序接口)和POSIX.2(Shell和工具)、部分遵循POSIX.1b(实时扩展)。它最早开发于1980年,到现在已相当成熟。 *LynxOS是一个分布式、嵌入式、可规模扩展的实时 操作系统,它遵循POSIX.1a、POSIX.1b和POSIX.1c标准。它最早开发于1988年。 *RT-Linux是一个嵌入式硬实时操作系统,它部分支持POSIX.1b标准。 *KURT-Linux不是为嵌入式应用设计的,不同于硬(hard)实时/软(soft)实时应用,他们提出“严格(firm)”实时应用的概念,如一些多媒体应用和ATM网络应用,KURT是为这样一些应用设计的“严格的”实时系统。 体系结构异同 实时系统的实现多为微内核体系结构,这使得核心小巧而可靠,易于ROM固化,并可模块化扩展。微内核结构系统中,OS服务模块在独立的地址空间运行,所以,不同模块的内存错误便被隔离开来。但它也有弱点,进程间通信和上下文切换的开销大大增加。相对于大型集成化内核系统来说,它必须靠更多地进行系统调用来完成相同的任务。 *QNX是一个微内核实时操作系统,其核心仅提供4种服务:进程调度、进程间通信、底层网络通信和中断处理,其进程在独立的地址空间运行。所有其它OS服务,都实现为协作的用户进程,因此QNX核心非常小巧(QNX4.x大约为12Kb)而且运行速度极快。 *LynxOS目前还不是一个微内核结构的操作系统,但它计划使用所谓的“Galaxy”技术将其从大型集成化内核改造成微内核,这一技术将在LynxOS 3.0中引入。新的28Kb微内核提供以下服务:核心启动和停止、底层内存管理、出错处理、中断处理、多任务、底层同步和互斥支持。

计算机操作系统综合设计实验报告实验一

计算机操作系统综合设计 实验一 实验名称:进程创建模拟实现 实验类型:验证型 实验环境: win7 vc++6.0 指导老师: 专业班级: 姓名: 学号: 联系电话: 实验地点:东六E507 实验日期:2017 年 10 月 10 日 实验报告日期:2017 年 10 月 10 日 实验成绩:

一、实验目的 1)理解进程创建相关理论; 2)掌握进程创建方法; 3)掌握进程相关数据结构。 二、实验内容 windows 7 Visual C++ 6.0 三、实验步骤 1、实验内容 1)输入给定代码; 2)进行功能测试并得出正确结果。 2、实验步骤 1)输入代码 A、打开 Visual C++ 6.0 ; B、新建 c++ 文件,创建basic.h 头文件,并且创建 main.cpp 2)进行功能测试并得出正确结果 A 、编译、运行main.cpp B、输入测试数据 创建10个进程;创建进程树中4层以上的数型结构 结构如图所示:。

createpc 创建进程命令。 参数: 1 pid(进程id)、 2 ppid(父进程id)、3 prio(优先级)。 示例:createpc(2,1,2) 。创建一个进程,其进程号为2,父进程号为1,优先级为2 3)输入创建进程代码及运行截图 4)显示创建的进程

3、画出createpc函数程序流程图 分析createpc函数的代码,画出如下流程图:

四、实验总结 1、实验思考 (1)进程创建的核心内容是什么? 答: 1)申请空白PCB 2)为新进程分配资源 3)初始化进程控制块 4)将新进程插入到就绪队列 (2)该设计和实际的操作系统进程创建相比,缺少了哪些步骤? 答:只是模拟的创建,并没有分配资源 2、个人总结 通过这次课程设计,加深了对操作系统的认识,了解了操作系统中进程创建的过程,对进程创建有了深入的了解,并能够用高 级语言进行模拟演示。一分耕耘,一分收获,这次的课程设计让 我受益匪浅。虽然自己所做的很少也不够完善,但毕竟也是努 力的结果。另外,使我体会最深的是:任何一门知识的掌握, 仅靠学习理论知识是远远不够的,要与实际动手操作相结合才能 达到功效。

操作系统实验报告

操作系统实验报告 ' 学号: 姓名: 指导老师: 完成日期: ~

目录 实验一 (1) 实验二 (2) 实验三 (7) 实验四 (10) 实验五 (15) 实验六 (18) 实验七 (22) \

实验一 UNIX/LINUX入门 一、实验目的 了解 UNIX/LINUX 运行环境,熟悉UNIX/LINUX 的常用基本命令,熟悉和掌握UNIX/LINUX 下c 语言程序的编写、编译、调试和运行方法。 二、实验内容 熟悉 UNIX/LINUX 的常用基本命令如ls、who、pwd、ps 等。 练习 UNIX/LINUX的文本行编辑器vi 的使用方法 熟悉 UNIX/LINUX 下c 语言编译器cc/gcc 的使用方法。用vi 编写一个简单的显示“Hello,World!”c 语言程序,用gcc 编译并观察编译后的结果,然后运行它。 三、实验要求 按照要求编写程序,放在相应的目录中,编译成功后执行,并按照要求分析执行结果,并写出实验报告。 四、实验程序 #include <> #include <> int main() { printf ("Hello World!\n"); return 0; } 五、实验感想 通过第一次室验,我了解 UNIX/LINUX 运行环境,熟悉了UNIX/LINUX 的常用基本命令,熟悉和掌握了UNIX/LINUX 下c 语言程序的编写、编译、调试和运行方法。

实验二进程管理 一、实验目的 加深对进程概念的理解,明确进程与程序的区别;进一步认识并发执行的实质。 二、实验内容 (1)进程创建 编写一段程序,使用系统调用fork()创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示“a“;子进程分别显示字符”b“和字符“c”。试观察记录屏幕上的显示结果,并分析原因。 (2)进程控制 修改已编写的程序,将每一个进程输出一个字符改为每一个进程输出一句话,再观察程序执行时屏幕上出现的现象,并分析原因。 (3)进程的管道通信 编写程序实现进程的管道通信。使用系统调用pipe()建立一个管道,二个子进程P1 和P2 分别向管道各写一句话: Child 1 is sending a message! Child 2 is sending a message! 父进程从管道中读出二个来自子进程的信息并显示(要求先接收P1,再接收P2)。 三、实验要求 按照要求编写程序,放在相应的目录中,编译成功后执行,并按照要求分析执行结果,并写出实验报告。 四、实验设计 1、功能设计 (1)进程创建 使用fork()创建两个子进程,父进程等待两个子进程执行完再运行。 (2)进程控制 使用fork()创建两个子进程,父进程等待两个子进程分别输出一句话再运行。 (3)进程的管道通信 先创建子进程1,向管道写入一句话,子进程1结束后创建子进程2,向管道写入一句话,最后父进程从管道中读出。 2、数据结构 子进程和管道。 3、程序框图

Web网页设计实验报告

WEB系统开发 综合实验报告 题目红尘客栈网上订房页面 专业计算机科学与技术(信息技术及应用) 班级计信2班 学生蒋波涛 重庆交通大学 2013年

目录 一、设计目的 (3) 二、设计题目 (3) 三、结构设计 (3) 四、技术分析 (4) 五、设计过程 (7) 六、实验心得 (10) 七、实验总结 (11)

一、设计目的 在Internet飞速发展的今天,互联网成为人们快速获取、发布和传递信息的重要渠道,它在人们政治、经济、生活等各个方面发挥着重要的作用。因此网站建设在Internet 应用上的地位显而易见,它已成为政府、企事业单位信息化建设中的重要组成部分,从而倍受人们的重视。我们当代大学生更是离不开网络给我们带来的好处与便利.但是,我们成天浏览的网站网页到底是如何制作的呢?我想这一点很多同学都没有去深究过.所以,这学期我选择了”web网页设计”这门课, 本课程的设计目的是通过实践使同学们经历网页制作的全过程. 通过设计达到掌握网页设计、制作的技巧。 了解和熟悉网页设计的基础知识和实现技巧。根据题目的要求,给出网页设计方案,可以按要求,利用合适图文素材设计制作符合要求的网页设计作品。 熟练掌握Photoshop cs3、Dreamweaver cs等软件的的操作和应用。增强动手实践能力,进一步加强自身综合素质。学会和团队配合,逐渐培养做一个完整项目的能力。 二、设计题目 《红尘客栈》 三、结构设计 选定主题,确定题目之后,在做整个网站之前对网站进行需求分析。首先,做好需求调研。调研方式主要是上网查阅资料,在图书馆里翻阅相关书籍。 然后,调研结束之后对整个网站进行功能描述,并对网站进行总体规划,接着逐步细化。 我们选做的主题是个人主页,并且选定题目为“红尘客栈”,其目的是做一个简单的网站,介绍酒店概况,提供一定的资讯信息。 四、技术分析 (一)建立布局 在这次的网页设计中用到大量的布局,所以怎么样建立布局是关键。Dreamweaver cs3是大多数人设计网页的称手兵器,也是众多入门者的捷径。特别是其在布局方面的出色表现,更受青睐。大家都知道,没有表格的帮助,很难组织出一个协调合理的页面。 1.点击“ALT+F6”键,进入布局模式,插入布局表格。建立一个大概的布局。 2.使用背景图片:选中该项,按浏览可以插入一幅准备好的图片作为表格的背景,因为图片是以平铺的形式作为表格背景,所以表格大小和图片尺寸都要控制好。 (二)网页中的图像

嵌入式操作系统实验报告

中南大学信息科学与工程学院实验报告 姓名:安磊 班级:计科0901 学号: 0909090310

指导老师:宋虹

目录 课程设计内容 ----------------------------------- 3 uC/OS操作系统简介 ------------------------------------ 3 uC/OS操作系统的组成 ------------------------------ 3 uC/OS操作系统功能作用 ---------------------------- 4 uC/OS文件系统的建立 ---------------------------- 6 文件系统设计的原则 ------------------------------6 文件系统的层次结构和功能模块 ---------------------6 文件系统的详细设计 -------------------------------- 8 文件系统核心代码 --------------------------------- 9 课程设计感想 ------------------------------------- 11 附录-------------------------------------------------- 12

课程设计内容 在uC/OS操作系统中增加一个简单的文件系统。 要求如下: (1)熟悉并分析uc/os操作系统 (2)设计并实现一个简单的文件系统 (3)可以是存放在内存的虚拟文件系统,也可以是存放在磁盘的实际文件系统 (4)编写测试代码,测试对文件的相关操作:建立,读写等 课程设计目的 操作系统课程主要讲述的内容是多道操作系统的原理与技术,与其它计算机原理、编译原理、汇编语言、计算机网络、程序设计等专业课程关系十分密切。 本课程设计的目的综合应用学生所学知识,建立系统和完整的计算机系统概念,理解和巩固操作系统基本理论、原理和方法,掌握操作系统开发的基本技能。 I.uC/OS操作系统简介 μC/OS-II是一种可移植的,可植入ROM的,可裁剪的,抢占式的,实时多任务操作系统内核。它被广泛应用于微处理器、微控制器和数字信号处理器。 μC/OS 和μC/OS-II 是专门为计算机的嵌入式应用设计的,绝大部分代码是用C语言编写的。CPU 硬件相关部分是用汇编语言编写的、总量约200行的汇编语言部分被压缩到最低限度,为的是便于移植到任何一种其它的CPU 上。用户只要有标准的ANSI 的C交叉编译器,有汇编器、连接器等软件工具,就可以将μC/OS-II嵌入到开发的产品中。μC/OS-II 具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点,最小内核可编译至2KB 。μC/OS-II 已经移植到了几乎所有知名的CPU 上。 严格地说uC/OS-II只是一个实时操作系统内核,它仅仅包含了任务调度,任务管理,时间管理,内存管理和任务间的通信和同步等基本功能。没有提供输入输出管理,文件系统,网络等额外的服务。但由于uC/OS-II良好的可扩展性和源码开放,这些非必须的功能完全 可以由用户自己根据需要分别实现。 uC/OS-II目标是实现一个基于优先级调度的抢占式的实时内核,并在这个内核之上提供最基本的系统服务,如信号量,邮箱,消息队列,内存管理,中断管理等。 uC/OS操作系统的组成 μC/OS-II可以大致分成核心、任务处理、时间处理、任务同步与通信,CPU的移植等5个部分。如下图:

物联网操作系统的必备特性

物联网操作系统的必备特性 物联网所带来的机遇与挑战都是空前的。要抓住机遇,迎接挑战,是否拥有最佳的操作系统做为基础是极为关键的问题。 那么,物联网环境对操作系统提出了哪些不同于以往的需求?产品开发商采用怎样的操作系统,拥有哪些特征或技术,最有可能在物联网的发展中把握先机?基本上,今后的RTOS 不仅必须具备传统的实时性、确定性和可靠性,还必须提供高度互联、全面安全、远程管理等物联网环境所要求的全新能力。最近,风河公司推出了VxWorks7,对这套在嵌入式领域主导多年的RTOs(实时操作系统)进行了再次创新,其目标正是“物联网市场已达 实时操作系统 (The RTOS for thelnternet of Things) ”。实时性依然是物联网操作系统的必备特性 实时操作系统( RTOS,RealTimeOperation System)是指能够在确定的时间对内部或者外部的事件做出正确的响应。在实时操作系统中,进程执行结果的正确与否不仅与逻辑运算或数学计算结果的正确性相关,而且与得出这个正确结果的时间有关。也就

是说,在实时系统 中,如果一个进程的运算结果虽然 是正确的,但是由 于它完成的时间超出了给定的最后期限,那么这个结果就是毫无意义的。 例如汽车中使用的气囊。当报告车辆碰撞的传感器通知CPu 后,操作系统应快速地发出打开气囊的任务,并且不允许任何其他非实时处理进行干扰,晚一秒钟展开气囊比没有气囊的情况更糟糕,这就是一个典型的实时系统。 通常认为,实时操作系统要求速度非常快。但实际上,实时操作系统强调的不仅仅是速度,而是时间关系的次序和确定性。例如,一条货轮在码头等待各地的卡车运来货物之后装船运往海外,规定好了离港启航的时间。那么,如果有一辆卡车在货轮离港时间之后才把货物运到了码头,逻辑上它虽然完成了陆地货运任务,但已经没有任何意义了。货车行驶速度和气囊打开速度当然不可相提并论,但就它与货轮配合的时间顺序而言具有同样都是实时系统,都必须要满足的是时序确定性,而跟速度有多快不一定相关! 再例如,如果使用足够高性能的CPU,Windows 可以提供非常快的速度。但是,当某些后台任务正在运行时,有时候响应会变得非常漫长,以至于某一个简单的读取文件的任务也会很长时间无响应。并不是说Windows 不够

操作系统实验报告一

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

《操作系统原理》实验报告 开课实验室:年月日学院软件学院年级、专业、班2013级软件工 程2班 姓名胡其友成绩 课程名称操作系统原理 实验项目 名称 指导教师洪明坚 教师 评语教师签名:洪明坚年月日 1.实验目的: ?进入实验环境 –双击expenv/setvars.bat ?检出(checkout)EPOS的源代码 –svn checkout https://www.wendangku.net/doc/fd3398675.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班 学号: xxxxxxxxxxx 姓名: x x 指导教师: x x 2011年12月24日

目录 第一章网站主题设计说明 (1) 1.1 主题内容 (1) 1.2 设计思路 (1) 第二章网站内容设计 (2) 1.1 链接1标题 (2) 1.2 链接2标题 (2) 1.3 flash制作说明 (2) 第三章网站技术难点 (3) 第四章心得体会..................................... ..... ......................... (4)

第一章网站主题设计说明 1.1 主题内容 (1) 网站主题为“四季の花”,包括春夏秋冬四个季节的比较典型的花朵及有关花的诗句,色彩缤纷,十分艳丽夺目。 1.2 设计思路 (2) 大多网站都设计的关于音乐,影视,购物等非常热门的东西,本站设计的主题是花,能让人们在闲下来的时候看看花,品品诗歌,所以做有关花的网页是个不错的选择。同时,让人们分清楚春夏秋冬都各有什么典型的花。

第二章网站内容设计 1.1链接1标题:春の花 春天是生命的季节,在这个季节里,万物复苏。所以就找了虞美人,桃花,牡丹,以及海棠花来作为春天的代表。同时配有与这些花有关的诗句。 1.2 链接2标题:夏の花 夏天充满了激情与阳光,我找了兰花,荷花,百合花等来代表这个季节,色彩艳丽,十分醒目夺人。 1.3 链接3标题:秋の花 大丽花,菊花,月季和牡丹花都竞相出现在本网页,色彩缤纷,赏心悦目。 1.4 链接4标题:冬の花 蝴蝶兰,水仙,迎春花,梅花是冬季的代表,他们刻画了一副傲立冬天的坚强的姿态。

实时操作系统报告

实时操作系统课程实验报告 专业:通信1001 学号:3100601025 姓名:陈治州 完成时间:2013年6月11日

实验简易电饭煲的模拟 一.实验目的: 掌握在基于嵌入式实时操作系统μC/OS-II的应用中,基于多任务的模式的编程方法。锻炼综合应用多任务机制,任务间的通信机制,内存管理等的能力。 二.实验要求: 1.按“S”开机,系统进入待机状态,时间区域显示当前北京时间,默认模式“煮饭”; 2.按“C”选择模式,即在“煮饭”、“煮粥”和“煮面”模式中循环选择; 3.按“B”开始执行模式命令,“开始”状态选中,时间区域开始倒计时,倒计时完成后进入“保温”状态,同时该状态显示选中,时间区域显示保温时间; 4.按“Q”取消当前工作状态,系统进入待机状态,时间区域显示北京时间,模式为当前模式; 5.按“X”退出系统,时间区域不显示。 6.煮饭时长为30,煮粥时长为50,煮面时长为40. 三.实验设计: 1.设计思路: 以老师所给的五个程序为基础,看懂每个实验之后,对borlandc的操作有了大概的认识,重点以第五个实验Task_EX为框架,利用其中界面显示与按键扫描以及做出相应的响应,对应实现此次实验所需要的功能。 本次实验分为界面显示、按键查询与响应、切换功能、时钟显示与倒计时模块,综合在一起实验所需功能。 2.模块划分图: (1)界面显示: Main() Taskstart() Taskstartdispinit() 在TaskStartDispInit()函数中,使用PC_DispStr()函数画出界面。

(2)按键查询与响应: Main() Taskstart() 在TaskStart()函数中,用if (PC_GetKey(&key) == TRUE)判断是否有按键输入。然后根据key 的值,判断输入的按键是哪一个;在响应中用switch语句来执行对应按键的响应。 (3)切换功能: l计数“C”按 键的次数 M=l%3 Switch(m) M=0,1,2对应于煮饭,煮粥,煮面,然后使用PC_DispStr()函数在选择的选项前画上“@”指示,同时,在其余两项钱画上“”以“擦出”之前画下的“@”,注意l自增。 四.主要代码: #include "stdio.h" #include "includes.h" #include "time.h" #include "dos.h" #include "sys/types.h" #include "stdlib.h" #define TASK_STK_SIZE 512 #define N_TASKS 2 OS_STK TaskStk[N_TASKS][TASK_STK_SIZE]; OS_STK TaskStartStk[TASK_STK_SIZE]; INT8U TaskData[N_TASKS];

批处理 分时 实时操作系统的特点

批处理、分时、实时操作系统的特点 一、批处理系统的特点 1、多道:在内存中同时存放多个作业,一个时刻只有一个作业运行,这些作业共享CPU和外部设备等资源。 2、成批:用户和他的作业之间没有交互性。用户自己不能干预自己的作业的运行,发现作业错误不能及时改正。 3、批处理系统的目的是提高系统吞吐量和资源的利用率。 二、分时系统的特点 1、同时性,计算机系统能被多个用户同时使用; 2、独立性:用户和用户之间都是独立操作系统的,在同时操作时并不会发生冲突,破坏,混淆等现象; 3、及时性:系统能以最快的速度将结果显示给用户; 4、交互作用性:用户能和电脑进行人机对话。 三、实时操作系统的特点 1、高精度计时系统 计时精度是影响实时性的一个重要因素。在实时应用系统中,经常需要精确确定实时地操作某个设备或执行某个任务,或精确的计算一个时间函数。这些不仅依赖于一些硬件提供的时钟精度,也依赖于实时操作系统实现的高精度计时功能。

2、多级中断机制 一个实时应用系统通常需要处理多种外部信息或事件,但处理的紧迫程度有轻重缓急之分。有的必须立即作出反应,有的则可以延后处理。因此,需要建立多级中断嵌套处理机制,以确保对紧迫程度较高的实时事件进行及时响应和处理。 3、实时调度机制 实时操作系统不仅要及时响应实时事件中断,同时也要及时调度运行实时任务。但是, [3] 处理机调度并不能随心所欲的进行,因为涉及到两个进程之间的切换,只能在确保“安全切换”的时间点上进行,实时调度机制包括两个方面,一是在调度策略和算法上保证优先调度实时任务;二是建立更多“安全切换”时间点,保证及时调度实时任务。

网页制作实验报告

网页制作实验报告 页制作实验报告 实验一:站点设置 一、实验目的及要求 本实例是经过“站点定义为”对话框中的“高级”选项卡创建一具新站点。 二、仪器用具 1、生均一台多媒体电脑,组建内部局域,同时接入国际互联。 2、安装windows xp操作系统;建立iis服务器环境,支持asp。 3、安装页三剑客(dreamweaver mx;flash mx;fireworks mx)等页设计软件; 三、实验原理 经过“站点定义为”对话框中的“高级”选项卡创建一具新站点。 四、实验办法与步骤 1)执行“站点\治理站点”命令,在弹出的“治理站点”对话框中单击“新建”按钮,在弹出的快捷菜单中挑选“站点”命令。 2)在弹出的“站点定义为”对话框中单击“高级”选项卡。 3)在“站点名称”文本框中输入站点名称,在“默认文件夹”文本框中挑选所创建的站点文件夹。在“默认图象文件夹”文本框中挑选存放图象的文件夹,完成后单击“确定”按钮,返回“治理站点”对话框。 4)在“治理站点”对话框中单击“完成”按钮,站点创建完毕。 五、实验结果 六、讨论与结论 实验开始之前要先建立一具根文件夹,在实验的过程中把站点存在自己建的文件夹里,如此才干使实验条理化,别至于在实验后寻别到自己的站点。在实验过程中会浮现一些选项,计算机普通会有默认的挑选,最后别要去更改,假如要更改要先充分了解清晰该选项的含义,以及它会造成的效果,否则会使实验的结果失真。实验前先熟悉好操作软件是做好该实验的关键。 实验二:页面图像设置 一、实验目的及要求: 本实例的目的是设置页面的背景图像,并创建鼠标经过图像。 二、仪器用具 1、生均一台多媒体电脑,组建内部局域,同时接入国际互联。 2、安装windows xp操作系统;建立iis服务器环境,支持asp。 3、安装页三剑客(dreamweaver mx;flash mx;fireworks mx)等页设计软件; 4、安装acdsee、photoshop等图形处理与制作软件; 5、其他一些动画与图形处理或制作软件。 三、实验原理 设置页面的背景图像,并创建鼠标经过图像。 四、实验办法与步骤 1) 在“页面属性”对话框中设置页面的背景图像。 2) 在页面文档中单击“”插入鼠标经过图像。 五、实验结果

分时实时批处理操作的特点

一、批处理系统的特点 1、多道:在内存中同时存放多个作业,一个时刻只有一个作业运行,这些作业共享CPU和外部设备等资源。 2、成批:用户和他的作业之间没有交互性。用户自己不能干预自己的作业的运行,发现作业错误不能及时改正。 3、批处理系统的目的是提高系统吞吐量和资源的利用率。 二、分时系统的特点 1、同时性,计算机系统能被多个用户同时使用; 2、独立性:用户和用户之间都是独立操作系统的,在同时操作时并不会发生冲突,破坏,混淆等现象; 3、及时性:系统能以最快的速度将结果显示给用户; 4、交互作用性:用户能和电脑进行人机对话。 三、实时操作系统的特点 1、高精度计时系统

计时精度是影响实时性的一个重要因素。在实时应用系统中,经常需要精确确定实时地操作某个设备或执行某个任务,或精确的计算一个时间函数。这些不仅依赖于一些硬件提供的时钟精度,也依赖于实时操作系统实现的高精度计时功能。 2、多级中断机制 一个实时应用系统通常需要处理多种外部信息或事件,但处理的紧迫程度有轻重缓急之分。有的必须立即作出反应,有的则可以延后处理。因此,需要建立多级中断嵌套处理机制,以确保对紧迫程度较高的实时事件进行及时响应和处理。 3、实时调度机制 实时操作系统不仅要及时响应实时事件中断,同时也要及时调度运行实时任务。但是, [3] 处理机调度并不能随心所欲的进行,因为涉及到两个进程之间的切换,只能在确保“安全切换”的时间点上进行,实时调度机制包括两个方面,一是在调度策略和算法上保证优先调度实时任务;二是建立更多“安全切换”时间点,保证及时调度实时任务。

扩展资料: 实时操作系统是保证在一定时间限制内完成特定功能的操作系统。实时操作系统有硬实时和软实时之分,硬实时要求在规定的时间内必须完成操作,这是在操作系统设计时保证的;软实时则只要按照任务的优先级,尽可能快地完成操作即可。我们通常使用的操作系统在经过一定改变之后就可以变成实时操作系统。 例如,可以为确保生产线上的机器人能获取某个物体而设计一个操作系统。在“硬”实时操作系统中,如果不能在允许时间内完成使物体可达的计算,操作系统将因错误结束。在“软”实时操作系统中,生产线仍然能继续工作,但产品的输出会因产品不能在允许时间内到达而减慢,这使机器人有短暂的不生产现象。

操作系统实验报告16487

西安邮电大学 (计算机学院) 课实验报告 实验名称:进程管理 专业名称:计算机科学与技术 班级: 学生: 学号(8位): 指导教师: 实验日期:*****年**月**日

一. 实验目的及实验环境 目的:(1)加深对进程概念的理解,明确进程和程序的区别。 (2)进一步认识并发执行的实质。 (3)分析进程竞争资源现象,学习解决进程互斥的方法。 (4)了解Linux系统中进程通信的基本原理。 环境:Linux操作系统环境: 二. 实验容 (1)阅读Linux的sched.h源文件,加深对进程管理概念的理解。 (2)阅读Linux的fork.c源文件,分析进程的创建过程。 三.方案设计 (1)进程的创建 编写一段源程序,使系统调用fork()创建两个子进程,当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符“a”;子进程分别显示字符“b”和字符“c”。试观察纪录屏幕上的显示结果,并分析原因。(2)进程的控制 修改已编写的程序,将每个进程输出一个字符改为每个进程输出一句话,在观察程序执行时屏幕出现的现象,并分析原因。 如果在程序中使用调用lockf()来给每一个子进程加锁,可以实现进程之间的互斥,观察并分析出现的现象。 (3)①编写一段程序,使其现实进程的软中断通信。 要求:使用系统调用fork()创建两个子进程,再用系统调用signal()让父进程捕捉键盘上来的中断信号(即按DEL键);当捕捉到中断信号后,父进程用系统调用Kill()向两个子进程发出信号,子进程捕捉到信号后分别输出下列信息后终止: Child Processll is Killed by Parent! Child Processl2 is Killed by Parent! 父进程等待两个子进程终止后,输出如下的信息后终止 Parent Process is Killed! 程序流程图如下:

操作系统实验报告

《操作系统原理》实验报告 实验项目名称:模拟使用银行家算法判断系统的状态 一、实验目的 银行家算法是操作系统中避免死锁的算法,本实验通过对银行家算法的模拟,加强对操作系统中死锁的认识,以及如何寻找到一个安全序列解除死锁。 二、实验环境 1、硬件:笔记本。 2、软件:Windows 7 , Eclipse。 三、实验内容 1.把输入资源初始化,形成资源分配表; 2.设计银行家算法,输入一个进程的资源请求,按银行家算法步骤进行检查; 3.设计安全性算法,检查某时刻系统是否安全; 4.设计显示函数,显示资源分配表,安全分配序列。 四、数据处理与实验结果 1.资源分配表由进程数组,Max,Allocation,Need,Available 5个数组组成; 实验采用数据为下表: 2.系统总体结构,即菜单选项,如下图

实验的流程图。如下图 3.实验过程及结果如下图所示

1.首先输入进程数和资源类型及各进程的最大需求量 2.输入各进程的占有量及目前系统的可用资源数量 3.初始化后,系统资源的需求和分配表 4.判断线程是否安全

5.对线程进行死锁判断 五、实验过程分析 在实验过程中,遇到了不少问题,比如算法无法回滚操作,程序一旦执行,必须直接运行到单个任务结束为止,即使产生了错误,也必须等到该项任务结束才可以去选择别的操作。但总之,实验还是完满的完成了。 六、实验总结 通过实验使我对以前所学过的基础知识加以巩固,也对操作系统中抽象理论知识加以理解,例如使用Java语言来实现银行家算法,在这个过程中更进一步了解了银行家算法,通过清晰字符界面能进行操作。不过不足之处就是界面略显简洁,对于一个没有操作过计算机的人来说,用起来可能还是有些难懂。所以,以后会对界面以及功能进行完善,做到人人都可以看懂的算法。

网页制作实验报告

北京理工大学珠海学院课程设计说明书 _2013_—_2014_学年第_1_学期 题目: 《Web应用开发课程设计》 学院:计算机学院 专业班级: 11级软件工程3班 学号: 110202031031 学生姓名:蒋征 指导教师:魏志军 成绩: 时间: 2014/1/5 2014年 1 月 5 日

摘要 本次作品是一个IT技术交流论坛,实现论坛的基本功能,注册、登录、发帖、浏览和回帖。 论坛分三个分板块,网页、C#和JA V A,纵向层次也是三层,主页、板块页和帖子页。网站使用JavaScript实现动态页面。 关键词:计算机技术交流社区JavaScript 网页 I

目录 摘要 ............................................. I 目录 ............................................. II 1 网站结构和布局 (1) 1.1 网站结构 (1) 1.1.1 总体结构 (1) 1.1.2 横向链接结构 (2) 1.2 页面布局 (3) 1.2.1 主页 (3) 1.2.2 分版页面 (6) 1.2.3 帖子页面 (6) 2 技术应用 (8) 2.1 逻辑设计 (8) 2.1.1 HTML和CSS设计 (8) 2.1.2 JavaScript设计 (10) 参考文献 (13) 心得体会 (14) I

教师评语 (15) 成绩评定表 (16) 课程设计答辩记录表 (17) II

1 网站结构 1.1主体结构 1.1.1总结构 网站是以技术交流社区为主题的论坛型网站。 这个网站是按树形结构设计如图1-1-1,页面种类共分三层,分别是主页,分主题页还有就是内容页。 主页连向三个分主题分区页面,分别是MTHL板块,C#板块还有就是JAVA 板块。 主题分区页面下面是内容帖子。 图1-1-1网页关系 1

嵌入式实时操作系统实验报告

嵌入式实时操作系统实验报告 任务间通信机制的建立 系别计算机与电子系 专业班级***** 学生姓名****** 指导教师 ****** 提交日期 2012 年 4 月 1 日

一、实验目的 掌握在基于嵌入式实时操作系统μC/OS-II的应用中,任务使用信号量的一般原理。掌握在基于优先级的可抢占嵌入式实时操作系统的应用中,出现优先级反转现象的原理及解决优先级反转的策略——优先级继承的原理。 二、实验内容 1.建立并熟悉Borland C 编译及调试环境。 2.使用课本配套光盘中第五章的例程运行(例5-4,例5-5,例5-6),观察运行结果,掌握信号量的基本原理及使用方法,理解出现优先级反转现象的根本原因并提出解决方案。 3.试编写一个应用程序,采用计数器型信号量(初值为2),有3个用户任务需要此信号量,它们轮流使用此信号量,在同一时刻只有两个任务能使用信号量,当其中一个任务获得信号量时向屏幕打印“TASK N get the signal”。观察程序运行结果并记录。 4. 试编写一个应用程序实现例5-7的内容,即用优先级继承的方法解决优先级反转的问题,观察程序运行结果并记录。 5.在例5-8基础上修改程序增加一个任务HerTask,它和YouTask一样从邮箱Str_Box里取消息并打印出来,打印信息中增加任务标识,即由哪个任务打印的;MyTask发送消息改为当Times为5的倍数时才发送,HerTask接收消息采用无等待方式,如果邮箱为空,则输出“The mailbox is empty”, 观察程序运行结果并记录。 三、实验原理 1. 信号量 μC/OS-II中的信号量由两部分组成:一个是信号量的计数值,它是一个16位的无符号整数(0 到65,535之间);另一个是由等待该信号量的任务组成的等待任务表。用户要在OS_CFG.H中将OS_SEM_EN开关量常数置成1,这样μC/OS-II 才能支持信号量。

实时操作系统期末复习题资料

实时操作系统期末复习题 考虑到降低难度,将原有的多选全部换成单选,同时增加简答,减少综合。试卷分数比例与本复习题完全一致。 一、单选题(60题,每题一分) 1、操作系统的主要功能有(C )。 A.进程管理、存储器管理、设备管理、处理机管理 B.虚拟存储管理、处理机管理、进程调度、文件管理 C.处理机管理、存储器管理、设备管理、文件管理 D.进程管理、中断管理、设备管理、文件管理 2、单处理机计算机系统中,(A)是并行操作的。 A.处理机操作和通道操作是并行的 B.程序与程序 C.主程序与子程序 D.用户程序与操作系统程序 3、处理机的所有指令可以在(D )中执行。 A.目态B.浏览器中C.任意时间D.系统态 4、要求在规定的时间内对外界的请求必须给予及时相应的OS是(B )。 A.多用户分时系统B.实时系统 C.批处理系统时间D.网络操作系统 5、(A )对实时系统最重要。 A.实时性B.交互性C.共享性D.运行效率

6、分布式系统和网络系统的主要区别是(C)。 A.并行性B.透明性C.共享性D.复杂性 7、如果分时操作系统的时间片一定,那么(B ),则相应时间越长。A.用户数越少B.用户数越多C.内存越小D.内存越大 8、下面六个系统中,必须是实时操作系统的有(C )个。 (1)航空订票系统(2)过程控制系统(3)机器口语翻译系统(4)计算机辅助系统(5)办公自动化系统(6)计算机激光照排系统 A.1 B.2 C.3 D.4 9、进程在系统中是否存在的惟一标志是(D )。 A.数据集合B.目标程序C.源程序D.进程控制块 10、当( B )时,进程从执行状态转变为就绪状态。 A.进程被调度程序选中B.时间片到 C.等待某一事件D.等待的事件发生 11、在进程状态转换时,下列( D )转换是不可能发生的。 A.就绪态→运行态B.运行态→就绪态 C.运行态→阻塞态D.阻塞态→运行态 12、下列各项工作步骤中,( B )不是创建进程所必需的步骤。 A.建立一个PCB B.作业调度程序为进程分配CPU C.为进程分配内存等资源D.将PCB链入进程就绪队列13、进程是B

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