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

正文內(nèi)容

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

2025-06-28 03:55本頁面
  

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