Tải bản đầy đủ (.doc) (78 trang)

đồ án công nghệ thông tin USB driver trên hệ điều hành Linux Red Hat

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 (487.83 KB, 78 trang )

Đồ án tốt nghiệp USB driver trên hệ điều hành Linux Red Hat
LỜI CẢM ƠN
Quãng thời gian sinh viên đại học không phải là dài nhưng là một thời
gian sâu sắc và quan trọng trong mỗi chúng ta. Trong quãng thời gian sinh
viên của mình, em đã nhận được sự dạy dỗ, chỉ bảo tận tình của các thầy, các
cô các cán bộ khoa học kỹ thuật trong trường đại học Bách Khoa Hà Nội.
Khoảng thời gian đó đã cho em những kiến thức chuyên môn cũng như
phương pháp làm việc khoa học. Cùng với sự động viên giúp đỡ của gia đình,
các anh chị đồng nghiệp, bạn bè, giờ đây em đã hoàn thành đồ án tót nghiệp
đại học.
Nhân dịp này em xin được gửi lời cảm ơn tới tất cả các thầy, các cô đã
dạy dỗ chỉ bảo cho em trong suốt thời gian vừa qua. Em xin cảm ơn các thầy,
các cô trong khoa Công nghệ Thông tin, những người đã cho em những kiến
thức quý báu, dìu dắt em những bước đầu tiên trong nghề nghiệp. Em xin
cảm ơn các thầy, các cô trpng bộ môn Công nghệ Phần mềm, đặc biệt là thầy
Nguyễn Ngọc Bình. Thầy đã nhiệt tình giúp đỡ và tạo mọi điều kiện, chỉ bảo
và hướng dẫn từng bước đi để em có thể hoàn thành đồ án tôt nghiệp này.
Tôi xin được gửi lời cảm ơn chân thành tới công ty phần mềm FSOFT
đã tạo mọi điều kiện để tôi có thể hoàn thành đồ án tot nghiệp này, đặc biệt
là các anh Trần Xuân Khôi, Nguyễn Đức Quỳnh đã nhiệt tình chỉ bảo, hướng
dẫn. Cảm ơn các bạn đồng nghiệp đã giúp đỡ, động viên và đóng góp các ý
kiến quý báu trong thời gian tôi thực hiện đồ án.
Cuối cùng, tôi xin được gửi lời cảm ơn sâu sắc tới bố mẹ và gia đình,
những người thân đã hết sức động viên, cổ vũ, giúp đõ tôi về vật chất cũng
như tinh thần để tôi có thể hồan thành đồ án tốt nghiệp này
Phạm Tuấn Minh
Tháng 5 – Năm 2004
Phạm Tuấn Minh – CNPM – K44 – CNTT – DHBKHN
1
Đồ án tốt nghiệp USB driver trên hệ điều hành Linux Red Hat
LỜI NÓI ĐẦU


Ngày nay, sự phát triển nhanh chóng của Công Nghệ Thông Tin cùng
với các ứng dụng của nó tác động mãnh mẽ đến mọi lĩnh vực của đời sống
kinh tế xã hội, nhu cầu của con người cũng ngày càng trở nên phức tạp.
Trong bối cảnh ấy, máy tính ngày càng được sử dụng trong nhiều ứng dụng
khác nhau…
Với mục đích hiểu sâu thêm về hệ điều hành nguồn mở Linux và quá
trình giao tiếp giữa thiết bị phần cứng với phần mềm, quá trình xây dựng một
driver được sự giới thiệu của anh Nguyễn Đức Quỳnh ở công ty phần mềm
FPT-SOFT và giúp đỡ tận tình của thầy giáo tiến sỹ Nguyễn Ngọc Bình, em
đã lựa chọn đề tài:
“USB driver trên hệ điều hành Linux Red Hat ”
Trong đò án tốt nghiệp này, em đi vào nghiên cứu các vấn đề về kiến
trúc bus USB, USB driver trên hệ điều hành Linux. Đồ án được chia thành 6
chương và ba phụ lục
Chương 1. Giới thiệu kiến trúc bus USB
Chương 2. Hệ điều hành Linux & LinuxKernel
Chương 3. Một số vấn đề khi phát triển driver
Chương 4. Linux Driver
Chương 5. USB driver cho flash memmory
Chương 6. Tổng kết
Phụ lục A. Các thuật ngữ
Phụ lục B. Mô tả các hàm dùng trong USB driver cho flash memmory
Phụ lục C. Các tài liệu tham khảo
Phạm Tuấn Minh – CNPM – K44 – CNTT – DHBKHN
2
Đồ án tốt nghiệp USB driver trên hệ điều hành Linux Red Hat
MỤC LỤC
CHƯƠNG 1. GIỚI THIỆU KIẾN TRÚC BUS USB……………………-6-
1.1. GIỚI THIỆU CHUNG VỀ USB…………….……………………… 6-
1.2. CÁC ĐẶC ĐIỂM CỦA USB…………….…………………… … 6-

