Page 221 - Hướng Dẫn Cách Phòng Thủ Và Khắc Phục Sự Cố Máy Tính
P. 221
size=lbytes-lMbyte(2'^20) nếu G=1 thì đoạn có size=4K-
4G
4. Cò s 1 bit: s=0: đoạn kernel, s= l: đoạn bình
thường.
5. 4 bit Type: có các type sau đây; Code, Data, Task
State đây là đoạn đặc biệt chỉ có trong GDT dùng để chỉ
ndi chứa các dữ liệu liên quan các task. Khi SCHED muốn
swap task sẽ đọc trong đây là phục hồi các giá trị của task.
Local Descriptor Table đây cũng là đoạn đặt biệt chuyên
chưa các LDT của các task và chỉ có trong GDT.
6. 2 bit DPL: Quyền thấp nhất được truy xuất đoạn
này. CPU 1386 cho 4 mức quyền 0 là cao nhất tương đương
với kernel. Còn 3 là User Application. Nếu DPL cho một
segment là 0 thì User application không thể truy xuất vào
đoạn này.
7. Các bit còn lại không dùng.
Các thanh ghi segment selector (cs,ds,ss,es,gs,fs)
Mỗi khi một giá trị được set trong một thanh ghi segment
selector thì CPU sẽ tìm 8 bytes mô tả tương ứng của selector
tải vào thanh ghi nội bộ. Vì vậy việc chuyển địa chỉ không cần
truy xuất GDT hay LDT một cách thường xuyên. Mỗi thanh
ghi segment selector có 16 bít trong đó:
1. 13 bit chỉ mục:chỉ 1 mục trong GDT hay LDT
2. Cờ 1 bit TI : 0: đoạn này trong GDT, 1: đoạn này
trong LDT
3. 2 bit RPL: Từ 0-3 chỉ mức yêu cầu truy cập đoạn
này chỉ có tác dụng với c s Theo tài liệu Intel thì khi 1
process set thanh ghi c s thì RPL có thể nạp với những
mức thấp hơn hay bằng mức mà process có quyền. Theo tôi
hiểu thì như vậy một process kernel có thể chạy một đoạn
code với quyền thấp hơn ví dụ set RPL=3 chẳng hạn.
222