Rtos Là Gì

  -  

Nếu đang là dân công nghệ, có lẽ rằng các bạn chẳng xa lạ gì với hệ quản lý xuất xắc OS, tuy nhiên chúng ta đang nghe RTOS lúc nào chưa? RTOS là đồ vật gi cùng biện pháp nó chuyển động như vậy nào? Tất cả sẽ có được vào bài viết ngày lúc này.

Bạn đang xem: Rtos là gì


Rtos là gì?

RTOS là viết tắt của cụm từ bỏ Real-time operating system tuyệt hệ điều hành thời gian thực thường được nhúng trong số loại vi tinh chỉnh dùng làm tinh chỉnh máy một phương pháp lập cập với nhiều nhiệm (multi tasking). Để hiểu rõ ràng nó là gì trước tiên hãy làm rõ quan niệm về hệ quản lý đã.

Hệ điều hành (tiếng Anh: Operating System – viết tắt: OS) là một phần mềm dùng làm điều hành, thống trị tổng thể tất cả yếu tố (bao hàm cả phần cứng và phần mềm) của sản phẩm năng lượng điện tử.

Nói dễ dàng và đơn giản, hệ quản lý điều hành giống như hội đồng quản lí trị vậy. Họ bao gồm quyền quyết định ai làm cái gi với thời gian ra làm sao. Các nhân viên cấp dưới cũng giống như các ứng dụng, dìm lệnh của cấp cho trên cùng triển khai các quá trình theo như đúng tính năng của chính bản thân mình.

Vậy hệ quản lý thời hạn thực cùng với hệ điều hành quản lý bình thường không giống gì nhau?

Hệ quản lý điều hành thông thường (non-realtime): nhỏng Window, linux, app android, ios… chính là thiết bị cơ mà chúng ta sử dụng từng ngày. Khi msinh sống 1 phần mềm bên trên đó, hoàn toàn có thể chúng ta đề xuất hóng nó mua rất rất lâu, việc mong chờ này cũng không ảnh hưởng gì cả. Bởi bởi phần lớn phần mềm kia tác động với bé fan chđọng không nhiều liên can với những phần mềm hoặc lắp thêm khácHệ quản lý điều hành thời gian thực (realtime): hình thành cho các tác vụ yêu cầu sự bình luận nkhô hanh của khối hệ thống, hay được nhúng trong các các loại vi tinh chỉnh và điều khiển và không có hình ảnh (GUI) xúc tiến cùng với người tiêu dùng. Chúng cần bình luận nkhô nóng chính vì phần nhiều những tác vụ can hệ với sản phẩm, máy móc khác chứ chưa phải con fan. Các tài nguyên bên phía trong cực kỳ hữu hạn nên chỉ có thể một sự lờ lững cũng rất có thể làm cho hệ thống thao tác làm việc trọn vẹn xô lệch.

quý khách cđọng thử tưởng tượng một hệ điều hành quản lý đang hoạt động các tác vụ tinh chỉnh thương hiệu lửa nhưng độ trễ chỉ 2s. Với tốc độ của thương hiệu lửa cũng có thể bắn lệch tự TP Hà Nội thành TPhường. HCM rồi.

Thực tế hệ điều hành và quản lý thời hạn thực còn tạo thành 2 loại:

Soft-realtime: Sử dụng cho những áp dụng cruise control (điều khiển và tinh chỉnh hành trình) trong ô tô cùng các ứng dụng viễn thôngHard-realtime: Sử dụng trong số vận dụng điều khiển và tinh chỉnh đồ vật bay, động cơ điện

*

Lúc như thế nào bạn phải sử dụng RTOS ?

Các áp dụng ko bắt buộc cần sử dụng RTOS

Ứng dụng 1-1 (ứng dụng chỉ có một chức năng)Ứng dụng gồm vòng lặp solo giảnỨng dụng

Các ứng dụng yêu cầu RTOS

Ứng dụng những tâm trạng sản phẩm (States Machine)Ứng dụng lớnỨng dụng tương quan cho tới các tác vụ giải pháp xử lý nhanh khô, giải pháp xử lý hình ảnh, âm thanh khô.

Nếu vận dụng của người sử dụng mà size công tác béo dần với độ phức tạp tăng lên thì RTOS sẽ rất có lợi trong ngôi trường phù hợp này, dịp kia RTOS vẫn phân tách những áp dụng tinh vi thành các phần bé dại rộng và dễ thống trị rộng.

