Thứ Ba, 4 tháng 6, 2013

Hardware support [Windows Internal]

Kernel trừu tượng hay là cô lập executive và device drivers ra khỏi sự khác nhau giữa các kiến trúc phần cứng được hỗ trợ bởi Windows. Công việc đó bao gồm việc xử lý các sự khác nhau trong các hàm như là xử lý ngắt, exception dispatching, và multiprocessor synchronization.

Thậm chí đối với các hàm liên quan đến hardware, việc thiết kế kernel cố gắng tối đa lượng code chung. Kernel hỗ trợ một tập hợp các giao tiếp, chúng portable và có ý nghĩa giống hệt nhau thông qua các kiến trúc. Hầu hết code để thực hiện giao tiếp portable đó cũng là giống hệt nhau qua các kiến trúc.

Một vài trong những interface kể trên được implement khác nhau trên các kiến trúc khác nhau, hoặc một vài trong những interfaces này được implement với code cho một kiến trúc xác định. Nhiều interfaces độc lập với kiến trúc có thể được gọi trên bất cứ máy nào, và ý nghĩa của các interfaces này sẽ là giống hoặc không giống code phụ thuộc vào kiến trúc. Một vài kernel interfaces (như là spinlock routines) được implement trong HAL bởi vì việc implement của chúng có thể khác nhau trên các hệ thống với cùng một họ kiến trúc.

Kernel còn chứa một lượng nhỏ code với các giao tiếp x86 để hỗ trợ cho các chương trình MS-DOS xưa. Các giao tiếp x86 không là portable, chúng không thể được gọi trên các máy dựa trên bất cứ kiến trúc khác, chúng sẽ không được hiện diện. Cho ví dụ, x86 code hỗ trợ các lời gọi để thao tác các bảng mô tả toàn cục (global descriptor tables) (GDTs) và LDTs, các đặc tính phần cứng của x86.

Các ví dụ khác của architecture-specific code trong kernel bao gồm interface để cung cấp translation buffer và CPU cache support. Việc support này yêu cầu code khác nhau cho các kiến trúc khác nhau bởi vì cách caches được implement.

Một ví dụ khác là context switching. Mặc dù tại high level các giải thuật giống nhau được sử dụng cho việc chọn thread và context switching (context của thread phía trước được lưu lại, context của thread mới được nạp vào, và thread mới bắt đầu), có các sự khác biệt liên quan đến kiến trúc giữa việc implementation trên các processors khác nhau. Bởi vì context được mô tả bởi trạng thài processor (các thanh ghi và tương tự), những gì được lưu và được nạp khác nhau phụ thuộc vào kiến trúc.

Không có nhận xét nào:

Đăng nhận xét