Câu trả lời của tôi here bao gồm câu hỏi của bạn.
Trong thực tế, các hạt nhân gần đây đang triển khai VDSO, đáng chú ý là để tối ưu hóa cuộc gọi hệ thống (hạt nhân đặt VDSO thành một số mã tốt nhất cho bộ xử lý hiện tại). Vì vậy, bạn nên sử dụng VDSO, và bạn sẽ sử dụng tốt hơn, cho các syscalls hiện có, giao diện được cung cấp bởi libc.
Lưu ý rằng, AFAIK, một phần đáng kể chi phí của các syscalls đơn giản là đi từ không gian người dùng đến hạt nhân và ngược lại. Do đó, đối với một số syscalls (có lẽ là gettimeofday
, getpid
...) VDSO có thể tránh ngay cả điều đó (và về mặt kỹ thuật có thể tránh làm một syscall thực). Đối với hầu hết các syscalls (như open
, read
, send
, mmap
....) chi phí hạt nhân của syscall đủ lớn để thực hiện bất kỳ cải tiến nào của không gian người dùng thành chuyển đổi không gian hạt nhân (ví dụ: sử dụng hướng dẫn máy SYSENTER
hoặc SYSCALL
thay vì INT
) tầm thường.
Nguồn
2012-10-09 19:13:48
ở đâu Bạn đang tìm kiếm trong kernel mà bạn đang nhìn thấy việc sử dụng của 'int 0x80'? Bạn có thể chỉ định một số tệp không? – Mike
@Mike Thật ra tôi đã tìm thấy một loại hướng dẫn vào hạt nhân Linux, nơi như một ví dụ nó đã được sử dụng. Nó là 2,6 dựa. – Alex
Tương tự như http://stackoverflow.com/q/12776340/841108 câu hỏi –