[Question] Hỏi về chương trình phục vụ ngắt |
25/01/2013 10:21:34 (+0700) | #1 | 273024 |
gamo1102
Member
|
0 |
|
|
Joined: 10/08/2012 06:01:14
Messages: 32
Offline
|
|
Mình đang học assembly, có một câu hỏi nhờ các bạn giải thích giùm: Khi hệ điều hành được nạp vào bộ nhớ thì 1024bytes thấp nhất chứa địa chỉ của 256 chương trình phục vụ ngắt( mỗi ngắt chiếm 4byte). Vậy mình muốn hỏi các chương trình phục vụ ngắt đó ở đâu ra( ý mình là chương trình ngắt đó của hệ điệu hành hay là có sẵn trong bios hay là ở đâ...)
Cám ơn các bạn. |
|
|
|
|
[Question] Hỏi về chương trình phục vụ ngắt |
25/01/2013 21:59:00 (+0700) | #2 | 273040 |
Stanley_00
Member
|
0 |
|
|
Joined: 01/03/2011 06:21:38
Messages: 74
Offline
|
|
Lúc trước có làm với DOS thì một số ngắt là của BIOS, như ngắt 10, ngắt 16...
Một số ngắt là do hệ điều hành 21, 0x80... Nhưng bảng vector ngắt này, hệ điều hành có thể sửa đổi bất cứ lúc nào, |
|
|
|
|
[Question] Hỏi về chương trình phục vụ ngắt |
25/01/2013 22:16:56 (+0700) | #3 | 273041 |
gamo1102
Member
|
0 |
|
|
Joined: 10/08/2012 06:01:14
Messages: 32
Offline
|
|
Stanley_00 wrote:
Lúc trước có làm với DOS thì một số ngắt là của BIOS, như ngắt 10, ngắt 16...
Một số ngắt là do hệ điều hành 21, 0x80... Nhưng bảng vector ngắt này, hệ điều hành có thể sửa đổi bất cứ lúc nào,
Bạn nói rõ hơn về việc hệ điều hành có thể sửa đổi vector ngắt được không. Nếu HĐH mà sửa thì làm sao mình có thể lập trình xử lý ngắt được. |
|
|
|
|
[Question] Hỏi về chương trình phục vụ ngắt |
25/01/2013 23:33:39 (+0700) | #4 | 273043 |
n2tforever
Member
|
0 |
|
|
Joined: 01/07/2011 15:39:51
Messages: 92
Offline
|
|
khi chương trình chạy ở realmode (ví dụ như trong DOS) thì việc truy xuất bộ nhớ là không bị giới hạn. Do đó không chỉ hệ điều hành mà ngay cả chương trình của user cũng có thể sửa đổi bảng vector ngắt này.
|
|
|
|
|
[Question] Hỏi về chương trình phục vụ ngắt |
26/01/2013 13:49:39 (+0700) | #5 | 273055 |
|
computerline
Member
|
0 |
|
|
Joined: 30/03/2007 13:46:50
Messages: 144
Offline
|
|
Bạn đọc 2 bài này có thể hiểu rõ hơn:
http://en.wikipedia.org/wiki/Interrupt_descriptor_table
http://wiki.osdev.org/Interrupt_Descriptor_Table
An interrupt vector is the memory address of an interrupt handler, or an index into an array called an interrupt vector table that contains the memory addresses of interrupt handlers. When an interrupt is generated, the Operating System saves its execution state via a context switch, and begins execution of the interrupt handler at the interrupt vector.
Bảng 256 vector ngắt được nạp bởi BIOS, nó chứa địa chỉ của trình phục vụ ngắt được cung cấp bởi vi sử lý, mỗi khi một ngắt được gọi sẽ kích hoạt trình phục vụ ngắt tương ứng. Hệ điều hành có thể thay đổi bảng vector ngắt này bằng cách thay đổi địa chỉ trong bảng trỏ đến đoạn chương trình của mình. |
|
Không có nghề gì trong xã hội là thấp hèn cả - chỉ có nhân cách mới phân biệt thấp cao |
|
|
|
[Question] Hỏi về chương trình phục vụ ngắt |
26/01/2013 20:20:58 (+0700) | #6 | 273061 |
gamo1102
Member
|
0 |
|
|
Joined: 10/08/2012 06:01:14
Messages: 32
Offline
|
|
Bạn cho mình hỏi thêm một câu nhé: Lập trình xử lý ngắt trong một chừng mực nào đó cũng như hook API đúng không?. Bởi vì theo mình hiểu thì đều là dạng bắt các sự kiễn diễn ra và lái chương trình đến 1 hàm do mình viết ra.
Thú thực là mình đọc rất nhiều về ngắt và hook rồi mà vẫn không thể hiểu tường tận, vẫn mù mờ quá. |
|
|
|