如下为本人这学期操作系统的实验报告,欢迎前来借鉴。
实验分项1 | 1.Linux 常用命令的使用(操作系统使用级) Linux 系统基本操作(启动与退出、文件和目录操作、文档备份与压缩、联机帮助等)(login, logout, exit, halt, shutdown, pwd, cd, mkdir, rmdir, cat, cp, mv, rm, ls, chmod, find, grep, more, sort, gzip, unzip, tar, rpm, man, info, --help ) |
实 验 目 的 | 熟练掌握Linux常用命令的使用 |
实 验 要 求 | 掌握Linux 系统基本操作(启动与退出、文件和目录操作、文档备份与压缩、联机帮助等) 系统平台:linux系统 |
实 验 原 理 步 骤 ( 算 法 流 程 ) |
|
实 验 结 果 及 分 析 | |
心 得 体 会 | 能熟练运用Linux系统基础操作,对Linux系统操作方法有一定认知。 |
实验分项2 | Vi / Emacs等编辑软件的使用(操作系统使用级) |
实 验 目 的 | 熟练掌握Emacs编辑软件的快捷键使用等 |
实 验 要 求 | 掌握Emacs等编辑软件的使用 系统平台:Linux系统 |
实 验 原 理 步 骤 ( 算 法 流 程 ) | 对Emacs所有的操作都是通过调用命令实现的。对于一些常用的命令,会定义快捷键以便快速使用。 不管是否有快捷键,都可以通过M-x command 的方式执行命令。(M-x即Alt+x,是一种快捷键,后面会有介绍)比如输入回车,相当于:M-x newline 通过M-x执行命令时,可以使用 TAB 补全,使用 M-p 上翻, M-n 下翻。 Emacs中的取消通常是连按三下ESC: ESC ESC ESC (M-x keyboard-escape-quit) 但是在命令执行过程中,有可能该命令无法使用(比如有些命令是交互式的,需要输入一些参数),所以中止一条命令的执行最好使用C-g (M-x keyboard-quit)。 本质上,快捷键只是一种发送命令的方法! Emacs的快捷键通常以组合键的方式定义。如M-x 表示Alt+x。前面的字母M代表修饰符,Emacs定义的修饰符如下: C-:Control M-: Alt(应该是Meta,在 PC 上,Meta键 通常对应 Alt 键) C-M-: 同时按住 Ctrl 和 Alt S-:Shift RET:Return TAB:Tab ESC:Esc,等价于M-。比如,C-M-r ,等价于ESC C-r 打开控制台,输入emacs即可打开Eamcs,使用快捷键C-x+C-f打开或创建文件,即可输入内容。 Emacs运行c运行文件步骤 1.启动Emacs,在终端输入“emacs”命令。 2.进入Emacs界面后,键“C-x C-f”以打开/创建一个新的文件,建议以C/C++语言里所规定的扩展名来指定创建的文件的扩展名。 3.编辑文件,键“C-x C-s”存盘。 4.键入“M-x”,输入“eshell”或“shell”命令,进入“eshell”或“shell”缓冲区,然后同样的键入“g++ 文件名.cpp –o test”命令以编译源文件, 5.运行编译后的可执行文件,同样的按照第4步中的打开eshell缓冲区,输入相关命令即可执行编译后文件,这里应该输入“./a.out”命令。 |
实 验 结 果 及 分 析 | 打开emacs 新建文件并写入一个C语言文件 运行C语言文件 使用M-x指令调出控制台,输入eshell,进入shell模式 输入gcc test.c命令编译C语言文件,无误后输入./a.out命令输出结果 |
心 得 体 会 | 能熟练运用大部分Emacs的快捷键,对编辑软件的用法有大概的了解,并且可以使用emacs运行C语言文件。 |
实验分项3 | cc 、gcc 、g++、 gdb 命令的使用(开发调试环境)(操作系统使用级) | |||
实 验 目 的 | 掌握Linux下的一些常用编辑指令 | |||
实 验 要 求 | 熟悉在Linux系统的cc 、gcc 、g++、 gdb 命令的使用 | |||
实 验 原 理 步 骤 ( 算 法 流 程 ) | 我事先创建好了一个test.c的文件。首先用cc test,c用来将test.c编译出来.然后用/a.out表示当前目录下的./a.out文件,我们选择好当前文件后使用指令gcc –o hello test.c,将test.c编译并连接成可执行的二进制文件hello。然后用./hello选择当前新建的hello文件,用g++指令,g++ -o test test.c将hello.c编译并连接成可执行的二进制文件test。然后继续选择刚才创建的hello文件或者test文件,将test.编译并连接成可执行可调试的二进制文件myp。 接着使用gdb myp用来调试myp。列出源代码list,在提示符下打入list,会出现一部分源代码,接着按回车会重复上一次命令。在某行设置断点 break 2,运行程序run等等最后用(gdb)quit退出 | |||
实 验 结 果 及 分 析 | 实验结果也是通过gcc,cc,g++成功编译出了3个不同名字的文件。之后用gdb命令对其进行测试。 | |||
心 得 体 会 | 要学会自己去查找资料,掌握熟悉各种指令,并且在出现bug时候学会自己观察解决,如是否是gcc -o 中间忘记加空格等,与团队的小伙伴交流。尝试自己可以不用鼠标来操作Linux。 |
实验分项4 | Visual C++ 、C++ Builder 等windows 平台下IDE中API的使用(操作系统使用级) |
实 验 目 的 | 掌握windows平台下IDE中API的使用 |
实 验 要 求 | 具体题目:Visual C++ 、C++ Builder 等windows 平台下IDE中API的使用(操作系统使用级) 系统平台:windows系统 |
实 验 原 理 步 骤 ( 算 法 流 程 ) | #include<windows.h> #pragma comment(lib,"user32.lib") int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int) { MessageBox( NULL, "Hello,lingqiankun", "Greetings", MB_OK ); return 0; } 上述实验流程先使用头文件<windows.h>,再从这个头文件中调MessageBox这个API函数。 #include <windows.h> #include <stdio.h> int main() { BOOL bResult; TCHAR szSystemDir[MAX_PATH]; GetSystemDirectory(szSystemDir, MAX_PATH); printf("%s\n", szSystemDir); DWORD dwTotalClusters; DWORD dwFreeClusters; // 簇 DWORD dwSectPerClust; DWORD dwBytesPerSect; // 扇区 bResult = GetDiskFreeSpace(TEXT("C:"), &dwSectPerClust, &dwBytesPerSect, &dwFreeClusters, &dwTotalClusters); if (bResult) { printf("place is:\n"); printf("the number of cu: %d\n", dwTotalClusters); printf("the num of freecu: %d\n", dwFreeClusters); printf("the num of shanqu every cu: %d\n", dwSectPerClust); printf("the num of byte every shan: %d\n", dwBytesPerSect); } return 0; } 先设一个BOOL类型的变量bResult与存放文件地址的数组szSystemDir,调用GetSystemDirection函数来获取系统的地址,用双字DWORD设立四个变量,调用GetDiskFreeSpace函数来获取簇与扇区的相关信息,后来用printf函数输出相关的信息。 |
实 验 结 果 及 分 析 | 如图所示,调用MessageBox函数后结果,给予了控制Windows外观的windows函数,该程序调用这个API函数后会退出。 调用GetSystemDirection函数与GetDiskFreeSpace函数配合printf函数会显示出系统存放的具体位置与簇、扇区的相关信息。 Windows API可以控制Windows各组件的外观以及行为逻辑的Windows函数,以上为调用相关函数的使用结果。 |
心 得 体 会 | API是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。在本次实验当中,我对Windows API的调用有了更深刻的理解,了解了Windows操作系统的相关机制。 |