1.3. SƠ LƯỢC VỀ KIẾN TRÚC BUS USB….………………… … 8-
1.3.1. USB interconnect……………… …………….…… … 8-
1.3.2. Bus Topology……………… …………… ….…… … 9-
1.3.3. USB host……………… …………….…………… … 9-
1.3.4. USB Devices……………… …………….…… ……… 9-
1.3.5. Quan hệ giữa USB devices và USB host .…….…… … 10-
1.3.6. Physical Interface……………… …………….…… … 11-
1.3.7. Bus Protocol……………… …………….…… … 12-
1.3.8. Các loại luồng điều khiển …… …………….…… … 13-
1.3.9. Cấu hình hệ thống……………… …………….…… … 13-
1.3.10. USB là một bus robustness………………….…… … 13-
1.3.11. Các trạng thái của device …… …………….…… … 14-
CHƯƠNG 2. HỆ ĐIỀU HÀNH LINUX & LINUX KERNEL 16-
2.1. LỊCH SỬ RA ĐỜI HỆ ĐIỀU HÀNH LINUX……………… …… 16-
2.2. CÁC ĐẶC ĐIỂM CƠ BẢN……………… ……………… 17-
2.3. QUẢN LÝ FILE ……………… …………….……… … 20-
2.4. QUẢN LÝ TIẾN TRÌNH………………….…….…… … 25-
2.5. QUẢN LÝ BỘ NHỚ……………… …………….…… … 34-
2.6. LINUX KERNEL……………… …………….…… … 38-
Phạm Tuấn Minh – CNPM – K44 – CNTT – DHBKHN
3
Đồ án tốt nghiệp USB driver trên hệ điều hành Linux Red Hat
CHƯƠNG 3. MỘT SỐ VẤN ĐỀ KHI PHÁT TRIỂNDRIVER 40-
3.1. DRIVER LÀ GÌ………… ……… …………….…… … 40-
3.2. CÁC KHÓ KHĂN KHI PHÁT TRIỂN DRIVER……………… 40-
3.3. QUÁ TRÌNH PHÁT TRIỂN DRIVER ………….…… … 40-
3.3. GIỚI THIỆU VỀ LINUX DRIVER …………….…… … 41-
CHƯƠNG 4. USB DRIVER……………… …………….…… … 43-
4.1. THIẾT BỊ KÝ TỰ VÀ THIẾT BỊ KHỐI……………… ………… 43-
4.1.1. Thiết bị ký tự……………… …………….…… … 43-

4.1.2. Thiết bị khối……………… …………….…… … 43-
4.2. POLLING & INTERUPTS…………………….…… … 44-
4.2.1. Polling mode……………… …………….…… … 44-
4.2.2. Interrupt mode……………… …………….…… … 45-
4.2.3. Interrupt sharing……………… …………….…… … 46-
4.2.4. Bottom halvels……………… …………….…… … 46-
4.2.5. Task queues……………… …………….…… … 46-
4.2.6. DMA mode……………… …………….…… … 46-
4.3. USB TOPOGY…………………….…………….…… … 47-
4.4. CÁC KIỂU LUỒNG ĐIỀU KHIỂN……………… …………… 47-
4.5. CẤU HÌNH THIÊT BỊ ……………… …………….…… … 48-
4.6. CÁC YÊU CẦU USB……………… …………….…… … 55-
CHƯƠNG 5. USB DRIVER CHO FLASH MEMORY……………… 57-
5.1. GIỚI THIỆU VỀ FLASH MEMMORY……………… … 57-
5.2. THUẬT TOÁN THỤC HIỆN TRÊN USB DRIVER CHO
FLASH MEMMORY …………………………………………… …-57-
Phạm Tuấn Minh – CNPM – K44 – CNTT – DHBKHN
4
Đồ án tốt nghiệp USB driver trên hệ điều hành Linux Red Hat
5.3. CÁC CẤU TRÚC DỮ LIỆU DÙNG TRÊN USB DRIVER CHO
FLASH MEMMORY……….……… …………….…… … 59-
CHƯƠNG 6. TỔNG KẾT……………… …………….…… … 64-
6.1. PHÁT TRIỂN DRIVER TRÊN HỆ ĐIỀU HÀNH MÃ NGUỒN
ĐÓNG VÀ HỆ ĐIỀU HÀNH MÃ NGUỒN MỞ……….…….… 64-
6.2. TỔNG KẾT ……………… …………….…… … 64-
Phụ lục A. Các thuật ngữ
Phụ lục B. Một số hàm cung cấp bởi kernel cho USB flash memmory driver
Phụ lục C. Các tài liệu tham khảo
Phạm Tuấn Minh – CNPM – K44 – CNTT – DHBKHN
5

