Chương 4 giúp người học hiểu về Linux Kernel. Nội dung trình bày cụ thể gồm có: Lịch sử phiên bản nhân Linux, cách đặt tên phiên bản nhân, kiến trúc hệ điều hành GNU/Linux, chức năng của nhân Linux, các hệ thống con chính của nhân,...
VIỆN ĐẠI HỌC MỞ HÀ NỘI Khoa Công Nghệ Thông Tin Linux Kernel Giảng viên: Ths Trần Tiến Dũng Email: trantiendung.nd91@gmail.com Linux hay GNU/Linux Linux nhân hệ điều hành, tương tác trực tiếp với phần cứng cung cấp dịch vụ cho chương trình người sử dụng (User Program) Nhiều ứng dụng khác bổ xung kết hợp với nhân Linux làm thành hệ điều hành sử dụng được, ứng dụng phần lớn phần mềm GNU GNU dự án tổ chức phần mềm tự FSF, xây dựng phần mềm giống Unix, phần mềm tự không chứa mã Unix => Hệ điều hành gọi GNU/Linux Lịch sử phiên nhân Linux Năm 1991, Linus Tovalds đưa phiên 0.11, sử dụng giấy phép GNU GPL Cách đặt tên phiên nhân Đánh số dạng : X.Y.Z Trong X số hiệu phiên Y số hiệu phụ phiên bản, mang ý nghĩa tình trạng phiên bản, đó, Y chẵn thể phiên ổn định, Y lẻ chưa ổn định, trình phát triển Z định cho số hiệu phát hành phiên nhân Linux Một phiên ổn định nhân Linux có nhiều số hiệu phát hành khác VD : 2.4.28 2.6.28 Kiến trúc HĐH GNU/Linux Kiến trúc HĐH GNU/Linux User Applications : Lớp ứng dụng người dùng GNU C Library (glibc) : Lớp thư viện phục vụ cho giao diện lời gọi hệ thống tạo liên kết ứng dụng nhân Linux System call interface : giao diện lời gọi hệ thống thực chức đọc, ghi Kernel : phần mã nhân hệ điều hành xác mã nhân độc lập với kiến trúc vi xử lý (processor) Các mã lệnh lớp dùng chung cho loại processor mà Linux hỗ trợ Architecture-dependent code : mã lệnh phụ thuộc vào kiến trúc loại processor Nhân ? Nhân Linux thực quản lý tài nguyên Các tài nguyên gồm: tiến trình (process) nhớ (memory) Các thiết bị phần cứng (hardware devices) Nhân Linux quản lý tài nguyên người điều hành việc truy cập tài nguyên đồng thời nhiều user (User hiểu theo nghĩa rộng bao gồm tất có nhu cầu sử dụng tài nguyên hệ thống: tiến trình, phần mềm, v.v….) Nhân Linux LinuxKernel thực thi giao diện máy ảo tiến trình người sử dụng Linux Kernel tổng hợp tất phần cứng vào giao diện ảo phù hợp Linux hỗ trợ đa nhiệm theo kiểu mà người sử dụng dễ hiểu: Từng tiến trình thực hiện, tiến trình máy, loại trừ việc sử dụng nhớ tài nguyên phần cứng khác Kernel thực tế chạy nhiều tiến trình đồng thời chịu trách nhiệm việc dàn xếp truy cập tới tài nguyên phần cứng tiến trình truy cập thuận lợi việc bảo mật tiến trình trì Chức nhân Linux Quản lý thời gian: Gọi thời gian hệ thống, xác định thời gian CPU, ngắt tiến trình thời gian thực tiến trình q lâu Quản lý tài nguyên: Như nhớ đĩa cứng Quản lý hệ thống file: Có thể file, thư mục cục hay từ xa Quản lý tiến trình thường trú Quản lý nhớ ảo: Để thực thi nhiều tiến trình đồng thời số lượng nhớ có hạn, UNIX tổ chức nhớ đĩa vùng nhớ (bộ nhớ ảo) Kernel phải "swap" tiến trình nhớ nhớ ảo Chức nhân Linux Quản lý tiến trình:UNIX hệ điều hành đa nhiệm, việc quản lý tiến trình đồng thời phức tạp Hệ điều hành phải quản lý việc khởi tạo kết thúc tiến trình tranh chấp xẩy Quản lý điều khiển thiết bị Quản lý mạng: Bao gồm nhiều thiết bị phần cứng khác thủ tục khác Quản lý việc khởi động dừng máy 10 Quản lý nhớ - MM Để sử dụng nhớ hiệu theo cách mà phần cứng quản lý nhớ ảo, nhớ chia thành trang (mỗi trang 4KB phần lớn loại vi xử lý) Linux có cấu quản lý lượng nhớ khả dụng cấu phần cứng để mapping nhớ vật lý nhớ ảo Việc quản lý nhớ làm nhiều quản lý trang 4KB Linux dùng sơ đồ định vị lát (slab allocator) lên trang Sơ đồ dùng trang 4KB làm sở tạo cấu trúc bên trong, theo dõi trang đầy, trang dùng phần, trang trống 17 Quản lý nhớ - MM Khi nhiều user sử dụng nhớ, dung lượng khơng đủ Khi trang nhớ chuyển sang ổ cứng Quá trình gọi trao đổi (swapping) nhớ ổ cứng Các gói phần mềm liên quan đến quản lý nhớ đặt thư mục /linux/mm Module phụ thuộc kiến trúc: code gọi lệnh hệ thống quản lý nhớ CPU 18 Quản lý nhớ - MM Module độc lập kiến trúc: ánh xạ cho process swap nhớ ảo Nó định xem phải loại bỏ trang , mở trang Các lập trình viên Linux khơng thiết kế module policy riêng policy cho MM khơng thay đổi System call cho phép tiến trình tác động lên MM bao gồm xin cấp phát vùng nhớ 19 Hệ thống file ảo Hệ thống file ảo (Virtual File System - VFS) khía cạnh nhân Linux, cung cấp giao diện trừu tượng hoá chung cho hệ thống file VFS tạo nên lớp chuyển đổi System Call Interface hệ thống file Linux VFS hỗ trợ loại định dạng file khác để hệ thống làm việc VFS giúp cho thiết bị vật lý làm việc với hệ thống đơn giản 20 Hệ thống file ảo - VFS 21 Hệ thống file ảo Nằm VFS lớp API chức mở, đóng, đọc, viết file Dưới VFS lớp trừu tượng hệ thống file xác định chức lớp thực Đó plug-in hệ thống file cho trước (có 50 plug-in vậy) Các phần mềm liên quan đến VFS nằm thư mục /linux/fs 22 Hệ thống file ảo Bên lớp file hệ thống đệm cache (buffer cache) gồm chức chung cho hệ thống file (không phụ thuộc vào kiểu hệ thống file riêng biệt nào) Lớp cache tối ưu hoá việc truy cập vào thiết bị vật lý cách giữ liệu thời gian ngắn (hoặc đọc trước cho liệu ln có cần) Dưới đệm cache driver thiết bị giao diện thiết bị vật lý cụ thể 23 Bộ quản lý mạng Bộ quản lý mạng thiết kế theo kiến trúc lớp mô theo kiến trúc lớp giao thức Nhắc lại IP giao thức lớp mạng lõi nằm bên giao thức vận chuyển (thường TCP) Bên TCP lớp socket gọi đến qua SCI Lớp socket API chuẩn hệ thống network, tạo nên giao diện cho giao thức mạng khác Lớp socket quy định cách quản lý kết nối di chuyển liệu chuẩn hoá điểm đầu cuối Tài nguyên mạng nằm thư mục /linux/net 24 Bộ quản lý mạng Module Driver cho thiết bị mạng: module cho loại 25 thiết bị Module độc lập thiết bị: phân chia tất thiết bị mạng Module giao thức mạng: module cho loại giao thức truyền Module độc lập giao thức mạng: phân chia cho tất module giao thức mạng driver System call : Hạn chế đưa thủ tục mà tiến trình người sử dụng truy nhập Các driver thiết bị Phần lớn mã nguồn nhân Linux driver để điều khiển thiết bị phần cứng Cây thư mục mã nguồn nhân Linux có thư mục driver có thư mục ứng với thiêt bị khác Mã nguồn driver nằm /linux/drivers 26 Mã lệnh phụ thuộc kiến trúc vi xử lý Mã lệnh phụ thuộc kiến trúc vi xử lý (Architecture- dependent code) chứa phần mã lệnh tuỳ theo loại vi xử lý khác (x86, x64, amd…) Phần lớn Linux độc lập với kiến trúc vi xử lý, có phận cần phải theo kiến trúc cụ thể để hoạt động hiệu Thư mục /linux/arch chứa mã nguồn phụ thuộc kiến trúc Ví dụ với máy trạm tiêu biểu, thư mục i386, 27 Một số đặc điểm đáng ý Nhân Linux sử dụng nhớ CPU ngày hiệu đặc biệt ổn định Tính khả chuyển (portability) : Linux dịch để chạy nhiều loại processor tảng phần cứng khác đáp ứng ràng buộc kiến trúc nhu cầu khác 28 Một số đặc điểm đáng ý Linux, với tư cách hệ điều hành nguồn mở, nơi dùng để test giao thức đặc điểm tiên phong giao thức Linux hỗ trợ số lớn giao thức mạng từ TCP/IP giao thức mạng cao tốc (trên Gigabit Ethernet – 1GbE – 10GbE) Linux hỗ trợ giao thức SCTP (Stream Control Transmission Protocol) có nhiều đặc tính tiên tiến TCP 29 Một số đặc điểm đáng ý Linux kernel động, cho phép thêm bớt thành phần phần mềm chạy Các thành phần gọi module tải động (dinamically loadable kernel modules) tải vào nhớ boot (khi tìm thấy phần cứng cần đến nó) tải rút khỏi nhớ lúc user 30 Một số đặc điểm đáng ý Một đặc tính Linux gần dùng làm hệ điều hành cho hệ điều hành khác (hypervisor) Kernel Linux gần bổ xung tính máy ảo từ nhân (Kernel-based Virtual Machine – KVM) Tính tạo giao diện cho vùng người dùng, cho phép hệ điều hành khác (Linux Windows) chạy KVM Yêu cầu processor phải hỗ trợ tập lệnh ảo hoá 31 ... với thiêt bị khác Mã nguồn driver nằm /linux/drivers 26 Mã lệnh phụ thuộc kiến trúc vi xử lý Mã lệnh phụ thuộc kiến trúc vi xử lý (Architecture- dependent code) chứa phần mã lệnh tuỳ theo loại... /linux/arch 12 Quản lý tiến trình Quản lý tiến trình (Process Management ) đảm bảo việc thực tiến trình Trong vùng nhân Linux, tiến trình gọi mạch lệnh (thread) thể thành vi xử lý ảo (gồm mã lệnh, liệu,... Quản lý tiến trình Module độc lập kiến trúc (architeture-independent): Module giao tiếp với module policy để định tiến trình thực tiếp Sau module architeture-specific để khơi phục tiến trình