Lập trình nhân linux

61 75 2
Lập trình nhân linux

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Sự phát triển của phần mềm mã nguồn mở, nảy sinh một vấn đề là phải có những công cụ lập trình thích hợp trên nền tảng mã nguồn mở như các hệ điều hành linux, unix. Trước yêu cầu đó thì đã xuất hiện một công cụ lập trình rất hiệu quả là lập trình shell ,Linux kernel và module nhân. Linux kernel cũng giống như một thư viện giúp lập trình viên xây dựng các kernel module

BAN CƠ YẾU CHÍNH PHỦ HỌC VIỆN KỸ THUẬT MẬT MÃ BÁO CÁO BÀI TẬP LỚN LẬP TRÌNH NHÂN LINUX Giảng viên hướng dẫn: TS Hà Nội,03-2022 Sinh viên thực hiện: Nhóm 8 LỜI MỞ ĐẦU Hiện nay trong thời đại khoa học kỹ thuật phát triển, bên cạnh sự phát triển của các phần mềm mã bản quyền, phần mềm mã nguồn đóng các phần mềm mã nguồn mở cũng có những bước phát triển mạnh mẽ Càng ngày càng có nhiều người tham gia vào thiết kế, lập trình mã nguồn mở Việc các phần mềm mã nguồn mở tung toàn bộ chương trình của mình lên mạng làm cho phần mềm mã nguồn mở dễ dàng tiếp cận hơn với mọi người, dễ dàng được phát triển hơn, được cả một cộng đồng đóng góp chung sức phát triển Sự phát triển của phần mềm mã nguồn mở, nảy sinh một vấn đề là phải có những công cụ lập trình thích hợp trên nền tảng mã nguồn mở như các hệ điều hành linux, unix Trước yêu cầu đó thì đã xuất hiện một công cụ lập trình rất hiệu quả là lập trình shell ,Linux kernel và module nhân Linux kernel cũng giống như một thư viện giúp lập trình viên xây dựng các kernel module Để tìm hiểu kỹ hơn về Linux Kernel và ngôn ngữ shell, nhóm em xin trình bày báo cáo về “Lập trình nhân Linux” Nội dung báo cào gồm 2 phần:  Phần 1: Giới thiệu chung  Phần 2: Xây dựng chương trình LỜI CẢM ƠN Chúng em xin chân thành cảm ơn sự hướng dẫn của thầy Phạm Văn Hưởng, nhóm đã có thể hoàn thành tương đối tốt đề tài , đồng thời rút ra được các kinh nghiệm cho mình về nhiều mặt, thấy được những hạn chế và các lỗi cơ bản hay gặp trong quá trình làm bài tập lớn Mặc dù đã cố gắng trong việc thực hiện đề tài, nhưng với những hạn chế về kiến thức, kinh nghiệm cũng như thời gian biểu, sản phẩm của chúng em mới chỉ dừng lại ở mức tương đối ổn Bài tập lớn chắc chắn không thể tránh khỏi thiếu sót, nên chúng em rất mong nhận được đánh giá và góp ý của thầy/cô để chúng em có thể cải thiện kĩ năng của mình tốt hơn nữa trong tương lai Chúng em xin chân thành cảm ơn! MỤC LỤC DANH MỤC KÍ HIỆU VÀ CHỮ VIẾT TẮT .i DANH MỤC HÌNH VẼ ii DANH MỤC BẢNG BIỂU iv CHƯƠNG 1 GIỚI THIỆU CHUNG 1 1.1 Tổng quan về Linux 1 1.1.1 Linux là gì ? 1 1.1.2 Các phiên bản của hệ điều hành Linux 2 1.1.3 Ưu nhược điểm 2 1.1.4 Hiệu năng và ứng dụng 3 1.2 Tổng quan về lập trình Shell 4 1.2.1 Shell là gì? 4 1.2.2 Các loại Shell thông dụng .4 1.2.3 Chức năng của Shell .5 1.3 Tổng quan về Linux Kernel 5 1.3.1 Linux Kernel là gì? 5 1.3.2 Chức năng của Linux Kernel 6 1.4 Tổng quan về công cụ hỗ trợ 6 1.4.1 Phần mềm Visual Studio Code .6 1.4.2 Phần mềm Ubuntu .9 1.4.3 Makefile .11 CHƯƠNG 2 XÂY DỰNG CHƯƠNG TRÌNH 13 2.1 Lập trình Shell .13 2.1.1 Quản lý file 13 2.1.2 Lập lịch tác vụ 19 2.1.3 Thiết lập thời gian hệ thống 21 2.1.4 Cài đặt/gỡ bỏ chương trình tự động 23 2.2 Lập trình trong Ubuntu .24 2.2.1 Process .24 2.2.2 Quản lý file 26 2.2.3 Socket 30 2.2.4 Network .35 2.3 Xây dựng mô-đun nhân và tích hợp vào hệ thống 37 2.3.1 Chương trình 37 2.3.2 Đăng kí một device 39 2.3.3 Chương trình tương tác với driver 40 2.4 Build an Ubuntu IoT image 40 2.4.1 Tạo hình ảnh Linux với Buildroot .40 2.4.2 Khởi động Linux trong Virtual Board trong QEMU 48 KẾT LUẬN 52 TÀI LIỆU THAM KHẢO 53 DANH MỤC KÍ HIỆU VÀ CHỮ VIẾT TẮT DAG Directed Acyclic Graph IDE Integrated Development GIT Environment GNU Graphical User Interface General Public License DANH MỤC HÌNH V i Hình 1 1 Các phiên bản hệ điều hành Linux .2 Hình 1 2 Visual Studio Code 7 Hình 1 3 Ubutu 10 YHình 2 1 Code quản lý file 14 Hình 2 2 Kết quả thực thi chương trình Tạo mới file 14 Hình 2 3 Kết quả thực thi chương trình Tạo mới folder 15 Hình 2 4 Kết quả thực thi chương trình Xóa file .16 Hình 2 5 Kết quả thực thi chương trình Xóa folder 16 Hình 2 6 Kết quả thực thi chương trình tạo mới file hoặc folder 17 Hình 2 7 Kết quả thực thi chương trình Hiển thị danh sách file và thư mục 18 Hình 2 8 Kết quả thực thi chương trình Ddiefu hướng thư mục con hoặc cha 18 Hình 2 9 Kết quả thực thi chương trình Tạo mới tác vụ 20 Hình 2 10 Kết quả thực thi chương trình tạo List tác vụ 21 Hình 2 11 Kết quả thực thi chương trình Lập lịch tác vụ 21 Hình 2 12 Kết quả thực thi thiết lập thời gian hệ thống 21 Hình 2 13 Kết quả thực thi chương trình Thiết lập thời gian hệ thống 23 Hình 2 14 Kết quả thực thi Cài đặt chương trình tự động .23 Hình 2 15 Kết quả thực thi Gỡ bỏ chương trình tự động 24 Hình 2 16 Kết quả thực thi chương trình Xem process id của chương trình hiện tại 26 Hình 2 17 Kết quả thực thi chương trình lấy ra id process hiện tại 27 Hình 2 18 Kết quả thực thi lệnh liệt kê file 28 Hình 2 19 Kết quả thực thi chương trình Tạo file 29 Hình 2 20 Kết quả thực thi chương trình Xóa file 29 Hình 2 21 Kết quả thực thi hàm Đọc file 30 Hình 2 22 Kết quả thực thi chương trình Tcp 31 Hình 2 23 Kết quả thực thi chương trình Udp 32 Hình 2 24 Kết quả thực thi chương trình Raw 33 Hình 2 25 Kết quả thực thi chương trình Raw 34 Hình 2 26 Kết quả thực thi chương trình TCP6 .35 Hình 2 27 Kết quả thực thi chương trình udp6 35 Hình 2 28 Kết quả thực thi chương trình raw6 36 Hình 2 29 Kết quả thực thi chương trình Network 38 Hình 2 30 Kết quả thực hiện lệnh đăng kí một device : 40 ii Hình 2 31 Kết quả thực thi chương trình xem id của device đã đăng kí 40 Hình 2 32 Kết quả thực thi chương trình Đăng ký 1 device 41 Hình 2 33 Kết quả thực thi chương trình tương tác với device .41 Hình 2 34 Cây thư mục Board 43 Hình 2 35 Kết quả định cấu hình hình ảnh tùy chỉnh 45 Hình 2 36 Make buildroot 46 Hình 2 37 Cài đặt môi trường khởi chạy máy ảo qemu 49 Hình 2 38 Chạy qemu 50 Hình 2 39 Kết quả thực thi ví dụ 51 iii DANH MỤC BẢNG BIỂU Bảng 1 1 Bảng các loại Shell thông dụng 4 iv CHƯƠNG 1 GIỚI THIỆU CHUNG 1.1 Tổng quan về Linux 1.1.1 Linux là gì ? Linux là một hệ điều hành máy tính được phát được phát triển dựa vào mô hình “Phần mềm tự do” (free software) và việc phát triển phần mềm mã nguồn mở (open- source software) Thành phần cơ bản của Linux là hạt nhân Linux (Linux kernel), là nhân hệ điều hành được phát triển bởi Linus Torvalds và được công bố lần đầu tiên vào tháng 9 năm 1991 với phiên bản 0.01 Hầu hết các ngôn ngữ lập trình đều hỗ trợ Linux trực tiếp hoặc thông qua các ports bên thứ ba của cộng đồng Các công cụ phát triển ban đầu được sử dụng để xây dựng cả ứng dụng Linux và chương trình hệ điều hành được tìm thấy trong GNU toolchain, bao gồm GNU Compiler Collection (GCC) và GNU Build System Trong số đó, GCC cung cấp trình biên dịch cho Ada, C, C++, Go và Fortran Nhiều ngôn ngữ lập trình có một bản triển khai tham khảo đa nền tảng hỗ trợ Linux, ví dụ như PHP, Perl, Ruby, Python, Java, Go, Rust và Haskell Phát hành lần đầu năm 2003, dự án LLVM cung cấp một trình biên dịch mã nguồn mở đa nền tảng khác cho nhiều ngôn ngữ Trình biên dịch độc quyền cho Linux bao gồm Intel C++ Compiler, Sun Studio, và IBM XL C/C++ Compiler BASIC dưới dạng Visual Basic được hỗ trợ dưới các hình thức như Gambas, FreeBASIC, và XBasic, và BASIC nói chung như QuickBASIC hoặc Turbo BASIC dưới dạng QB64 Một tính năng phổ biến của các hệ thống tương tự Unix là bao gồm các ngôn ngữ lập trình truyền thống có mục đích cụ thể như scripting, xử lý văn bản hay quản lý và cấu hình hệ thống nói chung Các bản phân phối Linux hỗ trợ các shell script, awk, sed và make Nhiều chương trình cũng có ngôn ngữ lập trình nhúng để hỗ trợ việc cấu hình hoặc dùng trong lập trình Ví dụ, biểu thức chính quy được hỗ trợ trong các chương trình như grep và locate, MTA Sendmail truyền thống trên Unix chứa hệ thống scripting Turing-đầy đủ của riêng nó, và trình soạn thảo văn bản nâng cao GNU Emacs được xây dựng xung quanh trình một thông dịch Lisp thông dụng Hầu hết các bản phân phối cũng bao gồm hỗ trợ cho PHP, Perl, Ruby, Python và các ngôn ngữ động khác Mặc dù không phổ biến bằng, nhưng đôi khi Linux cũng hỗ trợ C# (thông qua Mono), Vala, và Scheme Guile Scheme đóng vai trò là một ngôn ngữ scripting của các tiện ích hệ thống GNU, tìm cách làm cho các chương trình C nhỏ, tĩnh tuân theo quy tắc Unix có thể được mở rộng nhanh chóng và linh hoạt thông qua một hệ thống scripting với lập trình hàm Một số máy ảo Java và bộ công cụ phát triển 1

Ngày đăng: 16/03/2024, 01:09

Tài liệu cùng người dùng

Tài liệu liên quan