RTOS được áp dụng siêu đôi lúc thiết kế ESP32, ESP8266, STM32 và các dòng chip không giống.

Tại sao lại nên cần sử dụng RTOS ?

Chia sẻ tài nguim một giải pháp đơn giản: cung cấp hình thức nhằm phân chia những yên cầu về bộ lưu trữ cùng ngoại vi của MCU

Dễ debug cùng vạc triển: Mọi người vào nhóm rất có thể thao tác một cách hòa bình, các lập trình viên thì rất có thể tránh được các xúc tiến với ngắt, timer, cùng với Hartware (điều này mình không khuyến nghị lắm vày gọi được phần cứng vẫn sẽ giỏi hơn nhiều)

Tăng tính năng động với tiện lợi bảo trì: thông qua API của RTOS,…

Cách hoạt động của Rtos

RTOS là 1 trong phân đoạn hoặc một phần của công tác, trong những số đó nó giải quyết và xử lý bài toán điều pân hận các task, lập lịch và phân nấc ưu tiên đến task, nắm bắt các thông điệp gửi đi từ bỏ task.

RTOS hơi phức hợp, nói một phương pháp dễ hiểu hơn là nó thực hiện vấn đề cách xử lý những trạng thái vật dụng (State Machine). Các bạn cũng có thể tìm hiểu trên nội dung bài viết States Machine cùng lập trình sẵn nhúng

Để giải quyết một bài bác toán những trạng thái trang bị, thông thường bọn họ áp dụng code sau:

while(1) switch(state) case 1: //Code for Task 1; state= 2; case 2: //Code for Task 2; state= 3; case 3: //Code for Task 3; state= 4; case 4: //Code for Task 4; state=1;

Quý khách hàng có thể thấy, lịch trình đang xúc tiến từ states 1 tới states 4 kế tiếp con quay vòng lại. Bất kì lúc nào states chuyển đổi, chương trình đang nhảy đầm qua phục vụ task kia.

Ví dụ: trường hợp trong task 1 bao gồm lệnh states = 4, thì ngay sau khi Task 1 được triển khai hoàn thành công tác đang dancing qua Task 4 cơ mà bỏ qua Task 2 cùng 3.

Nhược điểm của phương thức này chính là tài nguim sử dụng tầm thường, vận tốc gửi chậm chạp khi chuyển đổi states bởi vì nó đề xuất hoàn thành mỗi Task trước khi chuyển quý phái Task khác, khó khăn kiểm soát điều hành Khi các tác vụ (Task)

Vậy bắt buộc RTOS Thành lập và hoạt động giải quyết và xử lý các nhược điểm bên trên.

*
Cách hoạt động vui chơi của RTOS

Nhân Kernel đang điều phối sự hoạt động vui chơi của các tác vụ (Task), mỗi task sẽ sở hữu một mức ưu tiên (prioritize) cùng xúc tiến theo chu kì thắt chặt và cố định. Nếu bao gồm sự tác động ảnh hưởng như ngắt, tín hiệu hoặc lời nhắn giữa những Task, Kernel sẽ điều phối hận gửi cho tới Task tương xứng với Code kia.

Sự di chuyển giữa các Task khôn xiết biến hóa năng động, độ trễ rẻ đem lại độ tin yêu cao mang đến lịch trình.

Các định nghĩa vào hệ quản lý điều hành thời hạn thực RTOS

Kernel – Nhân

Kernel hay có cách gọi khác là Nhân tất cả nhiệm vụ thống trị cùng điều pân hận các Task. Mọi sự khiếu nại (Even) nlỗi ngắt, Timer, data truyền tới… đông đảo qua Kernel xử lý nhằm quyết định xem đề nghị làm gì tiếp theo sau.Thời gian giải pháp xử lý của Kernel thường xuyên rất nkhô hanh phải độ trễ cực kỳ thấp.

*

Task – Tác vụ

quý khách hàng cứ tưởng tượng một chương trình là 1 cửa hàng, cùng với ông to lớn tuyệt nhất là Giám đốc – Kernel. Ông này chỉ quản lý cùng không biết nghiệp vụ gì cả, để triển khai các nhiệm vụ khác biệt, đơn vị đó phải những nhân viên. Và những nhân viên cấp dưới đó Điện thoại tư vấn là những Task.

