Cuộc gọi hệ thống chậm là một cái gì đó giống như một ổ cắm TCP đọc () - nếu bạn không cài đặt O_ASYNC (hoặc bất cứ thứ gì), nó có thể chờ đợi mãi mãi.
Một cuộc gọi hệ thống nhanh là một cái gì đó như gettimeofday () hoặc getpid (), cả hai đều trả lại thông tin cho quá trình mà kernel có sẵn ngay lập tức.
Đĩa đọc thuộc danh mục các cuộc gọi hệ thống chậm. Nếu một quá trình thực hiện đọc () trên một tệp đĩa thực, mô tả tệp, hạt nhân có thể phải đọc trong một hoặc nhiều khối đĩa để đáp ứng việc đọc. Tùy thuộc vào cấu trúc trên đĩa của hệ thống tệp bên dưới, điều này có thể có nghĩa là đọc mã trên đĩa để lấy số khối của "khối gián tiếp", đọc khối gián tiếp để lấy khối dữ liệu và sau đó tự đọc khối dữ liệu . Khá tốn thời gian, ít nhất là về chu kỳ CPU trên mỗi lần truy cập đĩa, có thể ngày nay còn tệ hơn so với thời kỳ cũ.
Tôi đã không thấy điều này từ lâu, nhưng "nửa dưới" của mã trình điều khiển thiết bị ổ đĩa Unix cũ sẽ chặn tín hiệu / ngắt để dễ duy trì tính toàn vẹn của hệ thống tệp trên đĩa. Đôi khi, trình điều khiển bị lỗi hoặc lỗi đĩa sẽ không bao giờ cung cấp khối đĩa mà một quy trình đã yêu cầu và quá trình này đã ngủ mãi mãi. Ngay cả một kill -9 cũng không làm gì với nó.