Bước tới nội dung

Không gian người dùng

Bách khoa toàn thư mở Wikipedia

Một hệ điều hành máy tính hiện đại thường tách biệt bộ nhớ ảo thành kernel spaceuser space.[a] Chủ yếu, sự tách biệt này nhằm cung cấp bảo vệ bộ nhớ và phần cứng khỏi các hành vi phần mềm độc hại hoặc sai lầm.

được dành riêng để chạy kernel hệ điều hành đặc quyền, phần mở rộng kernel và hầu hết các trình điều khiển thiết bị. Ngược lại, user space là vùng nhớ nơi phần mềm ứng dụng và một số trình điều khiển thực thi.

Tổng quan

[sửa | sửa mã nguồn]

Thuật ngữ userland (hay user space hoặc không gian người dùng)đề cập đến tất cả các mã chạy bên ngoài kernel của hệ điều hành.[1] Userland thường đề cập đến các chương trình và thư viện khác nhau mà hệ điều hành sử dụng để tương tác với kernel: phần mềm thực hiện đầu vào/đầu ra, thao tác với các đối tượng hệ thống file, phần mềm ứng dụng, v.v.

Mỗi tiến trình user space thường chạy trong không gian bộ nhớ ảo của riêng mình và, trừ khi được cho phép rõ ràng, không thể truy cập vào bộ nhớ của các tiến trình khác. Đây là cơ sở để bảo vệ bộ nhớ trong các hệ điều hành chính hiện nay và một block được xây dựng để phân tách đặc quyền. Một chế độ người dùng riêng biệt cũng có thể được sử dụng để xây dựng các máy ảo hiệu quả - xem các yêu cầu ảo hóa Popek và Goldberg. Với đủ đặc quyền, các quy trình có thể yêu cầu kernel ánh xạ một phần không gian bộ nhớ của quy trình khác sang chính nó, như trường hợp của trình gỡ lỗi. Các chương trình cũng có thể yêu cầu các vùng bộ nhớ dùng chung với các quy trình khác, mặc dù các kỹ thuật khác cũng có sẵn để cho phép giao tiếp giữa các tiến trình.

Các lớp khác nhau trong Linux, cũng như sự tách biệt giữa userlandkernel space
User mode Ứng dụng người dùng Ví dụ, bash, LibreOffice, GIMP, Blender, 0 A.D., Mozilla Firefox, v.v.
Các thành phần hệ thống Các daemons hệ thống:
systemd, runit, logind, networkd, PulseAudio, ...
Hệ thống cửa sổ:
X11, Wayland, SurfaceFlinger (Android)
Đồ hoạ:
Mesa, AMD Catalyst, ...
Thư viện khác:
GTK+, Qt, EFL, SDL, SFML, FLTK, GNUstep, v.v.
Thư viện chuẩn C open(), exec(), sbrk(), socket(), fopen(), calloc(), ... (lên đến 2000 chương trình con)
glibc nhắm tới tốc độ, musluClibc nhắm đến hệ thống nhúng, bionic được viết cho Android, v.v. Tất cả đều hướng đến việc tương thích với POSIX/SUS.
Kernel mode Nhân Linux stat, splice, dup, read, open, ioctl, write, mmap, close, exit, v.v. (có khoảng 380 lời gọi hệ thống)
Nhân Linux System Call Interface (SCI, nhắm đến việc tương thích với POSIX/SUS)
Hệ thống con
Lập lịch cho các tiến trình
Hệ thống con
Giao tiếp giữa các tiến trình
Hệ thống con
Quản lý bộ nhớ
Hệ thống con
Hệ thống file ảo
Hệ thống con
Mạng
Các thành phần khác: ALSA, DRI, evdev, LVM, device mapper, Linux Network Scheduler, Netfilter
Các môdun bảo mật: SELinux, TOMOYO, AppArmor, Smack
Phần cứng (CPU, bộ nhớ chính, thiết bị lưu trữ dữ liệu, v.v)

Thể hiện

[sửa | sửa mã nguồn]

Cách phổ biến nhất để thực hiện chế độ người dùng tách biệt với chế độ kernel liên quan đến các vòng bảo vệ hệ điều hành.

Một cách tiếp cận khác được thực hiện trong các hệ điều hành thử nghiệm là có một không gian địa chỉ duy nhất cho tất cả phần mềm và dựa vào ngữ nghĩa của ngôn ngữ lập trình để đảm bảo rằng bộ nhớ tùy ý không thể được truy cập – các ứng dụng đơn giản không thể có được bất kỳ tham chiếu nào đến các đối tượng mà chúng không được phép truy cập.[2][3] Cách tiếp cận này đã được triển khai trong JXOS, Unununium cũng như dự án nghiên cứu Singularity của Microsoft.

  1. ^ Older operating systems, such as DOSWindows 3.1x, do not use this architecture.

Chú thích

[sửa | sửa mã nguồn]
  1. ^ “userland, n.”. The Jargon File. Eric S. Raymond. Truy cập ngày 14 tháng 8 năm 2016.
  2. ^ “Unununium System Introduction”. Bản gốc lưu trữ ngày 15 tháng 12 năm 2001. Truy cập ngày 14 tháng 8 năm 2016.
  3. ^ “uuu/docs/system_introduction/uuu_intro.tex”. UUU System Introduction Guide. ngày 1 tháng 6 năm 2001. Truy cập ngày 14 tháng 8 năm 2016.

Liên kết ngoài

[sửa | sửa mã nguồn]