Đồ án tốt nghiệp USB driver trên hệ điều hành Linux Red Hat
CHƯƠNG 1
GIỚI THIỆU VỀ KIẾN TRÚC BUS USB
1.1. GIỚI THIỆU CHUNG VỀ USB
USB được xác định như một chuẩn công nghiệp mở rộng kiến trúc của
PC tập trung ở Computer Telephony Integration (CTI), sự giao tiếp, và hiệu
quả của ứng dụng. Một kiến trúc USB phải đáp ứng các tiêu chuẩn sau:
- dễ sử dụng cho việc mở rộng các thiết bị PC
- giá thành giảm và hỗ 12Mb/s
- hỗ trợ đầy đủ thời gian thực cho các loại dữ liệu như : voice, audio,
and compressed video
- giao thức trao đổi mềm dẻo, hỗ trợ hỗn hợp cả giao thức đẳng thời và
giao thức dị bộ
- tích hợp với các công nghệ kỹ thuật nổi tiếng
- hỗ trợ cho các cấu hình PC khác nhau và các thiết bị số
- cung cấp giao tiếp chuẩn cho phép triển khai nhanh trên các sản phẩm
- cho phép tham số hoá cho các loại PC khác nhau
1.2. CÁC ĐẶC ĐIỂM CỦA USB
Các đặc trưng của USB cung cấp một sự lựa chọn các thuộc tính để đạt
được các mức giá thành và hiệu năngn khác nhau.
Sự tích hợp các điểm có thể cho phép các chức năng với các mức hệ
thống và thanhg phần khác nhau
Các đặc điểm được xếp theo các loại sau:
+ Dễ sử dụng cho người sử dụng cuối
- Có một mẫu cho cáp và kết nối
Phạm Tuấn Minh – CNPM – K44 – CNTT – DHBKHN
6
Đồ án tốt nghiệp USB driver trên hệ điều hành Linux Red Hat
- Các mức chi tiết về nguồn điện được phân tách từ người sử dụng
- Tự xác định các thiết bị, tự động kết nối với các hàm chức năng trong

driver, và cấu hình
- Kết nối động và cấu hình lại các thiết bị
+ Phạm vi rộng môi trường làm việc và ứng dụng
- thích hợp cho các dải thông từ vài kb/s đến vài Mb/s
- hỗ trợ cả truyền thông đồng bộ và dị bộ qua một loại dây
- hỗ trợ xử lý tranh chấp (nhiều kết nối, nhiều thiết bị)
- hỗ trợ tới 127 thiết bị kết vật lý kết nối đồng thời
- hỗ trợ truyền thông đa luồng giữa máy tính (host) và các thiết bị
- hỗ trợ các thiết bị phức hợp (một thiết bị phức hợp bao gồm nhiều
chức năng)
+ Dải thông đồng bộ
- đảm bảo dải thông và góc trễ thấp thích hợp cho telephony, audio,
- dùng đồng bộ có thể sử dụng toần bộ dải thông bus
+ Mềm dẻo (Flexibility)
- hỗ trợ rộng phạm vi kích thước của các gói, cho phép qua lựa chọn tỉ lệ
bộ đệm
- Cho phép phạm vi rộng các loại dữ liệu bằng cách điều chỉnh kích
thước vùng đệm và góc trễ.
- luồng điều khiển cho bộ đệm xử lý được xây dựng trong giao thức
+ Mạnh mẽ (Robustness)
- kỹ thuật xử lý lỗi và khôi phục được xây dựng triong giao thức
- thêm và tháo gỡ các thiết bị động tuỳ theo người sử dụng theo thời
gian
Phạm Tuấn Minh – CNPM – K44 – CNTT – DHBKHN
7
Đồ án tốt nghiệp USB driver trên hệ điều hành Linux Red Hat
- hỗ trợ phát hiện lỗi của thiết bị
+ Đồng vận với công nghiệp PC (Synergy with PC industry)
- giao thức dơn giản để thực hiện và tích hợp
- thống nhất với kiến trúc PC plug-and-play

- Cộng tác với một số hệ thống giao tiếp đã tồn tại
+ Giá thành thực hiện rẻ Low-cost implementation
- giá thành rẻ với kênh phụ ở 1.5Mb/s
- tối ưu cho tích hợp các thiết bị phần cứng với PC (host)
- thích hợp cho phá triển các thiết bị giá thành rẻ
- cáp và bộ phận kết nối giá thành rẻ
- Sử dụng các công nghệ phổ biến
1.3. SƠ LƯỢC VỀ KIẾN TRÚC USB
Một hệ thống USB được mô tả bao gồm ba phần chính :
+ USB interconnect
+ USB devices
+ USB host.
1.3.1 USB interconnect
USB interconnect là cách thức mà USB devices và giao tiếp với host
host. Bao gồm:
+ Bus Topology: Mô hình kết nối giữa USB devices và host.
+ Inter-layer Relationships: Là stack chứa các USB tasks được thực
hiện ở từng lớp của hệ thống
+ Data Flow Models: Cách thức mà dữ liệu được chuyển trong hệ
thống qua USB giữa các nhà sản xuất và người sử dụng.
Phạm Tuấn Minh – CNPM – K44 – CNTT – DHBKHN
8
Đồ án tốt nghiệp USB driver trên hệ điều hành Linux Red Hat
+ USB Schedule: USB cung cấp một chia sẻ kết nối. Truy cập vào kết
nối này được xác định với mục đích hỗ trợ truyền thông đồng bộ và loại trừ
chi phí phân xử.
1.3.1. Bus Topology
1.3.2. USB host
Bất kỳ hệ thống USB nào cũng chỉ có một host. Giao tiếp USB tới PC
host được xác định thông qua Host Controller. Host Controller có thể được

thực hiện nhờ sự kết hợp của phần cứng, vi chương trình, hay phần mềm .
Một root hub được tích hợp với host system để cung cấp một hoặc hoặc một
vài điểm truy cập.
1.3.3. USB Devices
USB devices là một trong các loại sau:
- Hubs cugn cấp một vài điểm truy cập tới USB
Phạm Tuấn Minh – CNPM – K44 – CNTT – DHBKHN
9
Đồ án tốt nghiệp USB driver trên hệ điều hành Linux Red Hat
- Các chức năng, cung cấp một vài khả năng cho hệ thống như kết nối
ISDN , a digital joystick, hoặc speakers.
USB devices đặt ra một chuẩn giao tiếp USB dưới dạng:
- bao gồm giao thức USB của chúng
- các trả lời cho các thao tác chuẩn USB của chúng như cấu hình và khởi
tạo
- Các thông tin mô tả khả năng của chúng.
1.3.4 Quan hệ giữa USB devices và USB host
USB Host và USB Device là hai lớp đối lập giao tiếp với nhau


Phạm Tuấn Minh – CNPM – K44 – CNTT – DHBKHN
10
Đồ án tốt nghiệp USB driver trên hệ điều hành Linux Red Hat

1.3.5 Physical Interface
Giao tiếp vật lý của USB được mô tả bao gồm 2 phần
- electrical
- mechanical
USB truyền tải tín hiệu và năng lượng thông qua 4 đường.
Phạm Tuấn Minh – CNPM – K44 – CNTT – DHBKHN

11
Đồ án tốt nghiệp USB driver trên hệ điều hành Linux Red Hat
1.3.6. Bus Protocol
USB là một bus thăm dò. Host Controller khởi đầu tất cả các trao đổi
dữ liệu. Tất cả các giao tác liên quan đến sự truyền thông dữ liệu được phân
chia thành 3 gói . Mỗi giao tác được bắt đầu khi Host Controller, được lập
lịch từ trước, gửi một USB packet môt tả kiểu và hướng của giao tác, địa chỉ
của thiết bị và số điểm cuối. packet này được gọi là “token packet.” USB
device được xác định địa chỉ kích hoạt chính nó bằng cách giải mã trường địa
chỉ thích hợp. Trong giao tác, dữ liệu được truyền tải từ host đến a device
hoặc từ a device tới host. Hướng truyền dữ liệu được xác định trong token
packet. Nguồn của giao tác sau đó gửi một data package hoặc chỉ ra rằng
không có dữ liệu để truyền. Nơi nhận sẽ trả lời bằng một “handshake packet”
chỉ ra rằng dữ liệu đã đwocj truyền thành công .
Mô hình truyền dữ liệu giữa nguồn và đích trên host và endpoint trên
device được gọi là một đường ống pipe. Có hai loại pipe: luồng và thông điệp
(stream and message). luồng dữ liệu không có cấu trúc USB trong khi thông
điệp thì có cấu trúc. Ngoài ra, các pipes có sự kết hợp của dải thông dữ
liệu(data bandwidth), kiểu dịch vụ truyền(transfer service type) như đồng
bộ,dị bộ và các đặc điểm của endpoint như like hướng và kích thước bộ đệm.
Hầu hết các pipes hình thành khi một USB device được cấu hình. Một
message pipe, Default Control Pipe được hình thành khi device được cugn
cấp nguồn để cung cấp truy cập tới cấu hình thiết bị, trạng thái và thông tin
điều khiển.
Phạm Tuấn Minh – CNPM – K44 – CNTT – DHBKHN
12
Đồ án tốt nghiệp USB driver trên hệ điều hành Linux Red Hat
Các giao tác được lập lịch cho phép điều khiển một vài luồng pipes. Ở
mức phần cứng, bằng cách sử dụng NAK handshake như bộ điều chỉnh tỉ lệ
dữ liệu để ngăn các bộ đệm khỏi các tình huống underrun or overrun. Khi có

NAKed, một giao tác được thử lại một lần nữa khi thời gian bú cho phép. Kỹ
thuật điều khiển luồng cho phép thành lập một lịch phức tạp phù hợp với dịch
vụ tương tranh của các luồng phức tạp. Theo cách đó, nhiều stream pipes có
thể được phục vụ giữa các khoảng thời gian và các gói với kích thước khác
nhau.
1.3.7 Các loại luồng điều khiển (Data Flow Types)
+ Control Transfers: Được sử dụng để cấu hình thiết bị lúc gắn kết và
có thể sử dụng cho các mục đích khácbao gồm cả diều khiển các pipes của
thiết bị. Truyền theo phương pháp này thì an toàn, dữ liệu không bịi mất
+ Bulk Data Transfers: sử dụng khi truyền dữ liệu không chặt chẽ về
rang buộc như máy in, sanner… tuỳ thuọc vào tình trang bus mà việc truyền
có hiệu qua không
+ Interrupt Data Transfers: được sử dụng cho các mục đích của người
sử dụng hoặc có thông tin phản hồi
+ Isochronous Data Transfers: gọi là truyền luồng theo thời gian
( streaming real time transfers) như âm thanh, hình ảnh
1.3.8. Cấu hình hệ thống
+ Gắn kết một USB device
+ Gỡ bỏ một USB device
+ Đánh chỉ số cho USB device
Việc cầu hình hệ thống cho USB được thực hiện tự động bởi trình quản lý
PnP
1.3.9. USB là một bus robustness:
Phạm Tuấn Minh – CNPM – K44 – CNTT – DHBKHN
13
Đồ án tốt nghiệp USB driver trên hệ điều hành Linux Red Hat
+ Tín hiệu được kiểm tra toàn vẹn trên nhiều drivers, nhiều device, và
được bảo vệ
+ dùng mã CRC để bảo vệ các trường dữ liệu, cho phép kiểm soát và
xử lý lỗi ở hai mức phần mềm và phần cứng.

+ tự động phát hiện sự gắn kết và gỡ bỏ của device khỏi hệ thống và
cấu hình ở mức hệ thống lại các device
+ sử dụng giao thức tự động khôi phục(Self-recovery),sử dụng
timeouts để kiểm tra mất mát dữ liêu và trục trặc xảy ra
+ Điều khiển luồng cho luồng dữ liệu để đảm bảo đồng bộ hoá và quản
lý bộ đệm phần cứng
+ Dữ liệu và điều khiển Pipe được xây dựng đảm bảo sự đọc lập từ sự
tương tác giữa một vài chức năng va thiết bị khác nhau
1.3.10. Các trạng thái của device
Phạm Tuấn Minh – CNPM – K44 – CNTT – DHBKHN
14
Đồ án tốt nghiệp USB driver trên hệ điều hành Linux Red Hat
Các trạng thái của device USB
Phạm Tuấn Minh – CNPM – K44 – CNTT – DHBKHN
15
Đồ án tốt nghiệp USB driver trên hệ điều hành Linux Red Hat
CHƯƠNG 2
HỆ ĐIỀU HÀNH LINUX & LINUX KERNEL
2.1. LỊCH SỬ RA ĐỜI HỆ ĐIỀU HÀNH LINUX
Linux bắt nguồn từ một hệ điều hành lớn hơn có tên là UNIX . Hệ điều
hành UNIX được phát triển tại phòng thí nghiệm Bell của công ty AT&T vào
khong năm 1969. Vào thời điểm đó, các máy tính thường hoạt động theo chế
độ đn nhiệm phục vụ một người dùng, người lập trình vào dữ liệu cho mày
tính theo một dạng nào đó (chẳng hạn bìa đục lỗ) sau đó cho máy tính chạy
và in ra kết qu ra. Trong một môi trường làm việc như vậy người sử dụng
không tận dụng hết kh năng của bộ vi xử lý, không chia sẻ được tài nguyên
của máy và rất khó khăn trong việc liên hệ giữa các thành viên của một dự án
phát triển lớn.
Hệ điều hành UNIX ra đời trong bối cảnh đó, các tác giả đầu tiên của
UNIX là những người có nhu cầu được hỗ trợ lẫn nhau trong việc phát triển

dự án của mình. UNIX là hệ điều hành đa nhiệm, bằng phưng pháp phân chia
thời gian (time sharing) một cách thích hợp nó cho phép một nhóm người
trong cùng một dự án chia xẻ thông tin ( như dữ liệu hay chương trình) đồng
thời vẫn đm bo tính độc lập của từng thành viên. Sự ưu việt của UNIX so với
các hệ điều hành đưng thời thể hiên ở các điểm sau:
• Phục vụ nhiều người dùng đồng thời
• Cho phép người dùng dễ dàng liên lạc với máy tính thông qua các thiết
bị cuối
• Cho phép người dùng chia sẻ thông tin
Vào năm 1975, khi UNIX đã trở lên quen thuộc với người sủ dụng, mã nguồn
của hệ này được cung cấp cho các trường đại học và cao đẳng nhằm mục đích
Phạm Tuấn Minh – CNPM – K44 – CNTT – DHBKHN
16
Đồ án tốt nghiệp USB driver trên hệ điều hành Linux Red Hat
phổ biến hệ điều hành này. Tại trường đại học Berkeley (University of
California at Berkeley) một phiên bản của UNIX được phát triển và trở thành
một trong hai bản được phổ biến nhất có tên là BSD ( Berkeley Software
Distribution) UNIX. Bản kia do AT&T phát triển và được biết đến với tên
UNIX System V. Đầu tiên hệ UNIX được cài đặt cho các máy mini, nhưng
với sự phát triển nhanh chóng của kỹ thuật vi xử lý, giá thành bộ nhớ và các
thiết bị lưu trữ giảm cho phép các nhà cung cấp đưa ra các bản UNIX chạy
trên các máy micro cụ thể là máy PC.
Nhân hệ điều hành Linux được Linus Torvalds phát triển từ năm 1991
như một nhân hệ điều hành mã nguồn mở, từ đó đến nay đã co rất nhiều
thanh viên tham gia phát triển Linux. Ngày nay Linux đã có một cộng đồng
người sử dụng và phát triển đông đảo
Cấu trúc của LINUX gồm:
Kernel : là hạt nhân của hệ điều hành, nó cung cấp một loạt các dịch
vụ về quản lý tệp, bộ nhớ, quản lý CPU và các thiết bị vào ra cho chương
trình ứng dụng.

Shell : là chương trình nằm giữa người sử dụng và kernel, thông
thường nó là một bộ biên dịch dòng lệnh từ người sử dụng ở các thiết bị cuối
(cũng có thể từ tệp) và thực hiện chúng. Không những thế, trong UNIX shell
còn là một ngôn ngữ lập trình thực sự với đầy đủ các cú pháp cần thiết như
câu lệnh điều kiện, vòng lặp, các chương trình con, thủ tục
Utilities : UNIX có hàng trăm các chương trình tiện ích được xem như
các câu lệnh của hệ điều hành để phục vụ cho người sử dụng. Các tiện ích
này bao gồm các chương trình soạn tho, xử lý văn bản, các chương trình biên
dịch, các tiện ích thông tin trên mạng
2.2. CÁC ĐẶC ĐIỂM CƠ BẢN
Phạm Tuấn Minh – CNPM – K44 – CNTT – DHBKHN
17
Đồ án tốt nghiệp USB driver trên hệ điều hành Linux Red Hat
Hệ điều hành LINUX có một số đặc điểm sau:
— Nhiều người sử dụng
— Đa chương
— Bảo mật
— Độc lập phần cứng
— Kết nối mở
— Dùng chung thiết bị
— Tổ chức tập tin phân cấp
Nhiều người sử dụng:
Nhiều người sử dụng có thể sử dụng máy tính có cài LINUX tại một
thời điểm. Ví dụ:
LINUX Server:
— User A: dùng Oracle
— User B: chương trình biên dịch
— User C: gửi thư
Hệ điều hành LINUX quản lý những người sử dụng theo cấu trúc phân cấp,
người sử dụng có thể giao tiếp với nhau theo các nhóm. Người sử dụng cao

nhất (super user) có thể can thiệp đến các người sử dụng khác nếu cần.
Đa chương
Tại một thời điểm một người sử dụng có thể thực hiện đồng thời nhiều
tác vụ. Với hệ điều hành đơn chương như MS-DOS một lệnh thực hiện sẽ
chiếm toàn bộ thời gian CPU xử lý, bạn chỉ có thể thực hiện lệnh kế khi lệnh
trước đó đã được thực hiện xong. Còn trong hệ điều hành LINUX bạn có thể
đặt lệnh chạy ở chế độ nền (background) đồng thời khi đó có thể thực hiện
các lệnh kế.
Phạm Tuấn Minh – CNPM – K44 – CNTT – DHBKHN
18
Đồ án tốt nghiệp USB driver trên hệ điều hành Linux Red Hat
Tổ chức tập tin phân cấp
Các tập tin của LINUX được tổ chức theo dạng cây có chung thư mục
gốc được biểu diễn bởi ký tự /.
Bên trong thư mục có thể là các thư mục con hay các tập tin . LINUX có 3
loại tập tin:
- Tập tin bình thường (ordinary file): là một tập tin chứa các dữ liệu ASCII
hay nhị phân.
- Tập tin thư mục (directory file): chứa danh sách các phần tử (thư mục, tập
tin, thiết bị) có thể truy xuất tới.
- Tập tin đặc biệt (special file): là các tập tin liên quan đến các thiết bị phần
cứng và truyền thông.
Ví dụ:
- bàn phím là một tập tin nhập.
- màn hình là một tập tin xuất.
/
UMLINUX - bin - users - dev
user1
user2
(n ổ đĩa)

Đối với Linux toàn bộ hệ thống tập tin chỉ có một root. Có thể sử dụng lệnh
mount để kết nối các ổ đĩa trong một hệ thống tập tin duy nhất.
Ổ 1 : / LIB
BIN
USR
Ổ 2: /- ETC
Phạm Tuấn Minh – CNPM – K44 – CNTT – DHBKHN
19
Đồ án tốt nghiệp USB driver trên hệ điều hành Linux Red Hat
ORACLE
mount => /- LIB
BIN
USR- ETC
- ORACLE
Độc lập phần cứng
Vì hệ điều hành LINUX được viết bằng ngôn ngữ cấp cao cho nên nó
rất dễ cài đặt trên các cấu hình phần cứng khác. Hơn nữa với cách tổ chức các
thiết bị là các tập tin đặc biệt nên việc thêm vào hay loại bỏ các thiết bị rất dễ
dàng.
Dùng chung thiết bị
Vì Linux là môi trường nhiều người sử dụng do đó các thiết bị ngoại vi
như máy in,v.v có thể được dùng chung bởi nhiều người sử dụng.
Bảo mật
Linux cung cấp rất nhiều cơ chế bảo mật khác. Trong đó mỗi người sử
dụng có một số quyền trên các tập tin nhất định và chỉ được phép chạy một số
chương trình nhất định. Ngoài ra cơ chế mã hoá và giải mã cũng là một phần
của hệ điều hành.
Kết nối mở
Linux cung cấp các thiết bị mạng qua Ethernet, Modem, X25. Với
nhiều thủ tục truyền thông khác nhau UUCP (Linux-to-Linux Copy), TCP/IP,

và các ứng dụng E-mail,FTP, NFS (Network File System).
2.3. QUẢN LÝ FILE
Khi một quá trình muốn đọc hay ghi một file thì trước hết nó phải mở
file . File được mở bằng lời gọi OPEN của hệ thống có tham số đầu tiên là
Phạm Tuấn Minh – CNPM – K44 – CNTT – DHBKHN
20
Đồ án tốt nghiệp USB driver trên hệ điều hành Linux Red Hat
đường dẫn của file sẽ được mở và tham số thứ hai xác định file được mở để
đọc , ghi hay cả đọc và ghi . Hệ thống sẽ kiểm tra xem file có tồn tại hay
không và nếu có nó sẽ kiểm tra các bít bản quyền để xem người gọi có được
quyền thâm nhập đến file theo cách ra lệnh hay không . Nếu sự truy nhập là
được phép hệ thống sẽ trar lại một số nguyên dương nhỏ gọi là số một file
(file descriptor) để nhận diện file cho người gọi . Nếu sự truy nhập bị cấm
(hay file không tồn tại) -1 sẽ được trả lại để chỉ ra một lỗi . Lời gọi để đọc
hay ghi file sẽ sử dụng số một file để nhận diện file .
Khi một quá trình bắt đầu nó luôn , nó luôn luôn có 3 số mô t file : 0
cho thiết bị vào chuẩn , 1 cho thiết bị ra chuẩn và 2 cho thiết bị thông báo lỗi
chuẩn . File được mở đầu tiên có số mô t file là 3 , file tiếp theo là 4 Khi
file được đóng số mô t file của nó được giải phóng và có thể được cấp phát
cho lần mở file sau đó .
Có hai cách để xác định tên file trong LINUX . Cách thứ nhất là sử
dụng đường dẫn tuyệt đối nghĩa là chỉ ra cách tìm đến file bắt đầu từ thư mục
gốc . Một ví dụ của đường dẫn tuyệt đối là /usr/ast/book/chl .
Đường dẫn tuyệt đối thưng dài và bất tiện . Vì lí do đó LINUX cho
phép người dùng lựa chọn thư mục đang làm việc như là thư mục bắt đầu . Ví
dụ thư mục đang làm việc là /usr/ast/book thì lệnh
cp ch1 bachup
có cùng tác dụng với lệnh
cp /usr/ast/book/ch1 /usr/ast/book/backup
Điều thường xuyên xảy ra là một người dùng cần tham khảo đến một

file thuộc về một người dùng khác hay ít nhất ở một vị trí nào có trong cây
thư mục (file tree ) . Ví dụ 2 người được chia sẻ một file , file này có thể nằm
trong một thư mục thuộc về một người nào đó vì vậy mà người kia phải sử
dụng đường dẫn tuyệt đối để tham kho đến nó . Nếu đường dẫn đến file quá
dài có thể gây bực tức với người dùng vì vậy LINUX cung cấp một giải pháp
Phạm Tuấn Minh – CNPM – K44 – CNTT – DHBKHN
21
Đồ án tốt nghiệp USB driver trên hệ điều hành Linux Red Hat
cho vấn đề này bằng cách cho phép tạo một thư mục vào mới chỉ đến một file
đang tồn tại . Mỗi điểm vào được gọi là một kết nối .
Một ví dụ được mô tả như hình trên . Fred và Lisa cùng làm việc trong một
nhóm và mỗi người đều thường xuyên truy nhập đến các file của người kia .
Nếu Fred có /usr/fred như là thư mục làm việc anh ta có thể tham kho tới file
x trong thư mục của Lisa là /usr/lisa/x . Fred có thể tạo một điểm vào mới
trong thư mục của mình như hình dưới sau đó anh ta có thể sử dụng x như là
phưng tiện /usr/lisa/x .
Trong ví dụ trên ta thấy trước khi liên kết thì cách duy nhất cho Fred tham
kho đến file x của Lisa là sử dụng đường dẫn tuyệt đối .
Nhiều máy tính có hai hay nhiều ổ đĩa . Ngay c các máy tính các nhân cũng
có hai ổ đĩa : một ổ đĩa cứng và một ổ đĩa mềm . Khi có nhiều ổ đĩa thì một
câu hỏi ny sinh là làm cách nào để điều khiển chúng .
Một giải pháp là dặt một file hệ thống bao gồm các thông tin về bản thân lên
mỗi đĩa và giữ chúng riêng biệt . Ví dụ được mô t bởi hình sau
Phạm Tuấn Minh – CNPM – K44 – CNTT – DHBKHN
22
Đồ án tốt nghiệp USB driver trên hệ điều hành Linux Red Hat
Ta thấy một đĩa cứng gọi là H và một đĩa mềm gọi là gọi là D . Mỗi đĩa đều
có thư mục gốc và các file của mình . Với giải pháp này người dùng phải xác
định c thiết bị và file khi làm việc gì đó khác với ngầm định . Ví dụ để copy
một file x sang thư mục d ( ổ H là ngầm định ) người dùng có thể gõ

