Một trong số các khó khăn khi thực hiện các kỹ thuật chịu lỗi là sự thiếu hụt h cỗ trợ ủa hệ điều hành.. Mục đích nghiên cứu Mục đích ủa luậ c n văn là nghiên cứu tìm hiểu các phương phá
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI - LUẬN VĂN THẠC SỸ KHOA HỌC NGHIÊN CỨU KỸ THUẬT XÂY DỰNG PHẦN MỀM CHỊU LỖI ÁP DỤNG CHO HỆ THỐNG NHÚNG NGÀNH: CÔNG NGHỆ THÔNG TIN MÃ SỐ:…………… ĐÀO NGỌC KIÊN Người hướng dẫn khoa học: PGS.TS HUỲNH QUYẾT THẮNG HÀ NỘI 2009 Tai ngay!!! Ban co the xoa dong chu nay!!! 17057205161991000000 Nghiên cứu kỹ thuật xây dựng phần mềm chịu lỗi áp dụng cho hệ thống nhúng LỜI CAM ĐOAN Tôi – Đào Ngọc Kiên, học viên lớp Cao học CNTT 2006-2008 Trường Đại học Bách Khoa Hà Nội – cam kết Luận văn tốt nghiệp cơng trình nghiên cứu thân hướng dẫn PGS.TS Huỳnh Quyết Thắng, Viện CNTT-TT, Trường Đại học Bách Khoa Hà Nội Các kết nêu Luận văn tốt nghiệp trung thực, khơng chép tồn văn cơng trình khác Hà Nội, ngày 30, tháng 10, năm 2009 Học viên: Đào Ngọc Kiên Lớp : Cao Học CNTT 06-08 Đào Ngọc Kiên - Lớp Cao Học CNTT 06-08 – ĐH Bách Khoa Hà Nội Nghiên cứu kỹ thuật xây dựng phần mềm chịu lỗi áp dụng cho hệ thống nhúng LỜI CẢM ƠN Tôi xin bày tỏ lòng biết ơn sâu sắc tới thầy giáo, PGS.TS Huỳnh Quyết Thắng, Viện Công Nghệ Thông Tin Truyền Thông, trường Đại học Bách Khoa Hà Nội, khuyến khích tận tình hướng dẫn tơi suốt trình thực luận văn Nhờ quan tâm bảo ý kiến đóng góp quý báu thầy, tơi hồn thành luận văn Tôi xin chân thành cảm ơn tập thể thầy, cô giáo trường Đại học Bách Khoa Hà Nội nói chung Viện Cơng Nghệ Thơng Tin Truyền Thơng nói riêng tận tình giảng dạy truyền đạt cho kiến thức, kinh nghiệm quý báu suốt năm học vừa qua Tôi xin cảm ơn đồng nghiệp công ty tạo điều kiện thời gian để tơi học tập hồn thành luận văn Cuối cùng, tơi xin chân thành cảm ơn gia đình, người thân hết lịng giúp đỡ hỗ trợ vật chất lẫn tinh thần giúp yên tâm học tập nghiên cứu suốt trình học tập thực luận văn Đào Ngọc Kiên - Lớp Cao Học CNTT 06-08 – ĐH Bách Khoa Hà Nội Nghiên cứu kỹ thuật xây dựng phần mềm chịu lỗi áp dụng cho hệ thống nhúng MỤC LỤC LỜI CAM ĐOAN LỜI CẢM ƠN MỤC LỤC DANH MỤC CÁC HÌNH VẼ DANH MỤC CÁC BẢNG DANH MỤC CÁC TỪ VIẾT TẮT MỞ ĐẦU 10 Tính cấp thiết đề tài 10 Mục đích nghiên cứu 11 Nhiệm vụ nghiên cứu 12 Phạm vi nghiên cứu 12 Cấu trúc luận văn 12 Phương pháp nghiên cứu 13 CHƯƠNG - TỔNG QUAN VỀ XÂY DỰNG PHẦN MỀM CHỊU LỖI 14 1.1 Độ tin cậy phần mềm 14 1.2 Tư tưởng “Dự phòng” xây dựng phần mềm chịu lỗi 19 1.2.1 Dự phòng phần mềm 19 1.2.2 Dự phòng liệu 19 1.3 Biện pháp phục hồi phần mềm lỗi 20 1.3.1 Phục hồi quay lui 20 1.3.2 Phục hồi tiến 21 1.4 Các hướng tiếp cận kỹ thuật xây dựng phần mềm chịu lỗi 21 1.4.1 Kỹ thuật đa thiết kế 22 1.4.1.1 Kỹ thuật lập trình N phiên NVP (N-version programming) 23 1.4.1.2 Kỹ thuật khối phục hồi RcB (Recovery Block) 24 1.4.2 Kỹ thuật đa liệu 26 TỔNG KẾT CHƯƠNG 29 CHƯƠNG – TỔNG QUAN VỀ HỆ THỐNG NHÚNG THỜI GIAN THỰC 30 2.1 Khái niệm thời gian thực 31 2.2 Cơ chế ngắt 32 2.3 Các tác vụ task 33 2.4 Cơ chế lập lịch 36 2.4.1 Lập lịch có chu kỳ 37 2.4.2 Lập lịch không theo chu kỳ 37 2.4.3 Lập lịch theo kiểu chiếm quyền thực thi không chiếm quyền thực thi 37 2.4.4 Phương thức xử lý task có mức ưu tiên 39 2.4.5 Lập lịch ưu tiên deadline sớm 39 2.5 Cơ chế truyền thông 40 2.5.1 Semaphore 40 2.5.2 Hộp thư mailbox 41 2.5.3 Hàng đợi đường ống (Queues Pipe) 42 2.6 Khác biệt hệ thống nhúng thời gian thực so với hệ thống nói chung 42 2.7 Các lỗi thường gặp hệ thống nhúng 43 TỔNG KẾT CHƯƠNG 45 CHƯƠNG – KỸ THUẬT XÂY DỰNG PHẦN MỀM CHỊU LỖI ÁP DỤNG CHO HỆ THỐNG NHÚNG 47 3.1 Ý tưởng ban đầu xây dựng phần mềm chịu lỗi cho hệ thống nhúng 47 Đào Ngọc Kiên - Lớp Cao Học CNTT 06-08 – ĐH Bách Khoa Hà Nội Nghiên cứu kỹ thuật xây dựng phần mềm chịu lỗi áp dụng cho hệ thống nhúng 3.2 Lỗi hệ thống nhúng chế xử lý 49 3.2.1 Xử lý lỗi thời gian (Deadline error) 49 3.2.2 Xử lý lỗi lập trình (Programming error) 50 3.2.3 Xử lý lỗi phần cứng (Hardware error) 51 3.3 Mơ hình chịu lỗi cho hệ thống nhúng đơn nút 51 3.3.1 Mơ hình hệ thống chịu lỗi mức task 52 3.3.2 Mô hình hệ thống chịu lỗi mức ứng dụng 53 3.3.3 Chuyển đổi chế độ ứng dụng 54 3.4 Kiến trúc chịu lỗi cho hệ thống nhúng đơn nút 55 3.4.1 Bộ điều khiển ftcontroller 57 3.4.2 Bộ giám sát ứng dụng ftappmon 58 3.4.3 Tương tác thành phần 59 3.4.4 Luồng xử lý thành phần chịu lỗi 61 3.4.5 Tương tác góc nhìn thread 62 3.5 Mơ hình chịu lỗi dự phịng cho hệ thống nhúng đa nút 63 3.5.1 Mơ hình chịu lỗi dự phịng 63 3.5.2 Các loại hình dự phịng 64 3.5.3 Lựa chọn loại hình dự phịng áp dụng cho hệ thống nhúng 65 3.6 Kiến trúc chịu lỗi dự phòng cho hệ thống nhúng đa nút 66 3.6.1 Kiến trúc phần mềm chịu lỗi nút 67 3.6.2 Kiến trúc phần mềm chịu lỗi nhiều nút 67 3.6.3 Bộ quản lý dự phòng FTRedundancy 69 3.6.4 Bộ quản lý FTreplicamngr 69 3.6.5 Tương tác thành phần chịu lỗi 70 3.6.6 Cơ chế đảm bảo tính quán ngữ cảnh task 72 TỔNG KẾT CHƯƠNG 75 CHƯƠNG – THỬ NGHIỆM VÀ ĐÁNH GIÁ 77 4.1 Thử nghiệm ứng dụng áp dụng mơ hình chịu lỗi 77 4.1.1 Giới thiệu tốn vệ tinh thám khơng gian 77 4.1.2 Thử nghiệm đánh giá kết 78 4.2 Thử nghiệm độ tin cậy hệ thống 86 4.2.1 Mơ tả chương trình 86 4.2.2 Thử nghiệm nhận xét kết 88 TỔNG KẾT CHƯƠNG 90 KẾT LUẬN 91 Các nội dung hoàn thành luận văn 91 Các đóng góp khoa học 92 Hướng phát triển luận văn 93 TÀI LIỆU THAM KHẢO 95 TÓM TẮT LUẬN VĂN 96 THESIS SUMARY 97 Đào Ngọc Kiên - Lớp Cao Học CNTT 06-08 – ĐH Bách Khoa Hà Nội Nghiên cứu kỹ thuật xây dựng phần mềm chịu lỗi áp dụng cho hệ thống nhúng DANH MỤC CÁC HÌNH VẼ Hình 1.1 Kỹ thuật nâng cao độ tin cậy phần mềm pha phát triển 16 Hình 1.2 Mối quan hệ fault, error failure 17 Hình 1.3 Mối quan hệ fault, error failure 18 Hình 1.4 Cấu trúc hoạt động kỹ thuật N phiên lập trình (NVP) 24 Hình 1.5 Cấu trúc hoạt động kỹ thuật khối phục hồi (RcB) 26 Hình 1.6 Mơ hình kỹ thuật đa liệu 27 Hình 1.7 Mơ hình kỹ thuật đa liệu 27 Hình 1.8 Mơ hình kỹ thuật đa liệu 28 Hình 2.1 Vòng lặp pooling 32 Hình 2.2 Cơ chế ngắt 33 Hình 2.3 Cấu trúc task 34 Hình 2.4 Cấu trúc mã lệnh task 35 Hình 2.5 Mơ hình trạng thái task 37 Hình 2.6 Lập lịch có khơng có chiếm quyền thực thi 38 Hình 2.7 Cơ chế truyền thông qua semafore 41 Hình 3.1 Giản đồ trạng thái task chịu lỗi 52 Hình 3.2 Mơ hình task chịu lỗi 53 Hình 3.3 Chuyển đổ chế độ ứng dụng có lỗi 54 Hình 3.4 Kiến trúc chịu lỗi cho hệ thống nhúng đơn nút 56 Hình 3.5 Bộ điều khiển ftcontroller 57 Hình 3.6 Bộ giám sát ứng dụng ftappmon 58 Hình 3.7 Tương tác thành phần chịu lỗi 59 Hình 3.8 Tương tác thành phần chịu lỗi 60 Hình 3.9 Luồng xử lý thành phần chịu lỗi 61 Hình 3.10 Tương tác thành phần chịu lỗi góc nhìn thread 62 Hình 3.11 Đặc tả triển khai ứng dụng mơ hình dự phịng 64 Hình 3.12 Kiến trúc phần mềm chịu lỗi nút 67 Hình 3.13 Kiến trúc phần mềm chịu lỗi nhiều nút 68 Đào Ngọc Kiên - Lớp Cao Học CNTT 06-08 – ĐH Bách Khoa Hà Nội Nghiên cứu kỹ thuật xây dựng phần mềm chịu lỗi áp dụng cho hệ thống nhúng Hình 3.14 Bộ quản lý dự phòng FTRedundancy 69 Hình 3.15 Bộ quản lý FTreplicamngr 70 Hình 3.16 Tương tác thành phần chịu lỗi 71 Hình 3.17 Xử lý thay dự phịng có lỗi nút 72 Hình 3.18 Cơ chế hoạt động kiến trúc chịu lỗi dự phòng 73 Hình 4.1 Các thành phần ứng dụng chịu lỗi mô 79 Hình 4.2 Các task ứng dụng chịu lỗi mơ 80 Hình 4.3 Mơ hình ứng dụng chịu lỗi với hai chế độ 81 Hình 4.4 Quá trình chuyển đổi chế độ chịu lỗi có lỗi 82 Hình 4.5 Giao diện cấu hình hệ thống 83 Hình 4.6 Kết chương trình chạy (1) 84 Hình 4.7 Kết chương trình chạy (2) 85 Hình 4.8 Cấu trúc hoạt động chương trình mơ kỹ thuật RcB 87 Hình 4.9 Giao diện chương trình mơ kỹ thuật RcB 88 Hình 4.10 Số lỗi khơng phát chương trình mơ kỹ thuật RcB 89 Đào Ngọc Kiên - Lớp Cao Học CNTT 06-08 – ĐH Bách Khoa Hà Nội Nghiên cứu kỹ thuật xây dựng phần mềm chịu lỗi áp dụng cho hệ thống nhúng DANH MỤC CÁC BẢNG Bảng 1.1 Các khái niệm liên quan đến độ tin cậy phần mềm 17 Bảng 3.1 Bảng chuyển đổi chế độ ứng dụng lỗi 54 Đào Ngọc Kiên - Lớp Cao Học CNTT 06-08 – ĐH Bách Khoa Hà Nội Nghiên cứu kỹ thuật xây dựng phần mềm chịu lỗi áp dụng cho hệ thống nhúng DANH MỤC CÁC TỪ VIẾT TẮT STT B 1 10 11 12 13 14 15 16 Từ viết tắt B Giải nghĩa B FT NCP NVP OMG QoS RCB RTB Fault Tolerant N- Copy Programming N- Version Programming Object management group Quality of Services Recovery block Retry block Acceptance test AT RTOS Real-time operating system EDF Earlest deadline first ft_task Fault tolerant task ftcontroller Fault tolerant task controler ftappmon Fault tolerant application monitor ftredundancymgr Fault tolerant redundancy manager ftreplicamngr Fault tolerant replica manager FTAppli Fault tolerant application Đào Ngọc Kiên - Lớp Cao Học CNTT 06-08 – ĐH Bách Khoa Hà Nội Nghiên cứu kỹ thuật xây dựng phần mềm chịu lỗi áp dụng cho hệ thống nhúng MỞ ĐẦU Tính cấp thiết đề tài Hệ thống nhúng sử dụng rộng rãi nhiều lĩnh vực, chẳng hạn điều khiển điện tử, tự động hóa nhà, văn phịng, cơng nghiệp tơ Mặc dù khơng tồn định nghĩa xác thuật ngữ nói chung hệ thống nhúng xem hệ thống phần cứng, phần mềm thực chức cụ thể, thường phần hệ thống lớn Điều ngụ ý giải thích cho chữ "nhúng" thuật ngữ (là phần nhúng vào hệ thống lớn hơn) Ngoài hệ thống nhúng thiết kế để thực chức cụ thể xác định trước, trái với mục đích chung chung hệ thống máy tính bình thường (mainframe, máy tính để bàn, máy tính xách tay, vv…) Hầu hết hệ thống nhúng thời gian thực phải thỏa mãn ràng buộc thời gian Một số hệ thống nhúng có yêu cầu độ tin cậy, tính sẵn sàng an tồn cao hỏng hóc hệ thống gây nguy hiểm cho tính mạng người làm tổn hại đến hoạt động chung toàn hệ thống Những hệ thống phân loại thành hệ thống an tồn cao (safety-critical) hệ thống quan trọng (mission-critical) Ví dụ hệ thống critical system hệ thống công nghiệp ô tô, điện tử hàng không, điều khiển quân hay không gian vũ trụ Các hệ thống critical có độ tin cậy cao nhiều so với hệ thống thương mại thơng thường Ví dụ thiết bị vận chuyển hành khách hàng không thiết kế với 10-9 lỗi hoạt động (tương đương với lỗi sau 114.000 năm) Yêu cầu tương tự áp dụng hệ thống điều khiển đường sắt Ngoài hệ thống điều khiển vệ tinh không gian lại yêu cầu độ tin cậy cao hầu hết hệ thống phải hoạt động điều kiện khơng có q trình bảo dưỡng Vì hệ thống nhúng critical kết hợp phần cứng phần mềm nên nhu cầu cấp thiết giảm thiểu hỏng hóc liên quan đến hai lĩnh vực Mặc dù độ tin cậy phần cứng ngày phát triển nhiên lỗi thời xảy ra, đặc biệt mơi trường lượng cao hay có xạ lớn chẳng hạn hệ thống không gian Về lỗi phần mềm, gia tăng không ngừng chức hệ thống làm tăng lên độ phức tạp phần mềm thường nguyên nhân gây lỗi phần mềm Bất chấp nhiều nỗ lực áp dụng nhiều pha phát triển bao gồm pha test, nhiều lỗi phần mềm Đào Ngọc Kiên - Lớp Cao Học CNTT 06-08 – ĐH Bách Khoa Hà Nội 10