Ở hệ điều hành có cấu trúc phân lớp, tập hợp các lời gọi hệ thống được tạo ra bởi:
A.
Lớp phần cứng
B.
Lớp giao tiếp với người sử dụng
C.
Lớp ứng dụng
D.
Lớp kế lớp phần cứng - hạt nhân
Đáp án
Đáp án đúng: D
Trong hệ điều hành có cấu trúc phân lớp, các lớp được xây dựng dựa trên các lớp thấp hơn. Lớp thấp nhất là lớp phần cứng, tiếp theo là lớp hạt nhân (kernel) cung cấp các dịch vụ cơ bản nhất cho các lớp cao hơn. Lớp ứng dụng và lớp giao tiếp với người dùng nằm ở các lớp cao hơn và sử dụng các lời gọi hệ thống (system calls) được cung cấp bởi lớp hạt nhân để tương tác với phần cứng. Do đó, tập hợp các lời gọi hệ thống được tạo ra bởi lớp kế lớp phần cứng, tức là lớp hạt nhân.
Trong hệ điều hành có cấu trúc phân lớp, các lớp được xây dựng dựa trên các lớp thấp hơn. Lớp thấp nhất là lớp phần cứng, tiếp theo là lớp hạt nhân (kernel) cung cấp các dịch vụ cơ bản nhất cho các lớp cao hơn. Lớp ứng dụng và lớp giao tiếp với người dùng nằm ở các lớp cao hơn và sử dụng các lời gọi hệ thống (system calls) được cung cấp bởi lớp hạt nhân để tương tác với phần cứng. Do đó, tập hợp các lời gọi hệ thống được tạo ra bởi lớp kế lớp phần cứng, tức là lớp hạt nhân.
Lời gọi hệ thống (system call) là cơ chế cho phép chương trình ứng dụng yêu cầu các dịch vụ từ kernel của hệ điều hành. Các dịch vụ này có thể bao gồm việc quản lý tiến trình, quản lý bộ nhớ, truy cập hệ thống tập tin và các thao tác vào/ra (I/O). Vì vậy, chương trình ứng dụng cần lời gọi hệ thống để tương tác với hệ điều hành.
* A. Tiến trình: Tiến trình là một thể hiện của một chương trình đang thực thi, và nó sử dụng lời gọi hệ thống để yêu cầu các dịch vụ từ hệ điều hành. Tuy nhiên, lời gọi hệ thống chủ yếu phục vụ cho chương trình ứng dụng, chứ không phải bản thân tiến trình. * B. Chương trình ứng dụng: Đây là đáp án chính xác. Chương trình ứng dụng cần tương tác với hệ điều hành để thực hiện các tác vụ như đọc/ghi file, tạo tiến trình, v.v. Lời gọi hệ thống cung cấp một giao diện để chương trình ứng dụng thực hiện những yêu cầu này. * C. Phần cứng máy tính: Hệ điều hành giao tiếp trực tiếp với phần cứng máy tính thông qua các trình điều khiển thiết bị (device drivers), không phải thông qua lời gọi hệ thống. * D. Người sử dụng: Người sử dụng tương tác với hệ điều hành thông qua các chương trình ứng dụng, và các chương trình này sử dụng lời gọi hệ thống để thực hiện các yêu cầu của người dùng.
Lời gọi hệ thống (system call) yêu cầu hệ điều hành thực hiện một tác vụ đặc quyền thay mặt cho tiến trình người dùng. Do đó, tiến trình của hệ điều hành xử lý lời gọi này phải hoạt động ở chế độ đặc quyền để có thể truy cập và thao tác các tài nguyên hệ thống quan trọng.
Tiểu trình (thread) là một đơn vị thực thi nhỏ hơn của tiến trình, chia sẻ không gian địa chỉ, bộ nhớ heap, các file đang mở của tiến trình mẹ. Tuy nhiên, mỗi tiểu trình có stack riêng, tập thanh ghi riêng và con trỏ lệnh (program counter) riêng để theo dõi lệnh tiếp theo cần thực thi.
Như vậy, các tiểu trình B và C (được sinh ra từ tiến trình A) sẽ chia sẻ không gian địa chỉ của tiến trình A, nhưng không chia sẻ stack, tập thanh ghi và con trỏ lệnh.
Do đó, phương án D là không chính xác vì B và C sử dụng chung không gian địa chỉ. Các phương án A, B, C đều đúng.
Khi một tiến trình đang thực thi gặp phải một sự kiện phải chờ (ví dụ: chờ thao tác nhập/xuất hoàn tất, chờ tài nguyên, hoặc bị tạm dừng), nó sẽ tạm thời ngừng thực thi và chuyển sang trạng thái chờ. Các tiến trình ở trạng thái chờ này sẽ được đưa vào một danh sách gọi là "Danh sách chờ đợi" (Waiting list). Khi sự kiện mà tiến trình chờ đợi hoàn tất, nó sẽ được chuyển trở lại danh sách sẵn sàng để tiếp tục thực thi.