Hệ Điều Hành Thời Gian Thực

Lời ngỏ

Đây là series reviews cơ bạn dạng về FreeRTOS trên Cortex-M3, cụ thể là LPC 1549. Dự loài kiến series vẫn tất cả 8 bài viết nhằm mục tiêu ra mắt cùng với chúng ta đa số thuật ngữ thường được sử dụng tương tự như ví dụ minh hoạ để các bạn dễ tưởng tượng, trường đoản cú đó tạo nên thành phầm cho riêng rẽ mình. Một số nhiều trường đoản cú bản thân vẫn để ngulặng tiếng Anh để nhân tiện đến chúng ta tra cứu tài liệu. Do project nhiều thêm vào đó thời gian đi làm đề xuất bản thân sẽ không ra bài hầu như đặn hoặc nhanh khô được. Nhưng chúng ta yên trung tâm là bản thân tổng phù hợp nhiều nguồn và dựa vào kinh nghiệm cá thể để gửi cho chúng ta nội dung bài viết unique độc nhất. Nếu các bạn tất cả góp ý về quality bài viết, kiếm tìm thấy lỗi không nên hoặc đề xuất tham khảo thêm, vui miệng phản hồi nhằm mình khắc phục và hạn chế vì kiến thức và kỹ năng là vô hạn.

Bạn đang xem: Hệ Điều Hành Thời Gian Thực

“Two things are infinite: the universe and human stupidity; & I"m not sure about the universe.”- Albert Einstein

Tài liệuKhông có gì cao niên, chỉ là 2 cuốn:

Về FreeRTOS, chúng ta sau khi include trong LPCXpresso IDE sẽ hiện tại phản hồi API, mình sẽ chỉ dẫn vào bài bác sau.

Chắc những bạn sẽ thắc mắc vì sao mình lại reference manual vào? Manual vô cùng đặc biệt quan trọng, document lại toàn cục API, Interface, Design, ... của sản phẩm. Thông qua manual, chúng ta từ thân chuyển vận tra cứu phương pháp xử lý vụ việc khi gặp trắc trở trước khi dựa vào đến sự trợ giúp từ bỏ fan không giống. Cuộc sinh sống thực tiễn không hẳn ai ai cũng dưng cơm lên tận miệng, khiến cho bạn solve sầu từng problem một. Sẽ mang lại một thời điểm bạn là người thứ nhất phạt hiển thị một vấn đề bắt đầu và không người nào khác không tính chúng ta gồm trách rưới nhiệm cần giải quyết nó.

“Give sầu a man a fish and you feed hlặng for a day; teach a man to fish và you feed him for a lifetime.”- Maimonides

1. Real-time Operating System

1.1 Operating System là gì

Trước lúc làm thân quen với Real-time Operating System(RTOS) , những bạn cần phải nắm quan niệm hệ quản lý điều hành là gì.

Hệ điều hành và quản lý là một trong những phần mượt chạy xe trên máy tính, dùng làm quản lý, làm chủ các sản phẩm phần cứng với những tài ngulặng ứng dụng trên máy vi tính. Dựa trên yêu cầu cùng phần cứng khác biệt, đơn vị cấp dưỡng tích hợp hệ điều hành và quản lý tương ứng vào sản phẩm của mình, như:

Hệ điều hành quản lý cho máy tính xách tay cá thể (MacOS, Linux, Windows, etc) - General Purpose Operating System (GPOS). Hệ quản lý và điều hành cho Server, Router, Switch ( Cisco IOS, etc) Hệ quản lý mang đến hệ thống nhúng ( FreeRTOS, µC/OS, etc) etc

Và bên dưới con mắt của xây dựng viên, hệ điều hành và quản lý là:

Công cố gắng, cung cấp services nhằm lập trình Quản lý multitasking được biết đến nhỏng task, thread, etc Quản lý process như ban đầu cùng kết thúc một procress, chọn process nhằm triển khai ( scheduling). Lập trình viên rất có thể đồng hóa scheduling phụ thuộc Locks (mutex), Semaphores, Monitors cùng Queues Quản lý bộ nhớ, input cùng output, file system, etc etc

1.2 RTOS là gì

Tuy nhiên, không chỉ là dừng lại sống mục đích sử dụng cùng phần cứng, thời hạn đánh giá cũng đóng một vai trò quan trọng trong vấn đề phân các loại hệ điều hành quản lý. ví dụ như Khi tai nạn thương tâm xe hơi xẩy ra, điều bạn mong muốn là air bag đề xuất bật ra ngay lập tức chớp nhoáng để đảm bảo an toàn bình yên cho bạn chđọng không phải hóng mang lại khi bạn sẽ ăn chuối no nê, nhìn con kê khoả thân nó new nhảy ra.

