哈工大 计算机系统 实验1

所有实验文件可见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执行结果(至少包含启动设备行)
哈工大 计算机系统 实验1 (a)

哈工大 计算机系统 实验1

(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最小的两个任务的名称、描述。

  1. ntoskrnl.exe System&Registry
  2. svchost.exe
    2.5 计算机硬件详细信息(2分)
    CPU个数: 1 物理核数: 6 逻辑处理器个数: 12
    L1 Cache大小: 384KB L2 Cache大小: 1.5MB L3 Cache大小: 12.0MB
    哈工大 计算机系统 实验1
    图3-2 Windows下计算机硬件详细信息

第3章 Linux软硬件系统观察分析
总分10分
3.1 计算机硬件详细信息(3分)
CPU个数: 1 物理核数: 1 逻辑处理器个数: 1
MEM Total: 3997368KB Used: 1447700KB Swap: 2097148KB
哈工大 计算机系统 实验1
哈工大 计算机系统 实验1
哈工大 计算机系统 实验1

图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_____________________________

哈工大 计算机系统 实验1

图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分)
哈工大 计算机系统 实验1

以上为执行此函数时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分)
运行结果如下图所示
哈工大 计算机系统 实验1

原因分析:
原因:float型单精度浮点数位数有限,精度不够高,且float并不可以视为连续的数,只是一个一个离散的数,因此会出现上述情况。
改进:将变量类型由float改为double.

int main()
{
    double f;

    for(;;)
    {
        printf("请输入一个浮点数:");
        scanf("%lf",&f);
        printf("这个浮点数的值是:%f\n",f);
        if(f==0)  break;
    }
    return 0;
}

修改后结果:
哈工大 计算机系统 实验1

第9章 总结
9.1 请总结本次实验的收获

  1. 配置成功Linux环境,并对ubuntu进行一系列设置
  2. 对Win10系统以及笔记本硬件配置有了更深入的了解
  3. 进行了对 Linux 系统的基本操作,了解相关命令行的作用;
  4. 对于在 Linux 和 Windows 系统下不同环境的编译方式和结果有所了解

9.2 请给出对本次实验内容的建议
1.在ubuntu环境配置过程中出现多次问题,希望老师能把常见的问题集合一下写到 PPT 上
参考文献

上一篇:7-20 打印九九口诀表 (15 分)


下一篇:[Excel 技巧] 动态高亮显示选中的单元格所在行(列)