Trước khi chúng ta thảo luận về các chi tiết cụ thể liên quan pdflush
, kjournald, and
kswapd`, trước tiên chúng ta hãy tìm hiểu một chút về bối cảnh chính xác những gì chúng ta đang nói về hạt nhân Linux.
Kiến trúc GNU / Linux
Kiến trúc của GNU / Linux có thể được coi là 2 không gian:
Giữa không gian người dùng và không gian hạt nhân nằm trong thư viện GNU C ( glibc
). Điều này cung cấp giao diện cuộc gọi hệ thống kết nối kernel với các ứng dụng không gian người dùng.
Không gian hạt nhân có thể được chia nhỏ thành 3 cấp độ:
- Giao diện cuộc gọi hệ thống
- Mã hạt nhân độc lập kiến trúc
- Mã phụ thuộc kiến trúc
Giao diện cuộc gọi hệ thống đúng như tên gọi của nó, cung cấp giao diện giữa glibc
kernel và kernel. Các kiến trúc độc lập Kernel Mã bao gồm các đơn vị logic như VFS (Virtual File System) và VMM (Virtual Memory Management). Các kiến trúc phụ thuộc Mã là những thành phần được xử lý và mã nền tảng cụ thể cho một kiến trúc phần cứng nhất định.
Sơ đồ kiến trúc GNU / Linux
Trong phần còn lại của bài viết này, chúng tôi sẽ tập trung sự chú ý của chúng tôi vào các đơn vị logic VFS và VMM trong Không gian hạt nhân.
Các hệ thống con của hạt nhân GNU / Linux
Hệ thống con VFS
Với một khái niệm cấp cao về cách cấu trúc hạt nhân GNU / Linux, chúng ta có thể tìm hiểu sâu hơn một chút về hệ thống con VFS. Thành phần này chịu trách nhiệm cung cấp quyền truy cập vào các thiết bị lưu trữ khối khác nhau, cuối cùng ánh xạ xuống hệ thống tệp (ext3 / ext4 / vv.) Trên thiết bị vật lý (HDD / vv.).
Sơ đồ của VFS
Sơ đồ này cho thấy cách một write()
quá trình của người dùng đi qua VFS và cuối cùng đi xuống trình điều khiển thiết bị nơi nó được ghi vào phương tiện lưu trữ vật lý. Đây là nơi đầu tiên mà chúng ta bắt gặp pdflush
. Đây là một daemon chịu trách nhiệm xả dữ liệu bẩn và khối đệm siêu dữ liệu vào phương tiện lưu trữ trong nền. Biểu đồ không hiển thị điều này nhưng có một trình nền khác kjournald
, nằm bên cạnh pdflush
, thực hiện một tác vụ tương tự viết các khối nhật ký bẩn vào đĩa. LƯU Ý: Các khối nhật ký là cách các hệ thống tệp như ext4 & JFS theo dõi các thay đổi đối với đĩa trong một tệp, trước khi các thay đổi đó diễn ra.
Các chi tiết trên được thảo luận thêm trong bài viết này .
Tổng quan về các write()
bước
Để cung cấp một cái nhìn tổng quan đơn giản về các hoạt động của hệ thống I / O, chúng tôi sẽ sử dụng một ví dụ trong đó chức năng write()
được gọi bởi một ứng dụng Không gian người dùng.
- Một quá trình yêu cầu viết một tập tin thông qua
write()
cuộc gọi hệ thống.
- Nhân cập nhật bộ đệm trang được ánh xạ vào tệp.
- Một chuỗi nhân pdflush đảm nhiệm việc xóa bộ đệm trang vào đĩa.
- Lớp hệ thống tập tin đặt từng bộ đệm khối lại với nhau thành một
bio struct
( tham khảo 1.4.3, lớp Khối khối trên trang 23 ) và gửi yêu cầu ghi vào lớp thiết bị khối.
- Lớp thiết bị khối nhận các yêu cầu từ các lớp trên và thực hiện thao tác thang máy I / O và đặt các yêu cầu vào hàng yêu cầu I / O.
- Trình điều khiển thiết bị như SCSI hoặc trình điều khiển cụ thể của thiết bị khác sẽ đảm nhiệm thao tác ghi.
- Phần sụn thiết bị đĩa thực hiện các hoạt động phần cứng như tìm kiếm đầu, xoay và truyền dữ liệu đến khu vực trên đĩa.
Hệ thống con VMM
Tiếp tục lặn sâu hơn, bây giờ chúng ta có thể xem xét hệ thống con VMM. Thành phần này chịu trách nhiệm duy trì tính nhất quán giữa bộ nhớ chính (RAM), trao đổi và phương tiện lưu trữ vật lý. Cơ chế chính để duy trì tính nhất quán là bdflush
. Vì các trang của bộ nhớ bị coi là bẩn, chúng cần được đồng bộ hóa với dữ liệu trên phương tiện lưu trữ. bdflush
sẽ phối hợp với pdflush
daemon để đồng bộ hóa dữ liệu này với phương tiện lưu trữ.
Sơ đồ của VMM
Trao đổi
Khi bộ nhớ hệ thống trở nên khan hiếm hoặc bộ đếm thời gian hoán đổi nhân hết hạn, kswapd
trình nền sẽ cố gắng giải phóng các trang. Miễn là số lượng trang miễn phí vẫn ở trên free_pages_high
, kswapd
sẽ không làm gì cả. Tuy nhiên, nếu số lượng trang miễn phí giảm xuống bên dưới, thì kswapd
sẽ bắt đầu quá trình cải tạo trang. Sau khi kswapd
đã đánh dấu các trang để di dời, bdflush
sẽ cẩn thận đồng bộ hóa mọi thay đổi nổi bật với phương tiện lưu trữ, thông qua các pdflush
trình tiện ích.
Tài liệu tham khảo & đọc thêm