哈工大 計算機系統 實驗一 Linux下C工具應用


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM