1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Báo cáo bài tập lớn lập trình nhân linux chương 1 lập trình shell

69 17 0

Đ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

Thông tin cơ bản

Tiêu đề Báo Cáo Bài Tập Lớn Lập Trình Nhân Linux
Tác giả Trương Quốc Quân, Nguyễn Việt Tùng, Phạm Thị Dung
Người hướng dẫn TS. Phạm Văn Hưởng
Trường học Học Viện Kỹ Thuật Mật Mã
Chuyên ngành Kỹ Thuật Mật Mã và Công Nghệ Thông Tin
Thể loại Báo cáo bài tập lớn
Năm xuất bản 2022
Thành phố Hà Nội
Định dạng
Số trang 69
Dung lượng 4,48 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Cấu trúc

  • CHƯƠNG 1. Lập trình shell (9)
    • 1.1. File management (9)
      • 1.1.1. Phân tích thiết kế (9)
      • 1.1.2. Thực thi (10)
    • 1.2. Auto install and uninstall (12)
      • 1.2.1. Phân tích thiết kế (12)
      • 1.2.2. Thực thi (13)
    • 1.3. Task management (14)
      • 1.3.1. Phân tích thiết kế (14)
      • 1.3.2. Thực thi (15)
    • 1.4. Time management (17)
      • 1.4.1. Phân tích thiết kế (17)
      • 1.4.2. Thực thi (18)
  • CHƯƠNG 2. Lập trình C (21)
    • 2.1. File management (21)
      • 2.1.1. Phân tích thiết kế (21)
      • 2.1.2. Thực thi (22)
    • 2.2. Network management (25)
      • 2.2.1. Phân tích thiết kế (25)
      • 2.2.2. Thực thi (26)
    • 2.3. Process management (27)
      • 2.3.1. Phân tích thiết kế (27)
      • 2.3.2. Thực thi (28)
    • 2.4. Socket management (31)
      • 2.4.1. Phân tích thiết kế (31)
      • 2.4.2. Thực thi (32)
  • CHƯƠNG 3. LẬP TRÌNH VÀ TÍCH HỢP KERNEL (38)
    • 3.1. Tổng quan (38)
    • 3.2. Macro (40)
    • 3.3. Phần bài tập (40)
  • CHƯƠNG 4. Memory mapping (53)
    • 4.1. Tổng quan (53)
    • 4.2. Các struct được sử dụng cho quá trình ánh xạ bộ nhớ (54)
      • 4.2.1. Struct page (54)
      • 4.2.2. Struct vm_area_struct (55)
      • 4.2.3. Struct mm_struct (56)
    • 4.3. Ánh xạ bộ nhớ trong driver thiết bị (56)
    • 4.4. Phần thực hành (58)
      • 4.4.1. Ánh xạ bộ nhớ vật lý liên tục tới không gian người dùng (59)
      • 4.4.2. Ánh xạ bộ nhớ vật lý không liệ tục tới không gian người dùng (0)
      • 4.4.3. Các thao tác đọc ghi trong vùng nhớ đã ánh xạ (61)
      • 4.4.4. Hiển thị vùng nhớ đã ánh xạ sử dụng procfs (62)
    • 4.5. Hướng dẫn thiết lập hệ thống (63)
      • 4.5.1. Thiết lập hệ thống máy ảo và lấy khung từ github (63)
      • 4.5.2. Đảm bảo các dependencies cho máy (65)
      • 4.5.3. Sản sinh khung xương mã – khởi động máy ảo qemu (66)
  • Code 1.1: Code thực thi file management (0)
  • Code 1.2: Code thực thi auto install and uninstall (0)
  • Code 1.3: Code thực thi task management (0)
  • Code 1.4: Code thực thi time management (0)
  • Code 2.1: Code thực thi file management trong C (0)
  • Code 2.2: Code thực thi network management trong lập trình C (0)
  • Code 2.3: Code thực thi process management ở trong lập trình C (0)
  • Code 2.4: Code thực thi socket management ở trong lập trình C (0)

Nội dung

Bảng 1.1: Mô tả chức năng list file Mô tả Chức năng này sẽ tiến hành tạo ra file ở trong thư mục hiện tại và sử dụng tên được truyền vào làm tên file.. Chức năng Remove fileMô tả Chức nă

Trang 1

HỌC VIỆN KỸ THUẬT MẬT MÃ

KHOA CÔNG NGHỆ THÔNG TIN

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 Phạm Văn Hưởng

Sinh viên thực hiện: Trương Quốc Quân – CT030440

Nguyễn Việt Tùng – CT030454Phạm Thị Dung – CT030409

Hà Nội, 2022

Trang 2

MỤC LỤC

CHƯƠNG 1 Lập trình shell 9

1.1 File management 9

1.1.1 Phân tích thiết kế 9

1.1.2 Thực thi 11

1.2 Auto install and uninstall 13

1.2.1 Phân tích thiết kế 13

1.2.2 Thực thi 14

1.3 Task management 15

1.3.1 Phân tích thiết kế 15

1.3.2 Thực thi 16

1.4 Time management 19

1.4.1 Phân tích thiết kế 19

1.4.2 Thực thi 20

CHƯƠNG 2 Lập trình C 23

2.1 File management 23

2.1.1 Phân tích thiết kế 23

2.1.2 Thực thi 24

2.2 Network management 28

2.2.1 Phân tích thiết kế 28

2.2.2 Thực thi 29

2.3 Process management 30

2.3.1 Phân tích thiết kế 30

2.3.2 Thực thi 31

2.4 Socket management 35

2.4.1 Phân tích thiết kế 35

2.4.2 Thực thi 37

Trang 3

CHƯƠNG 3 LẬP TRÌNH VÀ TÍCH HỢP KERNEL 43

3.1 Tổng quan 43

3.2 Macro 45

3.3 Phần bài tập 45

CHƯƠNG 4 Memory mapping 59

4.1 Tổng quan 59

4.2 Các struct được sử dụng cho quá trình ánh xạ bộ nhớ 60

4.2.1 Struct page 60

4.2.2 Struct vm_area_struct 61

4.2.3 Struct mm_struct 62

4.3 Ánh xạ bộ nhớ trong driver thiết bị 62

4.4 Phần thực hành 64

4.4.1 Ánh xạ bộ nhớ vật lý liên tục tới không gian người dùng 65

4.4.2 Ánh xạ bộ nhớ vật lý không liệ tục tới không gian người dùng 66

4.4.3 Các thao tác đọc ghi trong vùng nhớ đã ánh xạ 67

4.4.4 Hiển thị vùng nhớ đã ánh xạ sử dụng procfs 67

4.5 Hướng dẫn thiết lập hệ thống 69

4.5.1 Thiết lập hệ thống máy ảo và lấy khung từ github 69

4.5.2 Đảm bảo các dependencies cho máy 71

4.5.3 Sản sinh khung xương mã – khởi động máy ảo qemu 72

Trang 4

DANH MỤC HÌNH VẼ

Hình 1.1: sơ đồ usecase mô tả các chức năng trong file management 9

Hình 1.2: Biểu đồ usecase chức năng auto install và uninstall 13

Hình 1.3: Sơ đồ usecase biểu thị task management 15

Hình 1.4: Biểu đồ usecase chức năng task management 19

Hình 2.1: Usecase file management trong lập trình C 23

Hình 2.2: Usecase network management trong lập trình C 28

Hình 2.3: Usecase process management trong lập trình C 31

Hình 2.4: Usecase socket management ở trong lập trình C 35

Hình 3.1: Mô tả nhân linux 43

Hình 3.2: Lệnh lsmod 44

Hình 3.3:Lệnh insmod 44

Hình 3.4: Lệnh modinfo 44

Hình 3.5: Lệnh rmmod 45

Hình 3.6: Makefile để build module nhân 54

Hình 3.7: Biên dịch module nhân 54

Hình 3.8:Choice = 1 (factory) 55

Hình 3.9: Choice = 2 (matadd) 55

Hình 3.10: Choice = 3 (matnul) 56

Hình 3.11: Choice = 4 (PrimeBetween) 56

Hình 3.12: Choice = 5 (SmallerNumInMatrix) 57

Hình 3.13: Choice = 6 (NumdivisibleByMatrix) 57

Hình 3.14: Choice = 7 (PrimeOfMatrix) 58

Hình 4.1: Cấu trúc địa chỉ 59

Hình 4.2: Virtual memory 60

Hình 4.3: Nội dung file maps 61

Hình 4.4: Ảnh minh hoạ lỗi không tương thích các thư viện 32bit 70

Trang 5

Hình 4.5: Kết quả thực thi chính xác 74

Trang 6

DANH MỤC BẢNG

Bảng 1.1: Mô tả chức năng list file 9

Bảng 1.2: Mô tả chức năng create file 10

Bảng 1.3: Mô tả chức năng remove file 10

Bảng 1.4: Mô tả chức năng show file 10

Bảng 1.5: Mô tả chức năng edit file 10

Bảng 1.6: Mô tả chức năng đổi tên files 10

Bảng 1.7: Mô tả chức năng Copy file 11

Bảng 1.8: Mô tả chức năng auto install 13

Bảng 1.9: Mô tả chức năng auto uninstall 14

Bảng 1.10: Mô tả chức năng list của task management 16

Bảng 1.11: Mô tả chức năng create của task management 16

Bảng 1.12: Mô tả chức năng remove của task management 16

Bảng 1.13: Mô tả chức năng edit của task management 16

Bảng 1.14: Mô tả chức năng info 19

Bảng 1.15: Mô tả chức năng thay đổi giờ hệ thống 19

Bảng 1.16: Mô tả chức năng thay đổi ngày tháng trong hệ thống 20

Bảng 1.17: Mô tả chức năng tự động cập nhật thời gian hệ thống 20

Bảng 2.1: Mô tả chức năng list file trong lập trình C 23

Bảng 2.2: Mô tả chức năng create file ở trong lập trình C 24

Bảng 2.3: Mô tả chức nưng remove file ở trong lập trình C 24

Bảng 2.4: Mô tả chức năng show file trong lập trình C 24

Bảng 2.5: Mô tả list deveice trong lập trình C 29

Bảng 2.6: Mô tả chức năng list process ở trong lập trình C 31

Bảng 2.7: Mô tả chức năng kill process ở trong lập trình C 31

Bảng 2.8: Mô tả list tcp ở trong lập trình C 35

Bảng 2.9: Mô tả list udp ở trong lập trình C 35

Trang 7

Bảng 2.10: Mô tả list raw ở trong lập trình C 36

Bảng 2.11: Mô tả list unix ở trong lập trình C 36

Bảng 2.12: Mô tả list tcp6 ở trong lập trình C 36

Bảng 2.13: Mô tả list udp6 ở trong lập trình C 36

Bảng 2.14: Mô tả list raw6 ở trong lập trình C 37

Trang 8

DANH MỤC CODE

Code 1.1: Code thực thi file management 13

Code 1.2: Code thực thi auto install and uninstall 15

Code 1.3: Code thực thi task management 18

Code 1.4: Code thực thi time management 22

Code 2.1: Code thực thi file management trong C 28

Code 2.2: Code thực thi network management trong lập trình C 30

Code 2.3: Code thực thi process management ở trong lập trình C 34

Code 2.4: Code thực thi socket management ở trong lập trình C 42

Trang 9

Hình 1.1: sơ đồ usecase mô tả các chức năng trong file management

Mô tả Chức năng này sẽ tiến hành thực hiện hiển thị tất cả các file

và thư mục có trong folder hiện tại

Cách thực hiện Thực hiện bằng cách sử dụng chương trình ls ở trong linux

Bảng 1.1: Mô tả chức năng list file

Mô tả Chức năng này sẽ tiến hành tạo ra file ở trong thư mục hiện

tại và sử dụng tên được truyền vào làm tên file

Cách thực hiện Thực hiện bằng cách sử dụng chương trình touch ở trong

linux

Bảng 1.2: Mô tả chức năng create file

Trang 10

Chức năng Remove file

Mô tả Chức năng này sẽ tiến hành xoá file ở trong thư mục hiện

tại, tên file xoá sẽ được truyền vào như là một arument.Cách thực hiện Thực hiện bằng cách sử dụng chương trình rm ở trong linux

Bảng 1.3: Mô tả chức năng remove file

Mô tả Chức năng này sẽ tiến hành hiển thị nội dung của file lên

console

Cách thực hiện Thực hiện bằng cách sử dụng chương trình cat ở trong

linux

Bảng 1.4: Mô tả chức năng show file

Mô tả Chức năng này sẽ tiến hành mở trình soạn thảo trên file,

cho phép thực hiện chỉnh sửa nội dung file

Cách thực hiện Thực hiện bằng cách sử dụng chương trình vim ở trong

linux

Bảng 1.5: Mô tả chức năng edit file

Mô tả Chức năng này sẽ tiến hành đổi tên file

Cách thực hiện Thực hiện bằng cách sử dụng chương trình mv ở trong

linux

Bảng 1.6: Mô tả chức năng đổi tên files

Mô tả Chức năng này sẽ tiến hành copy file bất kỳ được chỉ định

bằng tên file ở trong thư mục hiện tại và copy sang một thưmục khác

Cách thực hiện Thực hiện bằng cách sử dụng chương trình mv ở trong

Trang 11

then echo "chua nhap chuc nang" fi

Trang 12

Code 1.1: Code thực thi file management

1.2 Auto install and uninstall

1.2.1 Phân tích thiết kế

Đối với chức năng auto install and uninstall, chúng em đi xây dựng hai chương trình

đó là install và uninstall

Trang 13

Hình 1.2: Biểu đồ usecase chức năng auto install và uninstall

Mô tả Chức năng install sẽ tiến hành đọc nội dung của file input.txt

và cài đặt tất cả các package được liệt kê ở trong file

Cách thực hiện Đọc từng dòng tên các phần mềm được liệt kê ở trong file

input.txt, sau đó dùng lệnh sudo apt-get với cờ -y để tiếnhành cài đặt tất cả các gói

Bảng 1.8: Mô tả chức năng auto install

Mô tả Chức năng uninstall sẽ tiến hành đọc nội dung của file

input.txt và gỡ cài đặt tất cả các chương trình được liệt kêCách thực hiện Đọc từng dòng tên các phần mềm được liệt kê ở trong file

input.txt, sau đó dùng lệnh sudo apt-get purge với cờ -y đểtiến hành cài đặt tất cả các gói

Bảng 1.9: Mô tả chức năng auto uninstall

Trang 14

Hình 1.3: Sơ đồ usecase biểu thị task management

Trang 15

Bảng 1.10: Mô tả chức năng list của task management

Mô tả Chức năng create sẽ tiến hành tạo lập lịch tiến trình tuỳ

thuộc vào thông tin người dùng nhập vào

Cách thực hiện Sử dụng chương trình crontab để tạo lập lịch tiến trình

Bảng 1.11: Mô tả chức năng create của task management

Cách thực hiện Sử dụng chương trình crontab và text editor để thực hiện

chỉnh sửa nội dung lập lịch

Bảng 1.13: Mô tả chức năng edit của task management

Trang 16

echo "Gio ban se nhap gio va phut de chay."

echo "Hay nhap gio"

crontab l u $LOGNAME | cat

"input.txt" | crontab u $LOGNAME

rm -f "input.txt"

else echo "Aborted\n"

Trang 17

Mô tả Chức năng info sẽ hiển thị thời gian ngày tháng của hệ thống

cũng như múi giờ

Trang 18

Cách thực hiện Sử dụng chương trình date để thực hiện xem giờ của hệ

Mô tả Chức năng automatic được sử dụng để tự động cập nhật lại

thời gian của hệ thốngCách thực hiện Sử dụng chương trình npdate để thực hiện tự động cập nhật

lại thời gian của hệ thống

Bảng 1.17: Mô tả chức năng tự động cập nhật thời gian hệ thống

Trang 21

Hình 2.5: Usecase file management trong lập trình C

Mô tả Chức năng này sẽ tiến hành thực hiện hiển thị tất cả các file

và thư mục có trong folder hiện tại

Cách thực hiện Sử dụng hàm diropen ở trong thư viện <dirent.h> để thực

hiện đọc hết các file và folder trong thư mục được trỏ tới,tiếp theo sử dụng struct dirent để có thể lấy được tên filehoặc tên folder, khi đã có được tên rồi thì tiến hành in ramàn hình

Bảng 2.18: Mô tả chức năng list file trong lập trình C

Mô tả Chức năng này sẽ tiến hành tạo ra file ở trong thư mục hiện

tại và sử dụng tên được truyền vào làm tên file

Cách thực hiện Thực hiện kiểm tra param xem đã truyền vào tên file chưa,

nếu chưa sẽ báo lỗi Khi đã có tên file, sử dụng hàm open ở

Trang 22

trong thư viện <fcntl.h> với cờ là O_CREAT kèm theothuộc tính file là 0666.

Bảng 2.19: Mô tả chức năng create file ở trong lập trình C

Mô tả Chức năng này sẽ tiến hành xoá file ở trong thư mục hiện

tại, tên file xoá sẽ được truyền vào như là một arument.Cách thực hiện Sử dụng hàm unlink ở trong thư viện <unistd.h> để thực

hiện xoá file

Bảng 2.20: Mô tả chức nưng remove file ở trong lập trình C

Mô tả Chức năng này sẽ tiến hành hiển thị nội dung của file lên

console

Cách thực hiện Thực hiện bằng cách mở file với cờ O_RDONLY và tiến

hành đọc file và hiển thị nội dung file trên console đến hếtfile

Bảng 2.21: Mô tả chức năng show file trong lập trình C

Trang 25

Chức năng network management bao gồm chức năng list ra các network deveice.

Hình 2.6: Usecase network management trong lập trình C

Mô tả Chức năng này sẽ tiến hành hiển thị tất cả các network

deveice trong máy

Trang 26

Cách thực hiện Sử dụng struct ifaddr trong thư viện <ifaddrs.h> để có thể

liệt kê được toàn bộ các network deveice trong máy Thôngtin được in ra bao gồm deveice name, protocol và address

Bảng 2.22: Mô tả list deveice trong lập trình C

void list_netdevice(int argc, char *argv[]) {

struct ifaddrs *addresses, *address;

int status, family, family_size;

Trang 27

memset(buffer, 0, sizeof(buffer));

getnameinfo(address->ifa_addr, family_size, buffer,sizeof(buffer), 0, 0, NI_NUMERICHOST);

printf("%-15s%-15s%-15s\n", address->ifa_name,family == AF_INET ? "IPv_4" : "IPv_6", buffer);

Hình 2.7: Usecase process management trong lập trình C

Trang 28

Mô tả Chức năng này sẽ tiến hành hiển thị tất cả các process đang

được thực thi ở trong máy

Cách thực hiện Sử dụng struct dirent và hàm opendir để mở thư mục /dir,

những thư mục nào bắt đầu bằng số chính là các id biểnhiện tiến trình đang chạy, tiến hành đọc file status ở trongthư mục tiến trình để lấy thông tin tiến trình

Bảng 2.23: Mô tả chức năng list process ở trong lập trình C

Mô tả Chức năng này sẽ tiến hành gửi signal tới process được chỉ

Trang 29

struct dirent *dir;

char buffer[100], status_path[1000], process_name[100];int status_fd;

d = opendir("/proc");

printf(" %-10s%-10s\n", "ID", "Name");

while ((dir = readdir(d)) != NULL) {

}

}

}

