所有实验文件可见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. 集合框架-Map集合特点及常用方法

    1 package cn.itcast.p6.map.demo; 2 3 import java.util.HashMap; 4 import java.util.Iterator; 5 import ...

  2. 如何加载本地下载下来的BERT模型,pytorch踩坑!!

    近期做实验频繁用到BERT,所以想着下载下来使用,结果各种问题,网上一搜也是简单一句:xxx.from_pretrained("改为自己的路径") 我只想说,大坑!!! 废话不多说 ...

  3. numpy常用函数记录

    np.square() 函数返回一个新数组,该数组的元素值为源数组元素的平方. 源阵列保持不变. 示例: import numpy as np a = np.array([[1, 2, 3], [4, ...

  4. Supervisor多进程管理 异常自动重启 可视化管理

    一.序言 Supervisor是多进程管理工具,在Docker中相关联的进程能够通过supervisor来管理. 微服务项目开发阶段,可用于微服务子项目的启动管理. 支持web可视化管理,能够极大方面 ...

  5. errorC2471:cannot update program database vc90.pdb

    解决办法: C/C++ | General | Debug Information format | C7 Compatible (/Z7) C/C++ | Code Generation | Ena ...

  6. 出现Table ‘./mysql/proc’ is marked as crashed and should be repaired

    一般这种表崩溃的问题出现在mysql异常停止,或者使用kill -9命令强行杀掉进程导致,进入MySQL命令行后,执行下面的命令即可修复'./mysql/proc'表 repair table mys ...

  7. WEB前端开发--2(HTML基础)

    HTML基础 HTML不分大小写 1.HTML概述 HTML(HyperText MarkUp Language)"超文本标记语言",他是制作网页的标准语言 1.1 标签--元素 ...

  8. MyBatis动态SQL和缓存

    1. 什么是动态SQL 静态SQL:静态SQL语句在程序运行前SQL语句必须是确定的,SQL语句中涉及的表的字段名必须是存在的,静态SQL的编译是在程序运行前的. 动态SQL:动态SQL语句是在程序运 ...

  9. 趣谈IO多路复用的本质

    在<轻松搞懂5种IO模型>中,我发起了一个投票. 答案是[同步IO多路复用].目前,60%的朋友答对了.原因这里解释一下. 同步和异步的概念区别 同步:线程自己去获取结果.(一个线程) 异 ...

  10. 抓取并解密HTTPS流量

    WireShark   Wireshark解密TLS数据流,从网上已有资料来看,主要是两种方式:一是服务端私钥直接解密,二是使用SSLKEYLOGFILE获取握手过程中的会话密钥信息进行解密.   这 ...