官术网_书友最值得收藏!

前言

隨著計(jì)算機(jī)信息技術(shù)的飛速發(fā)展,我們見(jiàn)證了從早期多人一機(jī)的主機(jī)-終端模式,到PC時(shí)代的一人一機(jī)模式,再到如今的人-機(jī)-物互聯(lián)的智能化大數(shù)據(jù)并行計(jì)算模式。現(xiàn)如今各行各業(yè)都離不開(kāi)計(jì)算機(jī)信息技術(shù),計(jì)算機(jī)信息產(chǎn)業(yè)對(duì)我國(guó)現(xiàn)代化戰(zhàn)略目標(biāo)的實(shí)現(xiàn)發(fā)揮著極其重要的支撐作用。這對(duì)計(jì)算機(jī)專業(yè)人才培養(yǎng)提出了更高的要求,傳統(tǒng)的計(jì)算機(jī)專業(yè)教學(xué)課程體系和教學(xué)內(nèi)容已經(jīng)遠(yuǎn)遠(yuǎn)不能反映現(xiàn)代社會(huì)對(duì)計(jì)算機(jī)專業(yè)人才的培養(yǎng)要求,計(jì)算機(jī)專業(yè)人才培養(yǎng)也從強(qiáng)調(diào)程序設(shè)計(jì)變?yōu)楦鼜?qiáng)調(diào)系統(tǒng)設(shè)計(jì)。這需要我們重新規(guī)劃教學(xué)課程體系,調(diào)整教學(xué)理念和教學(xué)內(nèi)容,加強(qiáng)系統(tǒng)能力培養(yǎng),使學(xué)生能夠深刻理解計(jì)算機(jī)系統(tǒng)整體的概念,更好地掌握軟/硬件協(xié)同設(shè)計(jì)和程序設(shè)計(jì)技術(shù),從而能夠成為滿足業(yè)界需求的各類計(jì)算機(jī)專業(yè)人才。不管培養(yǎng)計(jì)算機(jī)系統(tǒng)哪個(gè)層面的技術(shù)人才,計(jì)算機(jī)專業(yè)教育都要重視學(xué)生“系統(tǒng)觀”的培養(yǎng)。

機(jī)械工業(yè)出版社2023年8月出版的主教材《計(jì)算機(jī)系統(tǒng)導(dǎo)論》(ISBN 978-7-111-73093-4),重點(diǎn)介紹了計(jì)算機(jī)系統(tǒng)相關(guān)的基礎(chǔ)性知識(shí)。該主教材以高級(jí)語(yǔ)言程序的開(kāi)發(fā)和加載執(zhí)行為主線,將高級(jí)語(yǔ)言源程序向可執(zhí)行目標(biāo)文件轉(zhuǎn)換過(guò)程中涉及的基本概念關(guān)聯(lián)起來(lái),試圖使讀者建立起完整的計(jì)算機(jī)系統(tǒng)層次結(jié)構(gòu)框架,初步構(gòu)建計(jì)算機(jī)系統(tǒng)中每個(gè)抽象層及其相互轉(zhuǎn)換關(guān)系,建立高級(jí)語(yǔ)言程序、ISA、編譯器、匯編器、鏈接器等系統(tǒng)核心層之間的相互關(guān)聯(lián),對(duì)指令在硬件上的執(zhí)行過(guò)程有一定的認(rèn)識(shí)和了解,從而增強(qiáng)讀者在編程調(diào)試方面的能力,并為后續(xù)“計(jì)算機(jī)組成原理”“操作系統(tǒng)”“編譯原理”等課程的學(xué)習(xí)打下堅(jiān)實(shí)的基礎(chǔ)。

主教材涵蓋面廣、細(xì)節(jié)內(nèi)容較多、篇幅較大,給用書教師和學(xué)生帶來(lái)了一些困難。為了更好地幫助主講教師用好主教材,也為了學(xué)生能更好地理解課程中的核心概念,特別是讓學(xué)生通過(guò)“學(xué)中做、做中學(xué)”的方式更好地掌握所學(xué)的理論知識(shí),提高和增強(qiáng)程序設(shè)計(jì)和程序調(diào)試能力,我們編寫了這本實(shí)踐類輔助教材,為主教材中每一章的內(nèi)容都設(shè)計(jì)了配套的實(shí)踐項(xiàng)目,其主要設(shè)計(jì)思路和實(shí)踐內(nèi)容如下。

第1章為“實(shí)驗(yàn)系統(tǒng)的安裝和工具軟件的使用”。本章包含實(shí)驗(yàn)系統(tǒng)的安裝和配置,以及常用命令和工具軟件的使用等方面的兩個(gè)實(shí)驗(yàn)。實(shí)踐內(nèi)容包括從網(wǎng)絡(luò)上下載虛擬機(jī)軟件并安裝虛擬機(jī)、下載和安裝Linux操作系統(tǒng)、在Linux系統(tǒng)中配置程序開(kāi)發(fā)和調(diào)試環(huán)境等操作,以完成實(shí)驗(yàn)系統(tǒng)的構(gòu)建,從而為后續(xù)實(shí)驗(yàn)準(zhǔn)備好調(diào)試執(zhí)行環(huán)境,并使學(xué)生在實(shí)驗(yàn)系統(tǒng)構(gòu)建過(guò)程中體會(huì)和理解計(jì)算機(jī)系統(tǒng)層次結(jié)構(gòu)的基本概念。

