Kiểm tra mức đặc quyền của đoạn lệnh

Một phần của tài liệu Bài giảng an toàn hệ điều hành (Trang 38 - 39)

Phần nhân thông thường sử dụng thanh ghi đoạn mã cho phần mã của nhân trong phần mô tả cổng. Việc chuyển đoạn mã thực hiện sẽ không xảy ra từ lớp bảo vệ cao sang mức bảo vệ thấp. Đặc quyền phải ở mức ngang bằng hay cần được nâng cấp. Trong cả hai trường hợp mức đặc quyền của đoạn mã hiện thời CPL phải bằng với mức đặc quyền của đoạn mã được chuyển tới DPL, mức đặc quyền của đoạn mã lệnh hiện thời. Nếu CPL thay đổi đồng thời dẫn đến việc thay đổi ngăn xếp và nếu việc chuyển đổi đoạn mã được thực hiện thơng qua lệnh INT thì cần đảm bảo thêm việc mức đặc quyền DPL phải giống hoặc thấp hơn của CPL. Việc này ngăn cản chương trình người dùng kích hoạt ngẫu nhiên các đoạn mã ngắt. Nếu việc kiểm tra khơng thành cơng thì lỗi bảo vệ sẽ được sinh ra.

Với các câu lệnh sử dụng các thiết bị vào/ra cũng được kiểm tra theo cách tương tự. Mỗi câu lệnh IN/OUT được liên kết với cờ trạng thái mô tả mức đặc quyền IOPL (I/O privilege level) cho biết lớp bảo vệ tương ứng. Câu lệnh vào/ra sẽ chỉ được thực hiện khi mức đặc quyền của đoạn mã nhỏ hơn hoặc bằng với mức đặc quyền của lệnh vào/ra.

3.2 Qun lý b nh

3.2.1 Bo v b nh qua đặc quyn

Với chức năng quản lý bộ nhớ của hệ điều hành, không gian nhớ của các tiến trình cần được cách lý với nhau sao cho mỗi tiến trình chỉ có thể truy nhập được khơng gian nhớ của riêng mình. Các khơng gian nhớ của các tiến trình phải được cách biệt với nhau và với phần nhân của hệ điều hành. Việc này ngăn chặn lỗi hay phần mềm xấu bên trong

39 tiến trình khơng ảnh hưởng tới các tiến trình khác và bản thân hệ điều hành. Việc cố truy nhập bộ nhớ khơng phải của tiến trình sẽ gây ra lỗi phần cứng, như là lỗi xâm phạm ô nhớ được bảo vệ, và làm cho tiến trình vi phạm phải chấm dứt hoạt động.

Các tiến trình sử dụng địa chỉ bộ nhớ lơ-gíc thay vì địa chỉ bộ nhớ vật lý mà bộ xử lý kết nối tới thông qua buýt hệ thống. Như vậy, cần phải thực hiện việc chuyển đổi (ánh xạ) từ địa chỉ lơ-gíc của chương trình thành địa chỉ vật lý thực sự trước khi thao tác đọc/ghi bộ nhớ được diễn ra.

Kiến trúc x86 sử dụng phương pháp phân đoạn để quản lý không gian nhớ chương trình nhờ vào việc tách biệt các chức năng của không gian nhớ (đoạn mã, đoạn dữ liệu, đoạn ngăn xếp) cũng như việc chia sẻ. Các đoạn chức năng được truy nhập nhờ vào các thanh ghi đoạn như thanh ghi đoạn lệnh CS hay đoạn dữ liệu DS. Các thông tin quản lý của các thanh ghi đoạn được lưu trong thẻ mô tả thanh ghi đoạn (segment descriptor).

Một phần của tài liệu Bài giảng an toàn hệ điều hành (Trang 38 - 39)

Tải bản đầy đủ (PDF)

(101 trang)