Tải bản đầy đủ (.pdf) (11 trang)

hk162 lab13 device driver 2

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (337.98 KB, 11 trang )

Đại học Bách Khoa TP. HCM, Khoa KH & KTMT

Bài thực hành số 13
Môn: Hệ điều hành

Phương-Duy Nguyễn
Email:
Ngày 24 tháng 11 năm 2016

1


Mục lục
1 Giới thiêu
2 Cơ sở lý thuyết
2.1 I/O subsystem . . . . . . .
2.2 I/O hardware . . . . . . . .
2.3 Cấu trúc bus trong PC . . .
2.4 Các ký thuật thực hiện I/O
3 Nội
3.1
3.2
3.3

3

.
.
.
.


4
4
4
4
4

dung thực hành
Xem xét cầu trúc trong PC . . . . . . . . . . . . . . . . . . . . . . . . . .
Xem xét I/O bus tiêu biểu USB . . . . . . . . . . . . . . . . . . . . . . . .
Xem xét I/O device tiêu biểu pcnet32 . . . . . . . . . . . . . . . . . . . .

7
7
8
9

4 Bài tập

.
.
.
.

.
.
.
.

.
.

.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.

.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.

.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.

.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

11

2


1 Giới thiêu
Mục tiêu Bài thực hành giúp sinh viên làm rõ các khái niệm lý thuyết về thành phần

điểu khiển thiết bị I/O
Nội dung Sinh viên được thí nghiệm các nội dung như sau
• Giới thiệu về tổ chức thiết bị trong hệ thống minh họa qua ví dụ PC.
• Xem xét cấu trúc driver quản lý bus trên hệ thống.
• Xem xét cấu trúc driver quản lý thiết bị
Kêt quả đạt được

Sau khi thực hiện thí nghiệm, sinh viên có thể

• Hiểu được cách HĐH quản lý hệ thống các thiết bị I/O;
• Vận dung để định nghĩa các tác vụ cho một thiết bị và I/O subsystem
• Thiết kế và hiện thực giao tiếp cho một chương trình quản lý thiết bị.

3


2 Cơ sở lý thuyết
2.1 I/O subsystem
Các thiết bị I/O khác biệt về chức năng tốc độ... nên cần các phương thức quản lý và
điểu khiển khác nhau. Các I/O subsystem được thiết kế hỗ trợ riêng cho từng nhóm
thiết bị với các đặc thù riêng. Triết lý thiết kế: (i) phải hướng đến việc hỗ trợ cho một
phạm vi thiết bị lớn bao gồm cả các thiết bị mới dùng cho hệ thống hiện tại (ii) phat
triển thiết kế cho thiết bị hoàn toàn mới mà giao diện sử dụng hiện tại không phù hợp
để ưng dụng.
Để đảm bảo triết lý thuyết kế, thì các trình điểu khiển thiết bị (device driver) cung cấp
cho I/O subsystem một giao diện thuần nhất để truy cập các thiết bị.

2.2 I/O hardware
Phần cứng kết nối


: kết nối giữa hệ thống máy tính và các thiết bị I/O có hai dạng:

• Port
• Bus
Phần cứng điều khiển : là thiết bị phần cứng giao tiếp giữa hệ thống máy tính và
phần cứng thiết bị.
• Controller: SCSI host adapter, memory controller..
Phần cứng giao tiếp :
• I/O port: dùng lệnh I/O để tác động lên các thanh ghi dữ liệu/trạng thái/lệnh
của controller.
• Memory-mapped I/O

2.3 Cấu trúc bus trong PC
2.4 Các ký thuật thực hiện I/O
Phần cứng kết nối

: kết nối giữa hệ thống máy tính và các thiết bị I/O có hai dạng:

• Polling (programmed I/O): kiểm tra trạng thái thiết bi khi muốn thực hiện I/O.
Tiêu tốn vòng lặp để kiểm tr trạng thái (busy-wait)
• Interrupt-driver I/O: CPU có ngõ Interrupt request (IR), khi có ngắt xảy ra CPU
chuyển quyền điều khiển cho chương trình sử dụng ngăt (interrupt handler). Hệ
thống có một bảng vector ngắt chứa địa chỉ các trình phục vụ ngắt (interrupt
handler)

4


CPU


Graphics
card slot

Clock
Generator

Front-side
bus
Chipset

High-speed
graphics bus
LAGP or PCI
Expressf

Memory Slots

Northbridge

Memory
bus

(memory
controller hub)

Internal
Bus

Southbridge
PCI

Bus

(I/O controller
hub)
IDE
SATA
USB
Ethernet
Audio Codec
CMOS Memory

Cables and
ports leading
off-board

PCI Slots
LPC
Bus

Flash ROM
(BIOS)

Super I/O
Serial Port
Parallel Port
Floppy Disk
Keyboard
Mouse
5