Nói dễ dàng, Task là một trong những đoạn chương trình tiến hành một hoặc các sự việc nào đó, được Kernel cai quản.

Xem thêm: Tìm Hiểu Fax Là Gì ? Số Fax Có Bao Nhiêu Số, Hướng Dẫn Cách Gửi Fax

Kernel đang làm chủ bài toán biến đổi thân những task, nó đã bảo quản ngữ cảnh của task chuẩn bị bị hủy cùng Phục hồi lại ngữ cảnh của task tiếp sau bởi cách:

Kiểm tra thời gian triển khai đã làm được có mang trước (time slice được tạo ra bởi ngắt systick)Khi bao gồm các sự khiếu nại unblocking một task gồm quyền cao hơn nữa xảy ra (signal, queue, semaphore,…)Lúc task hotline hàm Yield() để nghiền Kernel chuyển thanh lịch những task không giống nhưng chưa hẳn canh cho không còn time slicelúc khởi hễ thì kernel sẽ khởi tạo ra một task khoác định Điện thoại tư vấn là Idle Task.

Task States – Trạng thái Task

Một ông nhân viên cấp dưới thì cũng có bây giờ thời gian cơ, lúc thảnh thơi, cơ hội đã thao tác làm việc, xuất xắc cũng có lúc ngủ vì… vợ đẻ. Những thời gian điều đó Kernel đề nghị điều phối hận làm thế nào để cho công tác chạy hợp lí.

Không thể bắt ông đang trông vk đẻ đi làm việc được, đúng không?

Một task vào RTOS thường sẽ có các tâm trạng như sau

*
Trạng thái Task vào RtosRUNNING: vẫn thực thiREADY: chuẩn bị sẵn sàng nhằm thực hiệnWAITING: ngóng sự kiệnINACTIVE: ko được kích hoạt

Scheduler – Lập lịch

Nói đơn giản thì Scheduler là một bé xíu thư kí hoặc trợ lý của ông giám đốc Kernel. Bé này sẽ sở hữu được trách nhiệm thông báo ông xếp mình cần làm những gì trên các thời khắc khác biệt.

Đây là một trong những nhân tố của kernel quyết định task làm sao được xúc tiến. Có một số luật pháp mang đến scheduling như:

Cooperative: như là với lập trình thông thường, từng task chỉ rất có thể triển khai Khi task đang chạy dừng lại, yếu điểm của nó là task này hoàn toàn có thể cần sử dụng hết toàn bộ tài nguyên của CPU

Round-robin: mỗi task được thực hiện vào thời hạn định trước (time slice) cùng không có ưu tiên.

*

Priority base: Task được phân quyền tối đa sẽ tiến hành tiến hành trước, trường hợp những task bao gồm thuộc quyền giống hệt thì vẫn giống như cùng với round-robin, các task tất cả nấc ưu tiên thấp rộng sẽ tiến hành thực hiện cho tới cuối time slice

*

Priority-based pre-emptive: Các task tất cả nấc ưu tiên cao nhất luôn nhịn nhường những task tất cả mức ưu tiên tốt rộng thực thi trước.

*

Kết nối Inter-task và Chia sẻ tài nguyên

Để cho công ty vận hành được suôn sẻ chu, thì các nhân viên cấp dưới cũng yêu cầu liên hệ với thảo luận cùng nhau. Làm coder thì cũng yêu cầu rỉ tai với ông làm Sales để thấy mình code vậy có bán được ko, làm nhân viên cấp dưới cũng yêu cầu hiểu những nhiệm vụ của nhau, chứ không cần xung bỗng tài nguyên là đổ vỡ đầu bị chảy máu.

Vậy cần task rất cần phải liên kết và điều đình tài liệu với nhau để rất có thể share tài nguyên ổn, tất cả một số trong những có mang đề xuất giữ ý:

Với Inter-task Communication:

Signal Events – Đồng bộ các taskMessage queue – Trao thay đổi lời nhắn thân các task trong chuyển động y hệt như FIFOMail queue – Trao đổi dữ liệu giữa những task thực hiện hằng ngóng của khối hận bộ nhớ

Với Resource Sharing:

Semaphores – Truy xuất tài nguim liên tiếp từ bỏ những task khác nhauMutex – Đồng cỗ hóa truy cập tài nguyên ổn áp dụng Mutual Exclusion

