计算机系统实验之Linux下C工具应用

计算机科学与技术学院

目  录

第1章 实验基本信息

1.1 实验目的

1.2 实验环境与工具

1.2.1 硬件环境

1.2.2 软件环境

1.2.3 开发工具

1.3 实验预习

第2章 Windows 软硬件系统观察分析

2.1 查看计算机基本信息(2分)

2.2 设备管理器查看(2分)

2.3 隐藏分区与虚拟内存之分页文件查看(2分)

2.4 任务管理与资源监视(2分)

2.5 计算机硬件详细信息(2分)

第3章 Linux软硬件系统观察分析

3.1 计算机硬件详细信息(3分)

3.2 任务管理与资源监视(3分)

3.3 Linux下网络系统信息(4分)

第4章 以16进制形式查看程序Hello.c

4.1 请查看HelloWin.c与HelloLinux.c的编码(3分)

4.2 请查看HelloWin.c与HelloLinux.c的回车(3分)

第5章 程序的生成 cpp、gcc、as、ld

5.1 请提交每步生成的文件(4分)

第6章 计算机系统的基本信息获取编程

6.1请提交源程序文件

第7章 计算机数据类型的本质

7.1 请提交源程序文件Datatype.c

第8章 程序运行分析

8.1 sum的分析(10分)

8.2 float的分析(10分)

第9章 C语言的数据类型与存储

9.1 类型本质(5分)

9.2 数据的位置-地址(5分)

参考文献

第1章 实验基本信息

1.1 实验目的

我们能够运用现代工具进行计算机软硬件系统的观察和分析,运用现代工具进行Linux下C语言的编程调试,初步掌握计算机系统的基本知识与各种类型的数据表示。

1.2 实验环境与工具

1.2.1 硬件环境

X64 CPU;2GHZ;2G RAM;256GHD Disk以上

1.2.2 软件环境

Windows7 64位以上;VirtualBox/Vmware 11以上;Ubuntu 16.04 LTS 64位/优麒麟 64位以上;

1.2.3 开发工具

Visual Studio 2022 64位以上;CodeBlocks;gcc、g++;vi/vim/gedit

1.3 实验预习

了解实验的目的、实验环境与软硬件工具、实验操作步骤,复习与实验有关的理论知识。

在Windows下编写 hellowin.c,显示“Hello 1160300199学霸”(可用记事本、VS、CB等,换成学生自己信息)

在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.                                 (b)

图3-1  Windows下计算机基本信息

2.2 设备管理器查看(2分)

按链接列出设备,找出所有的键盘鼠标设备。写出每一个设备的从根到叶节点的路径。

键盘:LAPTOP-6TTNU94E/基于ACPIx64的电脑/Microsoft ACPI-Compliant System/PCI Express根复合体/Intel(R) LPC Controller(HM570) – 438B/PS/2标准键盘

鼠标:LAPTOP-6TTNU94E/基于ACPIx64的电脑/Microsoft ACPI-Compliant System/PCI Express根复合体/Intel(R) USB 3.20 可扩展主机控制器 – 1.20(Microsoft)/USB 根集线器(USB 3.0)/USB Composite Device/USB输入设备/HID-compliant mouse

2.3 隐藏分区与虚拟内存之分页文件查看(2分)

写出计算机主硬盘的各隐藏分区的大小(MB):系统分区260MB

写出pagefile.sys的文件大小(Byte):5,196,763,832B

C盘根目录下其他隐藏的系统文件名字为:swapfile.sys,hiberfil.sys

2.4 任务管理与资源监视(2分)

写出你的计算机的PID最小的两个任务的名称、描述。

1.系统中断        延迟过程调用和中断服务例程

2.系统空闲进程    处理器空闲时间占比

2.5 计算机硬件详细信息(2分)

 CPU个数:   1       物理核数:   6     逻辑处理器个数:  12    

L1 Cache大小:  480KB  L2 Cache大小: 7.5MB   L3 Cache大小: 12MB     

图3-2  Windows下计算机硬件详细信息


3章 Linux软硬件系统观察分析

总分10

3.1 计算机硬件详细信息(3分)

 CPU个数:   2      物理核数:  96    逻辑处理器个数:  96    

MEM   Total:  188Gi   Used:  10Gi    Swap:  8.0Gi     

图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.250.1____________

mac地址:___02:42:99:ad:6c:80______________________

图4-1  Linux下网络系统信息

4章 以16进制形式查看程序Hello.c

总分6

4.1 请查看HelloWin.c与HelloLinux.c的编码(3分)

HelloWin.c采用__ANSI____编码,HelloLinux.c采用_UTF-8_编码,你的姓名____分别编码为:___E8 82 96 E5 8D 9A E4 BA 88____________与___e8 82 96 e5 8d 9a e4 ba 88________。

