1. Trang chủ
  2. » Tất cả

Báo cáo môn kiến trúc máy tính hiện tượng ngắt

19 2 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Thông tin cơ bản

Tiêu đề Báo cáo môn kiến trúc máy tính hiện tượng ngắt
Người hướng dẫn Nguyễn Thùy Dung
Trường học Trường Đại Học Kinh Tế - Kỹ Thuật Công Nghiệp
Chuyên ngành Kiến Trúc Máy Tính
Thể loại Báo cáo môn kiến trúc máy tính
Năm xuất bản 2022
Thành phố Hà Nội
Định dạng
Số trang 19
Dung lượng 407,88 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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[.]

Trang 1

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

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ắt và loại trừ

Hà Nội 12/2022

Trang 2

Sinh viên báo cáo Mã sinh viên

Trang 3

Mục lục

Phần I Hiện tượng ngắt 4

1, Khái niệm: 4

2, Hiện tượng ngắt dùng cho những công việc gì? 4

3, Nguyên lý hoạt động: 4

4, Các loại ngắt: 6

Phần II Hiện tượng loại trừ 10

1, Khái niệm: 10

2, Ưu điểm và nhược điểm 11

a, Ưu điểm 11

b, Nhược điểm 17

3, Phân loại 18

Trang 4

Phần I Hiện tượng ngắt

Trong thực tế, tốc độ xử lý dữ liệu của CPU cao hơn rất nhiều so với “sự chế biến dữ liệu” của các thiết bị I/O Vì vậy cần tạo ra một cơ chế vào/ra hợp lý để tăng hiệu suất làm việc của CPU Ngắt trong hệ thống máy tính nhằm mục đích giải quyết sự bất hợp lý do CPU phải chờ đợi thiết bị ngoại vi Thiết bị ngoại vi chỉ yêu cầu CPU phục vụ việc nhận hay chuyển giao dữ liệu khi bản thân nó đã sẵn sàng Để thực hiện tốt yêu cầu này, cơ chế phục vụ ngắt là hợp lý nhất

1, Khái niệm:

Ngắt (interrupt) là quá trình dừng chương trình chính đang chạy để ưu tiên thực hiện một chương trình khác, chương trình này được gọi là chương trình phục vụ ngắt (ISR – Interrupt Service Routine)

2, Hiện tượng ngắt dùng cho những công việc gì?

Người ta đã nghĩ ra “ngắt quãng” là để nhận biết các sai sót trong tính toán số học, và để ứng dụng cho những hiện tượng thời gian thực Bây giờ, ngắt quãng được dùng cho các công việc sau đây:

o Ngoại vi đòi hỏi nhập hoặc xuất số liệu

o Người lập trình muốn dùng dịch vụ của hệ điều hành Cho một chương trình chạy từng lệnh

o Làm điểm dừng của một chương trình

o Báo tràn số liệu trong tính toán số học

o Trang bộ nhớ thực sự không có trong bộ nhớ

o Báo vi phạm vùng cấm của bộ nhớ

o Báo dùng một lệnh không có trong 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ù rằng ngắt quãng không xảy ra thường xuyên nhưng bộ xử lý phải được thiết

kế sao cho có thể lưu giữ trạng thái của nó trước khi nhảy đi phục vụ ngắt quãng Sau khi thực hiện xong chương trình phục vụ ngắt, bộ xử lý phải khôi phục trạng thái của nó để

có thể tiếp tục công việc

Trang 5

3, Nguyên lý hoạt động:

Khi một ngắt xảy ra, bộ xử lý thi hành các bước sau đây:

 Thực hiện xong lệnh đang làm

 Lưu trữ trạng thái hiện tạ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, bộ xử lý khôi phục lại trạng thái cũ, tiếp tục thực hiện chương trình mà nó đang thực hiện khi

bị ngắt

Chương trình

Lệnh

Lệnh i+1

Lệnh

RETURN

Lệnh

Trang 6

4, Các loại ngắt:

 Ngắt mềm: Ngắt do chính chương trình tạo ra nhằm gọi các chương trình con ở xa đang nằm trong ROM hoặc RAM

VD: Câu lệnh cout (hoặc cin)sẽ tạo ra ngắt phần mềm vì nó sẽ thực hiện lệnh gọi hệ thống để in hoặc nhập nội dung nào đó

 Ngắt mềm gồm : ngắt DOS và BIOS

VD: được sử dụng để thực hiện một số chức năng rất hữu ích, chẳng hạn như hiển thị dữ liệu trên màn hình, đọc dữ liệu từ bàn phím, v.v Chúng được sử dụng bằng cách xác định loại tùy chọn ngắt,