void kill_process(int argc, char *argv[]) {

int process_id, kill_arg, status;

Trang 30

printf("kill %d success\n", process_id);printf("\033[0m");

Trang 31

socket đang được sử dụng trong máy.

Bảng 2.25: Mô tả list tcp ở trong lập trình C

Mô tả Chức năng này sẽ tiến hành hiện những socket udp lên

consoleCách thực hiện Tiến hành đọc file /proc/net/udp và in ra thông tin những

socket đang được sử dụng trong máy

Bảng 2.26: Mô tả list udp ở trong lập trình C

Mô tả Chức năng này sẽ tiến hành hiện những socket raw lên

consoleCách thực hiện Tiến hành đọc file /proc/net/raw và in ra thông tin những

socket đang được sử dụng trong máy

Bảng 2.27: Mô tả list raw ở trong lập trình C

Trang 32

Chức năng List unix

Mô tả Chức năng này sẽ tiến hành hiện những socket unix lên

consoleCách thực hiện Tiến hành đọc file /proc/net/unix và in ra thông tin những

socket đang được sử dụng trong máy

Bảng 2.28: Mô tả list unix ở trong lập trình C

Mô tả Chức năng này sẽ tiến hành hiện những socket tcp6 lên

consoleCách thực hiện Tiến hành đọc file /proc/net/tcp6 và in ra thông tin những

socket đang được sử dụng trong máy

Bảng 2.29: Mô tả list tcp6 ở trong lập trình C

Mô tả Chức năng này sẽ tiến hành hiện những socket udp6 lên

consoleCách thực hiện Tiến hành đọc file /proc/net/udp6 và in ra thông tin những

socket đang được sử dụng trong máy

Bảng 2.30: Mô tả list udp6 ở trong lập trình C

Mô tả Chức năng này sẽ tiến hành hiện những socket raw6 lên

consoleCách thực hiện Tiến hành đọc file /proc/net/raw6 và in ra thông tin những

socket đang được sử dụng trong máy

Bảng 2.31: Mô tả list raw6 ở trong lập trình C

Trang 33

if (strcmp(argv[1], "udp") == 0) {}

if (strcmp(argv[1], "raw") == 0) {}

if (strcmp(argv[1], "unix") == 0) {}

if (strcmp(argv[1], "tcp6") == 0) {}

if (strcmp(argv[1], "udp6") == 0) {

Trang 36

while (read(fd, buffer, sizeof(buffer)) != 0) {printf("%s", buffer);

Trang 38

CHƯƠNG 3 LẬP TRÌNH VÀ TÍCH HỢP KERNEL 3.1 Tổng quan

Nhân Linux là nền tảng của hệ điều hành giống Unix Kernel chịu trách nhiệm giaotiếp giữa phần cứng và phần mềm và phân bổ các tài nguyên có sẵn

Tất cả các bản phân phối Linux đều dựa trên một nhân được xác định trước Tuynhiên, nếu bạn muốn tắt một số tùy chọn và trình điều khiển hoặc thử các bản vá thửnghiệm, bạn cần phải xây dựng một nhân Linux

Mô-đun nhân là đoạn mã, có thể được tải và dỡ tải từ nhân theo yêu cầu

Mô-đun nhân cung cấp một cách dễ dàng để mở rộng chức năng của hạt nhân cơ sở

mà không cần phải xây dựng lại hoặc biên dịch lại hạt nhân Hầu hết các trình điềukhiển được triển khai dưới dạng mô-đun nhân Linux Khi những trình điều khiển đókhông cần thiết, chúng tôi chỉ có thể dỡ bỏ trình điều khiển cụ thể đó, điều này sẽ làmgiảm kích thước hình ảnh hạt nhân

Các mô-đun nhân sẽ có phần mở rộng ko Trên một hệ thống linux bình thường, cácmodule nhân sẽ nằm bên trong thư mục / lib / modules / <kernel_version> / kernel /

Hình 3.9: Mô tả nhân linux

Trang 39

Các tiện ích để điều khiển module nhân:

Lsmode – Liệt kê các module đã được tải

Lệnh lsmod sẽ liệt kê các mô-đun đã được tải trong nhân

Hình 3.10: Lệnh lsmod

Insmode – Chèn module vào nhân

Lệnh insmode sẽ them một module mới vào nhân

Hình 3.11:Lệnh insmod

Modinfo – Hiển thị thông tin module

lệnh modinfo sẽ hiển thị thông tin về module nhân

Trang 40

Hình 3.12: Lệnh modinfo

Rm-mode – Xóa module ra khỏi nhân

lệnh rmmod sẽ xóa một module khỏi nhân Bạn không thể xóa một module đã được sửdụng bởi bất kỳ chương trình nào

Hình 3.13: Lệnh rmmod

Modeprobe - Thêm hoặc xóa module khỏi nhân

modprobe là một lệnh thông minh sẽ tải / dỡ các mô-đun dựa trên sự phụ thuộc giữacác mô-đun

3.2 Macro

Macro chủ yếu được sử dụng để xác định mô-đun Một macro quan trọng nhất làMODULE_LICENSE(“GPL”) Nếu chúng ta không xác định macro này, chúng ta sẽkhông thể sử dụng bất kỳ thư viện hệ thống nào khác đang chạy theo giấy phép GPL.Đối với mẫu đơn giản nhất này, đây sẽ không phải là vấn đề lớn, nhưng khi chúng tôiphát triển trình điều khiển hạt nhân, v.v., đây có thể là một vấn đề lớn Vì vậy, hãyluôn nhớ giữ giấy phép GPL nếu bạn cần lấy các thư viện GPL được cấp phép.Ngoài ra, nếu bạn phát hành mô-đun của mình, thì bạn phải chọn cấp phép thích hợpcho mô-đun của mình và trong trường hợp đó, bạn sẽ phải sử dụng liên kết tĩnh đếnGPL các thư viện được cấp phép

3.3 Phần bài tập

Một driver không thể tự nó thực thi mà hoạt động tương tự như một thư viện được nạp

và đăng ký các hàm bởi một ứng dụng đang chạy Driver được viết bằng C, nhưngkhông có hàm main() Hơn nữa, bởi vì driver được nạp và liên kết với hệ điều hành,nên nó cần được biên dịch giống cách biên dịch nhân hệ điều hành, và các header filesđược sử dụng trong mã nguồn driver chỉ là những cái mà nhân hệ điều hành cung cấp,không bao giờ có các hàm của thư viện lập trình C (mà thường để trong thư mục/usr/include)

Một điểm thú vị khác là mã nguồn nhân được lập trình theo kiểu hướng đối tượngtrong C, mã nguồn driver cũng tương tự như vậy Bất kỳ một driver nào trên Linuxđều có một hàm tạo (constructor) và một hàm hủy (destructor) Hàm tạo của driver

Ngày đăng: 26/05/2023, 09:38

HÌNH ẢNH LIÊN QUAN

Hình 1.1: sơ đồ usecase mô tả các chức năng trong file management - Báo cáo bài tập lớn lập trình nhân linux chương 1  lập trình shell
Hình 1.1 sơ đồ usecase mô tả các chức năng trong file management (Trang 9)
Bảng 1.3: Mô tả chức năng remove file - Báo cáo bài tập lớn lập trình nhân linux chương 1  lập trình shell
Bảng 1.3 Mô tả chức năng remove file (Trang 10)
Hình 1.3: Sơ đồ usecase biểu thị task management - Báo cáo bài tập lớn lập trình nhân linux chương 1  lập trình shell
Hình 1.3 Sơ đồ usecase biểu thị task management (Trang 14)
Bảng 1.10: Mô tả chức năng list của task management - Báo cáo bài tập lớn lập trình nhân linux chương 1  lập trình shell
Bảng 1.10 Mô tả chức năng list của task management (Trang 15)
Bảng 1.11: Mô tả chức năng create của task management - Báo cáo bài tập lớn lập trình nhân linux chương 1  lập trình shell
Bảng 1.11 Mô tả chức năng create của task management (Trang 15)
Hình 1.4: Biểu đồ usecase chức năng task management - Báo cáo bài tập lớn lập trình nhân linux chương 1  lập trình shell
Hình 1.4 Biểu đồ usecase chức năng task management (Trang 17)
Hình 2.5: Usecase file management trong lập trình C - Báo cáo bài tập lớn lập trình nhân linux chương 1  lập trình shell
Hình 2.5 Usecase file management trong lập trình C (Trang 21)
Hình 2.6: Usecase network management trong lập trình C - Báo cáo bài tập lớn lập trình nhân linux chương 1  lập trình shell
Hình 2.6 Usecase network management trong lập trình C (Trang 25)
Bảng 2.22: Mô tả list deveice trong lập trình C - Báo cáo bài tập lớn lập trình nhân linux chương 1  lập trình shell
Bảng 2.22 Mô tả list deveice trong lập trình C (Trang 26)
Hình 2.7: Usecase process management trong lập trình C - Báo cáo bài tập lớn lập trình nhân linux chương 1  lập trình shell
Hình 2.7 Usecase process management trong lập trình C (Trang 27)
Bảng 2.25: Mô tả list tcp ở trong lập trình C - Báo cáo bài tập lớn lập trình nhân linux chương 1  lập trình shell
Bảng 2.25 Mô tả list tcp ở trong lập trình C (Trang 31)
Hình 2.8: Usecase socket management ở trong lập trình C - Báo cáo bài tập lớn lập trình nhân linux chương 1  lập trình shell
Hình 2.8 Usecase socket management ở trong lập trình C (Trang 31)
Hình 3.9: Mô tả nhân linux - Báo cáo bài tập lớn lập trình nhân linux chương 1  lập trình shell
Hình 3.9 Mô tả nhân linux (Trang 38)
Hình 3.21: Choice = 6 (NumdivisibleByMatrix) - Báo cáo bài tập lớn lập trình nhân linux chương 1  lập trình shell
Hình 3.21 Choice = 6 (NumdivisibleByMatrix) (Trang 51)

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w