編譯時間。如果在編譯時知道進程將在內存中駐留 ,則可以生成絕對代碼。例如,如果您知道用戶進程將從位置R開始駐留的 ,則生成的 編譯器代碼將從該位置開始並從那裏向上延伸。如果在 的某個較晚的時間,的起始位置發生變化,那麼將需要 重新編譯此代碼。 MS-DOS .COM格式的程序在編譯時綁定在 。關於地址綁定的困惑
- 什麼可以是起始位置改變的原因?由於上下文切換/交換,它可以是 嗎?
- 絕對代碼是指二進制代碼嗎?
加載時間。如果在編譯時未知進程將在內存中駐留 ,那麼編譯器必須生成可重定位代碼。在這種情況下, 最終綁定會延遲到加載時間。如果起始地址發生變化,我們需要 重新加載用戶代碼來合併此更改的值。
- 可重定位代碼與絕對代碼有什麼不同?它是否包含有關基地,限制和重新安置登記的信息?
- 如何重新加載更有效然後重新編譯,因爲他們提到只有重新加載意味着沒有重新編譯只重新加載?
執行時間。如果可以在執行過程中將移動到從 一個內存段到另一個內存段,則綁定必須延遲到運行 時間。 。
爲什麼在執行過程中需要移動一個進程?
編譯時和加載時地址綁定方法生成相同的邏輯和物理地址。但是,執行時地址綁定方案導致不同的邏輯和物理地址。
編譯和加載時間方法如何生成相同的邏輯和物理地址?
這是我大學推薦的教科書(OS概念SILBERSCHATZ,GALVIN,GAGNE)。你能推薦一本更好的書嗎? – user5951764
這解釋了它。 VAX/VMS操作系統內部成本低廉。 – user3344003