1. Trang chủ
  2. » Luận Văn - Báo Cáo

tiểu luận hệ điều hành quản lý hệ thống vào ra trong hệ điều hành windows

44 0 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

Nội dung

Cụ thể, khi một ứng dụng yêu cầu sử dụng một thiết bị,hệ điều hành sẽ gọi đến trình điều khiển của thiết bị tương ứng để thực hiện các thao tác trên thiết bị.Trình điều khiển thiết bị đư

Trang 1

TRƯỜNG CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG*

TIỂU LUẬN

HỆ ĐIỀU HÀNH

ĐỀ TÀI :

QUẢN LÝ HỆ THỐNG VÀO RA TRONG HỆ ĐIỀU HÀNH WINDOWS

GIÁO VIÊN HƯỚNG DẪN : ThS ĐỖ TUẤN ANH

Sinh Viên : Đinh Nhật Ký 20215410Lớp : IT1-06 K66Mã lớp : 141296Hà Nội, ngày 29 tháng 6 năm 2023MỤC LỤCLời nói đầu 3

II Nguyên tắc quản lý chung 4

1 Giới thiệu chung 4

1.1 Thiết bị vào ra 4

1.2 Thiết bị điều khiển 5

1.3 Trình điều khiển thiết bị 5

Trang 2

1.4 Chu kỳ một yêu cầu vào ra 9

1.5 Giao tiếp thiết bị ngoại vi với hệ điều hành 10

2.4 Thuật toán SCAN 32

2.5 Thuật toán C-SCAN 37

2.6 Thuật toán LOOK/C-LOOK 42

2.7 Vấn đề lựa chọn thuật toán 48

TÀI LIỆU THAM KHẢO 49

Lời nói đầu

Có nhiều luận điểm 1 chiều đó là: Không có hệ điều hành, các thiết bị máy tính là vô dụng Nhưng khi tìm hiểu đến phần này, mình nhận ra rằng luận điểm trên chưa hoàn toàn chính xác Đúng là một cỗ máy nếu không có hệ điều hành quản lý (hoặc không có

Trang 3

con người thao tác) thì đều không làm nên việc gì cả Nhưng ngược lại, nếu chỉ có hệ điều hành mà không có các thiết bị phần cứng đi kèm tương ứng thì cũng không làm nên được công việc gì cả Thật ra, phần cứng máy tính và hệ điều hành đi kèm cùng nhau, hỗ trợ nhau, bổ sung cho nhau để cùng đạt được mục tiêu chung, không cái nào có thể bỏ đi được Cũng giống như phân cấp trong xã hội loài người, người thường và các nhà quản lý cũng không thể tách rời nhau Nếu thiếu các nhà quản lý, xã hội sẽ loạn và không thể kiểm soát Và ngược lại, nếu như tất cả đều là quản lý, không có những người bình thường nữa, thì cũng không ai là quản lý cả Tóm lại: Phần cứng máy tính và hệ điều hành đi kèm là không thể tách rời, cả hai phối hợp với nhau tạo ra một chỉnh thể hoàn thiện.

Chính vì vậy, một trong những công việc quan trọng củazHệ điều hànhzlà quản lý các thiết bị đầu vào / đầu ra (Input / Output) khác nhau, bao gồm chuột, bàn phím, touchpad, ổ đĩa cứng, màn hình, các thiết bị USB, thiết bị kết nối mạng, thiết bị âm thanh, máy in, v.v Cần thiết phải có hệ thốngzI / Ozđể nhận các yêu cầu vào / ra dữ liệu của ứng dụng và gửi nó đến thiết bị vật lý, sau đó nhận lại các phản hồi từ thiết bị và gửi đến ứng dụng xử lý tiếp

Hệ thống I/O của Windows bao gồm một số thành phần điều hành cùng nhau quản lý các thiết bị phần cứng và cung cấp giao diện cho các thiết bị phần cứng cho các ứng dụng và hệ thống Quản lý thiết bị I/O là một phần rất quan trọng của hệ điều hành - quan trọng và đa dạng đến mức toàn bộ hệ thống con I/O được dành cho hoạtđộng của nó Quản lý hệ thống I/O là một phần rất quan trọng của bất kỳ hệ điều hành nào, và Windows cũng không phải là ngoại lệ Trong Windows, quản lý hệ thống I/O có trách nhiệm quản lý tất cả các hoạt động vào/ra của hệ thống, bao gồm giao tiếp với các thiết bị như bàn phím, chuột, thiết bị lưu trữ và thiết bị mạng Quản lý hệ thống I/O cung cấp một giao diện tiêu chuẩn cho phép các ứng dụng tương tác với các thiết bị một cách dễ dàng đồng thời đảm bảo rằng các hoạt động I/O được thực hiện một cách hiệu quả và an toàn.

Trong bài luận này, chúng ta sẽ đi sâu vào các chi tiết của quản lý hệ thống I/O trên Windows, bao gồm các thành phần, cách thức hoạt động và những thách thức liên quan đến quản lý hoạt động I/O trên một hệ thống Windows Chúng ta sẽ khám phá vai trò của các trình điều khiển thiết bị, gói tin yêu cầu I/O và các thành phần phần mềm khác liên quan đến quản lý hoạt động I/O trên Windows Chúng ta cũng sẽ thảo luận về các vấn đề và thách thức phổ biến trong quản lý hệ thống I/O và các cơchế được sử dụng để giải quyết chúng Kết thúc bài luận này, độc giả sẽ có một hiểubiết toàn diện về quản lý hệ thống I/O trên Windows và vai trò quan trọng của nó trong đảm bảo hoạt động hiệu quả và an toàn của hệ thống.

Trang 4

II Nguyên tắc quản lý chung.1 Giới thiệu chung.

1.1 Thiết bị vào ra.

Trong hệ điều hành Windows, có nhiều loại thiết bị vào ra (input/output devices) khác nhau được hỗ trợ để cho phép người dùng tương tác với máy tính Sau đây là một số thiết bị vào ra phổ biến trên hệ điều hành Windows Thiết bịzI / Ozcó thể được chia thành hai loại là Block devicesz(thiết bị khối) đây là loại thiết bị mà trình điều khiển giao tiếp bằng cách gửi toànbộ khối dữ liệu Ví dụ: Ổ đĩa cứng, thiết bị USB Flash, máy ảnh USB và loại thứ 2 là Character devicesz(thiết bị ký tự): Loại thiết bị mà trình điều khiển giao tiếp bằng cách gửi và nhận các ký tự đơn (byte hoặc mã 8 - octa) Ví dụ: các loại card màn hình, card âm thanh hoặc các cổng serial port, parallel TrừzCPUzthì các thiết bị ngoại vi khác thường sẽ có một trình điều khiển đi kèm (CPUzcó kiểu xử lý riêng và thường đi cùng với phần cứng, có bộ nhớ độc lập)

Hình 1: các loại thiết bị vào ra trong Windows.

1.2 Thiết bị điều khiển.

Trang 5

Mỗi thiết bị điều khiển(TBĐK) có thể điều khiển được 1,2,4, thiết bị ngoại vi(TBNV) Tùy theo số giác cắm có trên TBĐK Nếu giao diện điều khiển chuẩn(ANSI, IEEE, ISO, ) có thể nối tới nhiều thiết bị khác Mỗi TBĐK có các thanh ghi riêng để làm việc với CPU Dùng các không gian địa chỉ đặc biệt cho các thanh ghi: cổng vào ra

giao diện TBĐK và TBNV: Giao diện mức rất thấp • Sector = 512bytes = 4096bits • Bộ điều khiển đĩa phải đọc/ghi các bit và nhóm lại thành các sector• HĐH chỉ làm việc với các TBĐK• Thông qua các thanh ghi điều khiển của thiết bị Các câu lệnh và tham số sẽ được đưa vào các thanh ghi điều khiển Khi 1 lệnh được bộ điềukhiển chấp nhận, CPU sẽ để cho bộ điều khiển hoạt động một mình và nó quay sanglàm công việc khác Khi lệnh thực hiện xong, bộ điều khiển sẽ báo cho CPU bằng tín hiệu ngắt CPU sẽ lấy KQ và trạng thái thiết bị thông qua các thanh ghi điều khiển

1.3 Trình điều khiển thiết bị.

Là đoạn mã trong nhân của hệ thống cho phép tương tác trực tiếp với phần cứng thiết bị Trình điều khiển thiết bị (hay còn gọi là Driver) là một phần mềm đặcbiệt được viết để cho phép hệ điều hành tương tác với các thiết bị phần cứng như bàn phím, chuột, ổ đĩa cứng, card mạng, card âm thanh, và nhiều loại thiết bị khác.Các trình điều khiển này được thiết kế để cung cấp một giao diện trung gian giữa phần cứng và hệ điều hành, cho phép hệ điều hành giao tiếp với thiết bị và điều khiển nó một cách hiệu quả Cụ thể, khi một ứng dụng yêu cầu sử dụng một thiết bị,hệ điều hành sẽ gọi đến trình điều khiển của thiết bị tương ứng để thực hiện các thao tác trên thiết bị.

Trình điều khiển thiết bị được viết bằng ngôn ngữ lập trình C hoặc C++, và được tích hợp vào hệ điều hành Windows dưới dạng file thực thi có đuôi sys Các trình điều khiển này thường được cài đặt kèm với hệ điều hành, tuy nhiên, khi cập nhật hệ điều hành hoặc thêm một thiết bị mới, người dùng có thể cần phải cài đặt thêm trình điều khiển cho thiết bị đó.

Trình điều khiển thiết bị cung cấp cho hệ điều hành các hàm API (Application Programming Interface) để truy xuất đến các chức năng của thiết bị, như đọc/ghi dữliệu, truyền/nhận tín hiệu, cài đặt cấu hình, kiểm tra trạng thái, và các thao tác khác Hơn nữa, các trình điều khiển này còn cung cấp các thông số và tùy chọn cấu hình để người dùng có thể điều chỉnh cách thiết bị hoạt động phù hợp với nhu cầu sử dụng của mình Tóm lại, trình điều khiển thiết bị là một phần quan trọng của hệ thống quản lý vào ra trong hệ điều hành Windows, đóng vai trò quan trọng trong việc đảm bảo tương tác hiệu quả giữa phần cứng và hệ điều hành, từ đó đáp ứng nhu cầu sử dụng của người dùng một cách tốt nhất Cung cấp 1giao diện chuẩn cho các Tbnv khác nhau Các device driver thường được chia làm 2 mức, Mức cao được

Trang 6

truy nhập qua các lời gọi hệ thống ,cài đặt tập lời gọi chuẩn như open(), close(), read(), write() Là giao diện của nhân HĐH với trình điều khiển Luồng mức cao khởi động thiết bị thực hiện vào/ra và sau đó đặt luồng điều khiển tạm nghỉ Mức thấp: Được thực hiện như 1 thủ tục ngắt Đọc dữ liệu đầu vào, hoặc đưa khối dữ liệutiếp theo ra ngoài Đánh thức luồng tạm nghỉ mức trên khi vào/ra kết thúc

Để tích hợp với trình quản lý I/O và các thành phần hệ thống I/O khác, trình điều khiển thiết bị phải tuân thủ các nguyên tắc triển khai dành riêng cho loại thiết bị mà nó quản lý và vai trò của nó trong việc quản lý thiết bị Trong phần này, chúng ta sẽ xem xét các loại trình điều khiển thiết bị mà Windows hỗ trợ cũng như cấu trúc bên trong của trình điều khiển thiết bị.

1.3.1 Các loại trình điều khiển thiết bị.

Windows hỗ trợ nhiều loại trình điều khiển thiết bị và môi trường lập trình.zNgay cả trong một loại trình điều khiển thiết bị, môi trường lập trình có thể khác nhau, tùy thuộc vào loại thiết bị cụ thể mà trình điều khiển dành cho.zPhân loại rộng nhất của trình điều khiển là liệu đó là trình điều khiển chế độ người dùng hay chế độ nhân.zWindows hỗ trợ một số loại trình điều khiển chế độ người dùng:

Trình điều khiển máy inzcủa hệ thống con Windowszdịch các yêu cầu đồ họa độc lập với thiết bị thành các lệnh dành riêng cho máy in.zSau đó, các lệnh này thường được chuyển tiếp tới trình điều khiển cổng chế độ nhân chẳng hạn như trình điều khiển cổng máy in bus nối tiếp vạn năng (USB) (Usbprint.sys).

Trình điều khiển Khung Trình điều khiển Chế độ Người dùng (UMDF)là trình điều khiển thiết bị phần cứng chạy ở chế độ người

dùng.zChúng giao tiếp với thư viện hỗ trợ UMDF chế độ nhân thôngqua ALPC.zXem phần Khung Trình điều khiển Chế độ Người dùng (UMDF) ở phần sau của chương này để biết thêm thông tin.Trong chương này, trọng tâm là trình điều khiển thiết bị kernel-mode.zCó nhiều loại kernel-mode driver, có thể chia thành các loại cơ bản sau:

Trình điều khiển hệ thống tệpzchấp nhận các yêu cầu I/O đối với

các tệp và đáp ứng các yêu cầu bằng cách đưa ra các yêu cầu của riêng chúng, rõ ràng hơn, cho các trình điều khiển thiết bị mạng hoặc bộ nhớ chung.

Trình điều khiển Plug and Playzhoạt động với phần cứng và tích hợpvới trình quản lý nguồn và trình quản lý PnP của Windows.zChúng

Trang 7

bao gồm trình điều khiển cho thiết bị lưu trữ dung lượng lớn, bộ điều hợp video, thiết bị đầu vào và bộ điều hợp mạng.

Trình điều khiển Non-Plug and Playz, cũng bao gồmzcác phần mở rộng kernelz, là các trình điều khiển hoặc mô-đun mở rộng chức năng củahệ thống.zChúng thường không tích hợp với PnP hoặc trình quản lý năng lượng vì chúng thường không quản lý một phần cứng thực tế.zCác ví dụ bao gồm API mạng và trình điều khiển giao thức.zTrình điều khiển của Process Monitor.

Trong danh mục trình điều khiển chế độ nhân có các phân loại khác dựa trên mô hình trình điều khiển mà trình điều khiển tuân thủ và vai trò của trình điều khiển trong việc phục vụ các yêu cầu thiết bị.

1.3.2 Cấu trúc của một trình điều khiển.

Hệ thống I/O thúc đẩy việc thực thi các trình điều khiển thiết bị.zTrình điều khiển thiết bị bao gồm một tập hợp các thường trình được gọi để xử lý các giai đoạn khác nhau của yêu cầu I/O.zHình 2zminh họa các thói quen chức năng trình điều khiển chính.

Hình 2: Quy trình trình điều khiển thiết bị chính

Quy trình khởi tạo là quá trình mà khi một thiết bị được cắm vào máy tính, hệ thống sẽ xác định loại thiết bị và tải trình điều khiển phù hợp Quá trình này được gọi là Plug and Play (PnP) và nó bao gồm các giai đoạn như tìm kiếm trình điều khiển, tải và cài đặt trình điều khiển

Trang 8

Quy trình bổ sung thiết bị là quá trình mà khi một thiết bị mới đượccắm vào máy tính, hệ thống sẽ tạo ra các tài nguyên cho thiết bị đó, bao gồm các địa chỉ bộ nhớ, địa chỉ I/O và IRQ Một tập hợp cácquy trình điều phối được sử dụng để quản lý các yêu cầu I/O từ cácứng dụng và chuyển chúng đến các trình điều khiển thiết bị tương ứng Quy trình bắt đầu I/O là quá trình mà khi một ứng dụng yêu cầu thực hiện một hoạt động I/O, hệ thống sẽ khởi tạo một yêu cầuI/O và gửi nó đến trình điều khiển thiết bị tương ứng Một quy trình dịch vụ ngắt (ISR) được sử dụng để xử lý các tín hiệu ngắt từ thiết bị Khi thiết bị cần truyền tải thông tin đến hệ thống, nó sẽ gửi mộttín hiệu ngắt đến ISR và ISR sẽ xử lý tín hiệu ngắt này Quy trình DPC phục vụ được sử dụng để xử lý các yêu cầu I/O trong nền, mà không ảnh hưởng đến hiệu suất của hệ thống Một hoặc nhiều quy trình hoàn thành I/O là các quy trình được sử dụng để xử lý các yêucầu I/O đã được hoàn thành Một quy trình hủy I/O được sử dụng đểhủy các yêu cầu I/O đang chờ hoặc đang được thực hiện Các thường trình điều phối nhanh được sử dụng để xử lý các yêu cầu I/O đơn giản và nhanh hóng Các trình điều khiển sử dụng trình quản lý bộ đệm trong Windows để quản lý các bộ đệm I/O Một thóiquen dỡ tải được sử dụng để giải phóng bộ nhớ và tài nguyên khi một thiết bị bị gỡ bỏ khỏi hệ thống.

1.3.3 Đối tượng Trình điều khiển và Đối tượng Thiết bị.

