BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO MÔN KIẾN TRÚC MÁY TÍNH Giảng viên hướng dẫn Nguyễn Thùy Dung Lớp DHTI15A14HN Nội dung Tìm hiểu hiện tượng ng[.]
BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC KINH TẾ - KỸ THUẬT CÔNG NGHIỆP KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO MƠN KIẾN TRÚC MÁY TÍNH Giảng viên hướng dẫn: Nguyễn Thùy Dung Lớp: DHTI15A14HN Nội dung: Tìm hiểu tượng ngắt loại trừ Hà Nội 12/2022 Sinh viên báo cáo Mã sinh viên Nguyễn Duy Anh 21103100860 Giáp Mạnh Đức 21103100815 Đặng Thị Thanh Hằng 21103100794 Trịnh Văn Mạnh 21103100789 Hoàng Thị Thu Phương 21103100786 Đặng Minh Quang 21103100864 Đỗ Vũ Quý 21103100859 Nguyễn Văn Thắng 21103100806 Lê Đăng Vũ 21103100784 Phạm Tuấn Vũ 21103100862 Mục lục Phần I Hiện tượng ngắt 1, Khái niệm: 2, Hiện tượng ngắt dùng cho cơng việc gì? .4 3, Nguyên lý hoạt động: .4 4, Các loại ngắt: Phần II Hiện tượng loại trừ 10 1, Khái niệm: 10 2, Ưu điểm nhược điểm 11 a, Ưu điểm 11 b, Nhược điểm 17 3, Phân loại 18 Phần I Hiện tượng ngắt Trong thực tế, tốc độ xử lý liệu CPU cao nhiều so với “sự chế biến liệu” thiết bị I/O Vì cần tạo chế vào/ra hợp lý để tăng hiệu suất làm việc CPU Ngắt hệ thống máy tính nhằm mục đích giải bất hợp lý CPU phải chờ đợi thiết bị ngoại vi Thiết bị ngoại vi yêu cầu CPU phục vụ việc nhận hay chuyển giao liệu thân sẵn sàng Để thực tốt yêu cầu này, chế phục vụ ngắt hợp lý 1, Khái niệm: Ngắt (interrupt) trình dừng chương trình chạy để ưu tiên thực chương trình khác, chương trình gọi chương trình phục vụ ngắt (ISR – Interrupt Service Routine) 2, Hiện tượng ngắt dùng cho cơng việc gì? Người ta nghĩ “ngắt quãng” để nhận biết sai sót tính tốn số học, để ứng dụng cho tượng thời gian thực Bây giờ, ngắt quãng dùng cho công việc sau đây: o Ngoại vi đòi hỏi nhập xuất số liệu o Người lập trình muốn dùng dịch vụ hệ điều hành Cho chương trình chạy lệnh o Làm điểm dừng chương trình o Báo tràn số liệu tính tốn số học o Trang nhớ thực khơng có nhớ o Báo vi phạm vùng cấm nhớ o Báo dùng lệnh khơng có tập lệnh o Báo phần cứng máy tính bị hư o Báo điện bị cắt Dù ngắt quãng không xảy thường xuyên xử lý phải thiết kế cho lưu giữ trạng thái trước nhảy phục vụ ngắt quãng Sau thực xong chương trình phục vụ ngắt, xử lý phải khơi phục trạng thái để tiếp tục công việc 3, Nguyên lý hoạt động: Khi ngắt xảy ra, xử lý thi hành bước sau đây: Thực xong lệnh làm Lưu trữ trạng thái Nhảy đến chương trình phục vụ ngắt Khi chương trình phục vụ chấm dứt, xử lý khôi phục lại trạng thái cũ, tiếp tục thực chương trình mà thực bị ngắt Ngắt Chương trình thực Chương trình phục vụ ngắt Lệnh Lệnh Lệnh Lệnh Lệnh i Lệnh Lệnh Lệnh Lệnh i+1 Lệnh Lệnh RETURN 4, Các loại ngắt: Ngắt mềm: Ngắt chương trình tạo nhằm gọi chương trình xa nằm ROM RAM VD: Câu lệnh cout (hoặc cin)sẽ tạo ngắt phần mềm thực lệnh gọi hệ thống để in nhập nội dung Ngắt mềm gồm : ngắt DOS BIOS VD: sử dụng để thực số chức hữu ích, chẳng hạn hiển thị liệu hình, đọc liệu từ bàn phím, v.v Chúng sử dụng cách xác định loại tùy chọn ngắt, giá trị lưu trữ ghi AH cung cấp, thứ thơng tin bổ sung mà tùy chọn cụ thể yêu cầu Một ngắt phần mềm yêu cầu thân xử lý thực thi số lệnh đậc biệt hay gặp phải số điều kiện định Tất ngắt mềm kèm với trình xử lý ngắt đặc biệt Có thể tạo ngắt mềm cách thực câu lênh đặc biệt, chúng hoạt động tương tự với các lời gọi hàm và sử dụng cho nhiều mục đích sử dụng dịch vụ hệ điều hành hay tương tác với trình điều khiển thiết bị (ví dụ đọc hay ghi đĩa) Các ngắt mềm bị gây lỗi thực thi chương trình hay hệ thống bộ nhớ ảo Thơng thường nhân hệ điều hành tiếp nhận xử lý ngắt mềm Một số ngắt mềm xử lý mà chuơng trình khơng có ý thức: ví dụ cách giải thông thường lỗi page làm cho page truy cập nhớ thực Tuy nhiên, số trường hợp khác lỗi phân đoạn hệ điều hành thực thi callback Trên hệ điều hành dạng Unix điều bao gồm gửi tín hiệu SIGSEGV, SIGBUS, SIGILL hay SIGFPE, sau tín hiệu gọi trình xử lý tín hiệu hay thực thi hành động mặc định (kết thúc chương trình) Trong tiến trình nhân, thường có số loại ngắt mềm khơng phép xảy Nếu chúng xảy hệ điều hành bị treo Ngắt cứng: Ngắt tạo mạch điện máy tính nhằm đáp lại kiện nhấn phím bàn phím VD: Một ví dụ điều di chuyển chuột nhấn phím bàn phím Trong ví dụ ngắt này, xử lý phải dừng để đọc vị trí chuột tổ hợp phím lúc Ngắt cứng gồm: Ngắt hệ thống ngắt người dùng Các ngắt phần cứng đến không đồng bộ đối với xung nhịp xử lý lúc thực lệnh Do đó, tất tín hiệu ngắt phần cứng điều hịa cách đồng hóa chúng với đồng hồ xử lý hoạt động ranh giới thực thi lệnh Trong nhiều hệ thống, thiết bị liên kết với tín hiệu IRQ cụ thể Điều giúp bạn nhanh chóng xác định thiết bị phần cứng yêu cầu dịch vụ tiến hành bảo dưỡng thiết bị Trên số hệ thống cũ hơn [4] tất ngắt đến vị trí Hệ điều hành sử dụng lệnh chuyên biệt để xác định mức ưu tiên cao ngắt chưa che dấu Trên hệ thống đại thường có quy trình ngắt riêng biệt cho loại ngắt cho nguồn ngắt, thường thực dạng nhiều bảng vectơ ngắt Ngắt logic: Ngắt CPU tạo gặp phải kết bất thường thực chương trình VD: chia cho Phân loại ngắt: thuật ngữ “ngắt” xuất phát từ kỹ thuật ngắt cứng Khi nói đến ngắt cứng, ngắt mềm ngắt logic (ngoại lệ) hàm ý nói đến chương trình phục vụ hoạt động hệ thống máy tính nói đến cách kích hoạt chương trình Tất chương trình phục vụ ngắt có chung đặc điểm: thứ hầu hết chương trình phục vụ ngắt viết sẵn (là chương trình hệ điều hành) được137 phép sử dụng; thứ hai địa chương trình phải đặt vùng xác định Bảng véc tơ ngắt, nằm nhớ Các chương trình phục vụ ngắt cứng thường dùng để điều khiển trình vào/ra với thiết bị vào chuẩn mức vật lý Các chương trình phục vụ ngắt cứng kích hoạt tín hiệu vật lý IRQ (Interrupt Request) đến từ thiết bị vào - Các chương trình phục vụ ngắt mềm chương trình hệ thống thực thao tác vào - mức logic hoạt động khác hệ thống Các chương trình phục vụ ngắt mềm kích hoạt lệnh INT tập lệnh CPU Các chương trình phục vụ ngắt logic phục vụ cho hoạt động hệ thống, chúng kích hoạt CPU thực lệnh phát sinh ngoại lệ Bảng vector ngắt Xử lý ngắt x86 sử dụng ngắt bảng véc tơ Mỗi loại ngắt gán số số sử dụng để lập mục vào bảng vectơ ngắt Bảng chứa 256 ngắt 32 bit vectơ, địa (phân đoạn độ lệch) quy trình dịch vụ ngắt cho số ngắt Bảng sau cho thấy việc gán số bảng véc tơ ngắt; mục tơ bóng đại diện cho ngắt, mục khơng tơ bóng ngoại lệ Các ngắt phần cứng NMI loại Ngắt phần cứng INTR gán số khoảng từ 32 đến 255; ngắt INTR tạo ra, phải kèm theo bus với số vectơ ngắt cho ngắt Các số vectơ lại sử dụng cho trường hợp ngoại lệ Nếu có nhiều ngoại lệ ngắt chờ xử lý, xử lý phục vụ chúng theo thứ tự đốn trước Vị trí số vectơ bảng không không phản ánh mức độ ưu tiên Thay vào đó, ưu tiên ngoại lệ ngắt tổ chức thành năm lớp Theo thứ tự ưu tiên giảm dần, là: ■ Loại 1: Bẫy theo lệnh trước (vector số 1) ■ Loại 2: Ngắt bên (2, 32–255) ■ Loại 3: Lỗi tìm nạp lệnh (3, 14) ■ Loại 4: Lỗi giải mã lệnh (6, 7) ■ Loại 5: Lỗi thực lệnh (0, 4, 5, 8, 10–14, 16, 17) Số Vector Mô tả Sai số chia; chia tràn chia cho số không Gỡ lỗi ngoại lệ; bao gồm lỗi bẫy khác liên quan đến gỡ lỗi Chân NMI ngắt; tín hiệu chân NMI Đây lệnh byte hữu ích cho gỡ lỗi Phát tràn INTO; xảy xử lý thực thi INTO với OF đặt cờ vượt phạm vi BOUND; lệnh BOUND so sánh ghi với ranh giới lưu trữ nhớ tạo ngắt hết nội dung ghi giới hạn 6 Mã lệnh không xác định Thiết bị không khả dụng; cố gắng sử dụng lệnh ESC WAIT không thành công thiếu thiết bị bên Lỗi kép; hai ngắt xảy lệnh xử lý nối tiếp Dành riêng 10 Phân đoạn trạng thái nhiệm vụ không hợp lệ; phân đoạn mô tả nhiệm vụ yêu cầu không khởi tạo khơng hợp lệ 11 Đoạn khơng có; phân khúc u cầu khơng có mặt 12 Lỗi chồng; vượt q giới hạn phân đoạn ngăn xếp khơng có phân đoạn ngăn xếp 13 Bảo vệ chung; vi phạm bảo vệ khơng gây ngoại lệ khác (ví dụ: ghi vào phân đoạn đọc) 14 Lỗi trang 15 Dành riêng 16 Lỗi dấu phẩy động; tạo lệnh số học dấu chấm động 17 Kiểm tra chỉnh; truy cập vào từ lưu trữ địa byte lẻ từ kép lưu trữ địa bội số 18 Kiểm tra máy móc; mơ hình cụ thể 19-31 Dành riêng 32-255 Vectơ ngắt người dùng; cung cấp tín hiệu INTR kích hoạt Phần II Hiện tượng loại trừ 1, Khái niệm: - Loại trừ kiện, xảy trình thực chương trình, làm gián đoạn luồng hướng dẫn bình thường chương trình + Khi xảy lỗi phương thức, phương thức tạo đối tượng chuyển giao cho hệ thống thời gian chạy Đối tượng, gọi đối tượng loại trừ, chứa thông tin lỗi, bao gồm loại trạng thái chương trình xảy lỗi Tạo đối tượng loại trừ đưa vào hệ thống thời gian chạy gọi ném loại trừ Sau phương thức đưa loại trừ, hệ thống thời gian chạy cố gắng tìm thứ để xử lý Tập hợp "thứ đó" xử lý loại trừ danh sách phương thức xếp theo thứ tự gọi để truy cập phương thức xảy lỗi Danh sách phương thức gọi ngăn xếp gọi (xem hình tiếp theo) Hệ thống thời gian chạy tìm kiếm ngăn xếp gọi cho phương thức có chứa khối mã xử lý loại trừ Khối mã gọi trình xử lý loại trừ Quá trình tìm kiếm bắt đầu với phương thức xảy lỗi tiến hành thông qua ngăn xếp gọi theo thứ tự ngược lại với phương thức gọi Khi tìm thấy trình xử lý thích hợp, hệ thống thời gian chạy chuyển loại trừ cho trình xử lý Trình xử lý loại trừ coi phù hợp loại đối tượng loại trừ ném khớp với loại mà trình xử lý xử lý Trình xử lý loại trừ chọn gọi bắt loại trừ Nếu hệ thống thời gian chạy tìm kiếm tất phương thức ngăn xếp gọi mà khơng tìm thấy trình xử lý loại trừ thích hợp, thể hình tiếp theo, hệ thống thời gian chạy (và đó, chương trình) chấm dứt Sử dụng loại trừ để quản lý lỗi có số lợi so với kỹ thuật quản lý lỗi truyền thống Có thể tìm hiểu thêm phần Ưu điểm loại trừ 2, Ưu điểm nhược điểm a, Ưu điểm Việc sử dụng loại trừ để quản lý lỗi có số ưu điểm so với kỹ thuật quản lý lỗi truyền thống Bạn tìm hiểu thêm phần Ưu điểm 1: Tách mã xử lý lỗi khỏi mã “thông thường” Các loại trừ cung cấp phương tiện để phân tách chi tiết việc cần làm có điều khác thường xảy với logic chương trình Trong lập trình truyền thống, việc phát hiện, báo cáo xử lý lỗi thường dẫn đến mã spaghetti khó hiểu Ví dụ: xem xét phương pháp mã giả để đọc toàn tệp vào nhớ readFile { open the file; determine its size; allocate that much memory; read the file into memory; close the file; } Thoạt nhìn, chức đủ đơn giản, bỏ qua tất lỗi tiềm ẩn sau - Điều xảy tệp khơng thể mở được? - Điều xảy khơng xác định độ dài tệp? - Điều xảy khơng thể phân bổ đủ nhớ? - Điều xảy đọc khơng thành cơng? - Điều xảy khơng thể đóng tệp? Để xử lý trường hợp vậy, hàm readFile phải có thêm mã để phát hiện, báo cáo xử lý lỗi Đây ví dụ chức trông errorCodeType readFile { initialize errorCode = 0; open the file; if (theFileIsOpen) { determine the length of the file; if (gotTheFileLength) { allocate that much memory; if (gotEnoughMemory) { read the file into memory; if (readFailed) { errorCode = -1; } } else { errorCode = -2; } } else { errorCode = -3; } close the file; if (theFileDidntClose && errorCode == 0) { errorCode = -4; } else { errorCode = errorCode and -4; } } else { errorCode = -5; } return errorCode; } Có nhiều lỗi phát hiện, báo cáo quay lại khiến bảy dòng mã ban đầu bị đống lộn xộn Tệ nữa, luồng logic mã bị mất, gây khó khăn cho việc biết liệu mã có hoạt động hay khơng: Tệp có thực bị đóng chức không phân bổ đủ nhớ không? Thậm chí cịn khó khăn để đảm bảo mã tiếp tục hoạt động bạn sửa đổi phương thức ba tháng sau viết Nhiều lập trình viên giải vấn đề cách bỏ qua — lỗi báo cáo chương trình họ gặp cố Loại trừ cho phép bạn viết luồng mã xử lý trường hợp loại trừ nơi khác Nếu hàm readFile sử dụng loại trừ thay kỹ thuật quản lý lỗi truyền thống, trơng giống sau readFile { try { open the file; determine its size; allocate that much memory; read the file into memory; close the file; } catch (fileOpenFailed) { doSomething; } catch (sizeDeterminationFailed) { doSomething; } catch (memoryAllocationFailed) { doSomething; } catch (readFailed) { doSomething; } catch (fileCloseFailed) { doSomething; } } Lưu ý loại trừ không giúp bạn nỗ lực thực công việc phát hiện, báo cáo xử lý lỗi, chúng giúp bạn tổ chức công việc hiệu Ưu điểm 2: Lan truyền lỗi lên ngăn xếp gọi Ưu điểm thứ hai loại trừ khả lan truyền báo cáo lỗi lên ngăn xếp gọi phương thức Giả sử phương thức readFile phương thức thứ tư loạt lệnh gọi phương thức lồng thực chương trình chính: phương thức gọi phương thức 2, phương thức gọi phương thức 3, phương thức cuối gọi readFile method1 { call method2; } method2 { call method3; } method3 { call readFile; } Cũng giả sử phương thức phương thức quan tâm đến lỗi xảy readFile Các kỹ thuật thông báo lỗi truyền thống buộc phương thức phương thức truyền mã lỗi readFile trả lên ngăn xếp gọi mã lỗi cuối đến phương thức 1—phương thức quan tâm đến chúng method1 { errorCodeType error; error = call method2; if (error) doErrorProcessing; else proceed; } errorCodeType method2 { errorCodeType error; error = call method3; if (error) return error; else proceed; } errorCodeType method3 { errorCodeType error; error = call readFile; if (error) return error; else proceed; } Nhớ lại mơi trường thời gian chạy Java tìm kiếm ngược thơng qua ngăn xếp gọi để tìm phương thức quan tâm đến việc xử lý loại trừ cụ thể Một phương thức tránh loại trừ ném vào bên nó, cho phép phương thức xa ngăn xếp gọi bắt Do đó, phương thức quan tâm đến lỗi phải lo lắng việc phát lỗi method1 { try { call method2; } catch (exception e) { doErrorProcessing; } } method2 throws exception { call method3; } method3 throws exception { call readFile; } Tuy nhiên, mã giả cho thấy, việc loại bỏ loại trừ đòi hỏi số nỗ lực từ phía phương pháp trung gian Bất kỳ loại trừ kiểm tra ném phương thức phải định mệnh đề ném Ưu điểm 3: Nhóm phân biệt loại lỗi Bởi tất loại trừ đưa chương trình đối tượng, nên việc nhóm phân loại loại trừ kết tự nhiên hệ thống phân cấp lớp Một ví dụ nhóm lớp loại trừ có liên quan tảng Java lớp định nghĩa java.io — IOException hậu duệ IOException loại chung đại diện cho loại lỗi xảy thực I/O Hậu duệ đại diện cho lỗi cụ thể Ví dụ: FileNotFoundException có nghĩa định vị tệp đĩa Một phương thức viết trình xử lý cụ thể xử lý loại trừ cụ thể Lớp FileNotFoundException khơng có hậu duệ, trình xử lý sau xử lý loại loại trừ catch (FileNotFoundException e) { } Một phương thức bắt loại trừ dựa nhóm loại chung cách định lớp cha loại trừ câu lệnh bắt Ví dụ: để nắm bắt tất loại trừ I/O, loại cụ thể chúng gì, trình xử lý loại trừ định đối số IOException catch (IOException e) { } Trình xử lý bắt tất loại trừ I/O, bao gồm FileNotFoundException, EOFException, v.v Bạn tìm thơng tin chi tiết xảy cách truy vấn đối số chuyển đến trình xử lý loại trừ Ví dụ: sử dụng cách sau để in dấu vết ngăn xếp catch (IOException e) { // Output goes to System.err e.printStackTrace(); // Send trace to stdout e.printStackTrace(System.out); } Bạn chí thiết lập trình xử lý loại trừ xử lý loại trừ trình xử lý // A (too) general exception handler catch (Exception e) { } Lớp Exception gần với đầu hệ thống phân cấp lớp Throwable Do đó, trình xử lý bắt nhiều loại trừ khác loại trừ mà trình xử lý dự định bắt Bạn muốn xử lý loại trừ theo cách tất bạn muốn chương trình làm, chẳng hạn, in thơng báo lỗi cho người dùng thoát Tuy nhiên, hầu hết trường hợp, bạn muốn trình xử lý loại trừ cụ thể tốt Lý điều mà trình xử lý phải làm xác định loại loại trừ xảy trước định chiến lược khơi phục tốt Trên thực tế, cách không bắt lỗi cụ thể, trình xử lý phải đáp ứng khả Trình xử lý loại trừ q chung chung làm cho mã dễ bị lỗi cách bắt xử lý loại trừ mà người lập trình khơng lường trước trình xử lý khơng nhằm mục đích Như lưu ý, bạn tạo nhóm loại trừ xử lý loại trừ theo cách chung bạn sử dụng loại trừ cụ thể để phân biệt loại trừ xử lý loại trừ theo cách xác b, Nhược điểm Việc phát điều kiện loại trừ thực hành động thích hợp thường thực đường thời gian quan trọng máy, xác định thời gian chu kỳ đồng hồ biểu diễn Không quan tâm mức đến loại trừ trình thiết kế điều khiển đơn vị, cố gắng thêm loại trừ vào triển khai phức tạp đáng kể giảm hiệu suất, phức tạp hóa nhiệm vụ thiết kế xác 3, Phân loại Thường sản sinh từ tín hiệu đồng hệ thống Các ngoại trừ thường sử dụng để kiểm soát lỗi lệnh Chia làm ba loại: Fault: Có thể phát xử lý trước thực lệnh lỗi Ví dụ: chia cho 0, tràn Stack - Lỗi loại trừ báo cáo ranh giới lệnh trước lệnh mà loại trừ phát - Lỗi báo cáo máy khôi phục trạng thái cho phép khởi động lại lệnh - Địa trả cjo trình xử lý lỗi trỏ đến lệnh tạo lỗi, thay lệnh theo sau lệnh lỗi Trap (Bẫy lỗi): Được xử lý sau lệnh thực mà lệnh sinh lỗi Trong thực tế để xử lý trap người ta sử dụng chương trình để thông báo cho người sử dụng - Bẫy loại trừ báo cáo ranh giới lệnh sau lệnh mà loại trừ phát Abort: Thường xảy vị trí khơng thể xác định người ta thường sử dụng lỗi loại mang mục đích thơng báo Ví dụ : lỗi phần cứng giá trị k phù hợp k hợp lệ bảng hệ thống - Là loại trừ lúc báo cáo vị trí lệnh gây loại trừ khơng cho phép khởi động lại chương trình gây loại trừ - Hủy bỏ sử dụng để báo cáo lỗi nghiêm trọng, chẳng hạn lỗi phần cứng giá trị phù hợp không hợp lệ bảng hệ thống ... trình o Báo tràn số liệu tính tốn số học o Trang nhớ thực khơng có nhớ o Báo vi phạm vùng cấm nhớ o Báo dùng lệnh khơng có tập lệnh o Báo phần cứng máy tính bị hư o Báo điện bị cắt Dù ngắt quãng... vectơ ngắt Ngắt logic: Ngắt CPU tạo gặp phải kết bất thường thực chương trình VD: chia cho Phân loại ngắt: thuật ngữ ? ?ngắt? ?? xuất phát từ kỹ thuật ngắt cứng Khi nói đến ngắt cứng, ngắt mềm ngắt. .. lục Phần I Hiện tượng ngắt 1, Khái niệm: 2, Hiện tượng ngắt dùng cho cơng việc gì? .4 3, Nguyên lý hoạt động: .4 4, Các loại ngắt: