:Hầu hết những máy tính trước đây đều có khoảng 64- 128 MB Ram thừa để sử dụng cho CPU , và dĩ nhiên lượng Ram đó đều không đủ để chạy tất cả các chương trình mà người dùng muốn chạy cùn
Trang 1CẤU TRÚC MÁY TÍNH VÀ HỆ ĐIỀU HÀNH
ĐỀ TÀI: Phân tích tất cả về cấu trúc và chức năng của user mode trong Windows Xp Home?
Bộ nhớ ảo:
Bộ nhớ ảo ( vietual memory ) : là một vùng không gian lưu trữ gần giống như bộ nhớ trong Ram nhưng lại được đặt trên đĩa cứng và khoản không gian này được cố định ( không thể thay đổi địa chỉ vật lý của các ổnhớ trên HDD)
*Tại sao phải dùng bộ nhớ ảo ? :Hầu hết những máy tính trước đây đều
có khoảng 64- 128 MB Ram thừa để sử dụng cho CPU , và dĩ nhiên lượng Ram đó đều không đủ để chạy tất cả các chương trình mà người dùng muốn chạy cùng lúc
VD: bạn chạy hệ điều hành Windows, một chương trình email , trình duyệt web và một chương trình Word cùng một lúc thì bộ nhớ Ram 64MB sẽ không đủ
*Công dụng của bộ nhớ ảo ?
-Cho phép thực hiện cùng lúc nhiều tiến trình, mỗi tiến trình có không gian định vị riêng
-Đơn giản hóa việc nạp chương trình vào bộ nhớ để thi hành nhờ một cơ chếđược gọi là sự tái định địa chỉ Cơ chế này cho phép một chương trình có thể thi hành khi nó nằm ở bất kì vị trí nào của bộ nhớ
*Cấu tạo của bộ nhớ ảo :
-Bộ nhớ ảo bao gồm bộ nhớ trong và bộ nhớ ngoài được phân tích thành khối để có thể cung cấp cho mỗi chương trình một số khối cần thiết cho việcthực hiện chương trình đó
*Nguyên lý hoạt động của bộ nhớ ảo :
Bộ nhớ ảo thường được thực hiện với kỹ thuật phân trang theo yêu cầu (demand paging) Cũng có thể sử dụng kỹ thuật phân đoạn theo yêu cầu ( demand segmentation) để cài đặt bộ nhớ ảo, tuy nhiên việc cấp phát và
Trang 2thay thế các phân đoạn phức tạp hơn thao tác trên trang, vì kích thước khôngbằng nhau của các đoạn.
Phân trang theo yêu cầu ( demand paging)
Một hệ thống phân trang theo yêu cầu là hệ thống sử dụng kỹ thuật phân trang kết hợp với kỹ thuật swapping Một tiến trình được xem như một tập các trang, thường trú trên bộ nhớ phụ ( thường là đĩa) Khi cần xử lý, tiến trình sẽ được nạp vào bộ nhớ chính Nhưng thay vì nạp toàn bộ chương trình, chỉ những trang cần thiết trong thời điểm hiện tại mới được nạp vào bộnhớ Như vậy một trang chỉ được nạp vào bộ nhớ chính khi có yêu cầu.Với mô hình này, cần cung cấp một cơ chế phần cứng giúp phân biệt các trang đang ở trong bộ nhớ chính và các trang trên đĩa Có thể sử dụng lại bit valid-invalid nhưng với ngữ nghĩa mới:
valid : trang tương ứng là hợp lệ và đang ở trong bộ nhớ chính
invalid : hoặc trang bất hợp lệ (không thuộc về không gian địa chỉ của tiến trình) hoặc trang hợp lệ nhưng đang được lưu trên bộ nhớ phụ
Một phần tử trong bảng trang mộ tả cho một trang không nằm trong bộ nhớ chính, sẽ được đánh dấu invalid và chứa địa chỉ của trang trên bộ nhớ phụ
Cơ chế phần cứng hỗ trợ kỹ thuật phân trang theo yêu cầu là sự kết hợp của
cơ chế hỗ trợ kỹ thuật phân trang và kỹ thuật swapping:
Bảng trang: Cấu trúc bảng trang phải cho phép phản ánh tình trạng của một trang là đang nằm trong bộ nhớ chính hay bộ nhớ phụ
Bộ nhớ phụ: Bộ nhớ phụ lưu trữ những trang không được nạp vào bộ nhớ chính Bộ nhớ phụ thường được sử dụng là đĩa, và vùng không gian đĩa dùng
để lưu trữ tạm các trang trong kỹ thuật swapping được gọi là không gian swapping
Trang 3Truy xuất đến một trang được đánh dấu bất hợp lệ sẽ làm phát sinh một lỗi trang (page fault) Khi dò tìm trong bảng trang để lấy các thông tin cần thiết cho việc chuyển đổi địa chỉ, nếu nhận thấy trang đang được yêu cầu truy xuất là bất hợp lệ, cơ chế phần cứng sẽ phát sinh một ngắt để báo cho hệ điều hành Hệ điều hành sẽ xử lý lỗi trang như sau :
Kiểm tra truy xuất đến bộ nhớ là hợp lệ hay bất hợp lệ
Nếu truy xuất bất hợp lệ : kết thúc tiến trình
Ngược lại : đến bước 3
Tìm vị trí chứa trang muốn truy xuất trên đĩa
Tìm một khung trang trống trong bộ nhớ chính :
Nếu tìm thấy : đến bước 5
Nếu không còn khung trang trống, chọn một khung trang « nạn nhân » và chuyển trang « nạn nhân » ra bộ nhớ phụ (lưu nội dung của trang đang chiếm giữ khung trang này lên đĩa), cập nhật bảng trang tương ứng rồi đến bước 5
Chuyển trang muốn truy xuất từ bộ nhớ phụ vào bộ nhớ chính : nạp trang cần truy xuất vào khung trang trống đã chọn (hay vừa mới làm trống ) ; cập nhật nội dung bảng trang, bảng khung trang tương ứng
Tái kích hoạt tiến trình người sử dụng
Trang 4*Ưu điểm của bộ nhớ ảo
-Chương trình sẽ không bị rằng buộc bởi không gian bộ nhớ vật lý sẵn có Người dùng có thể viết chương trình có không gian địa chỉ ảo rất lớn , đơn giản hóa tác vụ lập trình
-Vì mỗi chương trình người dùng có thể lấy ít hơn bộ nhớ vật lý nên nhiều chương trình hơn có thể được thực thi tại một thời điểm
-Nó mang lại những lợi ích lớn cho người dùng mà không phải chi phí cao -Do yêu cầu ít nhập xuất để nạp hay hoán vị mỗi chương trình người dùng trong bộ nhớ vì thế mỗi chương trình người dùng sẽ chạy nhanh hơn
-Bộ nhớ ảo thực hiện tác vụ lập trình dễ hơn nhiều vì người lập trình không cần lo lắng về lượng bộ nhớ vật lý sẵn có nữa hay về mã gì có thể được thay thế trong việc phụ lắp , thay vào đó người lập trình có thể quan tâm vấn đề cần lập trình
*Nhược điểm của bộ nhớ ảo :
-bộ nhớ ảo không dễ cài đặt và thực chất có thể giảm năng lực nếu nó được dùng thiếu thận trọng
-sử dụng bộ nhớ ảo quá nhiều , càng làm giảm tuổi thọ của ổ cứng
User Mode
Hầu hết các hệ điều hành có một số phương pháp hiển thị sử dụng CPU Trong Windows, điều này là Task Manager
Trang 5CPU thường là đại diện như là một tỷ lệ phần trăm đơn giản của CPU dành thời gian vào những nhiệm vụ không nhàn rỗi Nhưng đây là một chút đơn giản hóa một Trong bất kỳ hệ điều hành hiện đại, các CPU thực sự dành thời gian trong hai chế độ rất khác biệt:
User mode
Trong chế độ user mode, mã thực thi không có khả năng truy cập trực tiếp phần cứng hoặc tham chiếu bộ nhớ Mã đang chạy trong chế độ user mode phải ủy quyền cho các API hệ thống để truy cập vào phần cứng hoặc bộ nhớ
Do có sự bảo vệ của loại này bị cô lập, bị treo ở chế độ user mode là luôn luôn phục hồi Hầu hết các mã chạy trên máy tính của bạn sẽ thực hiện trongchế độ user mode
Có thể cho phép hiển thị thời gian của kenel mode trong công tác quản lý, như đã thể hiện ở hình trên Dòng màu xanh lá cây là tổng thời gian của CPU, các dòng màu đỏ là thời gian của kenal mode Khoảng cách giữa hai thời gian của user mode
Hai chế độ này không chỉ các nhãn, họ đang được thực thi bởi các phần cứng CPU Nếu mã thực thi trong chế độ user mode cố gắng để làm một cái
gì đó ngoài phạm vị hoạt động của nó - như, nói, truy cập vào một chỉ dẫn CPU đặc quyền đặc lợi, sửa chữa bộ nhớ rằng nó không có quyền truy cập vào - một ngoại lệ được ném trappable Thay vì toàn bộ hệ thống bị treo, chỉ treo ứng dụng cụ thể Đó là giá trị của chế độ user mode
phần cứng CPU x86 thực sự cung cấp bốn vòng bảo vệ: 0, 1, 2, và 3 Vòng 0(kenal) và 3 (user) thường được sử dụng
Trang 6Máy tính hệ điều hành cung cấp các mức độ khác nhau của các nguồn tài nguyên Một vòng bảo vệ là một trong hai hoặc nhiều cấp độ phân cấp hoặc các lớp đặc quyền trong kiến trúc của một hệ thống máy tính Đây là phần cứng thường được thực thi bởi một số kiến trúc CPU cung cấp chế độ CPU khác nhau ở cấp độ phần cứng hoặc mã vi Nhẫn được sắp xếp theo hệ thốngphân cấp một từ hầu hết các đặc quyền đặc lợi (đáng tin cậy nhất, thường là
số không) để ít nhất là đặc quyền đặc lợi (ít nhất là đáng tin cậy, thường với
số vòng cao nhất) Trên hệ điều hành nhất, Ring 0 là mức với những đặc quyền nhất và tương tác trực tiếp nhất với phần cứng vật lý như các CPU và
bộ nhớ
Nếu chúng ta chỉ sử dụng hai vòng cách ly, đó là một chút không rõ ràng, nơi điều khiển thiết bị nên đi - mã cho phép chúng ta sử dụng card video, bàn phím của chúng tôi, chuột, máy in, và vv Do các trình điều khiển chạy trong chế độ hạt nhân, cho hiệu suất tối đa, hay họ chạy trong chế độ người dùng, cho sự ổn định tối đa không? Trong Windows, ít nhất, câu trả lời là nóphụ thuộc trình điều khiển thiết bị có thể chạy trong chế độ người dùng hoặc hạt nhân Hầu hết các driver được shunted vào bên dùng của hàng rào hiện nay, với các ngoại nổi bật của driver card màn hình, mà cần thực hiện chế độ đốt trần kernel Nhưng ngay cả đó là thay đổi, trong Windows Vista,
Trang 7trình điều khiển video được chia nhỏ thành phần người dùng và hạt nhân Có
lẽ đó là lý do tại sao game thủ phàn nàn rằng Vista thực hiện khoảng 10 phần trăm trong các trò chơi chậm hơn
Các biên giới chính xác giữa các chế độ này vẫn còn khá rõ ràng Mã gì nên chạy trong chế độ người dùng? Mã gì nên chạy trong chế độ hạt nhân? Hoặc
có thể chúng ta sẽ xác định lại các tầng như tầng hầm - sự nổi lên của ảo hóalái xe tạo ra một vòng mới dưới đây tất cả những người khác, Ring -1, mà chúng ta biết là ảo hóa phần cứng x86
Chế độ người dùng rõ ràng là một công net tốt, nhưng nó đi kèm với chi phí.Chuyển tiếp giữa người dùng và chế độ hạt nhân là tốn kém Thực sự tốn kém Đó là lý do tại sao phần mềm mà ném ngoại lệ chậm, ví dụ Trường hợp ngoại lệ bao hàm sự chuyển tiếp chế độ hạt nhân Cấp, chúng tôi đã thựchiện rất nhiều bây giờ mà chúng ta hiếm khi có quan tâm đến hiệu suất chuyển đổi, nhưng khi bạn cần thực hiện cuối cùng, bạn chắc chắn bắt đầu quan tâm đến công cụ này
Có lẽ là ví dụ công nhất của vẽ lại cho người sử dụng / kernel dòng này là của máy chủ web Microsoft IIS 6 di chuyển một đoạn khá lớn của các chức năng cốt lõi của nó vào chế độ hạt nhân, đặc biệt là sau khi một máy chủ web mã nguồn mở cụ thể thừa hưởng chế độ hạt nhân để tạo ra một chuẩn công nghiệp chiến thắng rất lớn Đó là loại một cuộc chiến tranh vô nghĩa, nếu bạn hỏi tôi, kể từ tối ưu hóa hạt nhân (cả trong trại) chỉ áp dụng cho nội dung HTML tĩnh Nhưng đó là cách của tất cả các cuộc chiến tranh, chuẩn hay không
cách ly nghiêm ngặt của CPU mã giữa người dùng và chế độ hạt nhân là hoàn toàn minh bạch đối với hầu hết chúng ta, nhưng nó là khá nghĩa sự khác biệt giữa một máy tính bị treo tất cả các thời gian và một máy tính mà
bị treo catastrophically tất cả các thời gian Đây là những gì chúng ta lập trình ngoài crashy-mã-viết như thế để gọi là "tiến bộ"
Triển khai thực hiện
Phần cứng được hỗ trợ vòng là những khái niệm mang tính cách mạng nhất được giới thiệu bởi hệ điều hành Multics, một người tiền nhiệm bảo mật cao của gia đình UNIX ngày nay của hệ điều hành Tuy nhiên, hầu hết các mục đích chung hệ thống chỉ sử dụng hai vòng, ngay cả khi họ chạy trên phần cứng cung cấp chế độ CPU nhiều hơn thế Ví dụ, Windows XP và dưới đây
Trang 8chỉ sử dụng hai vòng, với ring 0 tương ứng với chế độ kenal và vòng 3 đến chế độ user
Nhiều kiến trúc CPU hiện đại (bao gồm cả các kiến trúc x86 của Intel phổ biến) bao gồm một số hình thức bảo vệ ring, mặc dù hệ điều hành Windows
NT, giống như Unix, không khai thác tính năng này người tiền nhiệm của
nó, OS / 2, đã đến mức độ nào đó, vì nó sử dụng ba vòng: ring 0 cho mã hạt nhân và điều khiển thiết bị, vòng 2 cho mã đặc quyền đặc lợi (chương trình người dùng với I / O cho phép truy cập), và vòng 3 cho mã không có đặc quyền (gần như tất cả các chương trình người dùng), và OpenVMS sử dụng bốn phương thức gọi là (theo thứ tự giảm dần quyền) hạt nhân, điều hành, giám sát và người dùng
Hiện đã có một quan tâm mới trong cấu trúc thiết kế, với sự gia tăng của phần mềm Xen VMM, cuộc thảo luận về hạt nhân nguyên khối-vs-vi (đặc biệt là ở các nhóm tin Usenet và các diễn đàn Web), Microsoft Ring-1 thiết
kế cấu trúc như một phần của họ NGSCB siêu giám sát chủ động và nhúng vào trong phần mềm như Intel VT-x (trước đây là Vanderpool)
Các Multics hệ thống ban đầu có tám chiếc nhẫn, nhưng nhiều hệ thống hiệnđại có ít hơn phần cứng là nhận thức của các vòng hiện tại của thread hướngdẫn thực hiện ở tất cả các lần, nhờ vào sổ đăng ký máy đặc biệt Trong một
số hệ thống, các khu vực của bộ nhớ ảo là thay vì được cho một số vòng trong phần cứng Một ví dụ là Eclipse MV/8000 dữ liệu chung, trong đó ba bit đầu của máy tính phục vụ như là đăng ký nhẫn Vì vậy mã thực thi với các máy tính ảo thiết lập để 0xE200000, ví dụ, sẽ tự động được trong vòng
7, và kêu gọi một chương trình con trong một phần khác nhau của bộ nhớ tự động sẽ gây ra một chuyển vòng
Phần cứng hạn chế tối các cách thức mà kiểm soát có thể được truyền từ mộtring khác, và cũng có thể thi hành các hạn chế về các loại bộ nhớ truy cập cóthể được thực hiện trên ring Thông thường có một cổng đặc biệt hoặc
hướng dẫn kiểm soát cuộc gọi để chuyển một cách an toàn đối với các cửa khẩu được xác định trước ở cấp thấp hơn, điều này có chức năng như một cuộc gọi giám sát trong nhiều hệ điều hành sử dụng cấu trúc ring Những hạn chế phần cứng được thiết kế để hạn chế cơ hội cho vi phạm tình cờ hay
cố ý của an ninh Ngoài ra, special ring có thể được khả năng đặc biệt, (ví dụnhư là bộ nhớ thực sự giải quyết vấn đề mà đi qua các phần cứng ảo, bộ nhớ)
Bảo vệ Ring có thể được kết hợp với chế độ xử lý trong một số hệ
Trang 9thống( master/ kernel/ privileged mode versus slave/ user/ unprivileged mode)sử dụng cả hai hình thức bảo hộ, chỉ có một.
Hiệu quả sử dụng của kiến trúc vòng đòi hỏi phải hợp tác chặt chẽ giữa phầncứng và hệ điều hành Hệ điều hành được thiết kế để làm việc trên nhiều nềntảng phần cứng có thể làm cho chỉ sử dụng hạn chế nhẫn nếu họ không có mặt trên tất cả các nền tảng hỗ trợ Thường thì các mô hình bảo mật được đơn giản hóa để "kenal" và "user" ngay cả khi phần cứng cung cấp độ chi tiết tốt hơn thông qua các vòng
Hình thức giám sát
Trong máy tính về chế độ giám sát là một hardware-mediated flag gian có thể được thay đổi bằng mã chạy trong hệ thống cấp phần mềm Hệ thống cấpnhiệm vụ hoặc chủ đề sẽ có flag này trong khi họ đang chạy, trong khi ứng dụng người dùng không gian sẽ không Flag này quyết định nó sẽ có thể để thực thi lệnh mã máy chẳng hạn như thay đổi đăng ký cho các bảng mô tả khác nhau, hoặc các hoạt động thực hiện như vô hiệu hoá các ngắt Các ý tưởng có hai chế độ khác nhau để hoạt động xuất phát từ "với kiểm soát nhiều hơn đến trách nhiệm nhiều hơn" - một chương trình trong chế độ giámsát là đáng tin cậy không bao giờ thất bại, vì một sự thất bại có thể gây ra các hệ thống máy tính toàn sụp đổ
Giám sát chế độ là "Một chế độ thực hiện trên một số bộ vi xử lý cho phép thực hiện tất cả các hướng dẫn, bao gồm các hướng dẫn đặc quyền Nó cũng
có thể cung cấp cho truy cập vào một không gian địa chỉ khác nhau, đến phần cứng quản lý bộ nhớ và thiết bị ngoại vi khác Đây là chế độ trong đó các hệ điều hành thường chạy "
Trong một kenal nguyên khối, hệ điều hành chạy trong chế độ giám sát và các ứng dụng chạy trong chế độ user mode Các loại hệ điều hành, giống như những người có exokernel hoặc microkernel không nhất thiết chia sẻ hành vi này
Chế độ hypervisor
CPU mới của Intel và AMD cung cấp công nghệ ảo hóa x86, hướng dẫn cho hypervisor một để kiểm soát Ring 0 truy cập vào phần cứng Mặc dù họ không tương thích lẫn nhau, cả Intel VT-x (tên mã là Vanderpool ") và AMD-V (tên mã là" Pacifica ") tạo ra một" Ring -1 "để có một hệ thống điềuhành khách có thể chạy Ring 0 hoạt động tự nhiên mà không ảnh hưởng
Trang 10khác khách hoặc máy chủ lưu trữ hệ điều hành
Nhiều kiến trúc phần cứng CPU linh hoạt hơn rất nhiều so với được khai thác bởi các hệ điều hành mà họ thường chạy Việc sử dụng đúng chế độ CPU phức tạp đòi hỏi phải rất chặt chẽ hợp tác giữa các hệ điều hành và CPU, và do đó có xu hướng để buộc hệ điều hành với kiến trúc CPU Khi hệđiều hành và CPU được thiết kế đặc biệt dành cho nhau, điều này không phải là một vấn đề (mặc dù một số tính năng phần cứng có thể vẫn chưa được khai thác trái), nhưng khi hệ điều hành được thiết kế để tương thích vớinhiều kiến trúc CPU khác nhau, một phần lớn CPU tính năng chế độ có thể được bỏ qua bởi các hệ điều hành Ví dụ, Windows lý do chỉ sử dụng hai cấp
độ (vòng 0 và vòng 3) là một số kiến trúc phần cứng được hỗ trợ trong quá khứ (như PowerPC hay MIPS) thực hiện chỉ có hai mức độ đặc quyền [3]
Multics là một hệ điều hành được thiết kế đặc biệt cho một kiến trúc CPU đặc biệt (mà lần lượt được thiết kế đặc biệt dành cho Multics), và nó đã lợi dụng đầy đủ các chế độ CPU có sẵn cho nó Tuy nhiên, nó là một ngoại lệ cho quy tắc này Ngày nay, mức độ cao của interoperation giữa các hệ điều hành và phần cứng thường không hiệu quả, bất chấp những lợi thế tiềm năngđối với an ninh và ổn định
Cuối cùng, mục đích của chế độ hoạt động riêng biệt cho CPU là cung cấp bảo vệ phần cứng chống tham nhũng vô tình hay cố ý của môi trường hệ thống (và vi phạm an ninh tương ứng của hệ thống) bằng phần mềm Chỉ có
"tin cậy" phần của hệ thống phần mềm được phép thực hiện trong môi
trường không hạn chế của chế độ hạt nhân, và chỉ sau đó khi hoàn toàn cần thiết Tất cả các phần mềm khác thực hiện trong một hoặc nhiều chế độ người dùng Nếu bộ xử lý tạo ra một tình trạng lỗi hoặc ngoại lệ trong một chế độ người dùng, trong nhiều trường hợp hệ thống ổn định không bị ảnh hưởng, nếu một bộ xử lý tạo ra một tình trạng lỗi hoặc ngoại lệ trong chế độ hạt nhân, hệ điều hành nhất sẽ tạm dừng lại hệ thống với một lỗi không thể khôi phục Khi một hệ thống các phương thức tồn tại (ring-cơ sở an ninh), các lỗi và ngoại lệ ở một mức độ đặc quyền có thể làm mất ổn định chỉ có các mức ưu đãi cao hơn số Như vậy, một lỗi trong Ring 0 (các chế độ hạt nhân với các đặc quyền cao nhất) sẽ sụp đổ toàn bộ hệ thống, nhưng một lỗi trong vòng 2 sẽ chỉ ảnh hưởng đến vòng 3 và vượt ra ngoài và Ring 2 bản thân, nhiều nhất
Quá trình chuyển đổi giữa các chế độ được theo ý của các chủ đề thực hiện
Trang 11khi quá trình chuyển đổi từ một mức độ ưu tiên cao cho một trong những đặc quyền thấp (từ hạt nhân để chế độ người dùng), nhưng quá trình chuyển đổi từ thấp đến cấp cao hơn của đặc quyền có thể diễn ra chỉ thông qua an toàn , phần cứng điều khiển "cửa" được đi qua bằng cách thực hiện các hướng dẫn đặc biệt hoặc khi ngắt bên ngoài được nhận.
Microkernel hệ điều hành cố gắng để giảm thiểu số lượng mã chạy trong chế
độ đặc quyền đặc lợi, cho các mục đích an ninh và sang trọng
Kernel mode,ngắt và các cuộc gọi hệ thống
Kernel mode
Trong hệ WIN NT , chương trình có thể truy nhập trực tiếp vào phần cứng,
dữ liệu hệ thống cũng như các tài nguyên hệ thống khác Kernel-mode bao gồm các thành phần:
- Executive: Chứa các thành phần thực hiện việc quản lí bộ nhớ, quản lí tiến trình và luồng, an ninh, nhập/xuất, giao tiếp liên tiến trình và các dịch vụ HĐH cơ sở khác
- Microkernel: Có nhiệm vụ hàng đầu là cung cấp đồng bộ hóa giữa nhiều bộVXL, điều phối và phân phối luồng và ngắt, lấy thông tin từ Registry khi hệ thống khởi động…
- Hardware Abstraction Layer (HAL): HAL thay đổi tùy theo phần cứng hệ
ĐH đang chạy, vì thế tương thích với nhiều họ VXL HAL quản lí phần cứng trực tiếp
- Device drivers: Các trình điều khiển thiết bị
- Windowing and graphics system: Thực hiện Giao diện người dùng đồ họa (GUI)
Ngắt
-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ìnhphục vụ ngắt (ISR – Interrupt Service Routine) ISR hoàn toàn giống với một chương trình bình thường trên máy tính, nghĩa là nó có khả năng truy xuất đến tất cả các lệnh ngôn ngữ máy của µP Tuy nhiên cuối ISR sẽ kết thúc bằng lệnh IRET (Interrupt Return) để µP tiếp tục thực hiện lệnh đã kết thúc trước đây Các nguyên nhân dẫn đến ngắt là:
Trang 12- Bản thân chương trình đang thực hiện bị lỗi, ví dụ như: chia cho 0, …
- Do tác động của thiết bị ngoại vi, ví dụ như: thực hiện lệnh in nhưng máy
in lỗi, ghi dữ liệu vào đĩa nhưng không có đĩa, …
- Do lập trình viên chủ động gọi các ngắt có sẵn Một cách đơn giản, chúng
ta có thể xem ngắt như là quá trình gọi chương trình con nhưng các chương trình con này được tạo ra sẵn trong máy tính và quá trình gọi này có thể xảy
ra tại thời điểm không xác định trước Sự kiện (Event) là một tác động lên một đối tượng trong môi trường Windows Khi có một sự kiện xảy ra, Windows sẽ gởi thông điệp (message) đến đối tượng Các sự kiện thường xảy ra là:
- Sự kiện chuột: Click, Double Click, …
Trang 13Khác với ngắt mềm, ngắt cứng không được khởi động bên trong máy tính
mà do các linh kiện điện tử tác đông lên hệ thống Ngắt cứng cũng được chia thành 2 loại: ngắt che được và ngắt không che được Ngắt che được là ngắt có thể cho phép hay không cho phép thực thi bằng phần mềm thông qua
cờ ngắt IF (Interrupt Flag): lệnh CLI (Clear Interrupt Flag) sẽ cấm ngắt và lệnh STI (Set Interrupt Flag) sẽ cho phép các ngắt này hoạt động Các loại ngắt khác nhau có thể mô tả như sau:
Hình 2.2 – Các loại ngắt
Khi thực hiện lệnh gọi một ngắt nào đó, chương trình con phục vụ cho ngắt
sẽ được gọi Để thực hiện các ngắt tương ứng, địa chỉ thực hiện các chương trình con phục vụ ngắt được đặt trong một bảng, gọi là bảng vector ngắt Bảng vector ngắt gồm có 256 phần tử, mỗi phần tử gồm 4 byte ứng với 256 ngắt (từ ngắt 0 đến ngắt 0FFh) Mỗi phần tử trong bảng vector ngắt chứa 2 địa chỉ: địa chỉ thanh ghi đoạn đưa vào CS và địa chỉ offset của chương trình phục vụ ngắt đưa vào IP Bảng vector ngắt có thể mô tả như sau: