哈工大 计算机系统 实验一 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的使用.作为一个新手,我也是刚刚 ...
随机推荐
- 集合框架-Map集合特点及常用方法
1 package cn.itcast.p6.map.demo; 2 3 import java.util.HashMap; 4 import java.util.Iterator; 5 import ...
- 如何加载本地下载下来的BERT模型,pytorch踩坑!!
近期做实验频繁用到BERT,所以想着下载下来使用,结果各种问题,网上一搜也是简单一句:xxx.from_pretrained("改为自己的路径") 我只想说,大坑!!! 废话不多说 ...
- numpy常用函数记录
np.square() 函数返回一个新数组,该数组的元素值为源数组元素的平方. 源阵列保持不变. 示例: import numpy as np a = np.array([[1, 2, 3], [4, ...
- Supervisor多进程管理 异常自动重启 可视化管理
一.序言 Supervisor是多进程管理工具,在Docker中相关联的进程能够通过supervisor来管理. 微服务项目开发阶段,可用于微服务子项目的启动管理. 支持web可视化管理,能够极大方面 ...
- errorC2471:cannot update program database vc90.pdb
解决办法: C/C++ | General | Debug Information format | C7 Compatible (/Z7) C/C++ | Code Generation | Ena ...
- 出现Table ‘./mysql/proc’ is marked as crashed and should be repaired
一般这种表崩溃的问题出现在mysql异常停止,或者使用kill -9命令强行杀掉进程导致,进入MySQL命令行后,执行下面的命令即可修复'./mysql/proc'表 repair table mys ...
- WEB前端开发--2(HTML基础)
HTML基础 HTML不分大小写 1.HTML概述 HTML(HyperText MarkUp Language)"超文本标记语言",他是制作网页的标准语言 1.1 标签--元素 ...
- MyBatis动态SQL和缓存
1. 什么是动态SQL 静态SQL:静态SQL语句在程序运行前SQL语句必须是确定的,SQL语句中涉及的表的字段名必须是存在的,静态SQL的编译是在程序运行前的. 动态SQL:动态SQL语句是在程序运 ...
- 趣谈IO多路复用的本质
在<轻松搞懂5种IO模型>中,我发起了一个投票. 答案是[同步IO多路复用].目前,60%的朋友答对了.原因这里解释一下. 同步和异步的概念区别 同步:线程自己去获取结果.(一个线程) 异 ...
- 抓取并解密HTTPS流量
WireShark Wireshark解密TLS数据流,从网上已有资料来看,主要是两种方式:一是服务端私钥直接解密,二是使用SSLKEYLOGFILE获取握手过程中的会话密钥信息进行解密. 这 ...