là giá trị được lưu trữ trong thanh ghi AH và cung cấp, bất cứ thứ gì thông tin bổ sung mà tùy chọn cụ thể yêu cầu

 Một ngắt phần mềm được yêu cầu bởi chính bản thân bộ xử lý khi nó thực thi một số lệnh đậc biệt hay gặp phải một số điều kiện nhất định Tất cả các ngắt mềm đều đi kèm với một trình xử lý ngắt đặc biệt

 Có thể tạo ra một ngắt mềm bằng cách thực hiện một 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à được sử dụng cho nhiều mục đích như sử dụng các dịch vụ của hệ điều hành hay tương tác

Trang 7

với trình điều khiển thiết bị (ví dụ như đọc hay ghi đĩa) Các ngắt mềm cũng có thể bị gây ra bởi các lỗi thực thi chương trình hay bởi hệ thống bộ nhớ ảo

 Thông thường nhân hệ điều hành sẽ tiếp nhận và xử lý các ngắt mềm Một số ngắt mềm được xử lý mà chuơng trình không hề có ý thức: ví dụ như cách giải quyết thông thường của một lỗi page là làm cho page đó truy cập được trong bộ nhớ thực Tuy nhiên, trong một số trường hợp khác một lỗi phân đoạn khi đó hệ điều hành sẽ thực thi một callback Trên các hệ điều hành dạng Unix điều này bao gồm gửi đi một tín hiệu như SIGSEGV, SIGBUS, SIGILL hay SIGFPE, sau đó tín hiệu sẽ gọi một trình xử lý tín hiệu hay thực thi một hành động mặc định (kết thúc chương trình)

 Trong một tiến trình của nhân, thường có một số loại ngắt mềm nào đó không được phép xảy ra Nếu chúng xảy ra thì khi đó hệ điều hành sẽ

bị treo

 Ngắt cứng: Ngắt được tạo ra bởi mạch điện của máy tính nhằm đáp lại một sự kiện nào đó như nhấn phím trên bàn phím

VD: Một ví dụ về điều này là di chuyển chuột hoặc nhấn phím trên bàn phím Trong các ví dụ về ngắt này, bộ xử lý phải dừng để đọc vị trí chuột hoặc tổ hợp phím ngay lúc đó

 Ngắt cứng gồm: Ngắt hệ thống và ngắt của người dùng

 Các ngắt phần cứng có thể đến không đồng bộ đối với xung nhịp của

bộ xử lý và bất kỳ lúc nào trong khi thực hiện lệnh Do đó, tất cả các tín hiệu ngắt phần cứng được điều hòa bằng cách đồng bộ hóa chúng với đồng hồ bộ xử lý và chỉ hoạt động ở các ranh giới thực thi lệnh

 Trong nhiều hệ thống, mỗi thiết bị được liên kết với một tín hiệu IRQ cụ thể Điều này giúp bạn có thể nhanh chóng xác định thiết bị phần cứng nào đang yêu cầu dịch vụ và tiến hành bảo dưỡng thiết bị đó

 Trên một số hệ thống cũ hơn [4] tất cả các ngắt đều đến cùng một vị trí

và Hệ điều hành sử dụng một lệnh chuyên biệt để xác định mức ưu tiên cao nhất của ngắt chưa được che dấu Trên các hệ thống hiện đại thường

có một quy trình ngắt riêng biệt cho từng loại ngắt hoặc cho từng nguồn ngắt, thường được thực hiện dưới dạng một hoặc nhiều bảng vectơ ngắt

 Ngắt logic: Ngắt do CPU tạo ra khi gặp phải một kết quả bất thường trong khi thực hiện chương trình

Trang 8

VD: chia cho 0.

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 hoặc ngắt logic (ngoại lệ) là hàm ý nói đến các chương trình con phục vụ hoạt động của hệ thống máy tính và nói đến cách kích hoạt các chương trình con này Tất

cả các chương trình phục vụ ngắt đều có chung đặc điểm: thứ nhất là hầu hết các chương trình con phục vụ ngắt đã được viết sẵn (là các chương trình của hệ điều hành) và

được137 phép sử dụng; thứ hai là địa chỉ của các chương trình con này phải được đặt ở một vùng xác định là Bảng véc tơ ngắt, nằm trong bộ nhớ chính Các chương trình con phục vụ ngắt cứng thường được dùng để điều khiển quá trình vào/ra với các thiết bị vào -

ra chuẩn ở mức vật lý Các chương trình con phục vụ ngắt cứng được kích hoạt bởi các tín hiệu vật lý IRQ (Interrupt Request) đến từ thiết bị vào - ra Các chương trình con phục

