Trong Linux, ít nhất cơ chế gọi hệ thống hoạt động theo hầu hết các kiến trúc bằng cách đặt một số dữ liệu được định dạng cụ thể (thường là một loại cấu trúc c) trong một số thanh ghi hoặc địa chỉ bộ nhớ được xác định trước.
Tuy nhiên, vấn đề xảy ra trong thực tế là buộc CPU phải chuyển sang không gian kernel để nó có thể chạy mã hạt nhân đặc quyền để phục vụ cuộc gọi. Điều này được thực hiện bằng cách buộc một lỗi thuộc loại nào đó (lỗi bị chia cho 0, tràn không xác định hoặc segfault, v.v.) điều này buộc kernel phải thực thi để xử lý lỗi.
Thông thường, kernel xử lý các lỗi bằng cách giết tiến trình gây ra hoặc chạy trình xử lý do người dùng cung cấp. Tuy nhiên, trong trường hợp của một tòa nhà, thay vào đó, nó sẽ kiểm tra các thanh ghi và vị trí bộ nhớ được xác định trước và nếu chúng có chứa một yêu cầu tòa nhà, nó sẽ chạy bằng cách sử dụng dữ liệu do quá trình người dùng cung cấp trong cấu trúc trong bộ nhớ. Điều này thường phải được thực hiện với một số lắp ráp thủ công đặc biệt và để dễ dàng sử dụng tòa nhà cho người dùng, thư viện C của hệ thống phải bọc nó như một chức năng. Đối với giao diện cấp thấp hơn, vui lòng xem http://man7.org/linux/man-pages/man2/syscall.2.html để biết một số thông tin về cách các tòa nhà chọc trời hoạt động và cách bạn có thể gọi sau đó mà không cần trình bao bọc C.
Điều này được đưa ra một sự đơn giản hóa, nó không đúng trong tất cả các kiến trúc (mips có một hướng dẫn tòa nhà đặc biệt) và không nhất thiết phải hoạt động giống nhau trên tất cả các hệ điều hành. Tuy nhiên, nếu bạn có bất kỳ ý kiến hoặc câu hỏi xin vui lòng hỏi.
Sửa đổi: Lưu ý, liên quan đến nhận xét của bạn về những thứ trong / dev / đây thực sự là một giao diện cấp cao hơn cho kernel, không phải là giao diện thấp hơn. Các thiết bị này thực sự sử dụng (khoảng) 4 tòa nhà cao tầng bên dưới. Viết cho chúng giống như một tòa nhà viết, đọc một tòa nhà đọc, mở / đóng chúng tương đương với các tòa nhà mở và đóng và chạy một ioctl gây ra một tòa nhà ioctl đặc biệt mà bản thân nó là một giao diện để truy cập vào một trong nhiều ioctl của hệ thống các cuộc gọi (đặc biệt, thường là các cuộc gọi cụ thể của thiết bị với cách sử dụng quá hẹp để viết toàn bộ tòa nhà cho chúng).