1. Trang chủ
  2. » Thể loại khác

Giới thiệu về Linux kernel

7 8 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 7
Dung lượng 240,11 KB

Nội dung

Giới thiệu về Linux kernel Giới thiệu Trước khi học về Linux device driver, chúng ta sẽ tìm hiểu về hệ điều hành nói chung và Linux kernel nói riêng Bài học này tập trung vào các vấn đề sau Hệ thống m[.]

Giới thiệu Linux kernel Giới thiệu Trước học Linux device driver, tìm hiểu hệ điều hành nói chung Linux kernel nói riêng Bài học tập trung vào vấn đề sau: Hệ thống máy tính gồm thành phần nào? Hệ điều hành gì? Hệ điều hành có vai trị hệ thống máy tính? Linux kernel có cấu trúc nào? Các khái niệm hay dùng Linux kernel Hệ thống máy tính Hệ thống máy tính bao gồm thành phần: phần cứng phần mềm Phần cứng bao gồm thành phần sau: RAM: chứa phần mềm Phần mềm tập hợp lệnh liệu CPU: liên tục lấy lệnh từ RAM vào thực thi Chuỗi lệnh hướng dẫn CPU xử lý liệu RAM liệu từ I/O module, nhằm đạt chức CPU phát tín hiệu điều khiển hoạt động toàn hệ thống I/O module: cung cấp liệu cho CPU xử lý trả kết xử lý CPU Hệ thống bus: kết nối CPU, RAM, I/O module lại với Hệ thống bus chia làm loại: Bus liệu: vận chuyển lệnh từ RAM đến CPU Bus liệu vận chuyển liệu CPU, RAM I/O module Bus địa chỉ: vận chuyển địa phát từ CPU để xác định vị trí lệnh liệu Bus điều khiển: vận chuyển tín hiệu điều khiển từ CPU, đọc hay ghi, trao đổi liệu với RAM hay I/O module Ngồi ra, bus điều khiển vận chuyển tín hiệu báo hiệu từ RAM I/O module tới CPU Hình Sơ đồ khối hệ thống máy tính Xét hệ thống nhấp nháy đèn LED Đây hệ thống máy tính đơn giản, có chức Trong hệ thống này, ta cần viết phần mềm, nạp lên vi điều khiển Phần mềm quyền sử dụng tồn phần cứng, CPU, RAM, I/O module Xét máy tính cá nhân Đây hệ thống máy tính phức tạp, có nhiều chức Trong hệ thống này, có nhiều phần mềm chạy, ví dụ phần mềm Microsoft Word, Window Media Player, Internet Download Manager Vì phần cứng có CPU đơn lõi, ổ cứng, lại có nhiều phần mềm sử dụng, nên xảy tranh chấp Để tránh xảy vấn đề này, cần có phần mềm đứng quản lý việc sử dụng phần cứng Phần mềm hệ điều hành (Operating System) Hệ điều hành Thuật ngữ "hệ điều hành" hiểu theo nghĩa: Theo nghĩa hẹp, hệ điều hành phần mềm quản lý tài nguyên phần cứng Phần mềm gọi nhân (kernel) Ví dụ Linux kernel Theo nghĩa rộng, hệ điều hành gói phần mềm gồm: Phần mềm quản lý tài nguyên phần cứng Các phần mềm quan trọng khác phần mềm giao diện dòng lệnh (CLI – Command Line Interpreter), phần mềm giao diện đồ họa (GUI – Graphic User Interface), … Các thuật ngữ ta thường dùng hệ điều hành Windows 7, Ubuntu, macOS, Android… hiểu theo nghĩa rộng Tuy nhiên, khóa học này, hiểu rằng: hệ điều hành đồng nghĩa với kernel Với đời hệ điều hành, phần mềm chia làm loại: hệ điều hành chương trình ứng dụng (gọi tắt chương trình) Chương trình tạo sau trình biên dịch mã nguồn (source code) Các lệnh liệu chương trình đóng gói thành file lưu ổ cứng Chương trình có hàm main, nơi bắt đầu trình thực thi Quá trình CPU thực thi chương trình gọi làtiến trình (process) Tiến trình tạo ta khởi chạy chương trình, ví dụ cách nhấp đúp chuột vào biểu tượng chương trình Khi đó, hệ điều hành cấp phát vùng nhớ RAM, đưa chương trình (hoặc phần chương trình) vào vùng nhớ Hệ điều hành tạo cấu trúc liệu, chứa thông tin số định danh (ID), tên, thời điểm tạo, vị trí RAM, Sau đó, CPU bắt đầu thực thi từ hàm main Kể từ lúc này, ta có tiến trình Để cho dễ hình dung, bạn liên tưởng sau: bạn tương tự CPU, kế hoạch học ngoại ngữ bạn tương tự chương trình, cịn q trình bạn thực kế hoạch tương tự tiến trình Ngồi ra, bạn thực nhiều kế hoạch khác, kế hoạch tán gái, kế hoạch tập thể hình, Mỗi q trình quản lý mơ tả Dưới ví dụ mơ tả q trình tán gái: Định danh trình Tên trình Ngày bắt đầu Trạng thái 10 Tán gái 10/10/2010 Đang tạm dừng Ngồi giữ vai trị quản lý phần cứng, hệ điều hành cung cấp dịch vụ sử dụng phần cứng cho tiến trình (hình 2) Vì vậy, lập trình viên khơng cần phải hiểu phần cứng có cấu tạo nào, hoạt động Họ cần biết phần cứng có chức gì, hệ điều hành cung cấp dịch vụ để sử dụng chức ấy, tạo chương trình ứng dụng Hình Sơ đồ khối chức hệ điều hành Linux kernel Vào năm 1991, dựa UNIX kernel, Linus Torvalds tạo Linux kernel chạy máy tính ơng Dựa vào chức hệ điều hành, Linux kernel chia làm thành phần (hình 3): Process management: có nhiệm vụ quản lý tiến trình, bao gồm cơng việc: Tạo/hủy tiến trình Lập lịch cho tiến trình Đây thực chất lên kế hoạch: CPU thực thi chương trình nào, thực thi bao lâu, chương trình Hỗ trợ tiến trình giao tiếp với Đồng hoạt động tiến trình để tránh xảy tranh chấp tài nguyên Memory management: có nhiệm vụ quản lý nhớ, bao gồm công việc: Cấp phát nhớ trước đưa chương trình vào, thu hồi nhớ tiến trình kết thúc Đảm bảo chương trình có hội đưa vào nhớ Bảo vệ vùng nhớ tiến trình Device management: có nhiệm vụ quản lý thiết bị, bao gồm công việc: Điều khiển hoạt động thiết bị Giám sát trạng thái thiết bị Trao đổi liệu với thiết bị Lập lịch sử dụng thiết bị, đặc biệt thiết bị lưu trữ (ví dụ ổ cứng) File system management: có nhiệm vụ quản lý liệu thiết bị lưu trữ (như ổ cứng, thẻ nhớ) Quản lý liệu gồm cơng việc: thêm, tìm kiếm, sửa, xóa liệu Networking management: có nhiệm vụ quản lý gói tin (packet) theo mơ hình TCP/IP System call Interface: có nhiệm vụ cung cấp dịch vụ sử dụng phần cứng cho tiến trình Mỗi dịch vụ gọi system call Hình Kiến trúc Linux kernel đứng góc độ quản lý (management point of view) Khi triển khai thực tế, mã nguồn Linux kernel gồm thư mục sau: Bảng Một số thư mục mã nguồn Linux kernel Thư mục Vai trò /arch Chứa mã nguồn giúp Linux kernel thực thi nhiều kiến trúc CPU khác x86, alpha, arm, mips, mk68, powerpc, sparc,… /block Chứa mã nguồn triển khai nhiệm vụ lập lịch cho thiết bị lưu trữ /drivers Chứa mã nguồn để triển khai nhiệm vụ điều khiển, giám sát, trao đổi liệu với thiết bị /fs Chứa mã nguồn triển khai nhiệm vụ quản lý liệu thiết bị lưu trữ /ipc Chứa mã nguồn triển khai nhiệm vụ giao tiếp tiến trình /kernel Chứa mã nguồn triển khai nhiệm vụ lập lịch đồng hoạt động tiến trình /mm Chứa mã nguồn triển khai nhiệm vụ quản lý nhớ /net Chứa mã nguồn triển khai nhiệm vụ xử lý gói tin theo mơ hình TCP/IP Các khái niệm thường dùng Trong phần này, tìm hiểu số khái niệm hay sử dụng: User space kernel space User mode kernel mode System call ngắt Process context interrupt context Bộ nhớ RAM chứa lệnh/dữ liệu dạng nhị phân Linux kernel tiến trình RAM chia làm miền (hình 4): Kernel space vùng không gian chứa lệnh liệu kernel User space vùng không gian chứa lệnh liệu tiến trình Hình Kiến trúc Linux kernel đứng góc độ thực thi CPU (execution point of view) CPU có chế độ thực thi (hình 4): Khi CPU thực thi lệnh kernel, hoạt động chế độkernel mode Khi chế độ này, CPU thực lệnh tập lệnh nó, CPU truy cập địa không gian địa Khi CPU thực thi lệnh tiến trình, hoạt động chế độuser mode Khi chế độ này, CPU thực phần tập lệnh nó, CPU phép truy cập phần không gian địa Để cho dễ hình dung, ta liên tưởng này: CPU giống bạn, tiến trình giống cơng việc sếp giao cho bạn, cịn kernel giống cơng việc vợ giao cho bạn Khi bạn thực thi việc sếp, bạn thực cho xong, khơng nỗ lực hết mình, việc mà ảnh hưởng đến quyền lợi bạn bạn khơng làm Thái độ làm việc bạn giống chế độ user mode CPU Khi bạn thực thi việc vợ, bạn thực việc tồn tâm tồn ý, nỗ lực hết mình, việc Thái độ làm việc bạn giống chế độ kernel mode CPU Để hiểu rõ hơn, ta xét tiến trình hình Tiến trình gồm nhiều lệnh nhị phân, tương ứng với lệnh C CPU lấy lệnh thực thi Lệnh thứ nhất, "a = + 10", lệnh tính tốn, CPU thực thi chế độ user mode Lệnh thứ hai, "printf("%d", a)", lệnh vào/ra Hàm "printf" gọi system call "write" để yêu cầu Linux kernel in thơng tin hình Khi đó, CPU chuyển sang chế độ kernel mode để thực thi lệnh Linux kernel Hình Các chế độ hoạt động CPU Khi tiến trình cần sử dụng dịch vụ kernel, tiến trình gọi mộtsystem call System call tương tự hàm bình thường khác (library call) Chỉ có điều, library call cung cấp thư viện user space, system call cung cấp kernel Do đó, tiến trình gọi library call, CPU giữ nguyên chế độ thực thi user mode Cịn tiến trình gọi system call, CPU phải chuyển sang chế độ kernel mode để thực thi lệnh kernel (hình 5) Lúc này, ta nói rằng, CPU thực thi chế độ kernel mode, ngữ cảnh process context Sau kernel thực xong yêu cầu, kernel gửi trả kết cho tiến trình Lúc này, CPU lại chuyển sang chế độ user mode để thực thi tiếp lệnh tiến trình Ngồi system call, ngắt nguyên nhân khiến CPU chuyển chế độ thực thi sang kernel mode (hình 5) Khi có thiết bị muốn trao đổi liệu với CPU, gửi tín hiệu ngắt tới CPU cách nâng điện áp chân INT CPU Khi đó, CPU ngừng thực thi lệnh tiến trình lại, chuyển sang chế độ kernel mode thực thi chương trình đặc biệt kernel để xử lý tín hiệu ngắt Lúc này, ta nói CPU thực thi chế độ kernel mode, ngữ cảnh interrupt context Sau xử lý xong, CPU trở lại chế độ user mode tiếp tục thực lệnh tiến trình Case study Các phân phối Linux Cùng với đóng góp cộng đồng, ngày nay, Linux kernel sử dụng nhiều thiết bị, từ máy tính cá nhân (PC), máy chủ (server) hệ thống nhúng định tuyến (router), truy cập không dây (Wireless Access Point), điện thoại thông minh (smartphone), tivi thông minh (smart tivi), thiết bị hỗ trợ tivi (set-top box), … Để dễ sử dụng hơn, Linux kernel, thiết bị nói sử dụng thêm phần mềm tiện ích (utility software) Nhưng trình phát triển, Linux kernel phần mềm tiện ích có nhiều phiên khác Do đó, việc chọn phiên phần mềm tiện ích tương thích với phiên Linux kernel khó khăn Để giải vấn đề trên, Linux kernel phần mềm tiện ích đóng gói lại với nhau, tạo thànhbản phân phối Linux (Linux distribution) Các phân phối khác số yếu tố hỗ trợ thiết bị khác nhau, phần mềm tiện ích kèm khác nhau, khả bảo mật khác nhau,… Các phân phối Linux sử dụng phổ biến PC là: Ubuntu, Redhat, Fedora, Centos, Debian, Gentoo, Open Suse Các phân phối Linux hay dùng thiết bị nhúng là:MontaVista, TimeSys, KaeilOS server Cài đặt phân phối Ubuntu Khóa học hướng dẫn bạn phát triển Linux driver cho hệ thống máy tính sử dụng xử lý Intel Để hiểu lý thuyết hơn, cần có mơi trường để thực hành Do đó, việc cần làm cài đặt môi trường phát triển cho học sau Vì nhiều bạn sử dụng hệ điều hành Windows, nên cài đặt phân phối Linux máy ảo Do Ubuntu sử dụng phổ biến Việt Nam, nên khóa học chọn phân phối Ubuntu làm môi trường phát triển Các bước cài đặt sau: Bước 1: tải phần mềm VirtualBox cài đặt Bước 2: tải phân phối Ubuntu 16.04 cho máy PC32 bit 64 bit Bước 3: tạo máy ảo chạy hệ điều hành Ubuntu 16.04 theo videosau Hình Ubuntu 16.04 sử dụng Linux kernel 4.4 Sau cài đặt xong, ta mở Terminal lên (Ctrl + Alt + T), gõ lệnhuname -ra Ta kết hình Có thể thấy rằng, phân phối Ubuntu 16.04 sử dụng Linux kernel 4.4 Các bạn tham khảo mã nguồn Linux kernel 4.4 Kết luận Hệ thống máy tính gồm phần cứng phần mềm Phần cứng gồm khối chức năng: CPU, RAM, I/O module hệ thống bus RAM nơi chứa phần mềm Phần mềm tập lệnh liệu CPU có nhiệm vụ đọc lệnh RAM thực thi Hệ điều hành phần mềm quản lý tài nguyên phần cứng Nó có tên gọi khác kernel Nếu có nhiều người dùng sử dụng hệ thống, nhiều chương trình chạy hệ thống, hệ thống buộc phải sử dụng hệ điều hành Mục đích để tránh xảy tranh chấp tài nguyên nhiều người dùng, chương trình Ngồi ra, hệ điều hành giúp che giấu phức tạp phần cứng, cung cấp dịch vụ cho tiến trình thơng qua system call Tiến trình trình CPU thực thi chương trình Xét mặt chức năng, Linux kernel bao gồm thành phần: process management, memory management, device management, file system management, networking management system call interface Bộ nhớ chia làm vùng: user space chứa tiến trình, kernel space chứa kernel Khi thực thi lệnh user space, CPU hoạt động chế độ user mode Khi thực thi lệnh kernel space, CPU hoạt động chế độ kernel mode CPU chuyển từ chế độ user mode sang kernel mode tiến trình phát system call để yêu cầu kernel cung cấp dịch vụ, thiết bị gửi tín hiệu ngắt tới CPU Nếu system call, ta nói CPU hoạt động chế độ kernel mode, ngữ cảnh process context Nếu ngắt, ta nói CPU hoạt động chế độ kernel mode, ngữ cảnh interrupt context ... Hình Sơ đồ khối chức hệ điều hành Linux kernel Vào năm 1991, dựa UNIX kernel, Linus Torvalds tạo Linux kernel chạy máy tính ơng Dựa vào chức hệ điều hành, Linux kernel chia làm thành phần (hình... call Hình Kiến trúc Linux kernel đứng góc độ quản lý (management point of view) Khi triển khai thực tế, mã nguồn Linux kernel gồm thư mục sau: Bảng Một số thư mục mã nguồn Linux kernel Thư mục Vai... để yêu cầu Linux kernel in thơng tin hình Khi đó, CPU chuyển sang chế độ kernel mode để thực thi lệnh Linux kernel Hình Các chế độ hoạt động CPU Khi tiến trình cần sử dụng dịch vụ kernel, tiến

Ngày đăng: 30/04/2022, 12:27

HÌNH ẢNH LIÊN QUAN

Giới thiệu về Linux kernel Giới thiệu - Giới thiệu về Linux kernel
i ới thiệu về Linux kernel Giới thiệu (Trang 1)
Hình 1 Sơ đồ khối của một hệ thống máy tính - Giới thiệu về Linux kernel
Hình 1 Sơ đồ khối của một hệ thống máy tính (Trang 1)
Để cho dễ hình dung, các bạn hãy liên tưởng như sau: bạn tương tự như CPU, kế hoạch học ngoại ngữ của bạn tương tự như chương trình, còn quá trình bạn thực hiện kế hoạch đó tương tự như tiến trình - Giới thiệu về Linux kernel
cho dễ hình dung, các bạn hãy liên tưởng như sau: bạn tương tự như CPU, kế hoạch học ngoại ngữ của bạn tương tự như chương trình, còn quá trình bạn thực hiện kế hoạch đó tương tự như tiến trình (Trang 2)
Networking management: có nhiệm vụ quản lý các gói tin (packet) theo mô hình TCP/IP. - Giới thiệu về Linux kernel
etworking management: có nhiệm vụ quản lý các gói tin (packet) theo mô hình TCP/IP (Trang 3)
/net Chứa mã nguồn triển khai nhiệm vụ xử lý các gói tin theo mô hình TCP/IP. - Giới thiệu về Linux kernel
net Chứa mã nguồn triển khai nhiệm vụ xử lý các gói tin theo mô hình TCP/IP (Trang 4)
Để hiểu rõ hơn, ta xét tiến trình 1 trong hình 4. Tiến trình này gồm nhiều lệnh nhị phân, tương ứng với 2 lệnh C - Giới thiệu về Linux kernel
hi ểu rõ hơn, ta xét tiến trình 1 trong hình 4. Tiến trình này gồm nhiều lệnh nhị phân, tương ứng với 2 lệnh C (Trang 5)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w