freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

中國科學(xué)院大學(xué)操作系統(tǒng)考試思考題答案-資料下載頁

2025-06-28 03:55本頁面
  

【正文】 、do_execve()及do_exit等。參考:首先,shell調(diào)用fork開始創(chuàng)建進(jìn)程,產(chǎn)生int 0x80軟中斷,最終映射到sys_fork(),調(diào)用find_empty_process(),為str1申請可用的pid和task[64]空閑位置,接著調(diào)用copy_process()為str1申請用來承載進(jìn)程task_struct和內(nèi)核棧的一個頁面,shell把自己的task_struct復(fù)制給str1進(jìn)程,然后修改str1的task_struct的部分?jǐn)?shù)據(jù),包括時間片,TSS字段等。接著調(diào)用copy_mem()為進(jìn)程分段(確定段基址和段限長等),然后調(diào)用copy_page_tables為str1進(jìn)程另起一套頁目錄項和頁表項,并指向shell的頁面。還要解決文件繼承的問題,然后將str1進(jìn)程TSS和LDT掛接在GDT的指定位置,完成這些后,將str1設(shè)為就緒態(tài)。接下來加載用戶程序:首先要做一些檢查工作,如可執(zhí)行文件的數(shù)據(jù)長度和代碼長度等;然后調(diào)用free_page_tables解除與shell的頁面共享關(guān)系,接著根據(jù)程序的長度重新設(shè)置LDT,調(diào)整str1的task_struct,最后調(diào)整EIP和ESP。用戶程序被調(diào)度執(zhí)行,產(chǎn)生缺頁中斷,調(diào)用do_no_page為str1申請一個內(nèi)存頁面,并把它登記在mem_map中,將str1程序從硬盤加載到新分配的頁面中,把它的物理地址映射到進(jìn)程的線性地址空間內(nèi)。執(zhí)行加載到的程序,產(chǎn)生壓棧動作,若??臻g不夠,則產(chǎn)生缺頁中斷繼續(xù)申請頁面。最后,用戶進(jìn)程調(diào)用exit退出,釋放程序所占頁面,解除與文件有關(guān)的內(nèi)容,并調(diào)用tell_father給父進(jìn)程發(fā)信號,退出后執(zhí)行調(diào)度,shell進(jìn)程收到用戶進(jìn)程發(fā)送的信號設(shè)置為就緒態(tài),待其執(zhí)行時,釋放掉用戶進(jìn)程task_struct所占用的頁面,解除與task[64]的關(guān)系,這時用戶進(jìn)程徹底退出。33. 詳細(xì)分析多個進(jìn)程(無父子關(guān)系)共享一個可執(zhí)行程序的完整過程。答:依次創(chuàng)建3個用戶進(jìn)程,每個進(jìn)程都有自己的task。假設(shè)進(jìn)程1先執(zhí)行,需要壓棧產(chǎn)生缺頁中斷,內(nèi)核為其申請空閑物理頁面,并映射到進(jìn)程1的線性地址空間。這時產(chǎn)生時鐘中斷,輪到進(jìn)程2執(zhí)行,進(jìn)程2也執(zhí)行同樣邏輯的程序。之后,又輪到進(jìn)程3執(zhí)行,也是壓棧,并設(shè)置text??梢姡齻€進(jìn)程雖程序相同,但數(shù)據(jù)獨立,用TSS和LDT實現(xiàn)對進(jìn)程的保護(hù)。34. 缺頁中斷是如何產(chǎn)生的,頁寫保護(hù)中斷是如何產(chǎn)生的,操作系統(tǒng)是如何處理的?答:缺頁中斷:每個頁目錄項和頁表項都有個標(biāo)志位P,如果和一個頁面建立了映射關(guān)系,P位置1,否則置0。MMU在解析線性地址時,若發(fā)現(xiàn)某個表項的P位為零,說明沒有對應(yīng)頁面,就會產(chǎn)生缺頁中斷。操作系統(tǒng)會調(diào)用_do_no_page為進(jìn)程申請空閑頁面,將程序加載到新分配的頁面中,并建立頁目錄表頁表頁面的三級映射管理關(guān)系。頁寫保護(hù)異常:假設(shè)兩個進(jìn)程共享一個頁面,該頁面處于寫保護(hù)狀態(tài)即只讀,此時若某一進(jìn)程執(zhí)行寫操作,就會產(chǎn)生“頁寫保護(hù)”異常。操作系統(tǒng)會調(diào)用_do_wp_page,為該進(jìn)程申請空閑頁面,將該進(jìn)程的頁表指向新申請的頁面,然后將原頁表的數(shù)據(jù)復(fù)制到新頁面中,同時將原頁面的引用計數(shù)減1。該進(jìn)程得到自己的頁面,就可以執(zhí)行寫操作。35. 為什么要設(shè)計緩沖區(qū),有什么好處?答:緩沖區(qū)的作用主要體現(xiàn)在兩方面:(1) 形成所有塊設(shè)備數(shù)據(jù)的統(tǒng)一集散地,操作系統(tǒng)的設(shè)計更方便,更靈活;(2) 數(shù)據(jù)塊復(fù)用,提高對塊設(shè)備文件操作的運行效率。在計算機(jī)中,內(nèi)存間的數(shù)據(jù)交換速度是內(nèi)存與硬盤數(shù)據(jù)交換速度的2個量級,如果某個進(jìn)程將硬盤數(shù)據(jù)讀到緩沖區(qū)之后,其他進(jìn)程剛好也需要讀取這些數(shù)據(jù),那么就可以直接從緩沖區(qū)中讀取,比直接從硬盤讀取快很多。如果緩沖區(qū)的數(shù)據(jù)能夠被更多進(jìn)程共享的話,計算機(jī)的整體效率就會大大提高。同樣,寫操作類似。36. 操作系統(tǒng)如何利用buffer_head中的 b_data,b_blocknr,b_dev,b_uptodate,b_dirt,b_count,b_lock,b_wait管理緩沖塊的?答:b_data指向緩沖塊,用于找到緩沖塊的位置。進(jìn)程與緩沖區(qū)及緩沖區(qū)與硬盤之間都是以緩沖塊為單位進(jìn)行數(shù)據(jù)交互的,而b_blocknr,b_dev唯一標(biāo)識一個塊,用于保證數(shù)據(jù)交換的正確性。另外緩沖區(qū)中的數(shù)據(jù)被越多進(jìn)程共享,效率就越高,因此要讓緩沖區(qū)中的數(shù)據(jù)塊停留的時間盡可能久,而這正是由b_blocknr,b_dev決定的,內(nèi)核在hash表中搜索緩沖塊時,只看設(shè)備號與塊號,只要緩沖塊與硬盤數(shù)據(jù)的綁定關(guān)系還在,就認(rèn)定數(shù)據(jù)塊仍停留在緩沖塊中,就可以直接用。b_uptodate與b_dirt,是為了解決緩沖塊與數(shù)據(jù)塊的數(shù)據(jù)正確性問題而存在的。b_uptodate針對進(jìn)程方向,如果b_uptodate為1,說明緩沖塊的數(shù)據(jù)已經(jīng)是數(shù)據(jù)塊中最新的,可以支持進(jìn)程共享緩沖塊中的數(shù)據(jù);如果b_uptodate為0,提醒內(nèi)核緩沖塊并沒有用綁定的數(shù)據(jù)塊中的數(shù)據(jù)更新,不支持進(jìn)程共享該緩沖塊。b_dirt是針對硬盤方向的,b_dirt為1說明緩沖塊的內(nèi)容被進(jìn)程方向的數(shù)據(jù)改寫了,最終需要同步到硬盤上;b_dirt為0則說明不需要同步b_count記錄每個緩沖塊有多少進(jìn)程共享。b_dirt大于0表明有進(jìn)程在共享該緩沖塊,當(dāng)進(jìn)程不需要共享緩沖塊時,內(nèi)核會解除該進(jìn)程與緩沖塊的關(guān)系,并將b_count數(shù)值減1,為0表明可以被當(dāng)作新緩沖塊來申請使用。b_lock為1說明緩沖塊正與硬盤交互,內(nèi)核會攔截進(jìn)程對該緩沖塊的操作,以免發(fā)生錯誤,交互完成后,置0表明進(jìn)程可以操作該緩沖塊。b_wait記錄等待緩沖塊的解鎖而被掛起的進(jìn)程,指向等待隊列前面進(jìn)程的task_struct。
點擊復(fù)制文檔內(nèi)容
教學(xué)教案相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1