HIT csapp LAB1报告

实验报告

实 验(一)

目  录

第1章 实验基本信息

1.1 实验目的

1.2 实验环境与工具

1.2.1 硬件环境

1.2.2 软件环境

1.2.3 开发工具

1.3 实验预习

第2章 实验环境建立

2.1 Windows下 hello程序的编辑与运行(5分)

2.2 Linux下 hello程序的编辑与运行(5分)

第3章 Windows 软硬件系统观察分析

3.1 查看计算机基本信息(2分)

3.2 设备管理器查看(2分)

3 隐藏分区与虚拟内存之分页文件查看(2分)

3.4 任务管理与资源监视(2分)

3.5 CPUZ下的计算机硬件详细信息(2分)

第4章 Linux软硬件系统观察分析

4.1 计算机硬件详细信息(3分)

4.2 任务管理与资源监视(2分)

4.3 磁盘任务管理与资源监视(3分)

4.4 Linux下网络系统信息(2分)

第5章 Linux下的showbyte程序

5.1 源程序提交(8分)

5.2 运行结果比较(2分)

第6章 程序的生成 Cpp、Gcc、As、ld

6.1 请提交每步生成的文件(10分)

第7章 计算机数据类型的本质

7.1 运行sizeof.c填表(5分)

7.2 请提交源程序文件sizeof.c(5分)

第8章 程序运行分析

8.1 sum的分析(10分)

8.2 float的分析(10分)

8.3程序优化(20分)

第9章 总结

9.1 请总结本次实验的收获

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

参考文献

第1章 实验基本信息

1.1 实验目的

1、运用现代工具进行计算机软硬件系统的观察与分析

2、运用现代工具进行Linux下C语言的编程调试,掌握程序的生成步骤

3、初步掌握计算机系统的基本知识与各种类型的数据表示  

1.2 实验环境与工具

1.2.1 硬件环境

X64 CPU;2GHz;2G RAM;256GHD Disk 以上

1.2.2 软件环境

Windows7/10 64位以上;VirtualBox/Vmware 11以上;Ubuntu 16.04   LTS 64位/优麒麟 64位 以上

1.2.3 开发工具

Visual Studio 2010 64位以上;CodeBlocks 64位; vi/vim/gedit+gcc

1.3 实验预习

1、上实验课前,必须认真预习实验指导PPT

2、了解实验的目的、实验环境与软硬件工具、实验操作步骤,复习与实验有关的理论知识。

3、初步使用计算机管理、设备管理器、磁盘管理器、任务管理器、资源监视器、性能监视器、系统信息、系统配置、组件服务查看计算机的软硬件信息。

4、在Windows、Linux下分别编写 hello.c,显示“Hello 1200300101-学霸”(可换成学生自己信息)

5、试着编写 showbyte.c 显示hello.c的内容:如书P2页,每行16个字符,上一行为字符,下一行为其对应的10进制形式。

6、试着编写sizeof.c打印输出C语言每一个数据类型(含指针)占用空间,并在Windows、Linux的32/64模式分别运行,并比较运行结果。

第2章 实验环境建立

2.1 Windows下 hello程序的编辑与运行(5分)

截图:要求有Windows状态行,Visual Studio界面,源程序界面,运行结果界面。

Ubuntu窗口,终端term窗口,输入的“Hello 1160300199学霸”信息


图2-1  Windows下hello运行截图

2.2 Linux下 hello程序的编辑与运行(5分)

截图:要求有Ubuntu的OS窗口,Codeblocks界面,源程序界面,运行结果界面。

图2-2  Linux下hello运行截图

第3章 Windows 软硬件系统观察分析

3.1 查看计算机基本信息(2分)

运行Windows管理工具中的“系统信息”程序,查看CPU、物理内存、系统目录、启动设备、页面文件等信息,并截图

图3-1  Windows下计算机基本信息

3.2 设备管理器查看(2分)

按链接列出设备,找出所有的键盘鼠标设备。写出每一个设备的从根到叶节点的路径。

键盘:LAPTOP-7A6BV84V>>基于ACPI x64的电脑>>Microsoft ACPI-Compliant System>>PCI Express根复合体>>Intel(R) USB 3.1可扩展主机控制器-1.10 (Microsoft)>>USB根集线器(USB 3.0)>>USB Composite Device>>USB输入设备>>HID Keyboard Device