Khi một luồng mở một điều khiển cho một đối tượng tệp (đượcmô tả trong phầnzXử lý I/Ozở phần sau của chương này), trình quảnlý I/O phải xác định từ tên của đối tượng tệp trình điều khiển (hoặc các trình điều khiển) nào nó sẽ gọi để xử lý yêu cầu zHơn nữa, trình quản lý I/O phải có khả năng định vị thông tin này vào lần tới khi một luồng sử dụng cùng một tệp xử lý.zCác đối tượng hệ thống sau đáp ứng nhu cầu này:

Mộtzđối tượng trình điều khiểnzđại diện cho một trình điều khiển riêng lẻ trong hệ thống.zTrình quản lý I/O lấy địa chỉ của từng quy trình điều phối của trình điều khiển (điểm vào) từ đối tượng trình điều khiển.

Mộtzđối tượng thiết bịzđại diện cho một thiết bị vật lý hoặc logic trên hệ thống và mô tả các đặc điểm của nó, chẳng hạn như sự liên kết mà nó yêu cầu đối với bộ đệm và vị trí của hàng đợi thiết bị của nó để chứa các IRP đến.

Trang 9

Trình quản lý I/O tạo một đối tượng trình điều khiển khi trình điều khiển được tải vào hệ thống, sau đó nó gọi thủ tục khởi tạo trình điều khiển (ví dụ:zDriverEntryz), sẽ điền vào các thuộc tính đối tượng bằng các điểm nhập của trình điều khiển.

Sau khi tải, trình điều khiển có thể tạo các đối tượng thiết bị để đạidiện cho thiết bị hoặc thậm chí là giao diện cho trình điều khiển bất kỳ lúc nào bằng cách

gọizIoCreateDevicezhoặczIoCreateDeviceSecurez.zTuy nhiên, hầu hết các trình điều khiển Plug and Play tạo thiết bị với thói quen thêm thiết bị khi trình quản lý PnP thông báo cho họ về sự hiện diện của một thiết bị để họ quản lý.zMặt khác, trình điều khiển Non-Plug and Play thường tạo các đối tượng thiết bị khi trình quản lý I/O gọi quy trình khởi tạo của chúng.zTrình quản lý I/O hủy tải trình điều khiển khi đối tượng thiết bị cuối cùng của nó đã bị xóa và không còn tham chiếu đến trình điều khiển.

Khi trình điều khiển tạo một đối tượng thiết bị, trình điều khiển có thể tùy chọn gán tên cho thiết bị.zTên đặt đối tượng thiết bị trong không gian tên trình quản lý đối tượng và trình điều khiển có thể xác định tên rõ ràng hoặc để trình quản lý I/O tự động tạo tên.Theoquy ước, các đối tượng thiết bị được đặt trong thư mục \Device trong không gian tên, không thể truy cập được bởi các ứng dụng sử dụng Windows API.

1.4 Chu kỳ một yêu cầu vào ra.

Trong hệ điều hành Windows, chu kỳ của một yêu cầu vào/ra (I/O request) bao gồm các bước sau:

Tạo yêu cầu vào/ra (I/O request): Ứng dụng gửi yêu cầu vào/ra tới hệ thống thông qua các API của hệ thống (ví dụ: CreateFile, ReadFile, WriteFile, ).

Xử lý yêu cầu vào/ra bởi trình quản lý I/O (I/O Manager): Khi yêu cầu vào/ra được gửi tới hệ thống, trình quản lý I/O xác định trình điều khiển và thiết bị tương ứng với yêu cầu và chuyển yêu cầu đến trình điều khiển của thiết bị.

Xử lý yêu cầu vào/ra bởi trình điều khiển thiết bị (Device Driver): Trình điều khiển thiết bị xử lý yêu cầu vào/ra bằng cách gửi các yêu cầu tới thiết bị phần cứng hoặc xử lý các yêu cầu bằng phần mềm (ví dụ: đọc dữ liệu từ bộ đệm, ghi dữ liệu vào bộ đệm, ).

Trang 10

Hoàn thành yêu cầu vào/ra (I/O Completion): Sau khi yêu cầu vào/ra được xử lý bởi trình điều khiển thiết bị, nó sẽ thông báo cho trình quản lý I/O (I/O Manager) về kết quả của yêu cầu Sau đó, trình quản lý I/O sẽ thông báo cho ứng dụng về kết quả của yêu cầu vào/ra thông qua các API tương ứng (ví dụ:

GetOverlappedResult, ReadFile, WriteFile, ).

Chu kỳ của một yêu cầu vào/ra có thể là đồng bộ hoặc bất đồng bộ Trong yêu cầu đồng bộ, ứng dụng sẽ bị chặn và đợi kết quả củayêu cầu trước khi tiếp tục thực hiện các tác vụ tiếp theo Trong yêucầu bất đồng bộ, ứng dụng có thể tiếp tục thực hiện các tác vụ khác trong khi đợi kết quả của yêu cầu vào/ra.

Hình 3: chu kỳ một yêu cầu vào ra.

1.5 Giao tiếp thiết bị ngoại vi với hệ điều hành.

Sau khi hệ điều hành(HDH) gửi yêu cầu ra thiết bị ngoại vi(TBNV), HĐH cần phải biết TBNV hoàn thành yêu cầu vào ra TBNV gặp lỗi Có thể thực hiện theo 2 p/pháp Ngắt và thăm dò.

Trang 11

Ngắt (interrupt): Đây là phương pháp được ưu tiên sử dụng để giao tiếp với các thiết bị ngoại vi Khi một thiết bị ngoại vi cần truyền dữ liệu tới hệ điều hành, nó sẽ tạo ra một ngắt để thông báo cho hệ điều hành biết Hệ điều hành sẽ ngắt tạm thời việc đang thực hiện để xử lý ngắt này Sau khi xử lý xong ngắt, hệ điều hành sẽ trả lại quyền điều khiển cho tiến trình hoặc luồng đang chạy trước đó.

Thăm dò (polling): Phương pháp này sử dụng việc kiểm tra trạng thái của thiết bị ngoại vi liên tục để xem nó có sẵn dữ liệu hay không Khi thiết bị ngoại vi đã sẵn sàng truyền dữ liệu, hệ điều hành sẽ đọc dữ liệu từ thiết bị này Tuy nhiên, phương pháp này không hiệu quả và tốn nhiều tài nguyên hơn so với phương pháp sử dụng ngắt, vì nó yêu cầu hệ điều hành phải kiểm tra trạng thái của thiết bị liên tục mà không biết khi nào thiết bị này sẽ sẵn sàng.

Tuy nhiên, phương pháp sử dụng ngắt không phải lúc nào cũng hiệu quả hơn so với phương pháp thăm dò Nếu thiết bị ngoại vi có tốc độ truyền dữ liệu chậm hoặc ít sử dụng, phương pháp thăm dò có thể hiệu quả hơn do không tốn nhiều tài nguyên của hệ thống Ngoài ra, một số thiết bị ngoại vi không hỗ trợ phương pháp sử dụng ngắt, và do đó phương pháp thăm dò là cách duy nhất để giao tiếp với chúng.

Các thanh ghi thiết bị xuất hiện với CPU dưới dạng các vị trí bộ nhớtại một địa chỉ vật lý cụ thể.zKhi CPU ghi vào các vị trí này, bộ điều khiển PCI tích hợp nhận ra rằng các truy cập này phải được định tuyến đến thiết bị thích hợp Điều này có nghĩa là một phần bộ nhớvật lý trên hệ thống được dành riêng cho các tương tác với thiết bị.zChúng tôi gọi đây làzI/O ánh xạ bộ nhớz.zPhần bộ nhớ dành riêngcho các tương tác này được kiểm soát bởizThanh ghi Địa chỉ Cơ sởz(BAR).zCác thanh ghi này được cấu hình trong quá trình khởi động theo giao thức PCI.

Ngoài ra, CPU có thể truy cập các thiết bị thông qua các hướng dẫn đặc biệt.znền tảng x86 chỉ định một số hướng dẫn vào/ra nhất định được sử dụng để truy cập thiết bị.zMỗi lệnh cần chỉ định thiết bị đích - cổng I/O - cũng như một số giá trị sẽ được chuyển đến thiết bị.zMô hình này được gọi làzMô hình Cổng I/Oz Đường dẫn từ thiết bị đến tổ hợp CPU có thể có hai tuyến đường.zCác thiết bị có thể tạo ra các ngắt cho CPU.zCPU có thể thăm dò thiết bị bằng cách đọc các thanh ghi trạng thái của chúng để xác định xem

Trang 12

chúng có một số phản hồi/dữ liệu cho CPU hay không Với các ngắt, nhược điểm là các trình xử lý ngắt.zCó các bước thực tế liên quan đến trình xử lý ngắt tiêu tốn chu kỳ CPU.zCó thể có cài đặt/đặt lại mặt nạ ngắt cũng như các tác động gián tiếp khác do ô nhiễm bộ đệm Điều đó đang được nói, các ngắt có thể được kích hoạt bởi thiết bị ngay khi thiết bị có thông tin cho CPU Để thăm dò ý kiến, HĐH có cơ hội chọn thời điểm sẽ thăm dò ý kiến Hệ điều hành có thể chọn thăm dò ý kiến vào những thời điểm ô nhiễm bộ đệm sẽ ở mức thấp nhất Tuy nhiên, chiến lược này có thể gây ra sự chậm trễ trong cách quan sát hoặc xử lý sự kiện, vì việc xử lý diễn ra tại một thời điểm nào đó sau khi sự kiện được thiết bị tạo ra Ngoài ra, quá nhiều cuộc bỏ phiếu có thể giới thiệu chi phí CPU có thể không hợp lý.

2 Ngắt và xử lý ngắt.

2.1 Khái niệm ngắt.

Trong hệ điều hành Windows, ngắt (interrupt) được sử dụng đểquản lý các hoạt động vào/ra (I/O operations) Khi một thiết bị ngoại vi được kết nối với hệ thống, nó có thể yêu cầu các dịch vụ I/O bằng cách gửi các tín hiệu ngắt đến bộ điều khiển thiết bị tương ứng Bộ điều khiển này sẽ sử dụng các tín hiệu ngắt để giao tiếp với hệ thống và yêu cầu các dịch vụ I/O Khi một tín hiệu ngắt được nhận, hệ thống sẽ tạm dừng việc thực hiện các tác vụ hiện tại và chuyển tới xử lý các yêu cầu I/O được yêu cầu bởi thiết bị ngoại vi Hệ thống sử dụng một hệ thống ngắt ưu tiên để xác định độ ưu tiên của các yêu cầu I/O được yêu cầu bởi các thiết bị ngoại vi khác nhau Các yêu cầu I/O của các thiết bị ngoại vi ưu tiên cao hơn sẽ được xử lý trước các yêu cầu I/O của các thiết bị ngoại vi ưutiên thấp hơn Trong quá trình xử lý yêu cầu I/O, hệ thống sẽ tương tác với bộ điều khiển thiết bị và truy cập dữ liệu trên thiết bị ngoại vi Sau khi các yêu cầu I/O được xử lý hoàn tất, hệ thống sẽ trả lại việc thực hiện các tác vụ hiện tại và tiếp tục thực hiện các tác vụ khác.

Tuy nhiên, cũng có một số hạn chế khi sử dụng ngắt trong việc quản lý I/O, chẳng hạn như tốc độ xử lý chậm hơn so với thực hiện thăm dò (polling) hoặc độ trễ thêm khi xử lý các yêu cầu I/O Ngoàira, sử dụng ngắt cũng yêu cầu phải có cơ chế đồng bộ hóa để đảmbảo tính nhất quán của dữ liệu truyền tải giữa thiết bị ngoại vi và hệ thống.

Trang 13

Ngắt là hiện tượng dừng đột xuất chương trình để chuyển sang thực hiện chương trình khác ứng với một sự kiện nào đó xảy ra • Ngắt >< chương trình con !?

2.2 Xử lý ngắt.

Quá trình xử lý ngắt trong hệ điều hành Windows bao gồm các bước sau: Ghi nhận đặc trưng sự kiện gây ngắt vào ô nhớ cố định: Khi một thiết bị ngoại vi gây ra sự kiện cần được xử lý, nó sẽ gửi một tín hiệu ngắt đến bộ điều khiển ngắt của hệ thống Bộ điều khiển ngắt sẽ lưu trữ thông tin về sự kiện gây ngắt vào một ô nhớ cố định Ghi nhận trạng thái của tiến trình bị ngắt: Tiến trình đang thực thi sẽ bị ngắt bởi sự kiện này Trước khi bắt đầu xử lý ngắt, trạng thái của tiến trình đó cần phải được ghi nhận để sau này có thể khôi phục lại trạng thái đó Chuyển địa chỉ của chương trình xửlý ngắt vào thanh ghi con trỏ lệnh: Chương trình xử lý ngắt được gọi để xử lý sự kiện ngắt Để thực hiện điều này, địa chỉ của chương trình xử lý ngắt cần được chuyển vào thanh ghi con trỏ lệnh Sử dụng bảng vector ngắt: Hệ điều hành Windows sử dụng bảng vector ngắt để liên kết các sự kiện ngắt với chương trình xử lý ngắt tương ứng Bảng vector ngắt lưu trữ địa chỉ của các chươngtrình xử lý ngắt Thực hiện chương trình xử lý ngắt: Chương trình xử lý ngắt được gọi để xử lý sự kiện ngắt Sau khi xử lý sự kiện ngắt, nó sẽ trả lại quyền điều khiển cho tiến trình bị ngắt Khôi phục lại tiến trình bị ngắt: Trạng thái của tiến trình bị ngắt cần được khôi phục lại để nó có thể tiếp tục thực hiện công việc mà nó đang làm trước khi bị ngắt Đó là quy trình xử lý ngắt trong hệ điềuhành Windows Nó giúp hệ thống quản lý các sự kiện ngắt và xử lý chúng một cách hiệu quả để đảm bảo tính ổn định và đáng tin cậy của hệ thống.Trình xử lý ngắt xác định nguyên nhân của ngắt, thựchiện xử lý cần thiết, thực hiện khôi phục trạng thái và thực hiện quay lại lệnhzngắtzđể trả lại quyền điều khiển cho CPU.z(Trình xử lý ngắtzsẽ xóazngắt bằng cách bảo dưỡng thiết bị.)

(Lưu ý rằng trạng thái được khôi phục không cần phải giống trạng thái đã được lưu khi ngắt.)

Trang 14

Hình 4 - Chu kỳ I/O điều khiển ngắt.

Mô tả ở trên là đủ cho I/O điều khiển ngắt đơn giản, nhưng có ba nhu cầu trong điện toán hiện đại làm phức tạp bức tranh: Sự cần thiết phải hoãn xử lý ngắt trong quá trình xử lý quan trọng Nhu cầu xác định trình xử lý ngắtznàozsẽ gọi mà không cần phải thăm dò tất cả các thiết bị để xem thiết bị nào cần chú ý và Cần có các ngắt đa cấp để hệ thống có thể phân biệt giữa các ngắt có mức độ ưu tiên cao và thấp để có phản ứng phù hợp Những vấn đề này được xử lý trong kiến trúc máy tính hiện đại với phần cứng bộzđiều khiển ngắtz.

Hầu hết các CPU hiện nay đều có hai dòng yêu cầu ngắt: Một dòngkhôngzche đượczđối với các tình trạng lỗi nghiêm trọng và một dòng cózthể che đượczmà CPU có thể tạm thời bỏ qua trong quá trình xử lý quan trọng Cơ chế ngắt chấp nhận mộtzđịa chỉ zthường ,

Trang 15

là một trong một tập hợp nhỏ các số để bù vào một bảng được gọi làzvectơ ngắt Bảng này (thường nằm ở địa chỉ vật lý 0?) chứa địa .

chỉ của các thường trình được chuẩn bị để xử lý các ngắt cụ thể Sốlượng trình xử lý ngắt có thể có vẫn vượt quá phạm vi số lượng ngắt đã xác định, do đó, nhiều trình xử lýzngắt có thể được xâu chuỗiz.zThực tế, các địa chỉ được giữ trong các vectơ ngắt là các con trỏ đầu cho danh sách liên kết của các trình xử lý ngắt.Hình 5 cho thấy vector ngắt Intel Pentium.zCác ngắt từ 0 đến 31 là không che được và dành riêng cho các lỗi nghiêm trọng về phần cứng và các lỗi khác.zCác ngắt có thể che dấu, bao gồm các ngắt I/O của thiết bị bình thường bắt đầu ở ngắt 32 Phần cứng ngắt hiện đại cũng hỗ trợzcác mức ưu tiên ngắtz, cho phép hệ thống chỉ che dấu các ngắt có mức ưu tiên thấp hơn trong khi phục vụ ngắt có mức ưu tiên cao hoặc ngược lại để cho phép tín hiệu có mức ưu tiên cao làm gián đoạn quá trình xử lý của mức ưu tiên thấp.

Hình 5 - Bảng vector sự kiện bộ xử lý Intel Pentium.

Trang 16