cp D:/x /a/d/x
Giải pháp của LINUX cho phép một đĩa được đặt lên cấu trúc cây thư mục
trong một đĩa khác . Trong ví dụ này chúng ta đặt đĩa mềm lên thư mục /b .
Khi đó dòng lệnh trên sẽ trở thành :
cp /b/x /a/d/x
Một kh năng thú vị khác của hệ thống LINUX là khoá (locking) . Trong một
vài ứng dụng hai hay nhiều quá trình có thể sử dụng cùng một file ở cùng một
thời điểm , đIều nàu có thể dẫn đến các tình trạng chạy đua . Một giải pháp là
chương trình của ứng dụng có những vùng giới hạn . Tuy nhiên nếu các quá
trình thuộc về những người dùng độc lập , hộ thậm chí không biết về nhau thì
giải pháp ngang hành nói chung là bất tiện .
Phạm Tuấn Minh – CNPM – K44 – CNTT – DHBKHN
23
Đồ án tốt nghiệp USB driver trên hệ điều hành Linux Red Hat
Ví dụ hãy xem một CSDL bao gồm nhiều file trong một hay nhiều thư mục
được truy nhập bởi những người không liên quan . Để có thể chắc chắn liên
kết một dấu hiệu với mỗi thư mục hay file và thực hiện loạI trừ lẫn nhau bằng
cách có một quá trình thực hiện một thao tác DOWN trên một dâú hiệu dành
riêng trước khi truy nhập dữ liệu . Tuy nhiên đIều bất lợi là sau đó toàn bộ
thư mục hay file được làm cho không thể truy nhập được thậm chí chỉ là một
bản ghi .
Vì lí do đó POSIX cung cấp một c chế mềm dẻo và đúc kết cho mỗi quá trình
có thể khoá từ một byte riêng lẻ đến toàn toàn bộ file trong một thao tác
không thể phân chia . C chế khoá đòi hỏi người gọi phải xác định file được
khoá , byte bắt đầu và số lượng các byte . Nếu thao tác là thành công hệ
thống sẽ tạo một bảng vào thông báo những byte nào được khoá .Có hai loại
khoá được cung cấp là chia sẻ và loại trừ. Nếu một phần của file đã bao gồm
một khoá chia sẻ thì lần thứ hai đặt lên một khoá chia sẻ khác là được phép
nhưng một cố gắng đặt một khoá loại trừ lên phần đó sẽ thất bại . Nếu một
phần của file bao gồm một khoá loại trừ thì mọi cố gắng đặt một khoá lên bất

kì lên bất bì phần nào của nó sẽ thất bạI cho đến khi khoá được giải phóng .
Để đặt khoá thành công thì mọi byte trong vùng được khoá phải khả dụng .
Khi đặt một khoá một quá trình phải xác định xem nó có muốn ngăn cản hay
không việc không thể đặt được khoá đặt khoá . Nếu nó chọn ngăn cản thì
khoá đang tồn tại sẽ được rời đi , quá trình sẽ không ngăn cản và khoá sẽ
được đặt . Nếu quá trình chọn không khi nó không đặt được khoá thì hệ thống
sẽ trả lại ngay mã trạng thái xem khoá có thành công hay không .
Các vùng được khoá có thể đè lên nhau . Như hình dưới (a) ta thấy process A
đặt một khoá chia sẻ lên các byte từ 4 đến 7 của file . Sau đó process B đặt
một khoá chia sẻ lên các byte từ 6 đến 9 . Cuối cùng process C khoá các byte
từ 2 đến 9 . Vì các khoá là được chia sẻ lên chúng có thể cùng tồn tại .
Phạm Tuấn Minh – CNPM – K44 – CNTT – DHBKHN
24
Đồ án tốt nghiệp USB driver trên hệ điều hành Linux Red Hat
Bây giờ hãy xem điều gì sẽ xảy ra nếu một quá trình cố gắng đặt một khoá
loại trừ vào byte 9 của file vời yêu cầu ngăn cản nếu khoá thất bại . Ngay khi
hai khoá trớc đó bao phủ vùng này thì lời gọi sẽ bị ngăn cản và sẽ tiếp tục bị
ngăn cản cho đến khi cả hai quá trình B và C giải phóng khoá của chúng .
2.4. QUẢN LÝ TIẾN TRÌNH
Chỉ có các thực thể hoạt động trong một hệ thống LINUX mới là các
quá trình . LINUX xử lí rất giống với các quá trình xử lí tuần tự mà chúng ta
được nghiên cứu ở phần trước . Mỗi quá trình chạy một chương trình đơn lẻ
và có một dòng điều khiển riêng . Ngoài ra có một chương trình khác gọi là
chương trình đếm (counter) là chương trình sẽ lưu dữ dấu vết hay địa chỉ của
chỉ thị tiếp theo sẽ được thi hành .
LINUX là một hệ thống đa chương trình vì vậy sẽ có nhiều quá trình
độc lập cùng chạy ở cùng một thời điểm . Mỗi người dùng có thể có một vài
quá trình hoạt động ở cùng một thời điểm vì vậy với một hệ thống lớn có thể
có hàng trăm thậm chí hàng nghìn quá trình cùng chạy . Trong thực tế đối với
phần lớn những nhóm người dùng đơn lẻ thì ngay cả khi người dùng vắng

mặt cũng có hàng tá các quá trình ở mặt sau được gọi các chương trình thông
minh (daemons) đang chạy . Các chương trình dạng này được tự động bắt
đầu khi hệ thống khởi động .
Phạm Tuấn Minh – CNPM – K44 – CNTT – DHBKHN
25

×