所有實驗文件可見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 上
參考文獻