IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> CSAPP_Lab1完成过程 -> 正文阅读

[系统运维]CSAPP_Lab1完成过程

本文中首先给出自己的答案,然后给出一些操作细节或补充知识

第一章实验基本信息

1.1 目的

1.2 实验环境与工具

1.2.1 硬件环境

X64 CPU;2.60GHz;16G RAM;512G HD Disk

HD为Hard Disk 硬盘的缩写

如何查看本机硬件设备:

1、鼠标点击桌面左下角开始按钮,找到运行,输入dxdiag,进入DirectX诊断工具界面。
这时我们可以查看系统、显示以及声音的.硬件配置情况。

2、 除此之外,我们还可以右键点击计算机,选择管理。
然后在左侧点击设备管理器,右侧窗口就会显示本机的硬件配置情况。

3、 打开 Windows 的命令行 cmd 程序
输入 diskpart,启动磁盘 diskpart 工具
在 diskpart 磁盘工具中依次输入命令

list disk
select disk 0 # 根据实际情况选择不同磁盘编号
detail disk

使用完毕后,输入如下命令推出 diskpart 磁盘工具

exit

在这里插入图片描述
在这里插入图片描述
此时我们就能看到各种参数,选择需要的即可

1.2.2 软件环境

Windows10 64位; Vmware 15;Ubuntu 20.04 LTS 64位;

优麒麟是中国国产操作系统Ubuntu Kylin的Ubuntu Kylin 14.04 LTS版本。正式发布并确定中文名为“优麒麟”。

1.2.3 开发工具

Visual Studio 2019 64位;CodeBlocks 64位;vi/vim/gedit+gcc

Windows 应用下载

WindowsCode Blocks下载教程

Ubuntu 应用下载

Ubuntu Code Blocks 下载:

sudo apt install codeblocks

了解Ubuntu PPA

LINUX常用编辑器:(Vim,Emacs,gedit,gcc,g++)
编译器配置参见

Ubuntu VScode 不能运行 C/C++ 代码解决办法:
将代码所在文件夹在 VScode 打开,即可运行(类似打开一个工程)

1.3 实验预习

上实验课前,认真预习了实验指导PPT
了解实验的目的、实验环境与软硬件工具、实验操作步骤,复习与实验有关的理论知识。
初步使用计算机管理、设备管理器、磁盘管理器、任务管理器、资源监视器、性能监视器、系统信息、系统配置、组件服务查看计算机的软硬件信息。
在Windows、Linux下分别编写 hello.c,显示“Hello 5201314-菜菜”(可换成学生自己信息)
试着编写了 showbyte.c 显示hello.c的内容:如书P2页,每行16个字符,上一行为字符,下一行为其对应的10进制形式。
试着编写了sizeof.c打印输出C语言每一个数据类型(含指针)占用空间,并在Windows、Linux的32/64模式分别运行,并比较运行结果。

第二章 实验环境建立

2.1 Windows下 hello程序的编辑与运行

easy

2.2 Ubuntu下 程序的编辑与运行

在 ubuntu 中创建并运行 C 语言文件

// 创建

touch love.c

// 用 vim 或者 gedit (有GUI界面,小白推荐)编写代码

vim love.c
// 或
gedit love.c
# include <stdio.h>
int main(){
	printf("I love you, but\n");
	return 0;
}

// 运行 C 文件

gcc love.c

// 此时当前文件夹下产生了一个 a.out 文件,直接运行即可

./a.out

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

3.1 查看计算机基本信息

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

3.2 设备管理器查看

3.3 隐藏分区与虚拟内存之分页文件查看

在Windows运行中搜索磁盘管理器,在磁盘管理器中能看到的,没有在计算机里显示的磁盘分区为隐藏分区,例如C盘显示了,它不是隐藏分区
在磁盘管理其中没有磁盘名为空的盘为隐藏分区
查看方法1
查看所有分区的方法

关于pagefile.sys

查看pagefile.sys大小

在桌面鼠标右击“我的电脑”–“属性”–“高级”“性能”“设置”“高级”“虚拟内存”

3.4 任务管理与资源监视

PID(进程控制符)英文全称为Process Identifier,它也属于电工电子类技术术语。
PID就是各进程的身份标识,程序一运行系统就会自动分配给进程一个独一无二的PID。进程中止后PID被系统回收,可能会被继续分配给新运行的程序。
PID一列代表了各进程的进程ID,也就是说,PID就是各进程的身份标识。

任务管理器中即可查看

3.5 CPUZ下的计算机硬件详细信息

方法一: 运行任务管理器
在这里插入图片描述

方法二:下载CPUZ查看即可
CPUZ的部分说明

第4章 Linux软硬件系统观察分析(泰山服务器)

4.0连接泰山服务器

< > 不可或缺,但是不用输入<>
[ ] 可有可无

打开Xshell7
在这里插入图片描述
连接服务器

ssh <用户名>@ddns.hitsplab1.xyz 22210

输入密码连接即可

如何提交代码到泰山服务器呢

上传文件

scp -P 22210 文件所在地址 用户名@ ddns.hitsplab1.xyz:~/文件目录(LAB1)

// 或者为了方便,在需要提交的文件所在的文件夹,打开终端
scp -P 22210 需要提交的文件名称 用户名@ ddns.hitsplab1.xyz:~/文件目录(LAB1)