第2章為“程序調(diào)試初步和指令系統(tǒng)基礎(chǔ)”。本章包含程序調(diào)試初步、IA-32指令系統(tǒng)基礎(chǔ)和在C語(yǔ)言程序中嵌入?yún)R編指令3個(gè)實(shí)驗(yàn)。通過(guò)所設(shè)計(jì)的實(shí)踐項(xiàng)目,使學(xué)生能基于IA-32+Linux平臺(tái),在機(jī)器級(jí)代碼層執(zhí)行單步調(diào)試操作,通過(guò)對(duì)照C語(yǔ)句和對(duì)應(yīng)機(jī)器級(jí)代碼逐步熟悉IA-32指令系統(tǒng)中的基礎(chǔ)內(nèi)容,如AT&T匯編指令格式、通用寄存器結(jié)構(gòu)、指令基本尋址方式等,從而為后續(xù)實(shí)驗(yàn)的開(kāi)展奠定良好的基礎(chǔ)。

第3章為“數(shù)據(jù)的機(jī)器級(jí)表示實(shí)驗(yàn)”。本章包含整型數(shù)據(jù)的真值與機(jī)器數(shù)、浮點(diǎn)型數(shù)據(jù)的真值與機(jī)器數(shù)、數(shù)據(jù)的寬度與存放順序、不同整型數(shù)據(jù)之間的轉(zhuǎn)換、整型數(shù)據(jù)和浮點(diǎn)型數(shù)據(jù)之間的轉(zhuǎn)換等5個(gè)實(shí)驗(yàn)。通過(guò)基于IA-32+Linux平臺(tái)以及GCC編譯驅(qū)動(dòng)程序和gdb調(diào)試工具等對(duì)C語(yǔ)言程序中數(shù)據(jù)的機(jī)器級(jí)表示內(nèi)容進(jìn)行實(shí)驗(yàn),使學(xué)生更好地理解數(shù)據(jù)的真值和機(jī)器數(shù)之間的對(duì)應(yīng)關(guān)系,確定機(jī)器數(shù)所存放的存儲(chǔ)單元,從而掌握整型數(shù)據(jù)和浮點(diǎn)型數(shù)據(jù)的編碼表示方法。

第4章為“數(shù)據(jù)的基本運(yùn)算實(shí)驗(yàn)”。本章包含整數(shù)加減、整數(shù)乘、整數(shù)除和浮點(diǎn)數(shù)運(yùn)算4個(gè)實(shí)驗(yàn)。通過(guò)基于IA-32+Linux平臺(tái)以及GCC編譯驅(qū)動(dòng)程序和gdb調(diào)試工具等對(duì)C語(yǔ)言源程序中的整數(shù)加、減、乘、除等基本運(yùn)算和浮點(diǎn)數(shù)運(yùn)算進(jìn)行實(shí)驗(yàn),使學(xué)生更好地理解C語(yǔ)言程序中的運(yùn)算、機(jī)器級(jí)代碼中的運(yùn)算指令、基本運(yùn)算電路三者之間的關(guān)系,掌握數(shù)據(jù)在計(jì)算機(jī)內(nèi)部的存儲(chǔ)、運(yùn)算和傳送機(jī)制,從而掌握計(jì)算機(jī)系統(tǒng)中的整數(shù)運(yùn)算和浮點(diǎn)數(shù)運(yùn)算的實(shí)現(xiàn)方法,進(jìn)一步熟悉IA-32中的常用指令并更好地掌握指令的基本尋址方式。

第5章為“程序的機(jī)器級(jí)表示實(shí)驗(yàn)”。本章安排了5個(gè)實(shí)驗(yàn),實(shí)驗(yàn)4和實(shí)驗(yàn)5為選做實(shí)驗(yàn)。前3個(gè)實(shí)驗(yàn)主要基于IA-32+Linux平臺(tái)以及GCC編譯驅(qū)動(dòng)程序和gdb調(diào)試工具等,對(duì)C語(yǔ)言源程序中的函數(shù)調(diào)用語(yǔ)句、循環(huán)結(jié)構(gòu)和選擇結(jié)構(gòu)等各類流程控制語(yǔ)句以及各類復(fù)雜數(shù)據(jù)類型的分配和訪問(wèn)等的機(jī)器級(jí)代碼表示和實(shí)現(xiàn)進(jìn)行實(shí)驗(yàn),以幫助學(xué)生理解C語(yǔ)言程序在計(jì)算機(jī)系統(tǒng)中的底層實(shí)現(xiàn)機(jī)制,從而深刻理解高級(jí)語(yǔ)言程序、語(yǔ)言處理工具和環(huán)境、操作系統(tǒng)、指令集系統(tǒng)結(jié)構(gòu)(ISA)之間的關(guān)聯(lián)關(guān)系。實(shí)驗(yàn)4作為基礎(chǔ)級(jí)驗(yàn)證性實(shí)驗(yàn)部分的綜合收官實(shí)驗(yàn),通過(guò)對(duì)C語(yǔ)言程序及其機(jī)器級(jí)代碼中緩沖區(qū)溢出漏洞的調(diào)試分析,以及利用緩沖區(qū)溢出漏洞進(jìn)行模擬攻擊的過(guò)程分析,將數(shù)據(jù)的表示、數(shù)據(jù)的運(yùn)算和程序的機(jī)器級(jí)表示等內(nèi)容貫穿起來(lái),以進(jìn)一步鞏固對(duì)主教材相關(guān)內(nèi)容的理解。實(shí)驗(yàn)5為64位架構(gòu)平臺(tái)上的實(shí)驗(yàn),需要配置基于x86-64架構(gòu)的Ubuntu(64位)Linux系統(tǒng),在此基礎(chǔ)上進(jìn)行x86-64架構(gòu)機(jī)器級(jí)表示實(shí)驗(yàn)。