Hình 2.1: Đơn vị lưu trữ vật lý parition và block


Hình 2.2: Đơn vị lưu trữ vật lý parition và block

6


3 Nội dung thực hành
3.1 Xem xét cầu trúc trong PC
để tiến hành cấu trúc, thiết bị cần cài đặt các công trụ hỗ trợ truy vấn thông tin cài đặt
do hệ điều hành quản lý. Thông tin này được hệ điều hành cập nhật khi có một thiết bị
được gắn vào trong hệ thống (hotplug) hoặc được hệ thống detect (built-in) thông qua
hoạt động probe, đây là thao tác (operation) do nhà sản xuất (vendor chuẩn bị).
$ sudo lshw
Các thông tin thiết bị được sắp xếp theo bus như trong cấu trúc đề cập ở lý thuyết, cụ
thể:
|− c o r e : motherboard I n t e l 440BX r e f e r e n c e
|− f i r m w a r e : Phoenix BIOS
|−cpu : I n t e l (R) Core (TM) i 3
|− c a c h e : L1 16KB
|−memory : 512MiB
|−bank0 : s i z e 512MiB width : 3 2 b i t
|−bank : 1 [ empty ]
|− p c i : width 32− b i t c l o c k : 3 3MHz
|− p c i 0 : c l o c k : 6 6 Mhz p c i bus_master
|− i s a : c l o c k : 3 3 Mhz i s a bus_master
|− i d e : c l o c k 33Mhz d r i v e r=a t a _ p i i x l a t e n c y =64
|− b r i d g e : UNCLAIMED
|− g e n e r i c : width : 6 4 b i t c l o c k : 3 3 Mhz msi msix bus_master

|− d i s p l a y : UNCLAIMED
|− s c s i : UNCLAIMED
|− p c i 1 : width : 3 2 b i t c l o c k 33MHz
|− usb0 : width : 3 2 b i t c l o c k 33MHz d r i v e r=uhci_hcd l a t e n c y =64
|− network : width : 3 2 b i t c l o c k 33MHz d r i v e r=p c n e t 3 2
|− multimedia UNCLAIMED
|− usb1 : width : 3 2 b i t c l o c k 33MHz d r i v e r=e h c i −p c i
|− p c i : 2
|− p c i : 3
| −...
|− s c s i 0 : l o g i c a l n a m e : / dev / sda s i z e : 5 1 2MiB p a r t i t i o n e d : dos
|− volume : e x t 4 l o g i c a l n a m e : / dev / sda1
|− s c s i 1 : DVD−RAM w r i t e r l o g i c a l n a m e / dev /cdrom / dev /dvd . . .
|− r e m o t e a c c e s s
|− network : DISABLE d r i v e r=dummy d r i v e r v e r s i o n =1.0
Trong đó chúng ta có thể thấy một số thông tin về chương trình điều khiển thiết bị
(device driver):
• Nhóm thiết bị bus: pci, uhci, ehci

7


• Nhóm thiêt bị đầu cuối: pcnet32, dummy, atta_piix
Thông tin đầy đủ hơn 260 (loại) thiết bị Linux hỗ trợ được liệt kê ở danh sách tài liệu
tham khảo của kernel Document/devices.txt
1. (char) Memory devices
2. (block) RAM disk
3. (char) Pseudo-TTY masters
4. (block) Floppy disks
5. (char) Pseudo-TTY slaves

6. (block) IDE harddisk/CD-ROM interface
7. ...

3.2 Xem xét I/O bus tiêu biểu USB
gồm uhci, ehci... được tổ chức theo dạng bus. Các thao tác chủ yếu là probe và poll
trên thông tin danh sach ID thiết bị nằm ở hàm polling trong drivers/usb/core/hcd.c
usb_hcd_poll_rh_status() (rh=root hub, hcd=host controller device).
Viêc cài đặt driver khai báo cấu trúc pci_driver chứa danh sách các con trỏ hàm đến
các thao các cơ bản: probe/remove/shutdown

# Trace i n f o from Linux / d r i v e r s / usb / h o s t / e h c i −p c i . c
|− s t r u c t p c i _ d r i v e r e h c i _ p c i _ d r i v e r
Command : modeproble e h c i −hcd
|− . p r o b l e = ehci_pci_probe ( r e c a l l usb_hcd_pci_probe )
|−hcd−>r s r c _ s t a r t=p c i _ r e s o u r c e _ s t a r t
|−hcd−>r s r c _ l e p c _ r e s o u r c e _ l e n
|−hcd−>r e g s=ioremap ( r s r c _ s t a r t , r s r c _ l e n )
|− dev_set_drvdata(&dev−>dev , hcd )
|− for_each_companion ( dev , hcd , ehci_post_add )
/∗ I t e r a t e o v e r PCI d e v i c e s in t h e same s l o t a s pdev and c a l l f n f o r e
/∗ Companion d e v i c e s h o u l d be e i t h e r UHCI , OHCI o r EHCI h o s t ∗/
|− . remove = ehci_pci_remove
|− . shutdown = ush_hcd_pci_shutdown
|− . d r i v e r = usb_hcd_pci_pm_ops #(PM=power management )
| −. suspend = hcd_pci_suspend ,
| −. suspend_noirq = hcd_pci_suspend_noirq ,
| −. resume_noirq = hcd_pci_resume_noirq ,
| −. resume = hcd_pci_resume ,
| −. f r e e z e = check_root_hub_suspended ,
| −. f r e e z e _ n o i r q = check_root_hub_suspended ,

