哈工大 计算机系统 实验一 Linux下C工具应用
所有实验文件可见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 上
参考文献
哈工大 计算机系统 实验一 Linux下C工具应用的更多相关文章
- 哈工大 计算机系统 实验七 TinyShell
所有实验文件可见github 计算机系统实验整理 实验报告 实 验(七) 题 目 TinyShell 微壳 计算机科学与技术学院 目 录 第1章 实验基本信息 - 4 - 1.1 实验目的 - 4 - ...
- Linux下sysstat工具学习
Linux下,我们多用ssh链接服务器远程操控.对于系统的监控必不可少,sysstat很不错的监控工具包. sysstat官网:http://sebastien.godard.pagesperso-o ...
- linux如何ARP嗅探 Linux下嗅探工具Dsniff安装记录
先来下载依赖包 和一些必须要用到的工具 我这里用的是 dsniff-2.3 的版本 wget http://www.monkey.org/~dugsong/dsniff/dsniff-2.3.ta ...
- Linux下同步工具inotify+rsync使用详解
1. rsync 1.1 什么是rsync rsync是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件.它使用所谓的“Rsync演算法”来使本地和远程两个主机之间的文件达到同步,这 ...
- linux下debug工具
在linux下开发难免会遇到bug,但是由于没有图形IDE,导致debug也变得困难,其实只要掌握一些常用的debug工具,一些错误就能很快解决,本文就介绍一些常用的工具用以调试: log 输出log ...
- Linux下应急工具
Linux下的应急工具 在Linux下,应急的查看点无非那个几个,一是看表现(宕机.高CPU.高内存.高IO.高网络通信),二看连接.三看进程.四看日志.五看文件(Linux一切皆文件),再者结合起来 ...
- (转)Linux下同步工具inotify+rsync使用详解
原文:https://segmentfault.com/a/1190000002427568 1. rsync 1.1 什么是rsync rsync是一个远程数据同步工具,可通过LAN/WAN快速同步 ...
- Linux下SSH工具 PAC Manager的安装
PAC Manager, Linux下类似SecureCRT Xshell的SSH工具,该工具功能上相当的不错,完全可以代替SecureCRT Xshell的功能. PAC (Perl Auto Co ...
- Linux下Vim工具常用命令
原文地址: http://www.cnblogs.com/lizhenghn/p/3675011.html 在linux下做开发,甚至是只做管理维护工作,也少不了Vim的使用.作为一个新手,我也是刚刚 ...
随机推荐
- java-异常-异常应用
1 package p1.exception; 2 3 4 /* 5 * 老师用电脑上课. 6 * 7 * 问题领域中涉及两个对象. 8 * 老师,电脑. 9 * 10 * 分析其中的问题. 11 * ...
- hostnamectl主机名
hostnamectl 可用于查询与修改系统主机名以及其他相关设置. 所谓"主机名",其实有三种不同的含义: "pretty"主机名,仅供人类阅读,可以包含各种 ...
- LoadRunner编写socket性能测试脚本
利用LoadRunner编写socket性能测试脚本 一.概述 Loadrunner拥有极为丰富的工具箱,供予我们制造出各种奇妙魔法的能力.其中就有此次要讨论的socket套接字操作. 二.socke ...
- NumPy 秘籍中文第二版·翻译完成
原文:NumPy Cookbook - Second Edition 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远. 在线阅读 Apache ...
- JAVA多线程学习十五 - 阻塞队列应用
一.类相关属性 接口BlockingQueue<E>定义: public interface BlockingQueue<E> extends Queue<E> { ...
- Swift字符串的介绍
字符串的介绍 字符串在任何的开发中使用都是非常频繁的 OC和Swift中字符串的区别 在OC中字符串类型时NSString,在Swift中字符串类型是String OC中字符串@"" ...
- jar包冲突时怎么办
因为项目中会依赖许多jar包,免不得就会有冲突,那怎么解决呢? 使用 mvn dependency:tree 可以看到各个包的依赖关系 [INFO] | +- commons-cli:commons- ...
- Python起航
安装Python 安装python 添加python安装目录到PATH 添加Scripts目录到PATH 如果同时安装了python2和python3,那么通过python和python3,pip和p ...
- 区区牛马蹉跎 ,不要向生活低下头 Linux的账号和管理
账户和管理权限 1.管理用户账号和组账号 2.管理目录和文件的属性 1.Linux基于用户身份对资源访问进行控制:用户账号(超级用户.普通用户.程序用户) 组账号(基本组.附加组).UID (用户标识 ...
- Ubuntu - root, sudo, su, passwd
1.rootubuntu中默认是不使用root账户的,当然也是可以开启并设置为默认登录账户的,但ubuntu不建议使用而已,毕竟root账户拥有所有权限,可能会出现一些误操作之类.在普通账户中,如果遇 ...