第6章為“二進(jìn)制程序分析與逆向工程實(shí)驗(yàn)”。本章與主教材第2~6章的教學(xué)內(nèi)容配套,包含了9個(gè)實(shí)驗(yàn),通過(guò)對(duì)二進(jìn)制程序的構(gòu)成與運(yùn)行邏輯的分析,旨在將理論課程中關(guān)于程序的機(jī)器級(jí)表示的教學(xué)內(nèi)容貫穿起來(lái),加深對(duì)其中各重要知識(shí)點(diǎn)的理解,并進(jìn)一步鞏固和掌握反匯編、跟蹤/調(diào)試等常用編程技能。

第7章為“程序鏈接與ELF目標(biāo)文件實(shí)驗(yàn)”。本章與主教材第7章(程序的鏈接)的教學(xué)內(nèi)容配套,按照主教材教學(xué)內(nèi)容分階段設(shè)計(jì)為以下6個(gè)實(shí)驗(yàn):數(shù)據(jù)與ELF數(shù)據(jù)節(jié)、指令與ELF代碼節(jié)、符號(hào)解析、switch語(yǔ)句與鏈接、重定位、位置無(wú)關(guān)代碼。通過(guò)對(duì)一組可重定位目標(biāo)文件中相關(guān)內(nèi)容的分析和修改,將其鏈接為可正確運(yùn)行的程序,從而加深學(xué)生對(duì)理論課中關(guān)于ELF目標(biāo)文件的基本結(jié)構(gòu)和組成、程序鏈接過(guò)程(如符號(hào)解析與重定位)等基礎(chǔ)知識(shí)和基本概念的理解,并掌握用于鏈接和目標(biāo)文件解析等的常用工具軟件的使用。

本書設(shè)計(jì)的實(shí)驗(yàn)中,前五章實(shí)驗(yàn)內(nèi)容屬于基礎(chǔ)級(jí)驗(yàn)證性實(shí)驗(yàn),后兩章實(shí)驗(yàn)內(nèi)容屬于模塊級(jí)分析性實(shí)驗(yàn)。這兩部分實(shí)驗(yàn)的配套實(shí)驗(yàn)代碼可通過(guò)出版社的網(wǎng)站或配套數(shù)字資源介質(zhì)獲取。模塊級(jí)分析性實(shí)驗(yàn)中面向任課教師的代碼可向出版社申請(qǐng)獲得。

本書的編寫得到了南京大學(xué)“計(jì)算機(jī)系統(tǒng)基礎(chǔ)”課程組教師和各屆學(xué)生的大力支持,同時(shí),國(guó)內(nèi)許多使用《計(jì)算機(jī)系統(tǒng)基礎(chǔ)》和《計(jì)算機(jī)系統(tǒng)導(dǎo)論》等教材進(jìn)行教學(xué)的教師也提出了寶貴的反饋和改進(jìn)意見(jiàn),在此表示衷心的感謝!

由于計(jì)算機(jī)系統(tǒng)相關(guān)的基礎(chǔ)理論和技術(shù)在不斷發(fā)展,新的思想、概念、技術(shù)和方法不斷涌現(xiàn),加之作者水平有限,在編寫中難免存在不當(dāng)或遺漏之處,懇請(qǐng)同行專家和廣大讀者對(duì)本書的不足之處給予指正,以便在后續(xù)的版本中予以改進(jìn)。

主站蜘蛛池模板: 松桃| 郓城县| 济南市| 通辽市| 个旧市| 恭城| 安塞县| 德保县| 奇台县| 甘孜| 东乡县| 景谷| 新建县| 五华县| 阿鲁科尔沁旗| 池州市| 抚州市| 太和县| 和田市| 甘德县| 维西| 读书| 平度市| 会理县| 广灵县| 玉山县| 海安县| 乌什县| 莎车县| 阜城县| 蓬安县| 麟游县| 砀山县| 健康| 当阳市| 宜君县| 宁阳县| 修水县| 淮南市| 木里| 三都|