2012-01-10 14 views
9

Tôi đã làm việc trên VxWorks 5.5 từ lâu và đó là trải nghiệm tốt nhất khi làm việc trên hệ điều hành thời gian thực tốt nhất thế giới. Kể từ đó tôi không bao giờ có cơ hội để làm việc trên nó một lần nữa. Nhưng, một câu hỏi tiếp tục nảy sinh với tôi, điều gì làm cho quá nhanh và quyết định?Điều gì làm cho VxWorks trở nên quyết định và nhanh chóng?

Tôi không thể tìm thấy nhiều tài liệu tham khảo cho câu hỏi này thông qua Google.

Vì vậy, tôi chỉ cố gắng nghĩ đến những gì làm cho một thường xuyên OS không xác định:

  1. cấp phát bộ nhớ/de-phân bổ: - Wiki nói RTOS sử dụng cố định khối kích thước, do đó các khối có thể được lập chỉ mục trực tiếp , nhưng điều này sẽ gây ra sự phân mảnh nội bộ và tôi chắc chắn đây không phải là điều mong muốn đối với các hệ thống quan trọng của sứ mệnh nơi bộ nhớ đã bị giới hạn.

  2. Paging/Phân khúc: - loại của nó trong liên quan đến điểm 1

  3. Interrupt Xử lý: - Không chắc thế nào VxWorks thực hiện nó, vì đây là một cái gì đó VxWorks xử lý rất tốt

  4. bối cảnh chuyển đổi: - Tôi tin rằng trong VxWorks 5.5 tất cả các quy trình được sử dụng để thực thi trong không gian địa chỉ hạt nhân, do đó, chuyển đổi ngữ cảnh được sử dụng để liên quan đến chỉ lưu các giá trị đăng ký và không có gì về PCB (khối điều khiển quá trình), nhưng tôi vẫn không chắc chắn 1002

  5. Quy trình thuật toán lập lịch biểu: - Nếu Windows thực hiện lập kế hoạch ưu tiên (ưu tiên/vòng robin) thì quá trình lập kế hoạch sẽ nhanh như trong VxWorks? Tôi không nghĩ vậy. Vậy, VxWorks xử lý lịch trình như thế nào?

Hãy sửa sự hiểu biết của tôi ở bất cứ đâu.

+0

Bất kỳ người dùng nào cho nó ?? –

Trả lời

11

Tôi tin rằng sau đây sẽ chiếm rất nhiều sự khác biệt:

Không Paging/Trao đổi

Một RTOS xác định chỉ đơn giản là không thể trang bộ nhớ swap vào đĩa. Điều này sẽ giết chết tính quyết định, vì bất cứ lúc nào bạn có thể phải trao đổi bộ nhớ trong hoặc ngoài. VxWorks đòi hỏi ứng dụng của bạn lọt thỏm trong RAM

Không Processes

Trong VxWorks 5.5, có nhiệm vụ, nhưng không có quá trình như Windows hoặc Linux. Các nhiệm vụ giống như chủ đề và chuyển ngữ cảnh là một hoạt động tương đối rẻ tiền. Trong Linux/Windows, quá trình chuyển đổi khá tốn kém.

Lưu ý rằng trong vxWorks 6.x, một mô hình quy trình đã được giới thiệu, làm tăng một số chi phí, nhưng chủ yếu liên quan đến việc chuyển từ chế độ Người dùng sang chế độ Giám sát. Thời gian chuyển đổi nhiệm vụ không nhất thiết bị ảnh hưởng trực tiếp bởi mô hình mới.

cố định ưu tiên

Trong VxWorks, những ưu tiên nhiệm vụ được thiết lập bởi các nhà phát triển và là hệ thống rộng. Nhiệm vụ ưu tiên cao nhất tại bất kỳ thời điểm đã cho nào sẽ là nhiệm vụ ưu tiên. Do đó, bạn có thể thiết kế hệ thống của mình để đảm bảo rằng các tác vụ có thời hạn chặt chẽ nhất luôn thực thi trước những người khác.

Trong Linux/Windows, nói chung, trong khi bạn có một số kiểm soát ưu tiên quy trình, trình lên lịch cuối cùng sẽ cho phép các quy trình ưu tiên thấp hơn chạy ngay cả khi quá trình ưu tiên cao hơn vẫn hoạt động.

+0

Tôi đồng ý với hầu hết các điểm của bạn, nhưng sau đó nó sẽ xử lý các truy cập bộ nhớ không hợp lệ như thế nào. Nó có thực thi một cấu trúc trước khi một nhiệm vụ bắt đầu, nó có yêu cầu số lượng bộ nhớ mà nó sẽ sử dụng không? Bcoz đó là cách duy nhất, VxWorks có thể thiết lập các vùng ranh giới của một nhiệm vụ. –

+2

Tôi 5.5 không có "quyền truy cập bộ nhớ không hợp lệ" trừ khi hệ thống thực sự truy cập vào địa chỉ không có gì được ánh xạ. Sau đó, một trình xử lý ngoại lệ được gọi. Công việc có quyền truy cập vào toàn bộ bộ nhớ. Ngay cả các công việc khác hoặc thậm chí là cấu trúc dữ liệu hạt nhân. 6.x Mô hình quy trình giới hạn truy cập bộ nhớ vào không gian xử lý bằng cách sử dụng MMU. – Benoit

+1

Phần trao đổi có thể thực sự là trường hợp của RTOS "lớn" nhưng nó không phải là một điều cần thiết. Một RTOS chỉ đơn giản là phải đảm bảo thời hạn của các quy trình của bạn - và miễn là nó không vi phạm quy tắc này, đó là thời gian thực. Nếu bạn quá trình quan trọng phải được chạy trong vòng 5 phút và trao đổi nó trở lại trong có thể được đảm bảo để mất nhiều nhất 3 phút và phải mất 1 phút để chạy tồi tệ nhất bạn là tốt. – lambdapower