Signal event

Signal event được dùng làm đồng điệu các task, ví như bắt task buộc phải thực thi trên một sự kiện nào này được định sẵn

Ví dụ: Một cái máy giặt tất cả 2 task là Task A tinh chỉnh động cơ, Task B hiểu nút nước từ bỏ cảm ứng nước đầu vào

Task A rất cần được chờ nước đầy trước lúc khởi rượu cồn hộp động cơ. Việc này rất có thể triển khai được bằng phương pháp thực hiện signal eventTask A đề nghị chờ signal event trường đoản cú Task B trước khi khởi động hễ cơKhi phạt hiện nước đã đạt tới mức nút yêu cầu thì Task B sẽ gửi bộc lộ cho tới Task A

Với ngôi trường hòa hợp này thì task đã đợi bộc lộ trước lúc thực thi, nó sẽ nằm trong tâm lý là WAITING cho đến lúc signal được mix. Dường như ta rất có thể set 1 hoặc nhiều signal vào ngẫu nhiên các task làm sao không giống.

Mỗi task hoàn toàn có thể được gán về tối đa là 32 signal event

Message queue – Hàng chờ tin nhắn

Nói nôm mãng cầu là một group chat vào một công ty để hội đàm thân các member.

Message queue là vẻ ngoài có thể chấp nhận được các task hoàn toàn có thể kết nối cùng nhau, nó là 1 FIFO ( First In First Out) buffer được có mang vì độ lâu năm (số thành phần cơ mà buffer rất có thể lưu lại trữ) cùng kích cỡ tài liệu (size của các thành bên trong buffer).

Một áp dụng tiêu biểu vượt trội là buffer đến Serial I/O, buffer đến lệnh được gửi trao task

Task có thể ghi vào hằng chờ (queue)

Task có khả năng sẽ bị khóa (block) lúc gửi dữ liệu cho tới một message queue đầy đủTask vẫn không còn bị khóa (unblock) khi bộ nhớ vào message queue trốngTrường vừa lòng các task mà bị blochồng thì task với khoảng ưu tiên tối đa sẽ được unbloông xã trước

Task hoàn toàn có thể gọi trường đoản cú hằng ngóng (queue)

Task có khả năng sẽ bị bloông xã trường hợp message queue trốngTask sẽ được unbloông chồng ví như bao gồm dữ liệu trong message queue.Tương từ bỏ ghi thì task được unbloông chồng dựa vào cường độ ưu tiên

Ví dụ:

*

Mail queue

Nói nôm na giống hệt như các bạn thảo luận E-Mail thân những nhân viên cùng nhau. Các tin nhắn này vẫn bao gồm nhiều thứ như văn bạn dạng với các tệp tin đi kèm.

Mail queue truyền dữ liệu sẽ tiến hành truyền bên dưới dạng khối(memory block) núm vì chưng dạng đơn. Mỗi memory blochồng thì cần phải cấp phép trước lúc chuyển dữ liệu vào cùng giải pngóng sau khoản thời gian đưa tài liệu ra.

Thao tác gửi dữ liệu cùng với mail queue

Cấp phạt bộ nhớ tự mail queue đến tài liệu được đặt vào mail queueLưu dữ liệu cần gửi vào bộ nhớ đã có được cấp cho phátĐưa dữ liệu vào mail queue

Thao tác nhận dữ liệu trong mail queue vì chưng task khác

Lấy dữ liệu từ mail queue, sẽ có được một hàm để trả lại cấu trúc/ đối tượngLấy bé trỏ cất dữ liệuGiải phóng bộ nhớ lưu trữ sau khi thực hiện dữ liệu

Ví dụ:

*

Semaphore

Nói đơn giản Semaphore là 1 trong thủ quỹ của công ty chúng ta vậy. Mỗi một chủ thể đã có một lượng chi phí thắt chặt và cố định, vậy đề xuất giả dụ nhân viên cấp dưới ông nào cũng đòi chi phí để gia công điều này loại cơ, nhưng mà ko đem lại về cho công ty, thì chắc chắn rằng phá sản.

Trong vi điều khiển và tinh chỉnh bọn họ có Semaphore để cai quản phần đông tài nguyên ổn (Resource) như Ram, ngoại vi …

Được áp dụng nhằm đồng hóa task cùng với các sự khiếu nại không giống vào hệ thống. Có 2 loại

