Windows Windows không phải là một hệ điều hành thời gian thực có nghĩa là gì?


19

Tôi đã bắt gặp một ứng dụng có tên LatencyMon , có vẻ như không theo dõi độ trễ.

Tôi đã luôn hiểu rằng càng nhiều tải bạn đặt vào bộ xử lý, hệ thống càng ít phản hồi hoặc tiềm ẩn hơn, hệ thống sẽ trở nên. Tuy nhiên, trong phần thứ hai của trang LatencyMon, câu đầu tiên nói: "Windows không phải là hệ điều hành thời gian thực" (RTOS). Điều đó khiến tôi suy nghĩ. Ý tôi là, điều này có khác với bất kỳ hệ điều hành nào khác như Linux, Unix hoặc Mac OS X không?

Có bất kỳ hệ điều hành "thời gian thực"? Hay đó chỉ là một kế hoạch tiếp thị để giúp bạn mua sản phẩm của họ?

CHỈNH SỬA:

Ngoài ra, có bất kỳ ví dụ nào về RTOS không?


4
QNX là thời gian thực, ví dụ.
new123456

Câu trả lời:


21

Wikipedia thực sự có rất nhiều thông tin đáng ngạc nhiên ở đây.

Hệ điều hành thời gian thực (RTOS) là một hệ điều hành (HĐH) nhằm phục vụ các yêu cầu ứng dụng thời gian thực.

Một đặc điểm chính của RTOS là mức độ nhất quán của nó liên quan đến lượng thời gian cần thiết để chấp nhận và hoàn thành nhiệm vụ của ứng dụng; sự thay đổi là jitter. Một hệ điều hành thời gian thực cứng có ít jitter hơn một hệ điều hành thời gian thực mềm. Mục tiêu thiết kế chính không phải là thông lượng cao, mà là sự đảm bảo cho một hạng mục hiệu suất mềm hoặc cứng. Một RTOS thường có thể hoặc thường đáp ứng thời hạn là một hệ điều hành thời gian thực mềm, nhưng nếu nó có thể đáp ứng một thời hạn xác định thì đó là một hệ điều hành thời gian thực cứng.

Một RTOS có một thuật toán tiên tiến để lập lịch. Tính linh hoạt của trình lập lịch biểu cho phép sắp xếp các ưu tiên quy trình của hệ thống máy tính rộng hơn, nhưng hệ điều hành thời gian thực thường được dành riêng cho một bộ ứng dụng hẹp. Các yếu tố chính trong một hệ điều hành thời gian thực là độ trễ ngắt tối thiểu và độ trễ chuyển đổi luồng tối thiểu; một hệ điều hành thời gian thực được đánh giá cao hơn về mức độ nhanh chóng hoặc mức độ dự đoán của nó có thể đáp ứng so với số lượng công việc mà nó có thể thực hiện trong một khoảng thời gian nhất định.

Đây là điều mà rất ít hệ điều hành thực sự làm được, bởi vì với rất nhiều khối lượng công việc, nó đơn giản là kém hiệu quả hơn. Không có hệ điều hành tiêu dùng chính nào hiện nay (hoặc theo hiểu biết của tôi từng có) theo thời gian thực. Thật không may, điều đó có nghĩa là đôi khi mọi thứ trong môi trường không phải là thời gian thực phải ngồi chờ đợi những thứ khác. Điều này chỉ trở thành một vấn đề khi một cái gì đó không mang lại trong một khoảng thời gian hợp lý, nói chung.

Hiện tại các hệ điều hành thời gian thực được biết đến nhiều nhất, được triển khai rộng rãi nhất là:

LynxOS
OSE
QNX
RTLinux
VxWorks
Windows CE

Xem danh sách các hệ điều hành thời gian thực để biết danh sách toàn diện.


6
Các hệ điều hành thời gian thực thường được sử dụng trong các vai trò rất chuyên dụng như các hệ thống điều khiển cực kỳ chính xác trong đó quyết định / tính toán / v.v phải được hoàn thành trong một khung thời gian rất chính xác.
Lamar B

Có ví dụ nào về RTOS không? Cập nhật câu hỏi về khía cạnh này.
Chad Harrison


Những gì @ ta.speot.is đã nói - có một số trong bài viết đã được liên kết. Tôi sẽ chỉnh sửa một số trong, mặc dù.
Shinrai

Tôi đã không đi đến cuối trang Wiki ... Xin lỗi vì điều đó: /
Chad Harrison

19

Hệ điều hành thời gian thực thường được sử dụng cho các hệ thống nhúng, trong đó chúng có thể chịu trách nhiệm cho một số thứ như hướng dẫn hoặc giám sát hệ thống. Điều quan trọng cần nhớ về một hệ thống thời gian thực (và điểm khác biệt của nó với hệ thống thời gian thực) là trong một hệ thống thời gian thực, nếu một câu trả lời bị trễ, thì đó là sai. Bạn có thể dễ dàng thấy cách thức hoạt động của nó bằng cách suy nghĩ về việc thêm một loạt các số liệu trong Excel (nếu hoạt động bị trì hoãn, không có tác động thực sự) so với việc áp dụng phanh trong xe hơi (trong đó độ trễ có thể là thảm họa).


10

Về cơ bản, RTOS có thể đảm bảo nó có thể phục vụ IRQ (yêu cầu ngắt) trong một khung thời gian cụ thể (thường là thấp). Hệ điều hành tiêu chuẩn không có sự đảm bảo như vậy.

Trong hầu hết các hệ thống hiện đại, hầu hết các thiết bị đều có thể tạo ra IRQ. Điều này khiến CPU dừng lại (tức là bị gián đoạn) những gì nó đang làm và chạy một chương trình dịch vụ ngắt. Ý tưởng là chương trình dịch vụ này làm bất cứ điều gì thiết bị cần, tức là lấy dữ liệu ra khỏi thiết bị và vào RAM, cho thiết bị biết phải làm gì tiếp theo, v.v.

Trên x86, vì nó chỉ có 1 dòng IRQ trên CPU, khi nó nhận được một ngắt, các ngắt tiếp theo sẽ tự động bị vô hiệu hóa (ngoại trừ NMI, RESET và SMI) cho đến khi CPU thừa nhận nguồn ngắt và kích hoạt lại chúng. Vì vậy, trình điều khiển thiết bị tốt theo tiêu chuẩn i386 / amd64 Windows sẽ xử lý tối thiểu ở trạng thái này, vừa đủ để có thể ngắt các ngắt, và sau đó trì hoãn xử lý hoàn toàn ngắt cho đến sau này (vì về mặt kỹ thuật, hệ thống chỉ có thể phục vụ 1 ngắt cho mỗi CPU cốt lõi tại một thời điểm). Tôi không chắc nhưng tôi tin Linux cũng làm như vậy. Tuy nhiên, không có bảo đảm cứng nào về thời gian mà ngắt sẽ được phục vụ theo.

Đối với hầu hết các thiết bị PC, chẳng hạn như đĩa, bàn phím, NIC, nếu có một chút chậm trễ phục vụ IRQ của chúng, sẽ không có gì xấu xảy ra ngoài việc mất hiệu suất. Đây có thể là một vấn đề đối với các thiết bị như đầu vào âm thanh và video, trong đó thiết bị không đệm bất cứ thứ gì và PC thực sự cần theo kịp luồng dữ liệu đến.


Bạn có thể giải thích ý của bạn là "x86 chỉ có 1 dòng IRQ" không? Lần trước khi tôi quấn dây một máy tính 80186 (phải thừa nhận cách đây nhiều thập kỷ), tôi dường như nhớ lại rằng PIC 8259 có 8 kênh và máy tính danh nghĩa tại thời điểm đó có một tầng thứ hai, trong tổng số 15 kênh, không bao gồm NMI?
Glenn Slayden

Bạn cần PIC chính xác vì x86 chỉ có một dòng IRQ Nhưng nếu ngắt x86 bị ​​vô hiệu hóa thì PIC chỉ có thể đợi cho đến khi CPU kích hoạt lại chúng và IIRC sẽ làm điều đó. Các CPU khác của IIRC như 68000 có 3 chân ngắt và dự kiến ​​mức ưu tiên được mã hóa 0-7 ngay trên chính CPU. Mặc dù bây giờ tôi thực sự xem xét nó, có lẽ 68000 cũng vô hiệu hóa tất cả các ngắt khi nhận được bất kỳ IRQ nào - tôi chưa bao giờ lập trình 68000.
LawrenceC

À vâng, bây giờ tôi nhớ. Và IIRC khía cạnh 'ưu tiên' của thiết kế chip 8259 - bằng cách cho phép xử lý IRQ lồng nhau - được cho là khuyến khích HĐH vô hiệu hóa các ngắt ít nhất có thể hoặc không, nhưng các dòng ngắt PC được gán một cách ngớ ngẩn, đánh bại điều đó tiếp cận? Dù bằng cách nào, chắc chắn gọi bất kỳ số lượng mã đáng kể nào theo CLI ... STI không bao giờ là ý định.
Glenn Slayden
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.