所有实验文件可见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最小的两个任务的名称、描述。

  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



    图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 请总结本次实验的收获

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

9.2 请给出对本次实验内容的建议

1.在ubuntu环境配置过程中出现多次问题,希望老师能把常见的问题集合一下写到 PPT 上

参考文献

哈工大 计算机系统 实验一 Linux下C工具应用的更多相关文章

  1. 哈工大 计算机系统 实验七 TinyShell

    所有实验文件可见github 计算机系统实验整理 实验报告 实 验(七) 题 目 TinyShell 微壳 计算机科学与技术学院 目 录 第1章 实验基本信息 - 4 - 1.1 实验目的 - 4 - ...

  2. Linux下sysstat工具学习

    Linux下,我们多用ssh链接服务器远程操控.对于系统的监控必不可少,sysstat很不错的监控工具包. sysstat官网:http://sebastien.godard.pagesperso-o ...

  3. linux如何ARP嗅探 Linux下嗅探工具Dsniff安装记录

      先来下载依赖包 和一些必须要用到的工具 我这里用的是 dsniff-2.3 的版本 wget http://www.monkey.org/~dugsong/dsniff/dsniff-2.3.ta ...

  4. Linux下同步工具inotify+rsync使用详解

    1. rsync 1.1 什么是rsync rsync是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件.它使用所谓的“Rsync演算法”来使本地和远程两个主机之间的文件达到同步,这 ...

  5. linux下debug工具

    在linux下开发难免会遇到bug,但是由于没有图形IDE,导致debug也变得困难,其实只要掌握一些常用的debug工具,一些错误就能很快解决,本文就介绍一些常用的工具用以调试: log 输出log ...

  6. Linux下应急工具

    Linux下的应急工具 在Linux下,应急的查看点无非那个几个,一是看表现(宕机.高CPU.高内存.高IO.高网络通信),二看连接.三看进程.四看日志.五看文件(Linux一切皆文件),再者结合起来 ...

  7. (转)Linux下同步工具inotify+rsync使用详解

    原文:https://segmentfault.com/a/1190000002427568 1. rsync 1.1 什么是rsync rsync是一个远程数据同步工具,可通过LAN/WAN快速同步 ...

  8. Linux下SSH工具 PAC Manager的安装

    PAC Manager, Linux下类似SecureCRT Xshell的SSH工具,该工具功能上相当的不错,完全可以代替SecureCRT Xshell的功能. PAC (Perl Auto Co ...

  9. Linux下Vim工具常用命令

    原文地址: http://www.cnblogs.com/lizhenghn/p/3675011.html 在linux下做开发,甚至是只做管理维护工作,也少不了Vim的使用.作为一个新手,我也是刚刚 ...

随机推荐

  1. java-异常-异常应用

    1 package p1.exception; 2 3 4 /* 5 * 老师用电脑上课. 6 * 7 * 问题领域中涉及两个对象. 8 * 老师,电脑. 9 * 10 * 分析其中的问题. 11 * ...

  2. hostnamectl主机名

    hostnamectl 可用于查询与修改系统主机名以及其他相关设置. 所谓"主机名",其实有三种不同的含义: "pretty"主机名,仅供人类阅读,可以包含各种 ...

  3. LoadRunner编写socket性能测试脚本

    利用LoadRunner编写socket性能测试脚本 一.概述 Loadrunner拥有极为丰富的工具箱,供予我们制造出各种奇妙魔法的能力.其中就有此次要讨论的socket套接字操作. 二.socke ...

  4. NumPy 秘籍中文第二版·翻译完成

    原文:NumPy Cookbook - Second Edition 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远. 在线阅读 Apache ...

  5. JAVA多线程学习十五 - 阻塞队列应用

    一.类相关属性 接口BlockingQueue<E>定义: public interface BlockingQueue<E> extends Queue<E> { ...

  6. Swift字符串的介绍

    字符串的介绍 字符串在任何的开发中使用都是非常频繁的 OC和Swift中字符串的区别 在OC中字符串类型时NSString,在Swift中字符串类型是String OC中字符串@"" ...

  7. jar包冲突时怎么办

    因为项目中会依赖许多jar包,免不得就会有冲突,那怎么解决呢? 使用 mvn dependency:tree 可以看到各个包的依赖关系 [INFO] | +- commons-cli:commons- ...

  8. Python起航

    安装Python 安装python 添加python安装目录到PATH 添加Scripts目录到PATH 如果同时安装了python2和python3,那么通过python和python3,pip和p ...

  9. 区区牛马蹉跎 ,不要向生活低下头 Linux的账号和管理

    账户和管理权限 1.管理用户账号和组账号 2.管理目录和文件的属性 1.Linux基于用户身份对资源访问进行控制:用户账号(超级用户.普通用户.程序用户) 组账号(基本组.附加组).UID (用户标识 ...

  10. Ubuntu - root, sudo, su, passwd

    1.rootubuntu中默认是不使用root账户的,当然也是可以开启并设置为默认登录账户的,但ubuntu不建议使用而已,毕竟root账户拥有所有权限,可能会出现一些误操作之类.在普通账户中,如果遇 ...