Binary semaphore

Semaphore là 1 trong những mã thông báo giống hệt như một mã thông tin chất nhận được một tác vụ thực hiện việc tiến hành giả dụ tác vụ nhận thấy semaphore. Nếu ko, tác vụ vẫn sinh hoạt tinh thần khối hận với thiết yếu thực thi trừ khi nó dành được semaphore nhị phân

Có nhất 1 tokenChỉ có một chuyển động đồng bộ

*

Counting semaphore

Counting semaphore chỉ dẫn các Token cho những Task áp dụng tài nguyên, ví như tài nguyên ổn được thực hiện hết thì các Task còn sót lại đã cần hóng đến lúc Tài nguim được giải pđợi trở lại

*

Couting semaphore được dùng để:

Counting event

Một event handler đã ‘give’ semaphore lúc tất cả event xảy ra (tăng giá trị đếm semaphore)Một task handler đang ‘take’ semaphore khi nó xúc tiến sự khiếu nại (Giảm ngay trị đếm semaphore)Count value là khác nhau thân số sự kiện xảy ra và số sự kiện được thực thiTrong trường hợp counting event thì semaphore được khởi chế tạo ra giá trị đếm bằng 0

Resource management

Count value đang chỉ ra rằng số resource sẵn cóĐể điều khiển với điều hành và kiểm soát được resource của task dựa trên count value của semaphore(quý giá giảm), trường hợp count value giảm xuống bằng 0 tức là không tồn tại resource như thế nào miễn phí.Khi một task finish với resource thì nó vẫn give sầu semaphore quay trở lại để tăng count value của semaphore.Trong trường hợp resouce management thì count value đã bởi với giá trị max của count value Khi semaphore được tạo.

Mutex

Mutex y như ông chủ kho của công ty các bạn vậy. Vì tài nguyên của doanh nghiệp hữu hạn, đưa sử khi nhân viên cấp dưới A sẽ mượn thực hiện dòng đồng hồ bnóng giờ đồng hồ, ví như nhân viên B cho tới mượn loại đồng hồ đeo tay kia thì Mutex vẫn bắt nhân viên B chờ cho đến lúc Nhân viên A trả lại.

Sử dụng cho bài toán sa thải (mutial exclution), vận động nlỗi là 1 token để đảm bảo an toàn tài ngulặng được chia sẻ. Một task nếu như muốn truy cập vào tài nguyên ổn chia sẻ

Cần yên cầu (đợi) mutex trước lúc truy vấn vào tài nguyên ổn chia sẻ (Sharing Resourse)Đưa ra token Lúc kết thúc cùng với tài nguyên.

Tại từng 1 thời điểm thì chỉ có 1 task đã có được mutex. Những task khác ước ao cùng mutex thì cần blochồng cho đến khi task cũ thả mutex ra.

*

Về cơ phiên bản thì Mutex hệt như binary semaphore mà lại được áp dụng đến vấn đề loại trừ chứ đọng không hẳn đồng nhất. Ngoài ra thì nó bao gồm hình thức vượt kế mức độ ưu tiên(Priority inheritance mechanism) để bớt tgọi vấn đề đảo ngược ưu tiên, nguyên tắc này có thể gọi đơn giản dễ dàng qua ví dụ sau:

Task A (low priority) yên cầu mutexTask B (high priority) mong trải nghiệm thuộc mutex bên trên.Mức độ ưu tiên của Task A sẽ được gửi tạm bợ về Task B để cho phép Task A được thực thiTask A đã thả mutex ra, cường độ ưu tiên sẽ tiến hành Phục hồi lại với chất nhận được Task B thường xuyên xúc tiến.

Xem thêm: Outbound Tour Outbound Là Gì ? Hướng Phát Triển Tour Inbound

Kết

Và đó là tất cả phần đông triết lý về hệ điều hành thời hạn thực RTOS, rất có thể nghe nói thì cực kì mung lung, huyền ảo và gồm phần hóc búa. Nhưng thực ra nó cũng không khó một chút nào.

Vậy cho nên hãy liên tục đến với đông đảo bài xích tiếp theo để biết RTOS chuyển động trên STM32 như thế nào nhé!

Nếu thấy xuất xắc, hãy like với tham gia vào đội những người dân bạn bè Nghiện Lập Trình để giao lưu với học hỏi và chia sẻ nhé!