| −. thaw_noirq = NULL,

8


| −. thaw = NULL,
| −. p o w e r o f f = hcd_pci_suspend ,
| −. p o w e r o f f _ n o i r q = hcd_pci_suspend_noirq ,
| −. r e s t o r e _ n o i r q = hcd_pci_resume_noirq ,
| −. r e s t o r e = hcd_pci_restore ,
| −. runtime_suspend = hcd_pci_runtime_suspend ,
| −. runtime_resume = hcd_pci_runtime_resume ,

3.3 Xem xét I/O device tiêu biểu pcnet32
Các thiết bị đàu cuối cùng chia sẻ các thao tác cơ bản probe/remove/shutdown
# Tracing i n f o from Linux / d r i v e r s / n e t / e t h e r n e t /amd/ p c n e t 3 2 . c
s t a t i c s t r u c t pci_driver pcnet32_driver = {
| −. name = DRV_NAME,
| −. probe = pcnet32_probe_pci ,
| −. remove = __devexit_p ( pcnet32_remove_one ) ,
| −. i d _ t a b l e = pcnet32_pci_tbl ,
| −. suspend = pcnet32_pm_suspend ,
| −. resume = pcnet32_pm_resume ,
};
Các thao tác (ops) giao tiếp với các I/O subsystem do driver cung cấp khai báo trong
một cấu trúc net_device_ops. Chi tiết đầy đủ về các operation hỗ trợ bởi hệ thống khai
báo tại include/linux/netdevice.h
# Tracing i n f o from Linux / d r i v e r s / n e t / e t h e r n e t /amd/ p c n e t 3 2 . c
s t a t i c c o n s t s t r u c t net_device_ops pcnet32_netdev_ops = {
| −. ndo_open = pcnet32_open ,

| −. ndo_stop
= pcnet32_close ,
| −. ndo_start_xmit = pcnet32_start_xmit ,
| −. ndo_tx_timeout = pcnet32_tx_timeout ,
| −. ndo_get_stats = pcnet32_get_stats ,
| −. n d o _ s e t _ m u l t i c a s t _ l i s t = p c n e t 3 2 _ s e t _ m u l t i c a s t _ l i s t ,
| −. ndo_do_ioctl = p c n e t 3 2 _ i o c t l ,
| −. ndo_change_mtu = eth_change_mtu ,
| −. ndo_set_mac_address = eth_mac_addr ,
| −. ndo_validate_addr = eth_validate_addr ,
#i f d e f CONFIG_NET_POLL_CONTROLLER
| −. n d o _ p o l l _ c o n t r o l l e r = p c n e t 3 2 _ p o l l _ c o n t r o l l e r ,
#e n d i f
};
Các I/o Subsystem gọi lại các giao tiếp này

9


# Tracing i n f o from n e t / c o r e / n e t p o l l . c
v o i d netpoll_send_skb_on_dev ( s t r u c t n e t p o l l ∗np , s t r u c t sk_buff ∗ skb ,
s t r u c t n e t _ d e v i c e ∗ dev
|− n e t p o l l _ p o l l _ d e v

10


4 Bài tập
Hướng dẫn bài tập Sinh viên thực hiện BT1 và BT2. Đây là các thao tác cơ bản sử
dụng công cụ để trích xuất thông tin quản lý đãi cứng/thư mục/file. BT3 là bài tập mở

rộng thực hiện tracing driver từ vfs subsystem to driver ata_piix
BT1 (3 điểm) Sinh viên thực hiện thao tác xem thông tin tập tin trên bus PC
BT2 (3 điểm) Sinh viên thực hiện thao tác xem thông tin driver bus usb và pcnet32
BT3 (4 điểm) Sinh viên thực hiện thao tác trích xuất thông tin và giao tiếp trên driver
ata_piix
BT4 (Mở rộng) Sinh viên thiết kế một driver cho một device mới và đặc tả các giao
tiếp từ I/O subsystem đến device driver operations (ops). Loại thiết bị và bus kết nối
do sinh viên tùy chọn.

11



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×