ịch sửLinux
n Nguyên tắc thiết kế
n Lập trình Kernel Modules
n Quản lý quá trình
n Định thời
n Quản lý bộnhớ
n Hệthống file
n Hệthống xuất nhập (I/O)
n Truyền thông liên quá trình
62 trang |
Chia sẻ: Mr Hưng | Lượt xem: 1084 | Lượt tải: 0
Bạn đang xem trước 20 trang nội dung tài liệu Hệ điều hành Linux, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ích xác định nào; các page-table entry của nó có thể
được thay đổi trỏ tới bất cứ khu vực (area) nào của bộ nhớ
21.44
Thực Thi và Tải Chương Trình Người Dùng
n Linux duy trì một bản các hàm để tải chương trình; nó cho mỗi hàm
cơ hội để tải file được cho khi có một lời gọi hệ thống
n Việc đặng ký các thủ tục đa loader cho phép Linux hỗ trợ cả các
định dạng nhị phân ELF và a.out
n Ban đầu, các trang binary-file được map vào bộ nhớ ảo
l Chỉ khi một chương trình cố truy cập một trang cho trước thì
mới tạo ra một lỗi trang trong trang đang được tải vào bộ nhớ
vật lý
n Một file định dạng nhị phân ELF chứa một header theo sau bởi vài
phân đoạn (section) page-aligned
l ELF loader làm việc bằng cách đọc header và map các phân
đoạn của file vào các region riêng biệc của bộ nhớ ảo
21.45
Bố Trí Bộ Nhớ cho Chương Trình ELF
21.46
Liên Kết Tĩnh và Động
n Một chương trình có các hàm thư viện ghi trực tiếp trong file thực
thi nhị phân của chương trình thì liên kết tĩnh (statically) với các
thư viện của nó
n Điểm bất lợi duy nhất của liên kết tĩnh là mỗi chương trình tạo ra
phải sao chép chính xác các hàm thư viện giống nhau
n Liên kết động (dynamic) hiệu quả hơn về cả sử dụng bộ nhớ vật lý
lẫn không gian đĩa vì nó tải các thư việc hệ thống vào bộ nhớ chỉ
một lần
21.47
Các Hệ Thống File
n Với người dùng, hệ thống file của Linux có vẻ như là một cây thư
mục có cấp bậc tuân theo UNIX semantics
n Bên trong, kernel giấu các chi tiết hiện thực và quản lý nhiều hệ
thống file khác nhau thông qua một lớp trừu tượng, đó là, hệ thống
file ảo virtual file system (VFS)
n Linux VFS được thiết kế quanh các nguyên tắc hướng đối tượng
và gồm có hai thành phần :
l Một tập hợp các định nghĩa xác định một file object (được cho
phép) trông như thế nào
Các cấu trúc Inode-object và file-object biểu diễn các file
riêng biệc
file system object biểu diễn cả một hệ thống file
l Một lớp phần mềm để thao tác các đối tượng này
21.48
Hệ Thống File Ext2fs của Linux
n Ext2fs dùng một cơ chế tương tự của BSD Fast File System (ffs) cho
việc định vị các block dữ liệu tới một file xác định
n Khác biệt chính giữa ext2fs và ffs liên quan tới cách cấp phát đĩa của
chúng
l Trong ffs, đĩa được cấp phát tới file theo block 8Kb, với các block
được chia nhỏ thành các phân mảnh 1Kb để lưu trữ các file nhỏ
hay các block được làm đầy một phần ở cuối file
l Ext2fs không dùng phân mảnh; nó thực hiện cấp phát với các
đơn vị nhỏ hơn
Kích thước block mặc định trong ext2fs là 1Kb, mặc dù block
2Kb và 4Kb cũng được hỗ trợ
l Ext2fs dùng các cách cấp phát được thiết kế để đặt các block kề
luận lý của một file vào các block kề vật lý trên đĩa, do đó nó có
thể chấp nhận một yêu cầu I/O cho vài block đĩa như một thao
tác đơn
21.49
Ext2fs các Cách Cấp Phát Block
21.50
Hệ Thống File Proc của Linux
n Hệ Thống file proc không lưu trữ dữ liệu, mà, nội dung của nó
được tính toán theo yêu cầu theo các yêu cầu file I/O người dùng
n proc phải hiện thực một cấu trúc thư mục, và nội dung file trong
đó; sau đó nó phải xác định một inode number duy nhất và bền
vững cho mỗi thư mục và file trong đó
l Nó sử dụng inode number này để xác định thao tác nào cần
thiết khi một người dùng cố đọc từ một file đặc biệt hay thực
hiện tìm kiếm trong một inode thư mục đặc biệt
l Khi dữ liệu được đọc từ một trong những file này, proc thu
thập thông tin thích hợp, định dạng nó thành văn bản và đặt nó
vào buffer đọc của tiến trình yêu cầu
21.51
Input và Output
n Hệ thống file hướng thiết bị của Linux truy cập kho lưu trữ đĩa qua
hai cache :
l Dữ liệu được cached trong page cache, được hợp nhất với hệ
thống bộ nhớ ảo
l Metadata được cached trong buffer cache, một cache riêng
biệt được ghi mục lục (index) bởi disk physical block
n Linux chia tất cả thiết bị thành ba lớp:
l block devices cho phép truy cập ngẫu nhiên vào các block dữ
liệu có kích thước cố định và hoàn toàn độc lập
l character devices gồm hầu hết các thiết bị khác; chúng không
cần hỗ trợ functionality của các file thông thường
l network devices được kết nối thông qua networking subsystem
của kernel
21.52
Cấu Trúc Device-Driver Block
21.53
Block Devices
n Cung cấp giao diện chính đến tất cả thiết bị đĩa trong một hệ thống
n Block buffer cache thực hiện hai chức năng chính:
l Hoạt động như một hồ chứa các buffers cho I/O tích cực
l Phục vụ như một cache cho I/O đã hoàn tất
n Request manager quản lý việc đọc và ghi nội dung buffer từ và đến
một block device driver
21.54
Character Devices
n Một device driver không cung cấp truy cập ngẫu nhiên vào các
block dữ liệu cố định
n Một character device driver phải đăng ký một tập hợp các hàm
hiện thực các thao tác file I/O khác nhau của driver
n Kernel hẩu như không thực hiện tiền xử lý một yêu cầu đọc hay ghi
file đến một character device, mà đơn giản chuyển yêu cầu đến
cho thiết bị
n Ngoại lệ chính của nguyên tắc này là tập hợp con đặc biệt gồm các
character device drivers thực hiện terminal devices, đã được
kernel duy trì một giao diện chuẩn cho nó
21.55
Giao Tiếp Liên Tiến Trình
n Như UNIX, Linux thông báo cho các tiến trình biết có một sự kiện
xuất hiện thông qua các tín hiệu
n Có một số lượng tín hiệu giới hạn, và chúng không thể mang thông
tin: chỉ có sự kiện một tín hiệu xuất hiện là có giá trị với tiến trình
n Linux kernel không sử dụng các tín hiệu để giao tiếp với các tiến
trình đang chạy ở kernel mode, mà, giao tiếp nội trong kernel được
thực hiện thông qua các trạng thái định thời và các cấu trúc hàm
đợi wait.queue
21.56
Chuyển Dữ Liệu Giữa các Tiến Trình
n Cơ chế pipe (đường ống) cho phép một tiến trình con kế thừa một
kênh giao tiếp từ cha nó, dữ liệu viết lên một đầu của pipe có thể
được đọc ở đầu còn lại
n Bộ nhớ chi sẻ cung cấp một cách giao tiếp cực nhanh; bất cứ dữ
liệu nào được viết bởi một tiến trình vào một shared memory
region (vùng bộ nhớ chia sẻ) có thể được đọc ngay lập tức bởi bất
cứ tiến trìn nào đã map vùng (region) đó vào không gian địa chỉ
của nó
n Tuy nhiên, để đạt được sự đồng bộ, bộ nhớ chia sẻ phải được sử
dụng kết hợp với cơ chế giao tiếp liên tiến trình
21.57
Shared Memory Object
n Shared-memory object hành động như một backing store cho các
shared-memory regions cùng cách mà một file có thể hành động
với một memory-mapped memory region
n Shared-memory mappings hướng các lỗi trang map trong các
trang từ một đối tượng shared-memory bền vững
n Shared-memory object nhớ nội dung của chúng cả khi không có
tiến trình nào đang map chúng vào bộ nhớ ảo
21.58
Cấu Trúc Mạng
n Networking là lĩnh vực mấu chốt của tính hữu dụng của Linux
l Nó hỗ trợ các nghi thức Internet chuẩn cho UNIX cho các giao
tiếp UNIX
l Nó cũng hiện thực các nghi thức tự nhiên đối với các hệ điều
hành nonUNIX, đặc biệt, các nghi thức được sử dụng trên các
mạng PC, như Appletalk và IPX
n Bên trong, networking trong Linux kernel được hiện thực bởi ba lớp
phần mềm:
l The socket interface
l Protocol drivers
l Network device drivers
21.59
Cấu Trúc Mạng (tt)
n Tập hợp quan trọng nhất của các nghi thức trong hệ thống Linux
networking là bộ internet protocol suite
l Nó hiện thực việc truyền gửi (routing) giữa các host khác nhau
ở bất cứ nơi đâu trong mạng
l Trên cùng của nghi thức routing được xây dựng trên các nghi
thức UDP, TCP và ICMP
21.60
An Ninh
n Hệ thống pluggable authentication modules (PAM) có sẵn dưới
Linux
n PAM dựa trên một thư viện chia sẻ có thể được sử dụng bởi bất kỳ
thành phần hệ thống nào cần nhận biết người dùng
n Điều khiển truy cập các hệ thống dưới UNIX, bao gồm Linux, được
thực hiện thông qua việc sử dụng các unique numeric identifiers
(uid và gid)
n Điều khiển truy cập được thực hiện bằng cách cấp cho các đối
tượng một protections mask, xác định các chế độ nào —read,
write, hay execute— được cấp cho tiến trình với truy cập người
dùng, nhóm, hay tất cả
21.61
An Ninh (tt)
n Linux tăng cơ chế chuẩn UNIX setuid bằng hai cách :
l Nó thực hiện POSIX specification’s saved user-id mechanism,
cho phép một tiến trình lặp đi lặp lại việc bỏ và lấy lại uid hiệu
quả của nó
l Nó thêm vào một đặc tính tiến trình cấp cho một tập hợp con
các quyền của uid hiệu quả
n Linux cung cấp một cơ chế khác cho phép một khách hàng chuyển
có lựa chọn lối vào cho một file đơn vào tiến trình server nào đó
mà không cấp cho nó đặc quyền nào khác
21.62
End of Chapter 21
Các file đính kèm theo tài liệu này:
- hdh04_2462.pdf