所有实验文件可见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. python函数位置实参传参

    #!/usr/bin/python #coding=utf-8 #好好学习,天天向上 def describe_pet(type,name): print(f"i have a {type} ...

  2. Arduino+ESP32 之 驱动GC9A01圆形LCD(一),基于Arduino_GFX库

    最近买了一块圆形屏幕,驱动IC是GC9A01,自己参考淘宝给的stm32的驱动例程, 在ubuntu下使用IDF开发ESP32,也在windows的vscode内安装IDF开发ESP32,虽然都做到了 ...

  3. JAVA多线程学习九-原子性操作类的应用

    当程序更新一个变量时,如果多线程同时更新这个变量,可能得到期望之外的值,比如变量i=1,A线程更新i+1,B线程也更新i+1,经过两个线程操作之后可能i不等于3,而是等于2.因为A和B线程在更新变量i ...

  4. pageX的兼容性处理2

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. ubuntu 修改文件及文件夹的权限

    转载请注明来源:https://www.cnblogs.com/hookjc/ 打开终端进入你需要修改的目录然后执行下面这条命令chmod 777 * -R全部子目录及文件权限改为 777 来源:py ...

  6. 可能用得上的UI控件

    为了便于开发者打造各式各样的优秀App,UIKit框架提供了非常多功能强大又易用的UI控件以下列举一些在开发中可能用得上的UI控件:   红色表明最常用,蓝色代表一般,黑色代表几乎不用(这不是绝对的, ...

  7. Python属性描述符

    实现了__get__.set.__delete__中任意一个方法的类,称之为属性描述符. 属性描述符可以控制属性操作时的一些行为. 只要具有__get__方法的类就是描述符类. 如果一个类中具有__g ...

  8. js--事件流、事件委托、事件阶段

    前言 JavaScript 与 HTML 的交互是通过事件实现的,事件代表文档或浏览器窗口中某个有意义的时刻.可以使用仅在事件发生时执行的监听器(也叫处理程序)订阅事件.本文总结一下 JS 中的事件相 ...

  9. 关于Miller-Rabin与Pollard-Rho算法的理解(素性测试与质因数分解)

    前置 费马小定理(即若P为质数,则\(A^P\equiv A \pmod{P}\)). 欧几里得算法(GCD). 快速幂,龟速乘. 素性测试 引入 素性测试是OI中一个十分重要的事,在数学毒瘤题中有着 ...

  10. 二进制安装tomcat

    一.安装JDK 1.1 下载JDK 官网下载地址 1.2 安装JDK #cat install_jdk.sh #!/bin/bash DIR=`pwd` JDK_FILE="jdk-8u29 ...