*

Vậy, tư tưởng real-time Ra đời với được có mang là khối hệ thống giới thiệu ý kiến cùng với input vào một khoảng thời hạn trải nghiệm. Trong một số ngôi trường đúng theo nhưng khoảng thời gian này rất có thể linh động không giống nhau ( hard real-time và solf real-time).

Response time: là khoảng chừng thời hạn khi hệ thống dìm đầu vào và xuất output.

Hard real-time: Một hệ thống bảo đảm an toàn tuyệt vời thời gian tối nhiều của một vận động. Trong một hệ thống hard real-time, một task không những được tiến hành một bí quyết đúng chuẩn, ngoài ra cần đảm bảo an toàn được deadline.

Soft real-time: Một hệ thống chỉ đưa ra đảm bảo an toàn kha khá thời hạn buổi tối đa của một hoạt động. Nhưng trái cùng với hard real-time, thỉnh thoảng trễ deadline cũng không có tác dụng tác động cho hệ thống.

Jitter: Mỗi một task trong RTOS là 1 trong vòng loop cùng các lần chạy task thì thời gian thực hiện task này sẽ lâu năm nlắp khác nhau. Jitter là việc chênh lệch thân thời gian mà task này được phép chạy cùng lần chạy task kia tốn các thời hạn nhất. RTOS vẫn về tối ưu jitter nếu được lập trình sẵn đúng, tức là những lần task chạy sẽ tốn một khoảng thời gian đa số tương đương.

*

Nhưng, trường hợp chỉ dựa vào đánh giá trong thời hạn chất nhận được cùng với độ trễ rẻ và để được hotline là RTOS là chưa đủ mà lại nó còn dựa vào vào "a totally deterministic operation mode". lấy ví dụ như như khi chúng ta query lấy web3_user info vào database, các lần thời gian query sẽ khác nhau phụ thuộc vào vào kích thước bộ nhớ lưu trữ, thời hạn load của hệ thống, số lượng record trong database, con số web3_user trả về, ... Điều này Tức là database query không "deterministic", không hẳn real-time operation. Cũng chính vì nguyên nhân này mà số đông ngôn ngữ thịnh hành như Java, C# ko được dùng để làm code RTOS vị garbage collector rất có thể chạy bất cứ dịp như thế nào với lâm thời hoãn hồ hết task khác không đúng vào khi.

RTOS is designed lớn run applications with very precise timing & a high degree of reliability.

Nếu RTOS có tương đối nhiều điểm mạnh vượt trội so với GPOS, vậy tại vì sao ko gửi hết thanh lịch RTOS? Câu vấn đáp là chính vì sự tinh vi. Implement một RTOS khó khăn hơn GPOS không hề ít, những developer bắt buộc khéo léo trong bài toán schedule, mix priority để tránh tình trạng priority inversion, tệ hơn là deadlock. Nhiều hơn với các tác vụ mỗi ngày nlỗi msống mail, duyêt web các bạn có thể hóng trong một khoảng chừng thời gian nhất mực, không yêu cầu thừa tương khắc khe về response time bắt buộc RTOS là không cần thiết.

1.3 Sự ra đời của Embedded OS

Linux rất có thể là 1 ứng cử viên sáng sủa giá vị đã thân quen với giới lập trình viên, vậy chang không sử dụng trực tiếp Linux cho hệ thống nhúng? Câu trả lời là bạn dạng thân kernel của Linux ko thỏa mãn nhu cầu được thử khám phá của RTOS. Thêm vào đó, nó đòi hỏi những bộ lưu trữ (mặt hàng MB RAM với MMU CPU). Không các vậy service đi kèm theo đã được tích hòa hợp sâu vào Linux, bọn họ cạnh tranh có thể tuỳ chỉnh cho tương xứng với hồ hết thiết bi bao gồm bộ lưu trữ tiêu giảm. Vì vậy cơ mà đầy đủ hệ điều hành và quản lý nhúng nlỗi FreeRTOS, µC/OS thành lập, với nhiệm vụ chính là chạy xe trên phần lớn thứ bé dại gọn, tiết kiệm điện và có một Điểm lưu ý là rất là dễ config.

2. Multitasking

2.1. Process states

Trước lúc tìm hiểu multitask, nên thế được định nghĩa process.

In computing, a process is an instance of a computer program that is being executed. It contains the program code & its current activity.

Xem thêm: Senior Director Là Gì - Đặt Chức Danh Tiếng Anh Trên Card Visit

Một process dường như không sống vào running states thì đang ở trong những states sau:• Ready : chuẩn bị nhằm thực thi• Blocked : process không sẵn sàng nhằm chạy và yêu cầu ngóng dữ liêu, ví dụ như data từ 1 queue khác• Suspended : process bị gửi thanh lịch tâm lý hold và chỉ còn có thể được resume vì chưng OS call.

2.2. Multitasking là gì ?

Hãy coi bạn là hệ điều hành quản lý, hành động như đi làm, nấu ăn cơm, lau chùi thành tựu, etc là process. Vào một ngày đẹp mắt trời, các bạn ra quyết định viết bài xích trên opdaichien.com cùng uống tthẩm tra. Có 3 gạn lọc xảy ra:

Viết bài xích chấm dứt rồi vẫn uống trà soát Uống trà soát xong xuôi rồi sẽ viết bài xích Vừa viết bài vừa uống trà

Vậy những chúng ta có thể thấy hành động số 3 là hợp lý và phải chăng độc nhất, vị cả 2 trọng trách được thiết kế cùng 1 thời gian, tiết kiệm thời gian. Khi các bạn túng ý tưởng phát minh, câu chữ để viết bài, bạn có thể nhâm nhi trà ngồi ngẫm nghĩ về từ bỏ ngữ nào sử dụng mang đến tương thích. Đây là lý do multitask thành lập.

Fun fact:Usually processes spover most of their time waiting for something, for example web3_user input or an event

So sánh

Nhỏng chúng ta đang thấy execution time đã làm được về tối ưu.

2.3. Multitasking types

Có hai một số loại Multitasking• Pre-emptive: khối hệ thống bao gồm quyển đưa 1 process từ tinh thần exedễ thương sang trạng thái chờ bất cứ khi nào cùng gửi sang thực hiện một process khác. Việc này thường được tiến hành thông qua interrupt even tuy vậy process cũng có quyền tận hưởng.• Co-operative: process tự nguyện chuyển Việc thực thi sang một process không giống bằng cách Gọi 1 function đặc biệt như thế nào đó hoặc Điện thoại tư vấn bloking OS function.

Với nhì nhiều loại này, còn nếu không cảnh giác programmer đang dễ dàng xong với khối hệ thống ko đáp ứng đầy đủ tiêu chuẩn của RTOS.

A rule of thumb:Let operating system handle waiting – if you need to wait the best place to wait is on a blocking OS function

2.4. Concurrency

Concurrency: Multitasking in a single core environment

Một vi cách xử trí đối kháng nhân chỉ có thể xúc tiến tốt nhất một process tại 1 thời điểm bất kỳ cùng các process khác phải bên trong tâm lý non-running ( xem lại mục 2.1). Việc đổi khác xuất phát điểm từ một process này sang 1 process không giống call là context swtich.

• Context holds all the information that is required to lớn put a process on hold và continue execution at a later time without affecting the computations of the process• Context switch takes some time which limits the number of processes in a time critical system

Fun fact:– In 2 GHz processor the instruction cycle is 0,5 ns– The access time of typical disk can be 7 ms– In “human terms” these are 1 second & 162 days

Ngày nay thì phần nhiều là thực hiện vi xử lý đa nhân nên vẫn là real parallelism chđọng không còn là concurrency đối với vi xử lý đối kháng nhân nữa. Nhỏng vẫn nhắc nghỉ ngơi fun fact trên, thời gian triển khai context switch cực kỳ nkhô cứng phải bọn họ tất cả cảm hứng là phần đa lắp thêm được thực hiện tuy nhiên tuy nhiên cơ mà thực tế nó là one-by-one.

2.5. FreeRTOS schedule

Trong FreeRTOS, mỗi một task sẽ được:

Gán một priority Mỗi task chỉ có tuyệt nhất một tâm trạng vào bất kì thời điểmChỉ tuyệt nhất một task ngơi nghỉ Running state vào bất kì thời điểm

Scheduler đã luôn luôn lựa chọn task vẫn làm việc Ready state và bao gồm priority tối đa để đưa vào Running state.

*

Tổng kết

Các các bạn buộc phải nắm vững được khái niệm:

OS, sự không giống nhau giữa GPOS cùng RTOS Process, process states, priority Multitasking ( Multitasking types, concurrency) Context swtich

Bài viết sau đó vẫn nói tới semaphore, guarding resource và priority inversion.

Leave a Reply

Your email address will not be published. Required fields are marked *

x

Welcome Back!

Login to your account below

Retrieve your password

Please enter your username or email address to reset your password.