鼠标:LAPTOP-7A6BV84V>>基于ACPI x64的电脑>>Microsoft ACPI-Compliant System>>PCI Express根复合体>>Intel(R) USB 3.1可扩展主机控制器-1.10 (Microsoft)>>USB根集线器(USB 3.0)>>USB Composite Device>>USB输入设备>>HID-compliant mouse

3 隐藏分区与虚拟内存之分页文件查看(2分)

写出计算机主硬盘的各隐藏分区的大小(MB):260MB 1000MB

写出pagefile.sys的文件大小(Byte):5.25GB=5,637,144,576 Byte

C盘根目录下其他隐藏的系统文件名字为:$GetCurrent  $Recycle.Bin  $Windows.~WS  $WinREAgent  DiskGenius_WinPE  Documents and Settings  Intel  Recovery  System Volume Information

3.4 任务与资源监视(2分)

写出你的计算机的PID为“-”、最小与最大的3个任务的PID、名称、描述。

1.名称:系统中断 PID:-  描述:延迟过程调用和中断服务例程

2.名称:系统空闲进程 PID:0  描述:处理器空闲时间百分比

3.名称:svchost.exe PID:46940  描述:Windows 服务主进程

3.5 CPUZ下的计算机硬件详细信息(2分)

 CPU个数: 1   物理核数:  4  逻辑处理器个数: 8  L3 Cache大小: 8MB     

图3-2  CPUZ下CPU的基本信息


第4章 Linux软硬件系统观察分析

(泰山服务器)

4.1 计算机硬件详细信息(3分)

 CPU个数:  1       物理核数:   1     逻辑处理器个数:   2   

MEM   Total: 3.8Gi       Used:     873Mi     Swap:     1.8Gi   

图4-1  Linux下计算机硬件详细信息截图

4.2 任务管理与资源监视(2分)

写出Linux下的PID最小的两个任务的PID、名称(Command)。

1.Command:systemd   PID:1

2.Command:kthreadd   PID:2

4.3 磁盘任务管理与资源监视3分)

1.  /dev/sda 设备的大小______128______GB,类型__VBOX HARDDISK____

2.  Units____512bytes_____Sector Size_____512bytes_______

4.4 Linux下网络系统信息(2分)

写出机器正联网用的网卡IPv4地址:________10.0.2.15________

mac地址:___08:00:27:f6:c3:6a___________

图4-2  Linux下网络系统信息

第5章 Linux下的showbyte程序

(10分)

5.1 源程序提交(8分)

showbyte.c与实验报告放在一个压缩包里

5.2 运行结果比较(2分)

运行od -Ax -tcx1 hello.c  以及showbyte.c,结果截图。

     

图5-1  OD的输出结果

图5-2  showbyte的输出结果

第6章 程序的生成 Cpp、Gcc、As、ld

6.1 请提交每步生成的文件(10分)

hello.i  hello.s   hello.o  hello.out  (附上hello.c)

7章 计算机数据类型的本质

7.1 运行sizeof.c填表(5分)

Win/VS/x86

Win/VS/x64

Linux/M32

Linux/M64

char

1

1

1

1

short

2

2

2

2

int

4

4

4

4

long

4

4

4

8

long long

8

8

8

8

float

4

4

4

4

double

8

8

8

8

long double

8

8

12

16

指针

4

8

4

8

7.2 请提交源程序文件sizeof.c(5分)

    

8章 程序运行分析

8.1 sum的分析10分)

1.截图说明运行结果,并原因分析。

分析:由于传入的len=0,len-1=-1,而len是unsigned型变量,len又会变成无符号数的最大值,一直在循环中,无法跳出。程序错误。

2.论述改进方法

将传入的len又unsigned改为int型,将len变成一个有符号数,当len=0时,减一就等于-1,就可以直接跳出循环。

8.2 float的分析10分)

1.运行结果截图,分析产生原因。

2. 论述编程中浮点数比较、汇总统计等应如何正确编程。

分析:从61.419997到61.420002这几组数据来看,输入与输出的浮点数的值有偏差,可能是因为float只能存放23位小数,在存储的时候,数据过长而被截断向偶数舍入,导致值有偏差;而从10.186810到10.186815这几组数据,转为二进制时精度足够,所以未发生舍入。

