Kĩ thuật lập lịch và xử lý ngắt trong thời gian thực

12 543 4
Kĩ thuật lập lịch và xử lý ngắt trong thời gian thực

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Kĩ thuật lập lịch xử lý ngắt thời gian thực Kĩ thuật lập lịch xử lý ngắt thời gian thực Bởi: Khoa CNTT ĐHSP KT Hưng Yên Các khái niệm Các tác vụ (task) hoạt động giám sát kernel thời gian thực Chúng bao gồm: • Một tập hợp dịch vụ thực công việc đồng hoá giao tiếp truyền thông tác vụ • Một lập lịch (scheduler) với chức khẳng định có tác vụ với mức ưu tiên cao thực thi Bộ lập lịch xét tác vụ máy trạng thái (state machine) Tất kernel có mô hình trạng thái nó, nhiên, thông thường mô hình trạng thái nảy phức tạp Hình 9.1 cho bạn thấy mô hình trạng thái mang tính khái niệm tác vụ Trong hình, ta thấy có trạng thái: • Đang thực thi (Running): có tác vụ nằm trạng thái Một tác vụ tự động chuyển từ trạng thái Đang thực thi sang trạng thái Khoá (Blocked) việc chờ đợi kiện xảy Trong hệ thống có chiếm quyền thực thi (chúng ta đề cập đến sau), lập lịch bắt tác vụ trạng thái Đang thực thi xuống trạng thái Sẵn sàng (Ready) có tác vụ với mức ưu tiên cao chuyển đến trạng thái Sẵn sàng Chúng ta gọi sựchiếm quyền thực thi (preemption) • Sẵn sàng (Ready): tác vụ sẵn sàng để hoạt động lại có mức ưu tiên thấp tác vụ thực thi, tác vụ chuyển đến trạng thái chờ Tác vụ chuyển đến trạng thái Đang thực thi trở thành tác vụ có mức ưu tiên cao • Khoá (Blocked): tác vụ bị khoá tác vụ đợi kiện xảy ra, ví dụ tin, tin nhắn gửi đến hộp thư tác vụ đó, hay thời gian chờ tác vụ kết thúc… 1/12 Kĩ thuật lập lịch xử lý ngắt thời gian thực Mô hình trạng thái tác vụ Các phương pháp lập lịch phổ biến Lập lịch có chu kỳ Có nhiều tác vụ mà công việc thức dậy theo chu kỳ, làm vài công việc quay trở lại ngủ tiếp Có vài phương pháp để thực tác vụ kiểu hình 8.2 Trong tất hệ điều hành, tìm thấy lệnh gọi hàm trễ Delay(), vài hàm có chức tương tự Hàm làm cho tác vụ bị khoá thời gian xác định cho trước, thông thường thời gian biểu diễn xung đồng hồ (clock tick) Hình 8.2a cho ta thấy việc thực tác vụ ta sử dụng lệnh Delay() tác vụ có tính chu kỳ Trong trường hợp này, khoảng thời gian trễ clock tick Hoạt động hệ thống phụ thuộc vào thời gian thực thi tác vụ Nếu thời gian thực nhỏ tick tác vụ thức dậy sau tick mong muốn Tuy nhiên, tác vụ hoạt động tick, đó, sau tác vụ gọi lệnh Delay(), bị khoá clock tick Thế nhưng, ví dụ này, tác vụ thực tế thức dậy sau xung clock tick Đó điều mong muốn Một phương án khác, hệ thống có, trình bày hình 8.2b Trong trường hợp này, lập lịch đánh thức tác vụ vào thời điểm thích hợp mà không quan tâm đến thời gian thực tác vụ Do đó, thay dùng hàm Delay(), tác vụ có tính chu kỳ gọi hàm WaitTilNext() Hàm khóa tác vụ phiên thực 2/12 Kĩ thuật lập lịch xử lý ngắt thời gian thực Các tác vụ có tính chu kì Lập lịch không theo chu kỳ Một số tác vụ phải phản ứng lại kiện xảy ngẫu nhiên thời điểm khác Một kiện việc gói liệu từ mạng gửi đến nơi, việc công tắc đóng lại để bể nước đầy kết thúc việc convert tín hiệu tương tự sang số ADC cần đọc Thông thường, kiện không đồng giao tiếp với máy tính thông qua ngắt Chương trình dịch vụ ngắt phải có cách để kết nối xuất ngắt với tác vụ chịu trách nhiệm xử lý kiện Lập lịch theo kiểu chiếm quyền thực thi lập lịch chiếm quyền thực thi Có phương thức cho việc lập lịch tác vụ: chiếm quyền thực thi không chiếm quyền thực thi Xét tác vụ: tác vụ có mức ưu tiên thấp thực tác vụ có mức ưu tiên cao bị khoá để chờ kiện xảy ra, kiện thông báo tín hiệu ngắt Hình 8.3a cho thấy xảy hệ thống tính chiếm quyền ưu tiên Chương trình dịch vụ ngắt ISR làm cho tác vụ với mức ưu tiên cao chuyển từ trạng thái Khoá sang trạng thái Sẵn sàng Tuy nhiên, đến ISR thực xong tác vụ với mức ưu tiên thấp tiếp tục thực thi điểm bị ngắt Sau đó, tác vụ bị khoá để chờ kiện tác vụ chuyển sang trạng thái thực thi Hình 8.3 b ứng với trường hợp hệ thống có tính chiếm quyền ưu tiên Điểm khác biệt lập lịch gọi đến cuối chương trình dịch vụ ngắt Bộ lập lịch xác định tác vụ có mức ưu tiên cao trạng thái Sẵn sàng chuyển lên trạng 3/12 Kĩ thuật lập lịch xử lý ngắt thời gian thực thái thực thi Do đó, tác vụ với mức ưu tiên thấp bị chiếm quyền thực thi Một hệ thống tính chiếm quyền thực thi muốn tất tác vụ phải “những công dân tốt” cách tự nguyện trao trả xử lý cho tác vụ khác để chắn điều: tác vụ có hội để sử dụng xử lý Các hệ Windows trước dạng Linux khác, hệ điều hành có tính chiếm quyền thực thi Linux chuẩn không quan tâm đến vấn đề thời gian thực thời gian dài, vấn đề chiếm quyền thực thi không đề cập Các hệ thống có tính chiếm quyền thực thi cung cấp cho ta nhiều thời gian phản ứng dự đoán tác vụ có mức ưu tiên cao xử lý Đây điểm cốt lõi thời gian thưc: khả đảm bảo thời gian lớn để phản ứng lại kiện Trong hệ thống không chiếm quyền thực thi, chẳng có để đảm bảo thời gian tác vụ nhường lại xử lý cho tác vụ khác Mặt khác, hệ thống có chiếm quyền ưu tiên, vấn đề tranh chấp tài nguyên hệ thống đáng quan tâm cẩn thận Lập lịch: Có chiếm quyền thực thi Hai phương án khác tận dụng để xử lý tác vụ có mức ưu tiên Trong phương thức lập lịch kiểu vòng lặp robin, tác vụ thực thi đến bị khoá (block) để chờ kiện xuất có tình nguyện nhường (yield) xử lý lại Sự khác biệt khoá nhường chỗ: trường hợp thứ 2, tác vụ quay trở lại trạng thái Sẵn sàng (ready) Xét trường hợp danh sách Sẵn sàng có tác vụ thứ tự A, B, C Các tác vụ có mức ưu tiên Tác vụ A đứng đầu danh sách chuyển đến trạng thái Thực thi Khi tác vụ A nhường (yield) xử lý, tác vụ B trở thành trạng thái thực thi danh sách Sẵn sàng sau: 4/12 Kĩ thuật lập lịch xử lý ngắt thời gian thực BCA Khi B nhường, C chuyển trạng thái danh sách chuyển thành: BCA Như vậy, tất tác vụ hoạt động thành vòng tròn, chúng hoạt động theo kiểu nhường Các tác vụ có mức ưu tiên thấp trạng thái Sẵn sàng không thực tất tác vụ bị khoá Nhát cắt thời gian biến thể vòng lặp robin Trong đó, quy định tác vụ nhận lượng thời gian định hay gọi nhát cắt thời gian Việc làm bảo vệ tác vụ khỏi trường hợp chiếm dụng xử lý lâu Do đó, tác vụ chạy bị khoá, tình nguyện nhường hay hạn thời gian cho phép Tùy thuộc vào hoàn cảnh yêu cầu, tác vụ có lượng thời gian cho phép khác Xét khía cạnh đó, vòng lặp robin dạng khác vòng lặp polling Kỹ thuật lập lịch • FCFS Trong chế lập lịch đến trước phụ vụ trước tình xử lý theo thứ tự mà xuất yêu cầu hoàn thành Cơ chế lập lịch thuộc loại không ngắt có ưu điểm dễ dàng thực thi Tuy nhiên, không phù hợp cho hệ thống mà hỗ trợ nhiều người sử dụng có biến đổi lớn thời gian trung bình mà trình hay tác vụ phải chờ đợi để xử lý Hơn việc xử lý không ngắt nên có tượng chiếm hữu độc quyền xử lý thời gian dài gây trễ bất thường trình thực tác vụ phải chờ đợi khác • Shortest Job First - SJF Trong chế lập lịch tác vụ có thời gian thực thi ngắn có quyền ưu tiên cao phục vụ trước Vấn đề gặp phải chế lập lịch trước thời gian thực thi tác vụ tham gia chương trình thông thường phải áp dụng chế tiên đoán đánh giá dựa vào kinh nghiệm tác vụ thực thi hệ thống Điều chắn khó để đảm bảo độ xác Cơ chế lập lịch áp dụng cho loại ngắt không ngắt • Rate monotonic (RM): 5/12 Kĩ thuật lập lịch xử lý ngắt thời gian thực Phương pháp lập lịch RM có lẽ thuật toán biết tới nhiều áp dụng cho tác vụ hay trình độc lập Phương pháp dựa số giả thiết sau: (1) Tất tác vụ tham gia hệ thống phải có deadline kiểu chu kỳ (2) Tất tác vụ độc lập với (3) Thời gian thực tác vụ biết trước không đổi (4) Thời gian chuyển đổi ngữ cảnh thực nhỏ bỏ qua Thuật toán RM thực thi theo nguyên lý gán mức ưu tiên cho tác vụ dựa chu kỳ chúng Tác vụ có chu kỳ nhỏ có gán mức ưu tiên cao Theo nguyên lý với tác vụ chu kỳ không thay đổi RM phương pháp lập lịch cho phép ngắt mức ưu tiên cố định Tuy nhiên RM hỗ trợ yêu cầu hệ thống không tốt • Earliest deadline first (EDF) Như tên gọi phương pháp, thuật toán lập lich theo phương pháp sử dụng deadline tác vụ hay điều kiện ưu tiên để xử lý điều phối hoạt động Tác vụ có deadline gần có mức ưu tiên cao tác vụ có deadline xa nhận mức ưu tiên thấp Ưu điểm bật phương pháp giới hạn lập lịch đáp ứng 100% cho tất tập tác vụ Hơn mức ưu tiên gán cho tác vụ trình hoạt động động chu kỳ tác vụ thay đổi lúc theo thời gian EDF áp dụng cho tập tác vụ chu kỳ mở rộng để đáp ứng cho trường hợp deadline thay đổi khác theo chu kỳ Vấn đề thuật toán lập lich EDF đảm bảo tác vụ hệ thống không thực thi tình độ hệ thống bị tải Trong nhiều trường hợp mức độ sử dụng trung bình nhỏ 100% tình vượt qua khả đáp ứng hệ thống tức có tác vụ không đảm bảo thực thi Trong trường hợp cần phải điều khiển để biết tác vụ bị lỗi không thực thành công tác vụ thực thành công trình độ • Minimum Laxity first (MLF) Cơ chế lập lịch ưu tiên tác vụ thời gian lại để thực trước phải kết thúc để đảm bảo yêu cầu thực thi Đây xem chế lập lịch gán quyền ưu tiên động dễ đạt tối ưu hiệu suất thực công hệ thống • Round Robin 6/12 Kĩ thuật lập lịch xử lý ngắt thời gian thực Đây chế lập lịch phân bổ đặn, ngắt đơn giản Mỗi tác vụ xử lý/phục vụ khoảng thời gian định lặp lại theo chu trình xuyên suốt toàn tác vụ tham gia hệ thống Khoảng thời gian phục vụ cho tác vụ trình thoả hiệp thời gian thực tác vụ thời gian thực chu trình Có thể chọn khoảng thời gian nhỏ đôi lúc không nhận có phân bổ thực hệ thống Tuy nhiên thời gian nhỏ làm tính hiệu thực toàn hệ thống cần nhiều thời gian việc chuyển đổi ngữ cảnh cho tác vụ sau chu trình thực Xử lý ngắt Một hệ thống thời gian thực gọi “điều khiển kiện” có nghĩa hệ thống phải có chức phản ứng lại kiện xảy môi trường hệ thống Vậy hệ thống phản ứng lại kiện nào? Hiện có hai phương pháp tiếp cận vấn đề Phương pháp Polling hay Vòng lặp Polling phương pháp thứ xử lý ngắt (Interrup) Polling Vòng lặp Polling Hãy xem đoạn code hình 8.4 Chương trình bắt đầu vài cài đặt ban đầu cho hệ thống truy cập vào vòng lặp vô hạn, đó, kiện mà hệ thống phản ứng lại kiểm tra Khi có kiện xảy ra, dịch vụ phản ứng lại kiện kích hoạt Tiến trình thực vòng lặp tỏ đơn giản thích hợp với hệ thống nhỏ không đòi hỏi gắt gao mặt thời gian Tuy nhiên, có số vấn đề cần bàn đến: • Thời gian phản ứng lại kiện phụ thuộc lớn vào vị trí mà chương trình thực vòng lặp Lấy ví dụ: Nếu kiện event_1 xảy 7/12 Kĩ thuật lập lịch xử lý ngắt thời gian thực trước câu lệnh if(event_1) thời gian phản ứng ngắn Nhưng kiện event_1 xảy sau câu lệnh kiểm tra đó, chương trình lúc phải quét toàn vòng lặp quay trở điểm đầu thực dịch vụ kiện event_1 • Và hệ tất yếu, thời gian phản ứng hàm số lượng kiện kích hoạt thời điểm sau thời gian thực dịch vụ lần quét vòng lặp chương trình • Tất kiện chương trình đối xử cách bình đẳng ưu tiên • Khi có đặc tính mới, dịch vụ mới, thêm vào chương trình, thời gian phản ứng lại dài thêm Interrupt (ngắt) Phương pháp tiếp cận thứ ngắt (Interrupt) Rất hữu dụng gây không khó khăn cho người lập trình Ý tưởng ngắt: xuất kiện “ngắt” tiến trình thực chương trình, “nhồi” thêm thực tiến trình khác vào hình 8.5 Khi tiến trình nhồi thêm thực xong, chương trình lại thực tiếp từ thời điểm bị ngắt Tiến trình kiện ngắt thực mà quan tâm đến chương trình Những tiến trình người ta gọi “chương trình dịch vụ ngắt” (Interrupt Service Routine) viết tắt ISR Các hệ vi xử lý thường thực loại ngắt khác nhau: • Câu lệnh INT, hay nhiều nhắc đến với tên TRAP (bẫy) Nó câu lệnh để gọi chương trình đặc biệt Chúng ta đề cập đến sau • Các trường hợp đặc biệt xử lý Các điều kiện lỗi lỗi chia 0, lỗi truy cập bất hợp pháp vào nhớ điều khiển thông qua chế ngắt Ngắt Hai loại ngắt kể đồng với việc thực lệnh Trong đó: INT câu lệnh lỗi đặc biệt xử lý kết trực tiếp việc thực lệnh 8/12 Kĩ thuật lập lịch xử lý ngắt thời gian thực Loại ngắt thứ tạo kiện xảy bên xử lý Loại ngắt tạo I/O phần cứng xảy không đồng với việc thực lệnh Các ngắt không đồng bộ: • Làm tối đa hoá hiệu suất thông lượng hệ thống máy tính • Gây phần lớn lỗi rắc rối cho người lập trình Hầu hết xử lý sử dụng lược đồ ngắt giống Hình 8.6 kiến trúc ngắt Intel x86 1kilo byte (KB) nhớ giành cho bảng véctơ ngắt (Interrupt Vector Table) Mỗi véctơ có byte thể địa (segment offset) chương trình dịch vụ ngắt Các véctơ mang ý nghĩa, chức khác định nghĩa kiến trúc xử lý Ví dụ: véctơ lỗi chia 0, véctơ breakpoint (lệnh ngắt INT 1byte) Ngắt- Bảng véctơ ngắt Một số véctơ dành cho ngắt Trong PC, véctơ đến 15 0x70 đến 0x77 dành cho phần cứng Tất véctơ truy cập thông qua lệnh ngắt INT 2byte, đó, byte thứ số thứ tự véctơ (ngắt) Phần mềm hệ thống thường thiết lập quy ước liên quan đến nhiều véctơ Ví dụ: PC BIOS sử dụng số ngắt cho dịch vụ phần cứng LINUX sử dụng ngắt INT 0x80 để gọi dịch vụ kernel Sau ví dụ việc sử dụng ngắt INT 0x80 Linux: • Bộ xử lý lưu lại giá trị thời ghi đếm chương trình Program Counter (PC) Code Segment (CS) vào ngăn xếp stack với từ điều khiển trạng thái xử lý Proccesor Status Word (PSW) 9/12 Kĩ thuật lập lịch xử lý ngắt thời gian thực • Byte thứ câu lệnh INT số bảng véctơ ngắt để từ tìm địa chương trình dịch vụ ngắt (ISR) Bộ xử lý nạp địa vào ghi PC CS việc thực chương trình thực từ điểm Ngắt hoạt động ngắt • Kết thúc ISR câu lệnh IRET (Interrupt Return) Nó giải phóng PC CS để nạp lại giá trị chương trình thực tiếp lệnh sau lệnh INT Lệnh INT tương tự lệnh gọi chương trình CALL có đôi chút khác biệt: địa đích lệnh CALL nhúng vào câu lệnh với INT, ta không cần quan tâm đến địa ISR Địa nầm bảng véctơ ngắt Đây điểm thuận lợi cho việc truyền thông chương trình biên dịch chương trình tải, ví dụ chương trình ứng dụng hệ điều hành Các ngắt có cách thức thực thể hình 8.8 Một thiết bị bên đưa “yêu cầu ngắt” Interrupt Request (IRQ) Khi xử lý phản ứng lại xác nhận “chấp nhận ngắt” Interrupt Acknowledge (IAK), thiết bị gửi số thứ tự véctơ ngắt lên bus liệu Bộ xử lý sau thiết lập lệnh ngắt INT với số véctơ ngắt cung cấp Ngắt cứng 10/12 Kĩ thuật lập lịch xử lý ngắt thời gian thực Hình 8.8: Ngắt cứng Ngắt kích hoạt bị vô hiệu hoá Ở cấp độ xử lý, ngắt kích hoạt vô hiệu hoá thông qua câu lệnh STI CLI Các ngắt kích hoạt vô hiệu cách có chọn lọc điều khiển ngắt 8259 hay thiết bị Trên thực tế, việc kích hoạt vô hiệu ngắt làđiểm mấu chốtđể thiết kế thực thi phần mềm thời gian thực Cũng đáng ngạc nhiên nói ngắt không đồng có vấn đề đáng bàn Để ý ứng dụng thu thập liệu dựa A/D đa kênh hình 8.9 Cứ chuyển đổi A/D thu thập tập hợp liệu kênh, ngắt xử lý Chương trình dịch vụ ngắt đọc liệu cất vào nhớ đệm, nơi mà chương trình khác (còn gọi chương trình nền) tiếp tục xử lý Ví dụ ngắt Hoạt động điều khiển ngắt cho phép phản ứng lại A/D cách nhanh chóng nhớ đệm tách chương trình khỏi nguồn liệu, ví dụ: chương trình không cần quan tâm đến liệu từ đâu mà có Bây xem đến đoạn mã lệnh ghi hình 8.9 Giả thiết thí nghiệm, cung cấp tín hiệu biến đổi liên tục vào kênh Đồng thời, giả thiết chương trình không bị “fail” thực đo tín hiệu đồng Trong thực tế, chương trình viết chắn bị “fail” ngắt xảy cập nhật biến Cur_temp cập nhật biến Set_temp với kết giá trị biến Cur_temp cập nhật từ tập hợp liệu cũ trước đó, giá trị biến Set_temp cập nhật từ tập hợp liệu thời Như vậy, tín hiệu đầu vào thay đổi theo thời gian tập hợp liệu tách rời thời gian xác định, giá trị biến khác đó, chương trình “fail” Đây chất vấn đề lập trình thời gian thực Cần phải quản lý ngắt khôngđồng bộđể chúng không xảy vào thờiđiểm không thích hợp 11/12 Kĩ thuật lập lịch xử lý ngắt thời gian thực Có giải pháp, dù không hay cho lắm, để giải vấn đề Ta dùng lệnh vô hiệu hoá ngắt (CLI) trước cập nhật biến Cur_temp kích hoạt ngắt lệnh STI sau cập nhật biến Set_temp Việc làm giúp ngắt tránh khỏi phiền phức việc cập nhật liên tục đề cập Có vẻ sáng suốt sử dụng lệnh CLI STI chìa khoá cho giải pháp đắn, đơn giản rải lệnh CLI STI code chương trình chẳng khác việc sử dụng lệnh “go to” biến toàn cục 12/12 [...]... hiện thời Như vậy, khi tín hiệu đầu vào thay đổi theo thời gian và các tập hợp dữ liệu được tách rời nhau ở các thời gian xác định, giá trị các biến sẽ khác nhau và do đó, chương trình sẽ “fail” Đây chính là bản chất của vấn đề lập trình thời gian thực Cần phải quản lý các ngắt khôngđồng bộđể chúng không xảy ra vào những thời iểm không thích hợp 11/12 Kĩ thuật lập lịch và xử lý ngắt trong thời gian thực. . .Kĩ thuật lập lịch và xử lý ngắt trong thời gian thực Hình 8.8: Ngắt cứng Ngắt có thể được kích hoạt hoặc bị vô hiệu hoá Ở cấp độ của bộ xử lý, ngắt có thể được kích hoạt hoặc vô hiệu hoá thông qua câu lệnh STI và CLI Các ngắt có thể được kích hoạt hoặc vô hiệu một cách có chọn lọc ở cả bộ điều khiển ngắt 8259 hay ở chính thiết bị đó Trên thực tế, việc kích hoạt và vô hiệu ngắt chính làđiểm... làđiểm mấu chốtđể thiết kế và thực thi một phần mềm thời gian thực Cũng không có gì đáng ngạc nhiên khi nói rằng ngắt không đồng bộ có những vấn đề đáng bàn của nó Để ý một ứng dụng thu thập dữ liệu dựa trên bộ A/D đa kênh như trên hình 8.9 Cứ mỗi khi bộ chuyển đổi A/D thu thập một tập hợp dữ liệu trên các kênh, nó ngắt bộ xử lý Chương trình con dịch vụ ngắt đọc dữ liệu và cất vào bộ nhớ đệm, nơi mà chương... tục xử lý Ví dụ về ngắt Hoạt động điều khiển ngắt cho phép chúng ta phản ứng lại A/D một cách nhanh chóng trong khi bộ nhớ đệm tách chương trình nền khỏi nguồn dữ liệu, ví dụ: chương trình nền không cần quan tâm đến dữ liệu được từ đâu mà có được Bây giờ hãy xem đến đoạn mã lệnh được ghi trong hình 8.9 Giả thiết chỉ là thí nghiệm, chúng ta cung cấp một tín hiệu biến đổi liên tục vào cả kênh 5 và 6... chỉ là thí nghiệm, chúng ta cung cấp một tín hiệu biến đổi liên tục vào cả kênh 5 và 6 Đồng thời, giả thiết rằng chương trình sẽ không bị “fail” khi đang thực hiện đo tín hiệu đồng nhất Trong thực tế, chương trình như đã viết chắc chắn sẽ bị “fail” bởi vì một ngắt có thể xảy ra trong khi cập nhật biến Cur_temp và cập nhật biến Set_temp với kết quả là giá trị của biến Cur_temp được cập nhật từ tập hợp... dùng một lệnh vô hiệu hoá ngắt (CLI) trước khi cập nhật biến Cur_temp và kích hoạt ngắt bằng lệnh STI sau khi cập nhật biến Set_temp Việc làm này giúp các ngắt tránh khỏi phiền phức của việc cập nhật liên tục như đã đề cập Có vẻ như chúng ta đã sáng suốt khi sử dụng các lệnh CLI và STI như một chìa khoá cho một giải pháp đúng đắn, nhưng nếu chỉ đơn giản là rải các lệnh CLI và STI trong code của chương... dụng các lệnh CLI và STI như một chìa khoá cho một giải pháp đúng đắn, nhưng nếu chỉ đơn giản là rải các lệnh CLI và STI trong code của chương trình thì cũng chẳng khác gì việc sử dụng các lệnh “go to” và các biến toàn cục 12/12 ... số thứ tự véctơ ngắt lên bus liệu Bộ xử lý sau thiết lập lệnh ngắt INT với số véctơ ngắt cung cấp Ngắt cứng 10/12 Kĩ thuật lập lịch xử lý ngắt thời gian thực Hình 8.8: Ngắt cứng Ngắt kích hoạt... 9/12 Kĩ thuật lập lịch xử lý ngắt thời gian thực • Byte thứ câu lệnh INT số bảng véctơ ngắt để từ tìm địa chương trình dịch vụ ngắt (ISR) Bộ xử lý nạp địa vào ghi PC CS việc thực chương trình thực. .. trực tiếp việc thực lệnh 8/12 Kĩ thuật lập lịch xử lý ngắt thời gian thực Loại ngắt thứ tạo kiện xảy bên xử lý Loại ngắt tạo I/O phần cứng xảy không đồng với việc thực lệnh Các ngắt không đồng

Ngày đăng: 31/12/2015, 10:47

Mục lục

  • Kĩ thuật lập lịch và xử lý ngắt trong thời gian thực

  • Các phương pháp lập lịch phổ biến

    • Lập lịch có chu kỳ

    • Lập lịch không theo chu kỳ

    • Lập lịch theo kiểu chiếm quyền thực thi và lập lịch không có chiếm quyền thực thi

    • Kỹ thuật lập lịch

Tài liệu cùng người dùng

Tài liệu liên quan