[書]操作系統真象還原 -- 第11、12章 用戶進程及調度、系統調用、內存管理

======  第 12 章 系統調用、內存管理 ======

GITHUB: https://github.com/trb331617/os_elephant/tree/master/chapter_12

系統調用:getpid, write(printf), malloc/free

完善了內存管理:之前實現的是以4KB頁爲單位的內存申請,在此基礎上,實現了任意內存大小的申請、釋放,並實現了用戶接口malloc() 和free()

運行截圖:

    在內核線程的main()函數中,創建了2個內核線程、2個用戶進程,

1) 2個內核線程,都調用malloc申請了254、255、256字節的內存。內核線程是共享內核的1GB內存空間(虛擬地址必須唯一),所以運行截圖中可以看到:這2個內核線程申請到的內存基址,總體是連續累加的,以0x100(即256Bytes)爲單位。

2) 2個用戶進程,都調用malloc申請了254、255、256字節的內存。用戶進程都有自己獨立的4GB虛擬內存空間,所以運行截圖中可以看到:這2個用戶進程申請到的內存基址是各自獨立的,並且可以是相同的虛擬地址。

 

======  第 11 章 用戶進程的創建與調度 ======

GITHUB: https://github.com/trb331617/os_elephant/tree/master/chapter_11

運行截圖:

    在kernel的main()函數中創建了2個用戶進程(分別循環執行a++、b++),創建了2個內核線程(分別打印a、b)

    用戶進程的priority和ticks設置爲3,內核現成的設置爲13。所以,運行結果中,打印更快、增長更慢。

p.s.: 由於文件系統尚未實現,這裏暫時用函數代替file來創建用戶進程。

代碼結構:

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