




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第3章操作系統及應用程序開發2024西安交通大學13.1操作系統概述3.1.1操作系統的概念操作系統是為管理計算機中的硬件和軟件資源,合理組織計算機的工作流程,為用戶提供功能豐富、使用方便的運行環境的一種系統軟件。操作系統的功能包括五大模塊:進程管理、存儲管理、文件管理、設備管理和用戶接口。西安交通大學23.1.2操作系統的類型單道批處理方式多道程序系統分時操作系統實時操作系統微機操作系統分布式操作系統嵌入式操作系統西安交通大學33.1.3常見操作系統簡介1.Windows操作系統WindowsNT(Newtechnology)系列操作系統的體系結構西安交通大學4Windows編程的一些概念句柄消息事件MFC(MicrosoftFoundationClass,微軟基礎類庫)tkinter、pyQT西安交通大學52.Ubuntu3.Android西安交通大學63.2操作系統的資源管理3.2.1進程管理1.程序的執行方式(1)順序執行順序性封閉性可再現性(2)并發執行間斷(異步)性失去封閉性失去可再現性西安交通大學72.進程一個進程就是程序的一次執行,是操作系統進行資源調度和分配的獨立單位。(1)進程的特點動態性并發性獨立性異步性結構性制約性(2)進程的狀態就緒狀態運行狀態等待狀態西安交通大學8(3)進程的結構1)進程描述信息2)進程調度信息3)進程控制信息4)處理機狀態信息(4)進程的調度1)先來先服務2)最短作業優先3)時間片輪轉法4)多級隊列5)優先級算法西安交通大學93.進程與程序區別進程是動態的,程序是靜態的。進程是暫時的,程序是永久的。進程與程序的組成不同。進程與程序可以相互轉化。西安交通大學103.2.2存儲管理1.存儲管理的主要任務(1)內存空間的分配與釋放(2)內存空間的地址變換(3)內存空間的分區保護(4)內存空間的擴充2.存儲管理的主要方法(1)單一連續存儲管理(2)分區式存儲管理(3)頁式存儲管理(4)段式存儲管理(5)虛擬存儲管理西安交通大學113.Windows的存儲管理請求調頁簇式的頁式虛存管理Windows為每個進程分配的是虛擬內存空間全局內存局部內存在Windows操作系統下,存儲器被保護起來,程序和用戶無法直接訪問西安交通大學123.2.3設備管理1.設備的分類按使用方式:獨占設備和共享設備;按處理速度:慢速設備和快速設備;按數據組織和存取方式:字符設備和塊設備;按通信方式:串行設備和并行設備;按應用范圍:通用設備和專用設備;按隸屬關系:系統設備和用戶設備;按實體程序:真實設備和虛擬設備西安交通大學132.設備的輸入/輸出(Input/Output,I/O)控制方式1)程序直接控制方式。2)中斷控制方式。中斷中斷服務程序3)DMA(directmemoryaccess,直接存儲器訪問)控制方式4)通道控制方式。西安交通大學143.設備管理的方式設備分配原則是根據設備本身的特性、用戶要求和系統配置情況決定的。總的原則是:高效、安全、與物理設備無關。設備分配原則的因素1)I/O設備的固有屬性2)I/O設備分配算3)設備分配中的安全性4)與設備無關性西安交通大學154.設備分配的步驟1)根據進程提出的物理設備名檢索系統設備表SDT(SystemDeviceTable),從中找到該物理設備的設備控制表DCT(DeviceControlTable)。2)根據DCT中的狀態信息,了解該設備是否忙。3)當設備分配給請求I/O的進程后,從該設備的設備控制表(DCT)中與該設備相連的控制器表指針一欄可知與此設備相連的控制器控制表(COCT,ControllerControlTable)。4)檢查該控制器控制表中的狀態信息來判斷控制器是否忙。5)通過控制器控制表中的通道表指針,檢查與此控制器相連的通道的狀態。西安交通大學165.設備驅動程序設備驅動程序是I/O進程與設備控制器之間的通信程序,它接收上層軟件發來的抽象I/O要求(如read或write命令)轉換為具體要求后,發送給設備控制器,設置相關參數,啟動設備并完成輸入/輸出。6.Windows的設備管理Windows操作系統通過設備驅動程序來完成設備的啟動、操作、數據流向控制和設備的關閉工作。Windows采用分層驅動程序的思想,只有最底層的硬件設備驅動程序訪問硬件設備,高層驅動程序都是進行高級I/O請求到低級I/O請求的轉換工作,各層驅動程序間的I/O請求通過I/O管理器進行。西安交通大學173.2.4文件管理操作系統中與文件管理有關的程序和所管理的文件稱為文件系統1.文件系統的功能2.文件結構邏輯結構物理結構流式文件記錄式文件3.文件目錄系統中的文件的文件名、文件的物理地址和文件屬性等信息的表格。卷(邏輯盤)、文件夾、子文件夾、文件西安交通大學184.DOS(DiskOperatingSystem)的文件管理(1)DOS的文件名8.3格式,統配符。(2)DOS的文件目錄樹形目錄結構,32字節(3)DOS文件的物理結構引導區(BOOT區)文件分配表區(FAT區)數據區(DATA區)FAT16西安交通大學19DOS磁盤數據結構
5.Windows的文件管理1)FAT32FAT32的結構和FAT16是一致的。FAT的每個登記項占4字節(32位),可以支持更大的分區,單個文件也可以更大。2)NTFSNTFS分區由引導區、主文件表(MFT)和文件區組成。引導區包括一個扇區的主引導記錄(MasterBootRecord,MBR)和不超過15個扇區的Windows啟動管理器。主文件表(MainFileTable,MFT)是保存文件信息的區域。NTFS所有的數據都存儲在文件中,目錄也是文件,甚至引導區也是一個文件。容錯性、安全性、文件壓縮、磁盤配額、可靠性西安交通大學203.2.5用戶接口命令接口、程序接口、圖形接口西安交通大學213.3基于Python的Windows操作系統應用程序設計3.3.1線程和進程1.線程程序設計threading模塊(1)調用Thread類的構造函數創建線程Thread類構造函數__init__(self,group=None,target=None,name=None,args=(),kwargs=None,*,daemon=None)【例3-1】編寫程序,創建三個線程,模擬三臺機器,它們每隔1-3秒的時間生產1-5件產品。顯示線程名作為“機器名”。西安交通大學22西安交通大學23(2)繼承Thread類創建線程類繼承Thread類,自定義一個線程類重寫從父類繼承得到的run()方法【例3-2】通過創建Thread的子類,創建線程,實現例3-1的功能。西安交通大學24西安交通大學25(3)守護線程所謂守護線程(或后臺線程),就是為其他線程提供服務的線程,其特點是如果被服務的線程不結束,則守護線程不能結束,當被服務的線程結束時,守護線程結束。守護線程也是線程,可以象前面一樣創建,在啟動前將其daemon屬性設置為True再啟動【例3-3】在例3-1的基礎上,創建一個守護線程,模擬一個監控機構,它每隔一個隨機時間顯示“Operatingnormally”,其他機器停止運行,監控也停止。西安交通大學26西安交通大學27(4)基于隊列的線程同步隊列同步是Python中線程同步的一種方法,線程產生的資源放入隊列,消費的資源從隊列中取出,隊列機制保證隊列滿時和隊列空時線程等待。【例3-4】編程模擬3個生產者,它們每個1-2秒生產一件產品;5個消費者,每個1-3秒消費一件產品。庫房大小為10。庫房滿時不再生產,庫房空時不能消費。西安交通大學28西安交通大學29西安交通大學302.進程程序設計multiprocessing模塊(1)通過Process實例創建進程Process類的構造函數__init__(self,group=None,target=None,name=None,args=(),kwargs{})【例3-5】啟動兩個進程,模擬兩臺同時運行的機器。每臺機器每隔1-5秒的隨機時間隨機生產1-3件產品。西安交通大學31西安交通大學32(2)通過Process的子類創建進程【例3-6】通過創建Process的子類創建例3-5中的進程。定義Process的派生類,重寫run()方法西安交通大學33西安交通大學34(3)進程間通信multiprocessing提供的進程間通信方法之一是隊列。通過multiProcessing中的Queue類創建隊列對象,共享信息的進程可以在隊列中插入和取出數據。【例3-7】使用進程的隊列實現生產和消費模型的模擬。西安交通大學35西安交通大學36西安交通大學373.進程池和線程池所謂線程池(進程池)就是預先創建好若干個線程(進程),一般與CPU的核心數量相同,然后按需分配給需要處理的任務,任務結束并不關閉,而是將線程(進程)放回線程池(進程池)中等待任務。concurent.futures模塊Executor類,使用其子類ThreadPoolExecutor和ProcessPoolExecutor創建線程池任務執行器和進程池任務執行器。其方法有submit(fn,*args,**kwargs)map(func,*iterables,timeout=None,chunksize=1)shutdown(wait=True)西安交通大學38Future類,表示執行的任務,其實例由Executor.submit()創建,主要方法:cancel()
running()done()result(timeout=None)add_done_callbaxck(fn)【例3-8】使用進程池尋找[10000000,10000200)之間的素數。西安交通大學39西安交通大學403.3.2內存管理和內存文件1.Python內存管理Python采用內存池機制。垃圾回收機制2.字符串、整數和浮點數與字節序列的轉換字符串和字節序列的相互轉換str.encode(encoding='utf-8')
bytes(str,encoding='utf-8')
s=b'str'bytestr.decode(encoding='utf-8')整數和字節序列的相互轉換a.to_bytes(k,byteorder='big',signed='False')int.from_bytes(bytes,byteorder='big',signed='False')西安交通大學41浮點數和字節序列的相互轉換內置模塊struct中的pack和unpack函數,它們將數值數據轉換為字節序列。struct.pack(fmt,v1,v2,…)struct.unpack(fmt,bugger)西安交通大學423.內存文件StringIO類用于文本流,BytesIO類用于二進制流,它們在io模塊中。mf=io.StringIO()#返回內存文本文件對象bf=io.BytesIO()#返回內存二進制文件對象西安交通大學431)StringIO類。使用StringIO類創建文本內存文件使用read()、readline()、readlines()、getvalue()方法讀取數據使用write()、writelines()寫入數據。【例3-9】編寫程序,創建內存文本文件,使用各種寫入語句將下面的詩寫入文件,使用各種讀取語句讀出并顯示。東欄梨花蘇軾〔宋代〕梨花淡白柳深青,柳絮飛時花滿城。惆悵東欄一株雪,人生看得幾清明。西安交通大學442)BytesIO類。創建二進制內存文件,常用方法:write(b)
read(size=-1)
readline(size=-1)
readlines(hint=-1)
getvalue()
seek()close()西安交通大學45【例3-10】編寫程序,使用io.BytesIO類創建二進制內存文件,將整數、實數、字符串數據寫入、讀出并顯示出來。西安交通大學463.內存映像文件Python使用mmap模塊的mmap類實現內存映像的操作,其構造格式為:classmmap.mmap(fileno,length,tagname=None,access[,offset=0])使用read([n])、readline()、write()、seek()、find()、move()、close()等方法讀若干字節,讀一行,寫若干字節,定位文件指針,查找、移動數據,關閉映像文件。【例3-11】使用內存映像文件對文件進行讀寫。編寫程序,先使用常規方法寫一個文本文件,內容如下:shaanxihistorymuseum陜西考古博物館關閉后再使用open()打開,使用mmap.mmap建立內存映像文件,按行讀取其中的內容,解碼后顯示。然后通過下標訪問修改第1行每個單詞的首字母大寫,將第2行改為“陜西歷史博物館”。西安交通大學473.3.3文件管理相關的模塊osos.pathglobshutilsubprocess西安交通大學483.3.4動態鏈接庫和WindowsAPIctypes使用cdll和windll兩個函數加載動態鏈接庫。cdll用于cdecl調用約定,windll用于stdcall調用約定。函數的調用約定主要指參數的傳遞方式和清理棧的方式。由于動態鏈接庫函數的參數類型與Python的參數類型不一致,所以調用動態鏈接庫函數時通常需要將Python類型轉換為函數需要的類型或創建函數需要的類型。西安交通大學49西安交通大學50
1)簡單數據類型簡單類型的參數,直接使用ctypes中的類型構造函數創建或初始化對象,使用對象的value屬性為對象賦值或獲得對象的值。西安交通大學51
2)數組通過ctypes簡單類型的類型名乘以一個整數創建固定長度的數組。可以在創建數組時初始化。對字符數組,可以用屬性value賦值和輸出。西安交通大學523)指針ctypes.pointer(obj)函數創建ctypes對象的指針實例,它的參數是一個對象;POINTER(type)創建指針類型,它的參數是一個類型。西安交通大學534)創建內存區域ctypes.create_string_butter(init_or_size,size=None)創建一塊可變的字符緩沖區,返回值是c_char類型的數組西安交通大學54
5)結構體結構體是由一組數據組合而成的整體,常表示現實中的一個對象的一組屬性的值,如('張三','男',20,172)C語言的結構體的定義格式西安交通大學55實現ctypes類型的結構體,需要基于ctypes中的父類Structure寫一個派生類,子類必須定義_fields_屬性,,其值是兩元組的列表,每個兩元組包含一個名字域和一個類型域,它們是字段的名字和類型。西安交通大學562.調用C語言編寫的動態鏈接庫【例3-13】用C語言編寫動態鏈接庫文件,其中有4個函數,分別實現兩個整數的和、交換兩個整型變量的值、對整數數組排序、復制字符串等功能,其C語言的格式如下:intmyadd(inta,intb); voidmyswap(int*a,int*b); voidmysort(inta[],intn); char*mystrcpy(char*s1,char*s2); 將其編譯為動態鏈接庫,在Python中加載動態鏈接庫,調用函數驗證其功能。本例創建cdecl調用約定的庫函數,使用cdll加載器的LoadLibrary(name)方法加載動態鏈接庫西安交通大學57①編寫動態鏈接庫文件。②編譯C語言程序,生成動態鏈接庫文件。③編寫Python程序。西安交通大學583.Windows下調用操作系統的API函數Windows操作系統的API一般以DLL的形式放在安裝目錄的System32文件夾中,擴展名名為.dll,例如kernel32.dllWindowsAPI使用stdcall調用約定,在Python中使用windll加載器的LoadLibrary()方法加載
【例3-14】編寫Python程序,通過WindowsAPI的調用,(1)獲取計算機的名稱;(2)獲取E盤的磁盤空間大小、空閑空間和用戶可用空間大小等信息;(3)獲取內存的大小和空閑內存的大小。西安交通大學59西安交通大學60西安交通大學613.3.5圖形界面1.主窗口內置模塊tkinter【例3-15】編寫窗口程序,窗口大小300X200,在屏幕(100,10)位置顯示該窗口,窗口標題“tkinterPythonGUI應用程序”。西安交通大學622.布局西安交通大學63(1)pack方式【例3-16】創建窗口,在窗口中顯示四個按鈕,按鈕文本依次為青龍、白虎、朱雀、玄武。(2)grid布局【例3-17】編寫GUI程序,在窗口中顯示如下形式的按鈕。西安交通大學64(3)place布局place布局直接設定組件的位置。其常用選項有:x,設定該控件的水平偏移位置,單位為像素。y,設定該控件的垂直偏移位置,單位為像素。西安交通大學653.事件處理(1)事件表示鼠標事件包括:<Button-1>表示按下鼠標左鍵。<Double-Button-1>表示雙擊鼠標左鍵。<ButtonRelease-n>,釋放鼠標按鈕。<Double-Button-n>,雙擊鼠標按鈕。<Motion>,移動鼠標。<Bn-Motion>,按鈕鼠標按鈕,并移動鼠標。<Enter>,鼠標進入。<Leave>,鼠標離開。<MouseWheel>,鼠標滾輪滾動。西安交通大學66鍵盤事件包括:<KeyPress-key>或<Key-key>或<key>,特定鍵按下,其中key為某按鍵,如w、W等。<KeyRelease-key>特定鍵松開。窗口事件主要包括:<Configure>,改變窗口的位置和
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 藥渣委托處理協議書
- 酒店事故賠償協議書
- 路政改革擴建協議書
- 酒店經營管理協議書
- 鄰居違建協商協議書
- 門面轉讓退款協議書
- 項目資料移交協議書
- 解除店長職位協議書
- 鄰居物資互換協議書
- 隱名股東股東協議書
- 部編版八年級下冊歷史期末100道選擇題專練
- 改進工作作風自查報告(11篇)
- 典型任務-無線調車燈顯設備使用講解
- 24春國家開放大學《機械CADCAM》形考任務1-3參考答案
- 山東省煙臺市牟平區(五四制)2023-2024學年九年級下學期期中考試數學試題
- 施工升降機安裝驗收表
- 2024年咸陽職業技術學院單招職業技能測試題庫及答案解析
- RBA-6.0-培訓教材課件
- 《客艙安全與應急處置》-課件:滅火設備:機載滅火瓶
- 2020年10月自考00445中外教育管理史試題及答案含解析
- 國際關系史智慧樹知到期末考試答案2024年
評論
0/150
提交評論