Linux操作系統是如何工作的?

姓名:*軒

學號:SA12***232

實驗五:Linux操作系統是如何工作的?破解操作系統的奧祕

要求:

1、操作系統工作的基礎:存儲程序計算機、堆棧(函數調用堆棧)機制和中斷機制;

2、在操作系統工作的基礎之上,請您簡述操作系統(內核)是如何工作,宏觀概述結合關鍵點的微觀(CS:EIP、EBP/ESP等的變化)分析。

 

“存儲程序”原理,是將根據特定問題編寫的程序存放在計算機存儲器中,然後按存儲器中的存儲程序的首地址執行程序的第一條指令,以後就按照該程序的規定順序執行其他指令,直至程序結束執行。這個原理是由美藉匈牙利科學家馮·諾依曼(J.Von Neumann)提出的,是現代計算機的理論論基礎。

存儲程序和程序控制原理的要點是,程序輸入到計算機中,存儲在內存儲器中(存儲原理),在運行時,控制器按地址順序取出存放在內存儲器中的指令(按地址順序訪問指令),然後分析指令,執行指令的功能,遇到轉移指令時,則轉移到轉移地址,再按地址順序訪問指令(程序控制)。

堆棧是函數調用時把被調用的函數所需參數壓入堆棧中,已實現函數的調用。調用者保存現場,將返回地址壓棧,再將待傳遞的參數壓棧,再跳轉到被調用函數入口開始執行。被調用者執行完成後,清空自己的棧空間,通過返回地址跳轉到調用處的下一條語句繼續執行。

什 麼是中斷,簡單地說就是CPU在忙着作自己的事情,這時候硬件(比如說鍵盤按了一下)觸發了一個電信號,這個信號通過中斷線到達中斷控制器 8259A,8259A接受到這個信號,向CPU發送INT信號申請CPU來執行剛纔的硬件操作,並且將中斷類型號也發給CPU,此時CPU就丟下自己正 在做的事情,但不是隨便丟到旁邊而是保存了當前正在做的事情的相關資料,然後去處理這個申請,根據中斷類型號找到它的中斷向量(也就是中斷程序在內存中的 地址),然後去執行這段程序(這段程序是已經寫好的,在內存中),執行完後再向8259A發送一個INTA信號表示我已經處理完你剛纔的申請。這個時候 CPU就可以繼續做它剛纔被打斷做的事情了,這個時候剛纔保存的相關信息就幫助CPU接着執行下面的程序,而不至於忘記自己剛纔正在做什麼。

linux操作系統工作原理:操作系統的cpu資源是稀有的,所以引入中斷機制,當外設向cpu發出中斷,通過對應的中斷號,找到中斷處理函數,中斷處理函數保護被中斷函數的用戶態堆棧,(通過SAVE_ALL操作,保護ebp/espcscip),然後進入中斷處理,在中斷處理進入等待階段,會調用中斷處理,用switch_to進行進行調度,在中斷後半部,通過RESTORE_ALL操作恢復現場,並IRET返回,中斷返回後,進入用戶態,繼續進入上一個被中斷的進程繼續執行。

參考資料:存儲程序 百度百科 http://baike.baidu.com/view/2083958.htm

初看Linux中斷 CSDN http://blog.csdn.net/xuexingyang/article/details/7350420

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章