版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、表1 ELF目標文件格式Spawn_Init_Process() Start_Kernel_Thread()Spawner()Read_Fully()Parse_ELF_Excutable()Spawn_Program()currentrunwait出現需要等待的事件等待的事件發(fā)生調度時間片到等圖5.1 GeekOS進程狀態(tài)轉換 GeekOS系統(tǒng)最早創(chuàng)建的內核進程有Idle、Reaper和Main三個進程,它們由Init_Scheduler函數創(chuàng)建:最先初始化一個核態(tài)進程mainThread,并將該進程作為當前運行進程,函數最后還調用Start_Kernel_Thread 函數創(chuàng)建了兩個系統(tǒng)進
2、程Idle和Reaper。 所以,Idle、Reaper和Main三個進程是系統(tǒng)中最早存在的進程。新建 include/kthread.h中定義,具體結構如下:struct Kernel_Thread ulong_t esp; / 進程的內核堆棧esp指針 volatile ulong_t numTicks; / 計時器 int priority; / 進程優(yōu)先級 DEFINE_LINK(Thread_Queue, Kernel_Thread);/ 指針指向進程隊列下一進程 void* stackPage; / 內核堆棧頁指針 struct User_Context* userContext;
3、 / 用戶進程上下文 struct Kernel_Thread* owner; / 父進程指針 int refCount; / 引用計數 bool alive; / 是否活躍 struct Thread_Queue joinQueue; / 加入隊列 int exitCode; / 返回代碼 int pid; / 進程ID DEFINE_LINK(All_Thread_List, Kernel_Thread); / 全局進程鏈表指針#define MAX_TLOCAL_KEYS 128 const void* tlocalDataMAX_TLOCAL_KEYS;/ 本地信息 int curre
4、ntReadyQueue; / 進程當前所在的運行隊列的索引編號 bool blocked; / 是否被阻塞; 在GeekOS中為了區(qū)分用戶態(tài)進程和內核進程,在Kernel_Thread結構體中設置了一個字段 userContext,指向用戶態(tài)進程上下文。對于內核進程來說,這個指針為空,而用戶態(tài)進程都擁有自己的用戶上下文(User_Context)。因此,在GeekOS中要判斷一個進程是內核進程還是用戶態(tài)進程,只要通過userContext字段是否為空來判斷就可以了。 圖10.1 用戶態(tài)進程結構圖10.2 GDT、LDT和User_Context的關系Spawn () Read_Fully()
5、Parse_ELF_Excutable()Start_User_Thread ()Setup_User_Thread ()Load_User_Program ()Attach_User_Context ()線性地址到物理地址的轉換過程n操作系統(tǒng)將需要在磁盤設備上創(chuàng)建一個操作系統(tǒng)將需要在磁盤設備上創(chuàng)建一個page file文件文件暫時保存從內存中替換出去的頁,暫時保存從內存中替換出去的頁, n實現一個類實現一個類LRU算法在內存中選取一個替換頁把它寫算法在內存中選取一個替換頁把它寫到磁盤的到磁盤的page file文件中。文件中。n缺頁中斷處理缺頁中斷處理 表12-1 缺頁處理表n在在“/src
6、/geekos/mem.c”文件中,已經定義了一個函數文件中,已經定義了一個函數Alloc_Pageable_Page實現交換一頁到磁盤的操作,具體執(zhí)行實現交換一頁到磁盤的操作,具體執(zhí)行步驟如下:步驟如下:調用調用mem.c文件中已經實現的文件中已經實現的Find_Page_To_Page_Out函數來確定要替換的頁(這個函數依賴于頁數據結構中的函數來確定要替換的頁(這個函數依賴于頁數據結構中的clock域)。域)。調用調用paging.c文件中已經實現的文件中已經實現的Find_Space_On_Paging_File函數在函數在page file中找到空閑中找到空閑的存儲空間。的存儲空間。
7、調用調用paging.c文件中已經實現的文件中已經實現的Write_To_Paging_File函函數把被替換的頁寫到數把被替換的頁寫到page file文件中。文件中。修改頁表的相應表項,清除頁存在的標志,標識為此頁在內修改頁表的相應表項,清除頁存在的標志,標識為此頁在內存為不存在。存為不存在。修改頁表項的頁基地址為包含這一頁的第一個磁盤塊號。修改頁表項的頁基地址為包含這一頁的第一個磁盤塊號。修改頁表項的修改頁表項的kernelInfo位標識為位標識為KINFO_PAGE_ON_DISK狀態(tài)(標識這一頁是在磁盤上存狀態(tài)(標識這一頁是在磁盤上存在,而不是沒有效)。在,而不是沒有效)。調用調用l
8、owlevel.asm文件中已經實現的文件中已經實現的Flush_TLB來刷新來刷新TLB。用戶進程調用C語言庫函數Read函數軟件中斷,內核調用Sys_Read()函數虛擬文件系統(tǒng)層的Read()函數讀出文件的數據Sys_Read()函數將數據拷貝到用戶緩沖區(qū)GOSFS讀文件過程系統(tǒng)已經實現系統(tǒng)已經實現PFAT文件系統(tǒng),用戶要實現的是文件系統(tǒng),用戶要實現的是GOSFS文文件系統(tǒng),可依照件系統(tǒng),可依照PFAT文件的實現原理文件的實現原理MAX_FILES_PER_DIR GOSFS_Dir_Entryfilename128flagssizeacl10blockList10目錄項GOSFS_Di
9、r_EntryGOSFS_Dir_EntryGOSFS_Dir_EntryGOSFS_Dir_EntryGOSFS_Dir_EntryGOSFS_Dir_EntryGOSFS_Dir_Entry目錄塊文件目錄 數據塊數據塊01234567894KB data blockGOSFS_Dir_Entry.blockList104KB data block4KB data block磁盤= 已分配12KB 大小的文件4KB data block4KB data block4KB data block磁盤0123456789001234.1022102304KB data block4KB data block40KB 大小的文件一級間接索引塊.GOSFS_Dir_Entry.blockList104KB data block4KB data block4KB data
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年1月A股及港股月度金股組合:關注“啞鈴”型配置
- 單位管理制度收錄大合集人事管理篇十篇
- 2023-2029年中國非布司他片行業(yè)市場發(fā)展監(jiān)測及投資戰(zhàn)略咨詢報告
- 2025年電動工具零部件市場分析報告
- 2024年山東鋁業(yè)職業(yè)學院單招職業(yè)適應性測試題庫附答案
- 宮頸癌早期預防和篩查
- 2024年08月山東日照銀行招考筆試歷年參考題庫附帶答案詳解
- 廣州軟件學院《高級語言程序設計(VB)》2023-2024學年第一學期期末試卷
- 2025至2031年中國丙烯酸-丙烯酸羥丙酯共聚物行業(yè)投資前景及策略咨詢研究報告
- 2024至2030年中國蛇行簧成型機數據監(jiān)測研究報告
- 2023-2024學年浙江省富陽市小學數學五年級上冊期末通關試題
- TTAF 092-2022 移動終端融合快速充電測試方法
- GB/T 9410-2008移動通信天線通用技術規(guī)范
- GB/T 5343.2-2007可轉位車刀及刀夾第2部分:可轉位車刀型式尺寸和技術條件
- GB/T 32285-2015熱軋H型鋼樁
- GB/T 13772.2-1992機織物中紗線抗滑移性測定方法模擬縫合法
- SVG運行與維護課件
- 企業(yè)大學商學院建設方案
- 部編人教版 六年級下冊道德與法治課堂作業(yè)(含答案)
- 幼兒園大班數學:《長頸鹿的水果店》 課件
- 獨生子女證明(模板)
評論
0/150
提交評論