所有实验文件可见github 计算机系统实验整理
实验报告
实 验(一)
题 目 Linux下C工具应用
专 业 计算机学院
学 号
班 级
学 生
指 导 教 师
实 验 地 点
实 验 日 期
计算机科学与技术学院
目 录
第1章 实验基本信息 - 4 -
1.1 实验目的 - 4 -
1.2 实验环境与工具 - 4 -
1.2.1 硬件环境 - 4 -
1.2.2 软件环境 - 4 -
1.2.3 开发工具 - 4 -
1.3 实验预习 - 4 -
第2章 WINDOWS 软硬件系统观察分析 - 6 -
2.1 查看计算机基本信息(2分) - 6 -
2.2 设备管理器查看(2分) - 6 -
2.3 隐藏分区与虚拟内存之分页文件查看(2分) - 7 -
2.4 任务管理与资源监视(2分) - 7 -
2.5 计算机硬件详细信息(2分) - 7 -
第3章 LINUX软硬件系统观察分析 - 8 -
3.1 计算机硬件详细信息(3分) - 8 -
3.2 任务管理与资源监视(3分) - 9 -
3.3 LINUX下网络系统信息(4分) - 9 -
第4章 以16进制形式查看程序HELLO.C - 10 -
4.1 请查看HELLOWIN.C与HELLOLINUX.C的编码(3分) - 10 -
4.2 请查看HELLOWIN.C与HELLOLINUX.C的回车(3分) - 10 -
第5章 程序的生成 CPP、GCC、AS、LD - 11 -
5.1 请提交每步生成的文件(4分) - 11 -
第6章 计算机系统的基本信息获取编程 - 12 -
6.1 请提交源程序文件(10分) - 12 -
第7章 计算机数据类型的本质 - 13 -
7.1 请提交源程序文件DATATYPE.C(10分) - 13 -
第8章 程序运行分析 - 14 -
8.1 SUM的分析(20分) - 14 -
8.2 FLOAT的分析(20分) - 14 -
第9章 总结 - 16 -
9.1 请总结本次实验的收获 - 16 -
9.2 请给出对本次实验内容的建议 - 16 -
参考文献 - 17 -
第1章 实验基本信息
1.1 实验目的
运用现代工具进行计算机软硬件系统的观察与分析
运用现代工具进行Linux下C语言的编程调试
初步掌握计算机系统的基本知识与各种类型的数据表示
1.2 实验环境与工具
1.2.1 硬件环境
X64 CPU;2.6GHz;32G RAM;512GHD Disk
1.2.2 软件环境
Windows10 64 位; Vmware15; Ubuntu 20.10
1.2.3 开发工具
Visual Studio Code;vi/vim/gpedit+gcc
1.3 实验预习
上实验课前,必须认真预习实验指导书
了解实验的目的、实验环境与软硬件工具、实验操作步骤,复习与实验有关的理论知识。
在Windows下编写 hellowin.c,显示“Hello 1160300199学霸”(可用记事本、VS等,换成学生自己信息)
在Linux下编写 hellolinux.c,显示“Hello 1160300199学霸”(可用VI、VIM、EMACS、GEDIT等,换成学生自己信息)
编写 showbyte.c 以16进制显示文件hello.c等的内容:每行16个字符,上一行为字符,下一行为其对应的16进制形式。
编写 datatype.c,定义C所有类型的全局变量,并赋初值。如整数可以是学号(数字部分),字符串可以是你的姓名,浮点数可以是身份证号的数字部分。主程序打印每个变量的变量名、变量值、变量地址、变量对应16进制的内存各字节。
第2章 Windows 软硬件系统观察分析
总分10分
2.1 查看计算机基本信息(2分)
截图: 控制面板->系统 命令行systeminfo执行结果(至少包含启动设备行)
(a)
(b)
图3-1 Windows下计算机基本信息
2.2 设备管理器查看(2分)
按链接列出设备,找出所有的键盘鼠标设备。写出每一个设备的从根到叶节点的路径。
键盘:DESKTOP-7LIB08L\基于 ACPI x64 的电脑\ Microsoft ACPI-Compliant System\ PCI Express 根复合体\ Intel(R) 300 Series Chipset Family LPC Controller (HM370) - A30D\ PS/2 标准键盘。
鼠标1:DESKTOP-7LIB08L\基于 ACPI x64 的电脑\ Microsoft ACPI-Compliant System\ PCI Express 根复合体\ Intel(R) 300 Series Chipset Family LPC Controller (HM370) - A30D\ PS/2 兼容鼠标
鼠标2(若有):DESKTOP-7LIB08L\基于 ACPI x64 的电脑\ Microsoft ACPI-Compliant System\ PCI Express 根复合体\符合 USB xHCI 的主机控制器\ USB 根集线器(USB 3.0)\ USB Composite Device\ USB 输入设备\ HID-compliant mouse。
2.3 隐藏分区与虚拟内存之分页文件查看(2分)
写出计算机主硬盘的各隐藏分区的大小(MB):
磁盘0磁盘分区1 EFI系统分区 100MB
写出pagefile.sys的文件大小(Byte):4.75 GB
C盘根目录下其他隐藏的系统文件名字为:
Hiberfil.sys; swapfile.sys; bootmgr; BOOTNXT
2.4 任务管理与资源监视(2分)
写出你的计算机的PID最小的两个任务的名称、描述。
- ntoskrnl.exe System&Registry
- svchost.exe
2.5 计算机硬件详细信息(2分)
CPU个数: 1 物理核数: 6 逻辑处理器个数: 12
L1 Cache大小: 384KB L2 Cache大小: 1.5MB L3 Cache大小: 12.0MB
图3-2 Windows下计算机硬件详细信息
第3章 Linux软硬件系统观察分析
总分10分
3.1 计算机硬件详细信息(3分)
CPU个数: 1 物理核数: 1 逻辑处理器个数: 1
MEM Total: 3997368KB Used: 1447700KB Swap: 2097148KB
图4-1 Linux下计算机硬件详细信息
3.2 任务管理与资源监视(3分)
写出Linux下的PID最小的两个任务的PID、名称(Command)。
1.PID:1 Command : systemd
2.PID:2 Command : kthreadd
3.3 Linux下网络系统信息(4分)
写出本虚拟机的IPv4地址:192.168.153.130________________
mac地址:00:0c:29:28:c2:5a_____________________________
图4-1 Linux下网络系统信息
第4章 以16进制形式查看程序Hello.c
总分6分
4.1 请查看HelloWin.c与HelloLinux.c的编码(3分)
HelloWin.c采用___ANSI____编码,HelloLinux.c采用___UTF-8____编码,你的姓名___郑晟赫___________分别编码为:D6 A3 EA C9 DA B5___________与______e9 83 91 e6 99 9f e8 b5 ab_____________。
HelloWin.c在Linux下用gcc缺省模式编译后运行结果为:Hello 1190300321֣�ɺ�___________
4.2 请查看HelloWin.c与HelloLinux.c的回车(3分)
Windows下的回车编码为:__0D 0A __,Linux下的回车编码为:0a。
交叉打开文件(在一个操作系统下,打开另一个系统中创建的文本文件)的效果是 Linux下打开hellowin.c姓名为乱码,windows下打开hellolinux.c无换行
。
第5章 程序的生成 Cpp、Gcc、As、ld
总分4分
5.1 请提交每步生成的文件(4分)
hello.i hello.s hello.o hello.out
第6章 计算机系统的基本信息获取编程
总分10分
6.1 请提交源程序文件
isLittleEndian.c
cpuWordSize.c
第7章 计算机数据类型的本质
总分10分
7.1 请提交源程序文件Datatype.c
要求有main函数进行测试。
第8章 程序运行分析
总分40分
8.1 sum的分析(20分)
以上为执行此函数时VScode的报错。
出错原因:在执行程序时,由于len定义为unsigned,因此在for循环中len-1为最大正数,但是数组长度并没有那么长,因此此函数永远正常停止,当读取到非法地址后程序报错。
改进:
int sum(int a[],unsigned len)
{
int i,sum=0;
for(i;i<len;i++)
{
sum+=a[i];
}
return sum;
}
8.2 float的分析(20分)
运行结果如下图所示
原因分析:
原因:float型单精度浮点数位数有限,精度不够高,且float并不可以视为连续的数,只是一个一个离散的数,因此会出现上述情况。
改进:将变量类型由float改为double.
int main()
{
double f;
for(;;)
{
printf("请输入一个浮点数:");
scanf("%lf",&f);
printf("这个浮点数的值是:%f\n",f);
if(f==0) break;
}
return 0;
}
修改后结果:
第9章 总结
9.1 请总结本次实验的收获
- 配置成功Linux环境,并对ubuntu进行一系列设置
- 对Win10系统以及笔记本硬件配置有了更深入的了解
- 进行了对 Linux 系统的基本操作,了解相关命令行的作用;
- 对于在 Linux 和 Windows 系统下不同环境的编译方式和结果有所了解
9.2 请给出对本次实验内容的建议
1.在ubuntu环境配置过程中出现多次问题,希望老师能把常见的问题集合一下写到 PPT 上
参考文献