解决:用存放位数更长的double来存放数据

8.3程序优化(20分)

1. 截图说明运行结果,分析问题产生原因。

  

 

注:以上图分别为递归g1.c在f/g

为long/float和long long/double下的运行结果

 

注:以上图分别为循环g2.c在f/g

为long/float和long long/double下的运行结果

  

分析:g1.c为递归算法,当递归100次时递归层数过多,难以计算。

  g2.c为循环算法,当n=100时,long long也无法完全存储f的值,导致n=100的值被截断,从而计算g的时候产生较大偏差。

而在g1.c和g2.c中,n=40时,f/g为long/float和long long/double的两种情况下,存储g的精度不同,导致最后打印出的结果也有微小偏差。

n=100时,g=0.61803399

2. 提交初始的long/double版本的g1.c与g2.c。

3. 提交最后优化后的程序 g.c

9章 总结

9.1 请总结本次实验的收获

对自己的电脑的硬件信息有了一个初步的了解,对Linux下的terminal命令有了一些了解,对一个简单的hello.c文件的编译过程有了基本的概念,用各种命令对.c文件进行预处理、编译、汇编、链接得到最终的程序,也同时懂得不同的数据类型在不同系统上的大小等。

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

希望ppt的内容说明能够详细一些。

注:本章为酌情加分项。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/47062.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[HITML]哈工大2020秋机器学习Lab4实验报告

Gtihub仓库 2020年春季学期 计算学部《机器学习》课程 Lab4 实验报告 姓名学号班号电子邮件手机号码 1 实验目的 实现一个PCA模型,能够对给定数据进行降维(即找到其中的主成分) 2 实验要求及实验环境 2.1 实验要求 测试: 首…

[HITML]哈工大2020秋机器学习Lab3实验报告

GitHub仓库 2020年春季学期 计算学部《机器学习》课程 Lab3 实验报告 姓名学号班号电子邮件手机号码 1 实验目的 实现一个k-means算法和混合高斯模型,并且用EM算法估计模型中的参数。 2 实验要求及实验环境 2.1 实验要求 测试:用高斯分布产生k个高…

SwiftUI——提供多种小组件(Widget)供用户选择

有时候app需要提供多种widget供用户选择/使用,那么可以使用以下方法,不过需要注意,每个app最多可以包含5种小组件(Widget): 首先做几个小组件: //省略之前的Provider和SimpleEntey部分 //第一个…

iOS轻量级组件化管理工具,让你轻轻松松添加自己的小组件.

2019独角兽企业重金招聘Python工程师标准>>> TXRouter 轻量级组件化管理工具,让你轻轻松松添加自己的小组件.该工具原理简单、制作轻松、思路清晰等优点. TXRouter优点 比MGJRouter更加简单、使用更加方便原理简单、制作轻松、思路清晰 TXModel缺点 不能高大上定义U…

iOS14 Widget小组件开发实践1——了解Widget

iOS14带来了新的UI组件:WidgetKit,人称小组件(用过安卓的都能理解),这货的前身其实就是iOS10时候引入的Today Extension。 Widget为应用程序提供了这样一种功能:其可以让用户在主屏幕上展示App中用户所关心…

如何用iOS14 Widget小组件自定义玩法

一.了解Widget iOS14带来了新的UI组件:WidgetKit,人称小组件(用过安卓的都能理解),这货的前身其实就是iOS10时候引入的Today Extension。 Widget为应用程序提供了这样一种功能:其可以让用户在主屏幕上展示App中用户所关心的信息。例如一款天气软件,其可以附带一个Widg…

iOS14 Widget开发踩坑(二)修正版-多个小组件

iOS14 Widget开发踩坑(二)修正版-多个小组件 前言添加多个小组件情况1.对于已经写好的一个小组件情况2.对于新建好还没写的小组件 Widgets的限制突破小组件个数限制的方法参考文献 前言 2020年12月3日 经过进一步的学习 发现了文章中还有很多错误&#…

IOS小组件(1):概述

IOS小组件(1):概述 引言小组件是什么?小组件概述小组件开发备注小组件实现原理结语引言 本系列文章作者是安卓开发,以安卓开发的视角学习IOS小组件,记录一下踩坑记录,如有讲得不对的地方,路过大佬多包涵。如果你是想深入学习小组件,建议您顺着笔者的编号顺序阅读本系列…