vụ ngắt mềm là các chương trình hệ thống thực hiện các thao tác vào - ra cơ bản ở mức logic và các hoạt động khác của hệ thống Các chương trình con phục vụ ngắt mềm được kích hoạt bởi lệnh INT trong tập lệnh của CPU Các chương trình con phục vụ ngắt logic cũng phục vụ cho hoạt động của hệ thống, nhưng chúng chỉ được kích hoạt khi CPU thực hiện lệnh và do phát sinh một ngoại lệ nào đó

Bảng vector ngắt Xử lý ngắt trên x86 sử dụng ngắt bảng véc tơ Mỗi loại ngắt được gán một số và số này được sử dụng để lập chỉ mục vào bảng vectơ ngắt Bảng này chứa 256 ngắt 32 bit vectơ, là địa chỉ (phân đoạn và độ lệch) của quy trình dịch vụ ngắt cho số ngắt đó

Bảng sau cho thấy việc gán các số trong bảng véc tơ ngắt; các mục được tô bóng đại diện cho các ngắt, trong khi các mục không được tô bóng là các ngoại lệ Các ngắt phần cứng NMI là loại 2 Ngắt phần cứng INTR được gán số trong khoảng từ 32 đến 255; khi một ngắt INTR được tạo ra, nó phải được kèm theo trên bus với số vectơ ngắt cho ngắt này Các số vectơ còn lại được sử dụng cho các trường hợp ngoại lệ Nếu có nhiều hơn một ngoại lệ hoặc ngắt đang chờ xử lý, bộ xử lý sẽ phục vụ chúng theo một thứ tự có thể đoán trước được Vị trí của các số vectơ trong bảng không không phản ánh mức độ ưu tiên Thay vào đó, ưu tiên giữa các ngoại lệ và ngắt được tổ chức thành năm lớp Theo thứ tự ưu tiên giảm dần, đây là:

■ Loại 1: Bẫy theo lệnh trước đó (vector số 1)

■ Loại 2: Ngắt bên ngoài (2, 32–255)

■ Loại 3: Lỗi khi tìm nạp lệnh tiếp theo (3, 14)

■ Loại 4: Lỗi giải mã lệnh tiếp theo (6, 7)

■ Loại 5: Lỗi khi thực hiện lệnh (0, 4, 5, 8, 10–14, 16, 17)

Trang 9

Số Vector Mô tả

0 Sai số chia; chia tràn hoặc chia cho số không

1 Gỡ lỗi ngoại lệ; bao gồm các lỗi và bẫy khác nhau liên quan đến gỡ lỗi

2 Chân NMI ngắt; tín hiệu trên chân NMI

3 Đây là lệnh 1 byte hữu ích cho gỡ lỗi

4 Phát hiện tràn INTO; xảy ra khi bộ xử lý thực thi INTO với OF đặt cờ

đã vượt quá phạm vi

5 BOUND; lệnh BOUND so sánh một thanh ghi với các ranh giới được

lưu trữ trong bộ nhớ và tạo ra một ngắt nếu hết nội dung của thanh ghi giới hạn

Trang 10

6 Mã lệnh không xác định

7 Thiết bị không khả dụng; cố gắng sử dụng lệnh ESC hoặc WAIT không

thành công do thiếu thiết bị bên ngoài

8 Lỗi kép; hai ngắt xảy ra trong cùng một lệnh và không thể xử lý được nối

tiếp

9 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ả một

nhiệm vụ được yêu cầu không được khởi tạo hoặc không hợp lệ

11 Đoạn không có; phân khúc yêu cầu không có mặt

12 Lỗi chồng; vượt quá giới hạn của phân đoạn ngăn xếp hoặc 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 ra ngoại lệ khác (ví dụ: ghi vào

phân đoạn chỉ đọc)

14 Lỗi trang

15 Dành riêng

16 Lỗi dấu phẩy động; được tạo bởi một lệnh số học dấu chấm động

17 Kiểm tra căn chỉnh; truy cập vào một từ được lưu trữ tại một địa chỉ byte

lẻ hoặc một từ kép được lưu trữ tại một địa chỉ không phải là bội số của 4

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; được cung cấp khi tín hiệu INTR được kích hoạt

Phần II Hiện tượng loại trừ

1, Khái niệm:

- Loại trừ là một sự kiện, xảy ra trong quá trình thực hiện một chương trình, làm gián đoạn luồng hướng dẫn bình thường của chương trình

+ Khi xảy ra lỗi trong một phương thức, phương thức đó sẽ tạo một đối tượng và chuyển giao nó cho hệ thống thời gian chạy Đối tượng, được gọi là đối tượng loại trừ, chứa thông

Trang 11

tin về lỗi, bao gồm loại và trạng thái của chương trình khi xảy ra lỗi Tạo một đối tượng loại trừ và đưa nó vào hệ thống thời gian chạy được gọi là ném loại trừ

Sau khi một phương thức đưa ra một loại trừ, hệ thống thời gian chạy sẽ cố gắng tìm thứ

