戴莉萍
關(guān)鍵詞:Python語言;操作系統(tǒng);算法實(shí)現(xiàn);教學(xué)改革
操作系統(tǒng)(Operating System) 是計(jì)算機(jī)軟件體系的基礎(chǔ),操作系統(tǒng)課程是計(jì)算機(jī)專業(yè)教學(xué)過程中一門基礎(chǔ)且較為重要的課程,同時(shí)設(shè)置了理論教學(xué)和實(shí)驗(yàn)教學(xué)。理論課上核心算法原理的講授有助于學(xué)生們構(gòu)建扎實(shí)的專業(yè)知識體系;實(shí)驗(yàn)課上重要算法的實(shí)現(xiàn)有助于提高學(xué)生們的程序設(shè)計(jì)水平及加深對理論知識的進(jìn)一步理解[1-3]。
操作系統(tǒng)課程理論教學(xué)一直存在比較大的挑戰(zhàn),例如眾多的知識點(diǎn)如何在有限的課堂時(shí)間內(nèi)組織完成;復(fù)雜算法需要通過怎樣合適高效的描述方式更好地傳遞給學(xué)生;課堂教學(xué)效果的實(shí)時(shí)反饋應(yīng)怎樣利用優(yōu)秀的教學(xué)工具來收集與分析等。因此針對操作系統(tǒng)課程理論教學(xué)的改革不斷在被探討、應(yīng)用與總結(jié)中[4-6]。
Python語言作為一種通用的程序設(shè)計(jì)語言,語法非常簡單,代碼表述清晰易懂,可以與其他課程的教學(xué)案例結(jié)合使用[7-8]。本文結(jié)合Python技術(shù),對操作系統(tǒng)中算法課程教學(xué)的講解方式進(jìn)行一定的探索與改革,以便提高學(xué)生的興趣,加快學(xué)生理解進(jìn)度,達(dá)到比較好的課堂教學(xué)效果。
1 OS 算法課程教學(xué)中的常用描述方式
操作系統(tǒng)是重要的系統(tǒng)軟件,管理著計(jì)算機(jī)系統(tǒng)的軟件和硬件資源,對應(yīng)的課程內(nèi)容較抽象、知識點(diǎn)較多,概念原理較難理解;例如課程中的各類算法是非常豐富的,有進(jìn)程調(diào)度算法、磁盤調(diào)度算法、頁面置換算法、連續(xù)內(nèi)存分配算法等[9-10]。
課本中對于各類算法的描述也是形式多樣的:
1) 文字語言描述——例如在動態(tài)分區(qū)分配算法中的描述:“為了加快尋找,最佳適應(yīng)算法要求將所有的空閑分區(qū)按其容量從小到大的順序,排成一個(gè)空閑分區(qū)鏈,這樣,第一次找到的、能滿足要求的空閑分區(qū),必然是最佳的。”
2) 偽碼描述——例如整型信號量的應(yīng)用:
{Wait(mutex); 臨界區(qū); Signal(mutex): 剩余區(qū); }
3) 表格表示——例如表1所示的磁盤調(diào)度算法中的SSTF(最短尋道時(shí)間優(yōu)先)調(diào)度算法,清晰表述了各個(gè)磁道號被處理的先后次序、每次磁道移動的數(shù)量以及最終平均尋道長度。
課堂授課的PPT也基本按照這些方式組織教學(xué)內(nèi)容,并在此基礎(chǔ)上進(jìn)行相應(yīng)的改進(jìn),例如使用動畫演示描述算法過程、以例題方式加以說明其原理、采用代碼模擬實(shí)現(xiàn)算法執(zhí)行過程等。Python編程語言由于其簡潔性,能夠較好地與上述方式結(jié)合使用,可以省去安裝虛擬機(jī)和Linux系統(tǒng)及配置工作,進(jìn)一步改善課堂教學(xué)效果。
2 Python 在OS 算法教學(xué)中的具體應(yīng)用
算法的代碼實(shí)現(xiàn)通常需要展示兩部分內(nèi)容:代碼本身的組織和執(zhí)行效果的分析;編程語言Python的應(yīng)用是對各類算法的講解起到一個(gè)良好的輔助作用,使得理論知識的脈絡(luò)更為清晰,幫助學(xué)生更好地理解。
1) 算法的文字描述變成了代碼的關(guān)鍵注釋——在PPT上,單純的大段文字表示有時(shí)會顯得有些單調(diào),特別是描述理論知識時(shí),容易讓人覺得枯燥。利用Python程序,可以同時(shí)用代碼和文字描述算法,將枯燥的文字用簡短的符號語言表示。此時(shí)文字就成了代碼的注釋語句,將整段的文字分解成了以行為單位的表示;用人的腦袋去模擬計(jì)算機(jī)的執(zhí)行,邊閱讀邊理解邊運(yùn)行,可以較為有效地集中學(xué)生們的注意力。例如教學(xué)課件PPT中,動態(tài)分區(qū)中最佳適應(yīng)算法表示下面代碼所示,執(zhí)行結(jié)果如圖2所示,兩者可放置在同一張PPT上。
2) 無法運(yùn)行的偽碼表示變成了可實(shí)際運(yùn)行的代碼表示。偽碼和代碼都可以較好地表示算法的基本思想,偽碼是非嚴(yán)格的編程語言與自然文字的組合,在有限的空間上展示更具優(yōu)勢;但它沒有運(yùn)行結(jié)果可看。如果偽碼和代碼在描述同一問題上的行數(shù)和理解難度相差不大的情況下,可以考慮使用代碼,以增加運(yùn)行結(jié)果的直觀性。通過對執(zhí)行結(jié)果的仔細(xì)觀察和深入分析,可以較為有效地提高學(xué)生對相關(guān)知識點(diǎn)的理解能力。例如下面的代碼和圖3描述了整型信號量的基本使用。
3) 表格的靜態(tài)表示變成以代碼為基礎(chǔ)的動態(tài)表示。表格能夠體現(xiàn)的過程性有時(shí)是比較有限的,例如表1中左列下一個(gè)磁道號的順序是通過相關(guān)運(yùn)算及比較才能確定的,而這些步驟在表中是省略的。利用程序代碼表示可以將這些步驟很好地重現(xiàn),從而有利于該算法的講解,節(jié)省了相應(yīng)的閱讀和思考時(shí)間,是對表格結(jié)果的進(jìn)一步說明,例如以下代碼和圖4。
4) 代碼執(zhí)行時(shí)各數(shù)據(jù)的中間結(jié)果的逐一表示成為圖形過程化表示的輔助。例如要理解圖1的FIFO 置換算法,關(guān)鍵要分析物理塊中各個(gè)頁進(jìn)入內(nèi)存的順序。Python程序中非常容易設(shè)置該順序,下面的代碼中使用的數(shù)據(jù)類型都是簡單類型,通過字符串的左右順序來表示各頁的FIFO順序。粗看圖形不理解時(shí),可以轉(zhuǎn)向以下代碼表示及圖5的執(zhí)行效果,兩者可以相互促進(jìn),圖形表示是相關(guān)應(yīng)用題的解題模板;代碼表示是相關(guān)實(shí)驗(yàn)的范例。這樣一來,學(xué)生在課堂中能較快掌握解題方式以及代碼實(shí)現(xiàn);而且在時(shí)間有寬裕的情況下,可以適當(dāng)做擴(kuò)展,例如計(jì)算缺頁中斷次數(shù)和頁面置換次數(shù),源代碼應(yīng)該在哪里增加累加語句。
除應(yīng)用在算法描述外,程序代碼還可以應(yīng)用在基本概念的描述中,例如進(jìn)程的異步性,可以通過Python的Multiprocessing來進(jìn)行簡單的子進(jìn)程創(chuàng)建,相同的代碼可得到不同的執(zhí)行結(jié)果。通過結(jié)果對比,就能理解進(jìn)程是按異步方式運(yùn)行的,即按各自獨(dú)立的、不可預(yù)知的速度向前推進(jìn)。
3 Python 在OS 算法教學(xué)中的探析
將Python實(shí)例應(yīng)用在OS算法講解中,一定程度上體現(xiàn)了授課方式的多樣性與相互融合性,較好地拓展了學(xué)生的思維能力,感受到了各類知識的綜合應(yīng)用。分析這些Python實(shí)例,它們具有一些共同特點(diǎn)。
1) 簡潔短小:課堂教學(xué)時(shí)間有限,PPT展示篇幅有限,因此要求代碼表達(dá)簡單、縮進(jìn)規(guī)范、行數(shù)較短、數(shù)據(jù)量較小。
2) 起到一定的輔助作用:操作系統(tǒng)課程中各類算法原理是重點(diǎn),Python中的語法、數(shù)據(jù)結(jié)構(gòu)、方法等并不是重點(diǎn);而且單純用代碼方式理解算法往往難度比較大,效果反而不好。因此在此處,Python程序作為文字、圖形、表格、偽碼等的輔助工具,以達(dá)到更好的教學(xué)效果。
3) 以題論題:分析以上Python程序,發(fā)現(xiàn)變量都是在程序中靜態(tài)賦值,程序靈活性較為缺乏,這是為了減少代碼行數(shù),降低程序的復(fù)雜程度。
4) 為實(shí)驗(yàn)的開展做準(zhǔn)備:每個(gè)算法的實(shí)現(xiàn)代碼都有一定的擴(kuò)展性,而且可以為同類算法提供一定的解題思路,例如在Best Fit算法代碼的基礎(chǔ)上,將排好序的列表再反序一下,就可以直接適用于最壞適應(yīng)算法。
通過教學(xué)實(shí)踐發(fā)現(xiàn),Python語言的應(yīng)用使得操作系統(tǒng)的算法講解更加直觀、更加生動、更加易懂。同時(shí)也注意到,在授課過程中不是所有的算法都需要代碼表示,過多的代碼符號表示往往增加了PPT的頁數(shù),消耗了學(xué)生的閱讀耐心,降低了教學(xué)效果。下一步將研究線上/線下混合教學(xué)模式下代碼的應(yīng)用與組織方式。