HelloWin.c在Linux下用gcc缺省模式编译后运行结果为:_____________

________Hello ▒▒▒______________________________。

4.2 请查看HelloWin.c与HelloLinux.c的回车(3分)

Windows下的回车编码为:___0D0A_____,Linux下的回车编码为:__0a_____。

交叉打开文件(在一个操作系统下,打开另一个系统中创建的文本文件)的效果是       Windows打开HelloLinux.c无换行,Linux打开HelloWin.c姓名为乱码                  

5章 程序的生成 cpp、gcc、as、ld

总分4

5.1 请提交每步生成的文件(4分)

hello.i  hello.s   hello.o  hello.out

可以将上述4个文件,直接插入到本word文档中【首选、推荐】;

或者将各文件内容以文本形式直接粘贴到本word文档中,并标明文档名称

6章 计算机系统的基本信息获取编程

总分10

6.1请提交源程序文件

isLittleEndian.c

word格式报告:程序源文件(可以是压缩包)直接插入到本页【首选、推荐】;

pdf格式报告:可以把内容直接粘贴到这里

7章 计算机数据类型的本质

总分10

7.1 请提交源程序文件Datatype.c

要求有main函数进行测试。

word格式报告:程序源文件(可以是压缩包)直接插入到本页【首选、推荐】;

pdf格式报告:可以把内容直接粘贴到这里。

运行结果如下图:

8章 程序运行分析

总分20

8.1 sum的分析10分)

运行结果:程序无法工作,运行结果超时

原因分析:len是无符号数,len = 0时,len - 1 = -1,而i是有符号数,当有符号数i和无符号数len比较时候,会将有符号数转化为无符号数进行比较,而len = -1的编码作为无符号数为最大值Umax,编码为0xFFFFFFFF,所以循环不会结束,产生死循环,数组有可能产生越界

改进方法:将len声明为有符号数数int

8.2 float的分析10分)

分析一个输入例子即可。

分析:

第一组的输入和输出不一致是因为输入在表示为二进制时转化为循环小数,由于float尾数只有23位,则需要进行向偶数舍入,第一组的最后一位被舍为偶数;而第二组的输入可以直接被表示为有限二进制数,不需要舍入或者刚好是要进行非中间值的舍入,结果为原值

第9章 C语言的数据类型与存储

总分10

9.1 类型本质(5分)

Win/VS/x86

Win/VS/x64

Linux/32位程序

Linux/64位程序

char

1

1

1

1

short

2

2

2

2

int

4

4

4

4

long

4

4

4

8

long long

8

8

8

8

float

4

4

4

4

double

8

8

8

8

long double

8

8

12

16

指针

4

8

4

8

提示:在linux和windows两种平台下,编译器观察。Linux下建议直接使用gcc指令进行编译。

C编译器对sizeof的实现方式:sizeof关键字是一个编译时计算的操作,而不是一个函数调用,可以看到在汇编程序中并没有对sizeof的调用,而且可以发现在编译时,编译器会直接计算其数据类型或变量所占用的内存字节数,而不是在运行时通过调用函数来获取这个信息。

9.2 数据的位置-地址(5分)

x与y在___编译_____阶段转换成补码与ieee754编码。

常量表达式在计算机中处理方法是:在编译时,编译器会处理常量表达式,将其值计算出来并嵌入代码中。因为常量表达式在运行时不会占用额外的计算资源,因为它们的值已经在编译时确定

9.2提示:

在linux下生成可执行程序,假设是a.out。然后用objdump -dx a.out  > a-dump.s 生成反汇编文件a-dump.s,查看a-dump.s

②调试程序

gdb ./a.out   layout asm 或者 layout split  b main  r   disp argc ….

具体参考提供给大家的gdb说明文档gdb-help.txt

参考文献

为完成本次实验你翻阅的书籍与网站等

[1]  林来兴. 空间控制技术[M]. 北京:中国宇航出版社,1992:25-42.

[2]  辛希孟. 信息技术与信息服务国际研讨会论文集:A集[C]. 北京:中国科学出版社,1999.

[3]  赵耀东. 新时代的工业工程师[M/OL]. 台北:天下文化出版社,1998 [1998-09-26]. http://www.ie.nthu.edu.tw/info/ie.newie.htm(Big5).

[4]  谌颖. 空间交会控制理论与方法研究[D]. 哈尔滨:哈尔滨工业大学,1992:8-13.

[5]  KANAMORI H. Shaking Without Quaking[J]. Science,1998,279(5359):2063-2064.

[6]  CHRISTINE M. Plant Physiology: Plant Biology in the Genome Era[J/OL]. Science,1998,281:331-332[1998-09-23]. http://www.sciencemag.org/cgi/ collection/anatmorp.

  • 27
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值