gì đó để xử lý nó Tập hợp các "thứ gì đó" có thể xử lý loại trừ là danh sách các phương thức được sắp xếp theo thứ tự đã được gọi để truy cập phương thức xảy ra lỗi Danh sách các phương thức được gọi là ngăn xếp cuộc gọi (xem hình tiếp theo)

Hệ thống thời gian chạy tìm kiếm ngăn xếp cuộc gọi cho một phương thức có chứa một khối mã có thể xử lý loại trừ Khối mã này được gọi là 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 ra lỗi và tiến hành thông qua ngăn xếp cuộc gọi theo thứ tự ngược lại với các phương thức được gọi Khi tìm thấy một trình xử lý thích hợp,

hệ thống thời gian chạy sẽ chuyển loại trừ cho trình xử lý Trình xử lý loại trừ được coi

là phù hợp nếu loại đối tượng loại trừ được ném khớp với loại mà trình xử lý có thể xử lý

Trình xử lý loại trừ được chọn được gọi là bắt loại trừ Nếu hệ thống thời gian chạy tìm kiếm tất cả các phương thức trên ngăn xếp cuộc gọi mà không tìm thấy trình xử lý loại trừ thích hợp, như thể hiện trong hình tiếp theo, thì hệ thống thời gian chạy (và

do đó, chương trình) sẽ chấm dứt

Trang 12

Sử dụng các loại trừ để quản lý lỗi có một số lợi thế so với các kỹ thuật quản lý lỗi truyền thống Có thể tìm hiểu thêm trong phần Ưu điểm của loại trừ

2, Ưu điểm và nhược điểm

a, Ưu điểm

Việc sử dụng các loại trừ để quản lý lỗi có một số ưu điểm so với các kỹ thuật quản lý lỗi truyền thống Bạn sẽ tìm hiểu thêm trong phần này

 Ư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 các chi tiết về những việc cần làm khi có điều gì đó khác thường xảy ra với logic chính của chương trình Trong lập trình truyền thống, việc phát hiện, báo cáo và 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ả ở đây để đọc toàn bộ tệp vào bộ nhớ

readFile {

open the file;

determine its size;

allocate that much memory;

read the file into memory;

close the file;

}

ẩn sau đây

- Điều gì xảy ra nếu tệp không thể mở được?

- Điều gì xảy ra nếu không xác định được độ dài của tệp?

- Điều gì xảy ra nếu không thể phân bổ đủ bộ nhớ?

- Điều gì xảy ra nếu đọc không thành công?

- Điều gì xảy ra nếu không thể đóng tệp?

Để xử lý những trường hợp như vậy, hàm readFile phải có thêm mã để phát hiện, báo cáo và xử lý lỗi Đây là một ví dụ về chức năng có thể trông như thế nào

errorCodeType readFile {

initialize errorCode = 0;

open the file;

if (theFileIsOpen) { determine the length of the file;

if (gotTheFileLength) { allocate that much memory;

Trang 13

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;

}

bị mất trong đống lộn xộn Tệ hơn nữa, luồng logic của mã cũng bị mất, do đó gây khó khăn cho việc biết liệu mã có đang hoạt động đúng hay không: Tệp có thực sự bị đóng nếu chức năng không phân bổ đủ bộ nhớ không? Thậm chí còn khó khăn hơn để đảm bảo rằng mã tiếp tục hoạt động đúng khi bạn sửa đổi phương thức ba tháng sau khi viết

nó Nhiều lập trình viên giải quyết vấn đề này bằng cách bỏ qua nó — lỗi được báo cáo khi chương trình của họ gặp sự cố

Loại trừ cho phép bạn viết luồng chính của mã và xử lý các trường hợp loại trừ ở nơi khác Nếu hàm readFile sử dụng các loại trừ thay vì các kỹ thuật quản lý lỗi truyền thống, nó sẽ trông giống như sau

readFile {

try {

Trang 14

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 ý rằng các loại trừ không giúp bạn nỗ lực thực hiện công việc phát hiện, báo cáo và xử lý lỗi, nhưng chúng giúp bạn tổ chức công việc hiệu quả hơn

 Ưu điểm 2: Lan truyền lỗi lên ngăn xếp cuộc gọi

Ưu điểm thứ hai của các loại trừ là khả năng lan truyền báo cáo lỗi lên ngăn xếp cuộc gọi của các phương thức Giả sử rằng phương thức readFile là phương thức thứ tư trong một loạt các lệnh gọi phương thức lồng nhau được thực hiện bởi chương trình chính: phương thức 1 gọi phương thức 2, phương thức này gọi phương thức 3, phương thức cuối cùng gọi readFile

method1 {

call method2;

}

Ngày đăng: 02/03/2023, 15:09

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w