1. 從電腦如何工作開始 首先讓程式進入記憶體 重定位:修改程式中的地址(是相對地址) 程式載入後還需要移動 重定位的最合適時機 運行時重定位 首先在記憶體中找一段空閑的記憶體,然後把這段空閑記憶體的地址找到例如起始地址1000,然後把這個1000賦給PCB,因為創建了進程自然就有了PCB,這個起始地址就 ...
1. 從電腦如何工作開始
首先讓程式進入記憶體
重定位:修改程式中的地址(是相對地址)
程式載入後還需要移動
重定位的最合適時機---運行時重定位
首先在記憶體中找一段空閑的記憶體,然後把這段空閑記憶體的地址找到例如起始地址1000,然後把這個1000賦給PCB,因為創建了進程自然就有了PCB,這個起始地址就作為基地址,然後PC置好初始地址開始執行。
把程式放到找到的空閑記憶體中,每次執行都有進行地址翻譯
基地址+偏移量
思路如下:
當進行交換時
2. 引入分段
是將整個程式一起載入記憶體中嗎?不是
程式員眼中的程式
每一個段都有一個基址
GDT+LDT
操作系統這個表放在GDT里,而每個進程有自己的LDT表(進程段表,在PCB中)
此時轉換的時候不是整個程式,而是程式中對應的段進行轉換