Tại thời điểm khởi động, hệ thống sẽ xác định thiết bị nào có mặt và tải các địa chỉ trình xử lý thích hợp vào bảng ngắt Trong quá trình hoạt động, các thiết bị báo lỗi hoặc hoàn thành các lệnh thông qua các ngắt Các ngoại lệ, chẳng hạn như chia cho 0, truy cập bộ nhớ không hợp lệ hoặc cố gắng truy cập các hướng dẫn chếđộ kernel có thể được báo hiệu thông qua các ngắt Việc cắt thời gian và chuyển đổi ngữ cảnh cũng có thể được thực hiện bằng cơ chế ngắt Bộ lập lịch đặt bộ hẹn giờ phần cứng trước khi chuyển quyền kiểm soát sang quy trình người dùng Khi bộ hẹn giờ tăng dòng yêu cầu ngắt, CPU sẽ thực hiện lưu trạng thái và chuyển quyền điều khiển sang bộ xử lý ngắt thích hợp, bộ xử lý này sẽ chạy bộ lập lịch Bộ lập lịch thực hiện khôi phục trạng thái của mộtquy trìnhzkhácztrước khi đặt lại bộ hẹn giờ và đưa ra lệnh quay lại từ bị gián đoạn Một ví dụ tương tự liên quan đến hệ thống phân trang cho bộ nhớ ảo - Lỗi trang gây ra gián đoạn, do đó đưa ra yêucầu I/O và chuyển đổi ngữ cảnh như mô tả ở trên, di chuyển quy trình bị gián đoạn vào hàng đợi và chọn một quy trình khác để chạy zKhi yêu cầu I/O đã hoàn thành (tức là khi trang được yêu cầu đã được tải vào bộ nhớ vật lý), thì thiết bị sẽ ngắt và trình xử lý ngắt sẽ chuyển quy trình từ hàng đợi sang hàng đợi sẵn sàng, (hoặc tùy thuộc vào thuật toán lập lịch trình và chính sách, có thể tiếp tục và ngữ cảnh chuyển nó trở lại CPU )

Các cuộc gọi hệ thống được thực hiện thông quazcác ngắt phần

mềm,zcòn gọi là bẫy.Khi một chương trình ( thư viện ) cần công việc

được thực hiện ở chế độ nhân, nó sẽ đặt thông tin lệnh và có thể làđịa chỉ dữ liệu trong một số thanh ghi nhất định, sau đó phát sinh một ngắt phần mềm.z(Ví dụ: 21 hex trong DOS.) Hệ thống thực hiện lưu trạng thái và sau đó gọi trình xử lý ngắt thích hợp để xử lýyêu cầu ở chế độ kernel.zCác ngắt phần mềm thường có mức độ ưutiên thấp, vì chúng không khẩn cấp bằng các thiết bị có không gian đệm hạn chế Các ngắt cũng được sử dụng để kiểm soát các hoạt động của kernel và lên lịch các hoạt động để có hiệu suất tối ưu.zVí dụ: việc hoàn thành thao tác đọc đĩa bao gồmzhaizlần ngắt: Ngắt ưu tiên cao xác nhận hoàn thành thiết bị và đưa ra yêu cầu đĩa tiếp theo để phần cứng không ở trạng thái chờ Ngắt có mức ưutiên thấp hơn chuyển dữ liệu từ không gian bộ nhớ nhân sang không gian người dùng, sau đó chuyển quy trình từ hàng đợi sang hàng đợi sẵn sàng Hệ điều hành Solaris sử dụng nhân đa luồng vàcác luồng ưu tiên để gán các luồng khác nhau cho các trình xử lý ngắt khác nhau.zĐiều này cho phép xử lý "đồng thời" nhiều ngắt và

Trang 17

đảm bảo rằng các ngắt có mức độ ưu tiên cao sẽ được ưu tiên hơn các ngắt có mức độ ưu tiên thấp và các quy trình của người dùng.

III dịch vụ vào ra của hệthống.

1 Vùng đệm.

1.1 Khái niệm.

Vùng đệm (buffer) là một khu vực lưu trữ dữ liệu tạm thời trong bộ nhớ của hệ thống Trong hệ điều hành Windows, vùng đệm thường được sử dụng để lưu trữ các dữ liệu liên quan đến các hoạt động vào/ra, như đọc và ghi tập tin, gửi và nhận dữ liệu qua mạng, và các hoạt động tương tự.

Khi một chương trình muốn thực hiện một hoạt động vào/ra, nó thường sẽ truyền dữ liệu đến vùng đệm và chờ đợi cho hoạt động được thực hiện bởi hệ thống Sau khi hoạt động vào/ra kết thúc, chương trình có thể truy cập các dữ liệu đã được xử lý trong vùng đệm.

Vùng đệm thường được sử dụng để giảm thiểu số lần truy cập trực tiếp vào ổ đĩa hoặc mạng, giảm tải cho hệ thống và tăng tốc độ hoạt động của chương trình Tuy nhiên, việc sử dụng vùng đệm cũng có thể dẫn đến một số vấn đề, chẳng hạn như mất dữ liệu do lỗi xảy ra trong quá trình ghi vào vùng đệm Do đó, việc quản lý vùng đệm được thực hiện cẩn thận là rất quan trọng trong các ứngdụng vào/ra của hệ điều hành Windows.

Bộ đệm của I/O được thực hiện vì (ít nhất) 3 lý do chính:

