Bài giảng Hệ điều hành - Chương 4: Hệ điều hành Linux

Lị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

n Cấu trúc mạng

n Bảo mật

pdf62 trang | Chuyên mục: Hệ Điều Hành | Chia sẻ: dkS00TYs | Lượt xem: 3785 | Lượt tải: 1download
Tóm tắt nội dung Bài giảng Hệ điều hành - Chương 4: Hệ điều hành Linux, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
 thi một chương trình mới, tiến trình được cho một không 
gian địa chỉ ảo mới hoàn toàn rỗng; các thủ tục tải chương trình 
đưa các region bộ nhớ ảo đến trú ở không gian địa chỉ này
n Tạo một tiến trình mới với fork bao gồm việc tạo một bản sao đầy 
đủ của không gian địa chỉ ảo của tiến trình đang có
l Kernel sao chép VMA descriptors của tiến trình cha, sau đó tạo 
một tập hợp page table cho tiến trình con
l Page tables của tiến trình cha được sao chép trực tiếp vào 
con, với reference count của mỗi trang được che giấu được 
tăng lên
l Sau fork, tiến trình cha và con chia sẻ cùng những trang bộ
nhớ vật lý trong không gian địa chỉ của chúng
21.42
Bộ Nhớ Ảo (tt)
n Hệ thống VM paging di chuyển các trang bộ nhớ từ bộ nhớ chính 
ngoài ra ngoài bộ nhớ khi bộ nhớ được cần cho thứ gì khác
n Hệ thống VM paging có thể được chia làm hai phần:
l Giải thuật pageout-policy quyết định khi nào và trang nào được 
ghi ra ngoài đĩa
l Cơ chế thực sự thực hiện việc di chuyển, và page dữ liệu trở
lại vào bộ nhớ vật lý khi cần
21.43
Bộ Nhớ Ảo (tt)
n Linux kernel duy trì một vùng (region) không đổi không phụ thuộc 
kiến trúc gồm không gian địa chỉ ảo của mỗi tiến trình cho việc sử
dụng bên trong nó
n Khu vực (area) bộ nhớ ảo này gồm hai vùng (region) :
l Một area tĩnh chứa các page table references cho mỗi trang 
vật lý bộ nhớ sẵn dùng trong hệ thống, do đó có một sự
chuyển đổi đơn giản từ địa chỉ vật lý sang ảo khi chạy mã 
kernel
l Reminder của phân đoạn dự trữ không được dự trữ cho một 
mục đí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

File đính kèm:

  • pdfBài giảng Hệ điều hành - Chương 4 Hệ điều hành Linux.pdf