下载文件

scp -P 22210 用户名@ddns.hitsplab1.xyz:/文件全名   d:/本地目录名

Linux 中的一些设备查看命令

参考命令

4.1 计算机硬件详细信息

(1)Linux查看cpu信息

cat /proc/cpuinfo

查看cpu型号

cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c

查看物理cpu个数

cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l

查看每个CPU中core(核)的个数

cat /proc/cpuinfo | grep "cpu cores" | uniq

查看逻辑CPU个数

cat /proc/cpuinfo | grep "processor" | wc -l

(2)Linux查看memory信息

运行指令参考
查看内存信息

cat /proc/meminfo

以MB为单位查看

free -m

以GB为单位查看

free -h

4.2 任务管理与资源监视

查看进程PID

ps laf

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

Ubuntu磁盘查看命令

linux下查看磁盘分区的文件系统格式

查看系统磁盘空间

df

带单位(如GB,MB等)的系统磁盘空间查看

df -h

sda表示的是你的第一块sata硬盘,sda1表示的是你的第一块sata硬盘的第一个分区。
/dev/sda是指接在SATA、SCSI第一个接口上的硬盘。

查看dev/sda 的类型,扇区等信息

sudo fdisk -l 
// 可以显示出所有挂载和未挂载的分区,但不显示文件系统类型
df -T 
// 只可以查看已经挂载的分区和文件系统类型。

4.4 Linux下网络系统信息

查看mac地址的方法或 ifconfig 中各参数对应的意义

ifconfig命令查看网卡MAC地址

有些Linux发行版本的MAC地址字段为HWaddr,有些Linux发行版本的MAC地址字段为ether。根据实际情况选择命令。

ether 或 HWaddr 对应mac地址
inet 对应 IPv4
inet6 对应 IPv6

/sbin/ifconfig | grep HWaddr

//或

/sbin/ifconfig | grep ether

第5章 Linux下的showbyte程序

5.1 源程序提交

// 代码还是得自己写哦

在这里插入图片描述

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

6.1 请提交每步生成的文件

生成 hello.i 文件

gcc -E hello.c -o hello.i
// 或
cpp hello.c > hello.i

生成 hello.s 文件

gcc -S hello.c -o hello.s
// 或
cc1 hello.i -o hello.s
// cc1 很可能不在path中,用一下代码
/usr/lib/gcc/x86_64-linux-gnu/8/cc1 hello.i -o hello.s

生成 hello.o 文件

gcc -c hello.s -o hello.o
// 或
as hello.s -o hello.o

生成 hello.out文件

gcc hello.o -o hello.out
// 或
ld hello.o -lc -o hello.out
// ld 使用可能会出错

看文本文件的内容 File 文件名 看文件类型等,有一下多种方式

nano hello.c
more hello.c
cat hello.c
gedit hello.c

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

7.1 运行sizeof.c填表

Windows中用VS可以轻易切换 X86/X64
Linux中

// 32位
gcc hello.c -m32
// 64位
gcc hello.c -m64

如果报错了
在这里插入图片描述
错误原因是:

系统中的gcc没有安装multilib 库;使用这个库可以在64位的机器上产生32位的程序
运行一下命令安装即可

sudo apt-get install gcc-multilib
sudo apt-get install g++-multilib

注意:sizeof()返回值为无符号整型
printf("%u", sizeof(int)); // M32
printf("%lu", sizeof(int)); // M64

第8章 程序运行分析

8.1 sum的分析

1. 运行结果与原因分析

在这里插入图片描述

运行结果:异常退出。
原因分析:无符号数 (len)0-1 = 4294967295;造成数组访问越界,程序异常结束。

在这里插入图片描述

设置访问限制,防止下标越界
运行结果:则输出整个数组所有数字之和。
原因分析:无符号数 (len)0-1 = 4294967295;程序访问了整个数组空间

2. 论述改进方法

方法一:把 i <= len – 1; 改为 i < len;
方法二:unsigned len 改为 int len

8.2 float的分析

大家都知道,在二进制世界中,浮点数是不精确的,因此直接用 < > == !=比较浮点数大小是很危险的,而且结果也是不确定的。

不考虑精度来比较浮点数大小是耍流氓。我之前的做法是基于精度对浮点数进行比较,比如,精度为2,如果 abs(a-b)<0.01,就说明 a==b。否则就是 a>b。

1. 运行结果与原因分析

在这里插入图片描述
在这里插入图片描述

产生原因分析:
第一组输入在表示为二进制时是无线循环的,而float只能表示到小数点后23位,所以要进行截断和舍入,被舍入为偶数。

第二组输入在表示为二进制时是有限的,所以表示为精确值不需要舍入,或者小数点6位之后的舍入值刚好是本身。

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

浮点数的表示是近似值,所以要尽量避免利用浮点数进行比较。
最好使用浮点数插值加精度限制来比较大小,例如
(a - b) < 1e-6

8.3 利用Fibonacci求黄金比例程序优化

在这里插入图片描述

也可以将求Fibonacci的整型数改为double类型,由于浮点数的存储机制,默认去掉低位无法存储的数据,产生的结果接近真实值 0.618

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-03-22 21:01:04  更:2022-03-22 21:02:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 23:23:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码