Sự khác biệt về tốc độ giữa hai thiết bị.z(Xem Hình 6 bên dưới.) Mộtthiết bị chậm có thể ghi dữ liệu vào bộ đệm và khi bộ đệm đầy, toàn bộ bộ đệm sẽ được gửi đến thiết bị nhanh cùng một lúc.zĐể thiết bị chậm vẫn có chỗ để ghi trong khi quá trình này đang diễn ra, bộ đệm thứ hai được sử dụng và hai bộ đệm thay phiên nhau khi mỗi bộ đệm trở nên đầy.zĐiều này được gọi làzđệm đôi.( Bộ đệm đôi thường được sử dụng trong đồ họa ( hoạt hình), để một hình ảnh màn hình có thể được tạo trong bộ đệm trong khi bộ đệm

Trang 18

( đã hoàn thành ) khác được hiển thị trên màn hình Điều này ngănngười dùng nhìn thấy bất kỳ hình ảnh màn hình nào chưa hoàn thiện )

Sự khác biệt về kích thước truyền dữ liệu.zBộ đệm được sử dụng đặc biệt trong các hệ thống mạng để chia các thông điệp thành các gói nhỏ hơn để truyền và sau đó để lắp ráp lại ở phía nhận.Để hỗ trợzngữ nghĩa sao chép Ví dụ: khi một ứng dụng đưa ra yêu .

cầu ghi đĩa, dữ liệu sẽ được sao chép từ vùng bộ nhớ của người dùng vào bộ đệm nhân.zGiờ đây, ứng dụng có thể thay đổi bản saodữ liệu của chúng, nhưng dữ liệu cuối cùng được ghi ra đĩa là phiênbản của dữ liệu tại thời điểm yêu cầu ghi được thực hiện.

Hình 6 - Tốc độ truyền thiết bị của Sun Enterprise 6000 ( logarit ).

1.2 Phân loại.

Vùng đệm trong hệ điều hành Windows có thể được phân loại vào các loại sau: Loại 1 gồm Vùng đệm vào là nơi chứa các dữ liệu

Trang 19

FCFS (First-Come, First-Served) là một trong những thuật toán điều phối truy cập đĩa được sử dụng trong hệ điều hành Windows Theo đó, các yêu cầu truy cập đến đĩa được xử lý theo thứ tự đến trước, được gửi đến đĩa trước và được xử lý trước.

Khi một yêu cầu truy cập đến đĩa được gửi đến, hệ điều hành sẽ đưa yêu cầu này vào hàng đợi và xử lý các yêu cầu theo thứ tự củahàng đợi đó Khi một yêu cầu được xử lý xong, yêu cầu tiếp theo trong hàng đợi sẽ được xử lý tiếp theo.

Tuy nhiên, thuật toán FCFS có một số nhược điểm Khi một yêu cầucó thời gian xử lý lâu được đưa vào hàng đợi, các yêu cầu tiếp theocũng phải chờ đợi đến khi yêu cầu đó được hoàn thành, dẫn đến thời gian chờ đợi dài và làm giảm hiệu quả xử lý yêu cầu trên đĩa Ngoài ra, thuật toán FCFS cũng không sử dụng các kỹ thuật tối ưu hóa khác như prefetching, buffering và caching để tăng tốc độ truycập đĩa.

Do nhược điểm này, các thuật toán điều phối truy cập đĩa khác như SSTF, SCAN, C-SCAN, LOOK, C-LOOK được phát triển để giải quyết các vấn đề của thuật toán FCFS và cải thiện hiệu suất xử lý truy cập đĩa.

Phương pháp lập lịchzđơn giản nhất là served) Thuật toán này rất dể lập trình nhưng không cung cấpzđược một dịch vụ tốt Ví dụ : cần phảizđọc các khối theo thứ tự như sau :

FCFS(first-come,first-98, 183, 37, 122, 14, 124, 65, và 67

Giả sử hiện tạizđầu đọc đang ở vị trí 53 Như vậyzđầu đọc lần lượtzđi qua các khối 53, 98, 183, 37, 122, 14, 124, 65, và 67 như hình sau :

Trang 20

Số lượng xi lanh do đầu di chuyển:

= 14)+(124-65)+(67-65)=640

int calculateTotalSeekTime(int *requests, int numRequests, int initialPosition) { int totalSeekTime = 0;

int currentPosition = initialPosition; for (int i = 0; i < numRequests; i++) {

totalSeekTime += abs(requests[i] - currentPosition); currentPosition = requests[i];

}

return totalSeekTime;}

int main() { int numRequests;

Trang 21

int totalSeekTime = calculateTotalSeekTime(requests, numRequests, initialPosition); printf("Tong do dai chuyen dau doc/ghi: %d\n", totalSeekTime);

free(requests); return 0;}KẾT QUẢ:

Trang 22

2.3 Thuật toán SSTF.

Định nghĩa SSTF(Shortest Seek Time First)

Dạng đầy đủ của SSTF là Shortest Seek Time First SSTF là một thuật toán lập lịch lưu trữ thứ cấp xác định chuyển động của đầu và cánh tay của đĩa trong việc phục vụ các yêu cầu đọc và ghi SSTF hoạt động như một thuật toán lập lịch đĩa và nó là một cải tiến dựa trên thuật toánzFCFS.

Nó làm giảm tổng thời gian tìm kiếm so với FCFS.

Thuật toán lập lịch trên disk SSTF (Shortest Seek Time First) hoạt động dựa trên việc lựa chọn truy cập đến các vị trí trên đĩa cứng sao cho thời gian di chuyển đầu đọc/ghi từ vị trí hiện tại đến vị trí cần truy cập là ngắn nhất.

Cách hoạt động của thuật toán SSTF như sau:

Bước 1: Đầu tiên, thiết lập vị trí hiện tại là vị trí ban đầu của đầu đọc/ghi.

Bước 2: Tìm và chọn vị trí trên đĩa gần nhất với vị trí hiện tại Điều này được thực hiện bằng cách so sánh khoảng cách giữa các vị trí trên đĩa và vị trí hiện tại, và chọn vị trí có khoảng cách ngắn nhất.

Ngày đăng: 29/05/2024, 17:54

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

TÀI LIỆU LIÊN QUAN

w