ios中在app应用内刷新小组件数据

需求: 我们需要在app应用内刷新时间线,让桌面小组件加载最新的内容。即app内修改了共享数据后,需要通知桌面小组件强制刷新,显示改变后的内容。 当某种情况影响到小组件的当前时间线时,您的 App 可以指示 WidgetKit …

android 仿苹果 小组件,仿ios14桌面小部件

仿ios14桌面小部件,这是一款面向广大安卓手机用户推出的高仿iOS14桌面插件软件,大家可以使用这款软件快速完成自己想要的桌面显示,多种插件一键点击轻松完成设置过程,让大家体验到同款iOS14桌面强大的功能,非常有意思的…

iOS14 小组件 开发1

前言:小组件的开发和我们正常情况开发App的逻辑是一样的,正常情况分为:网络请求,数据模型,view,渲染.只不过是小组件的开发使用了 swiftUI 语言来编写,所以要对SwiftUI的空间有所了解. 好!那我们接下来开始我们的小组件开发吧. 首先,创建Widget Extension 然后选择证书,起个名…

Android-为应用添加widget小组件

最近在实现为应用程序添加小组件的功能,记录一下开发过程。 1.添加一个小组件模板 设置组件类名称,其他属性按需求设置,这些属性在生成的文件中也可修改 ​​​​​​ 工程main目录下会生成类文件,res目录下生成资源文件&#x…

iOS 15 新增多个实用小组件

iOS 14 上线加入的桌面小组件功能非常受欢迎,因此苹果iOS 15新系统对小组件功能进行深度优化,并加入了多个实用又有趣的小组件。用户可以简单通过上下滑动来选择、重新排列、智能堆栈小组件,也可以对它们进行删除、智能旋转,还可以…

Widget小组件

目录 技能点 Widget背调 a. 设计定位 b. Widget小组件限制 c. Widget小组件 开发须知 d. 什么是 SwiftUI App Group 数据共享 a. 配置 App Groups 1、开发者账号配置,并更新pp证书 2、Xcode配置 b. 缓存数据共享-代码实现 1、文件存储 2. 沙盒存储&…

iOS_小组件widget基本功能

创建 在当前工程里新建target 选择Today Extension 独立应用 widget虽做为应用的扩展, 但却是两个完全独立的应用 widget上线需要单独申请 AppID 和 Bundle Identifier , 需要配置 证书 和 Provisioning Profiles(配置文件) 第三方pod导入, 也的重新导入一份 target MMWidg…

iOS 14-Widget小组件2—实现

Widget 实现 认识与配置实现效果图支持显示方式交互数据共享刷新策略网络加载屏幕适配支持多个小部件布局例子源码其他问题参考认识与配置 上一篇文章已经做了比较详细的介绍与创建配置iOS 14-Widget小组件1—初识 实现效果图 支持显示方式 @main 入口添加.supportedFamilie…

自定义开发苹果手机显示汽车小组件

实时获取汽车数据信息实时获取汽车定位信息(点击地址进入高德)显示当前位置的天气情况可定制显示当前城市是否限行可定制当前城市油价信息实时刷新最新数据 感兴趣的可以私聊加群

iOS 小组件 widget

苹果官网文档(apple developer)widgetkit 文章目录 1.创建小组件2.编辑小组件3.数据共享4.拖动排序5.参考链接 1.创建小组件 File -> New -> Target 搜索widget,点击next 勾上Include Configuration Intent, 表示需要编辑小组件,点击f…

iOS 小组件 widget 编辑小组件

返回小组件专栏:iOS 小组件 widget 文章目录 1.编辑小组件2.intentHandler 1.编辑小组件 如下图,编辑小组件,需要在GirlWidget.intentdefinition中配置 点击右下角的加号,新建一个枚举类型 枚举类型改名MyEnum,并添加三个值 …

iOS 小组件开发

iOS14之后Apple引入了新的WidgetKit,舍弃了原有额TodayExtension。 开发准备: 新的WidgetExtension只能通过SwiftUI进行开发; Widget有三种尺寸:systemSmall、 systemMedium、systemLarge,三种尺寸对应固定的UI类型布…