Về cơ bản, tôi đồng ý với rpj. Mã phải nằm trong không gian người dùng, trừ khi nó thực sự cần thiết.
Nhưng, để nhấn mạnh câu hỏi của bạn, điều kiện nào?
Một số người cho rằng trình điều khiển phải nằm trong hạt nhân, điều này không đúng. Một số trình điều khiển không phải là thời gian nhạy cảm, trên thực tế rất nhiều trình điều khiển được như thế.
Ví dụ: bộ khung, bộ định thời RTC, thiết bị i2c, vv Các trình điều khiển đó có thể dễ dàng di chuyển đến không gian người dùng. Thậm chí còn có một số hệ thống tệp được viết trong không gian người dùng.
Bạn nên di chuyển đến không gian hạt nhân, nơi trên đầu, ví dụ: hoán đổi hạt nhân của người dùng, trở thành không thể chấp nhận để mã của bạn hoạt động bình thường.
Nhưng có rất nhiều cách để giải quyết vấn đề này. Ví dụ,/dev/mem cung cấp một cách tốt để truy cập bộ nhớ vật lý của bạn, giống như bạn làm điều đó từ không gian hạt nhân.
Khi mọi người nói về việc chuyển sang RTOS, tôi thường hoài nghi. Những ngày này, bộ vi xử lý mạnh mẽ đến nỗi hầu hết thời gian, khía cạnh thời gian thực trở nên không đáng kể. Nhưng thậm chí, giả sử bạn đang giao dịch với SONET và bạn cần thực hiện chuyển đổi bảo vệ trong phạm vi 50ms (thậm chí còn ít hơn, vì các ràng buộc 50ms áp dụng cho toàn bộ vòng), bạn vẫn có thể thực hiện chuyển đổi rất nhanh, nếu phần cứng của bạn hỗ trợ nó.
Rất nhiều khung thời gian trong những ngày này có thể cung cấp cho bạn hỗ trợ phần cứng giúp giảm số lượng ghi mà bạn cần thực hiện. Công việc của bạn về cơ bản là đáp ứng với sự gián đoạn càng nhanh càng tốt. Và Linux không tệ chút nào. Độ trễ gián đoạn tôi nhận được ít hơn 1ms, ngay cả khi tôi có hàng tấn gián đoạn khác đang chạy (ví dụ: IDE, ethernet, v.v.).
Và nếu điều đó vẫn chưa đủ, thì có thể thiết kế phần cứng của bạn sai. Một số điều tốt hơn còn lại trên phần cứng. Và khi tôi nói phần cứng, tôi có nghĩa là ASIC, FPGA, Bộ xử lý mạng hoặc logic nâng cao khác.
Chưa kể đến vấn đề bảo mật (mã của bạn là 100% bằng chứng hacking? Lỗi nhỏ nhất có thể trở thành cửa hậu khổng lồ!), Các vấn đề hư hỏng tài sản thế chấp (một lỗi tinh tế có thể ảnh hưởng nhiều hơn ứng dụng của bạn), v.v. –