Tải bản đầy đủ (.docx) (61 trang)

Lập trình nhân linux

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.49 MB, 61 trang )

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 tồ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 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ể hồ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

Java trên Linux, bao gồm JVM (HotSpot) nguyên thủy của Sun và Hệ thống J2SE RE
của IBM, cũng như nhiều dự án nguồn mở như Kaffe và JikeRVM.

GNOME và KDE là các môi trường desktop phổ biến và cung cấp một
framework cho phát triển ứng dụng. Những dự án này dựa trên các widget toolkits
tương ưng là GTK và Qt, mặt khác chúng cũng có thể được sử dụng độc lập với
framework lớn hơn mình. Cả hai đều hỗ trợ nhiều ngơn ngữ. Có một số mơi trường
phát triển tích hợp có sẵn bao gồm Anjuta, Code::Blocks, CodeLite, Eclipse, Geany,
ActiveState Komodo, KDevelop, Lazarus, MonoDevelop, NetBeans, và Qt Creator,
trong khi các trình soạn thảo lâu đời như Vim, nano và Emacs vẫn còn phổ biến
1.1.2 Các phiên bản của hệ điều hành Linux


Linux hiện có khá nhiều các bản phân phối khác nhau như Fedora, Ubuntu,
OpenSUSE là các phiên bản thương mại, trong khi Debian và Arch Linux là các phiên
bản "hướng cộng đồng". Và tất cả đều có một đặc điểm chung là có một Linux kernel
bên trong. Linux thu hút các lập trình viên bởi tính linh hoạt, sức mạnh, tốc độ và phần
mềm quản lý package cho phép cài đặt phần mềm một cách dễ dàng.

Hình 1. 1 Các phiên bản hệ điều hành Linux
1.1.3 Ưu nhược điểm
 Ưu điểm

 Hồn tồn miễn phí
Đây là ưu điểm nổi bật được người dùng ưa thích và chọn Linux. Theo đó, bạn
không cần tốn bất kỳ chi phí nào vẫn có thể tồn quyền sử dụng đầy đủ tính
năng, kể cả các ứng dụng văn phòng như OpenOffice, LibreOffice.

 Bảo mật cao

2

Với Linux, các mã độc, virus hay phần mềm độc hại đều bị ngăn chặn do tính
bảo mật của hệ điều hành này cực kỳ cao. Nhờ thế, bạn có thể an tâm sử dụng.
 Có khả năng quản lý, điều phối nguồn tài nguyên của hệ thống.
Giao diện hệ điều hành Linux đa dạng, có tính năng nâng cấp lên phiên bản mới
liên tục.
 Khả năng linh hoạt tốt
Linux cho phép người dùng tùy ý điều chỉnh hệ điều hành theo mục đích sử
dụng. Điều này mang lại khá nhiều thuận tiện cho các lập trình viên và cơng ty
phát triển phần mềm.
 Hoạt động “mượt” ngay cả với máy tính có cấu hình yếu

Các máy tính có cấu hình yếu hồn tồn có thể vận hành ổn định, trơn tru khi
nâng cấp lên phiên bản mới của Linux. Bởi hệ điều hành này tương đối gọn
nhẹ, khơng tốn q nhiều tài ngun của máy tính.
 Nhược điểm

Linux cũng như bất cứ hệ điều hành nào, nó cũng có một số mặt hạn chế nhất định:

 Số lượng ứng dụng chất lượng cao hỗ trợ trên Linux còn hạn chế.
 Một số nhà sản xuất không phát triển driver hỗ trợ nền tảng Linux.
 Khó làm quen, đặc biệt nếu bạn đã quá quen thuộc với Windows thì khi chuyển

sang Linux, bạn sẽ cần một khoảng thời gian để làm quen nó.

1.1.4 Hiệu năng và ứng dụng

Hiệu năng của Linux trên desktop là một chủ đề gây tranh cãi, ví dụ vào năm
2007 Con Kolivas đã cáo buộc cộng đồng Linux tập trung hiệu năng trên các máy chủ.
Ông đã từ bỏ việc phát triển nhân Linux vì thất vọng với sự thiếu tập trung vào
desktop, và sau đó trả lời phỏng vấn "nói tất cả" về chủ đề này. Kể từ đó, một lượng
phát triển đáng kể đã tập trung vào việc cải thiện trải nghiệm desktop. Các dự án như
systemd và Upstart (đã dừng năm 2014) nhằm mục đích cho thời gian khởi động
nhanh hơn; các dự án Wayland và Mir nhằm mục đích thay thế X11 đồng thời tăng
cường hiệu năng, bảo mật và giao diện của desktop.

Nhiều ứng dụng phổ biến có sẵn cho nhiều hệ điều hành. Ví dụ, Mozilla
Firefox, OpenOffice.org/LibreOffice và Blender có các phiên bản có thể tải xuống cho
tất cả các hệ điều hành chính. Thêm vào đó, một số ứng dụng ban đầu được phát triển
cho Linux, như Pidgin, và GIMP, đã được ported đến các hệ điều hành khác (bao gồm
Windows và macOS) do mức độ phổ biến của chúng. Ngoài ra, ngày càng nhiều ứng
dụng desktop độc quyền cũng được hỗ trợ trên Linux, ví dụ như Autodesk Maya và

The Foundry's Nuke trong lĩnh vực hoạt hình và hiệu ứng hình ảnh cao cấp. Ngồi ra
cịn có một số cơng ty đã ported các trị chơi của riêng họ hoặc của các công ty khác

3

sang Linux, với Linux cũng là một nền tảng được hỗ trợ trên cả hai dịch vụ phân phối
kỹ thuật số phổ biến Steam và Desura.

Nhiều loại ứng dụng khác có sẵn cho Microsoft Windows và macOS cũng chạy
trên Linux. Thông thường, một ứng dụng tự do sẽ tồn tại với các chức năng của ứng
dụng được tìm thấy trên một hệ điều hành khác hoặc ứng dụng đó sẽ có phiên bản hoạt
động trên Linux, ví dụ như với Skype và một vài video games như Dota 2 vàTeam
Fortress 2. Ngoài ra, dự án Wine cung cấp một lớp tương thích Windows để chạy các
dứng dụng Windows chưa sửa đổi trên Linux. Nó được tài trợ bởi các doanh nghiệp
thương mại bao gồm CodeWeavers,nơi sản xuất một phiên bản thương mại của phần
mềm. Từ 2009, Google cũng đã đóng góp tài chính cho dự án Wine, CrossOver, một
giải pháp độc quyền dựa trên dự án Wine nguồn mở, hỗ trợ chạy các phiên bản
Windows của Microsoft Office, các ứng dụng Intuit như là Quicken và QuickBooks,
Adobe Photoshop CS2, và nhiều game phổ biến như World of Warcraft. Trong các
trường hợp khác, khi khơng có port Linux của một số phần mềm trong các lĩnh vực
như xuất bản trên desktop và âm thanh chun nghiệp, thì có phần mềm tương đương
có sẵn trên. Cũng có thể chạy các ứng dụng được viết cho Android trên các phiên bản
của Linux khác bằng Anbox

1.2 Tổng quan về lập trình Shell

1.2.1 Shell là gì?

Shell là chương trình giữa bạn và Linux (hay nói chính xác hơn là giữa bạn với nhân
Linux). Mỗi lệnh bạn gõ ra sẽ được Shell diễn dịch rồi chuyển tới nhân Linux. Nói

một cách dễ hiểu Shell là bộ diễn dịch ngơn ngữ lệnh, ngồi ra nó cịn tận dụng triệt để
các trình tiện ích và chương trình ứng dụng có trên hệ thống…

1.2.2 Các loại Shell thơng dụng

Hiện nay có một số loại shell trong các hệ thống Unix, trong một số trường hợp trong
một hệ thống nào đó có thể có một hoặc nhiều shell cùng tồn tại. Một số loại phổ biến
đang tồn tại như: Bourne shell, Korn shell, Cshell,Bash ... Mỗi loại có sự khác nhau
nhưng tất cả đều cung cấp đầy đủ công cụ để thiết lập môi trường giao tiếp giữa người
sử dụng và Unix.

Bảng 1. 1 Bảng các loại Shell thông dụng

Shell Path Câu lệnh mặc định Câu lệnh mặc

(non-root user) định (Root user)

4

Bourne Shell /bin/sh $ #

(sh) and /sbin/sh

C Shell (csh) /bin/csh % #

Korn Shell (ksh) /bin/ksh $ #

GNU Bourne- /bin/bash bash-x.xx$ bash-x.xx#
Again Shell
(Bash)


Ngồi ra cịn có một số Shell khác như: ssh, nfssh, mcsh…

1.2.3 Chức năng của Shell

Việc thao tác với kernel cực kỳ phức tạp phải địi hỏi có kỹ thuật cao, để giảm sự phức
tạp cho người sử dụng và để bảo vệ kernel từ những sai sót của người sử dụng, shell đã
được xây dựng thành lớp bao quanh kernel. Người dùng gửi yêu cầu tới shell, shell sẽ
biên dịch lại và sau đó sẽ gửi lại đến kernel.

Thơng thường với UNIX có ba loại shell được sử dụng phổ biến, tất cả đều nhằm mục
đích cung cấp các chức năng sau.

 Thông dịch lệnh
 Khởi tạo chương trình
 Dịch hướng vào ra
 Kết nối đường ống
 Thao tác trên file
 Duy trì các biến
 Điều khiển mơi trường
 Lập trình shell

1.3 Tổng quan về Linux Kernel

1.3.1 Linux Kernel là gì?

Về mặt kỹ thuật, khơng chính xác khi coi Linux là một hệ điều hành hoàn chỉnh. Linux
thực sự chỉ đề cập cụ thể đến kernel, được đặt theo tên của người sáng lập Linus
Torvalds. Mọi thứ bạn thấy trên màn hình đều đến từ các dự án và những nhà phát
triển khác.


Torvalds đã tạo ra Linux kernel vào năm 1991. Ban đầu, ông đặt tên cho dự án là
Freax (kết hợp giữa các từ “free”, “freak” và “UNIX”). Nhưng một đồng nghiệp khác

5

của Torvalds lại thích cái tên Linux (sau đó Linux trở thành tên gọi chính thức).
Torvalds đã phát hành phiên bản Linux đầu tiên vào năm 1992 theo giấy phép copyleft
GNU (giấy phép được tự do sao chép, chỉnh sửa, phân phối và khơng có tính độc
quyền), trở thành một phần quan trọng trong thành công của dự án.

Phần lớn trải nghiệm desktop Linux đến từ dự án GNU, một sáng kiến cũ tạo ra hệ
điều hành desktop gần như hồn chỉnh. Tất cả những gì nó cần là một kernel và Linux
đã đáp ứng nhu cầu đó. Đây là lý do tại sao một số người gọi hệ điều hành này là
GNU/Linux.

Những desktop mã nguồn mở và miễn phí khác, như FreeBSD, trơng giống với Linux
vì chúng chạy hầu hết các phần mềm GNU giống nhau.

Do Linux kernel có sẵn theo giấy phép GNU, nên ít quan tâm đến việc tiếp tục phát
triển một kernel riêng biệt như một phần của dự án GNU. Và thay vì tạo ra các kernel
cạnh tranh khác, như trong Windows và macOS, nhiều cơng ty đã chọn sử dụng và
đóng góp cho Linux kernel.

Linux kernel đã phát triển thành một dự án lớn chứa hàng triệu dòng code. Hàng ngàn
người và hơn một nghìn cơng ty đã đóng góp cho sự phát triển của kernel. Đây là một
trong những ví dụ nổi bật nhất về phần mềm mã nguồn mở và miễn phí trên thế giới.

1.3.2 Chức năng của Linux Kernel


Trong khi Linux vẫn là một hệ điều hành desktop tương đối “kén” người dùng, thì
kernel lại được sử dụng rộng rãi ở nhiều nơi. Nhờ có Android, Linux kernel đã xuất
hiện trên hầu hết các điện thoại thông minh, tất cả các loại thiết bị di động, bao gồm
những thiết bị đeo trên người và camera.

Linux là “linh hồn” của 500 siêu máy tính mạnh nhất và phần lớn cơ sở hạ tầng
Internet. Nói về đám mây có nghĩa là ta đang chủ yếu đề cập đến những máy chủ hỗ
trợ Linux được kết nối với nhau.

Raspberry Pi nhỏ bé là một máy tính hỗ trợ Linux, có kích thước chỉ bằng thẻ tín dụng,
hồn tồn mở để mọi người sửa đổi và sử dụng trong các dự án theo ý muốn

1.4 Tổng quan về công cụ hỗ trợ

1.4.1 Phần mềm Visual Studio Code

1.4.1.1 Giới thiệu phầm mềm Visual Studio Code

Visual studio là một phần mềm hỗ trợ đắc lực hỗ trợ cơng việc lập trình website. Cơng
cụ này được tạo lên và thuộc quyền sở hữu của ông lớn công nghệ Microsoft. Năm
1997, phần mềm lập trình nay có tên mã Project Boston. Nhưng sau đó, Microsoft đã
kết hợp các cơng cụ phát triển, đóng gói thành sản phẩm duy nhất.

6

Hình 1. 2 Visual Studio Code

Visual Studio là hệ thống tập hợp tất cả những gì liên quan tới phát triển ứng dụng,
bao gồm trình chỉnh sửa mã, trình thiết kế, gỡ lỗi. Tức là, bạn có thể viết code, sửa lỗi,
chỉnh sửa thiết kế ứng dụng dễ dàng chỉ với 1 phần mềm Visual Studio mà thôi.

Không dừng lại ở đó, người dùng cịn có thể thiết kế giao diện, trải nghiệm trong
Visual Studio như khi phát triển ứng dụng Xamarin, UWP bằng XAML hay Blend
vậy.

1.4.1.2 Tính năng Visual Studio Code

Tính đến nay, Visual Studio vẫn được coi là phần mềm lập trình hệ thống hàng đầu,
chưa có phần mềm nào có thể thay thế được nó. Được đánh giá cao như vậy bởi Visual
Studio sở hữu nhiều tính năng cực kỳ hấp dẫn. Cụ thể:

 Đa nền tảng

Phần mềm lập trình Visual Studio của Microsoft hỗ trợ sử dụng trên nhiều nền
tảng khác nhau. Khơng giống như các trình viết code khác, Visual Studio sử
dụng được trên cả Windows, Linux và Mac Systems. Điều này cực kỳ tiện lợi
cho lập trình viên trong q trình ứng dụng.

 Đa ngơn ngữ lập trình

Không chỉ hỗ trợ đa nền tảng, Visual Studio cũng cho phép sử dụng nhiều ngôn
ngữ lập trình khác nhau từ C#, F#, C/C++, HTML, CSS, Visual Basic,
JavaScript,… Bởi vậy, Visual Studio có thể dễ dàng phát hiện và thông báo cho
bạn khi các chương trình có lỗi.

7

 Hỗ trợ website

Visual Studio code cũng hỗ trợ website, đặc biệt trong công việc soạn thảo
và thiết kế web.


 Kho tiện ích mở rộng phong phú

Mặc dù Visual Studio có hệ thống các ngơn ngữ hỗ trợ lập trình khá đa dạng.
Nhưng nếu lập trình viên muốn sử dụng một ngơn ngữ khác, bạn có thể dễ dàng
tải xuống các tiện ích mở rộng. Tính năng hấp dẫn này được hoạt động như một
phần chương trình độc lập nên khơng lo làm giảm hiệu năng của phần mềm.

 Lưu trữ phân cấp

Phần lớn các tệp dữ liệu đoạn mã của Visual Studio đều được đặt trong các thư
mục tương tự nhau. Đồng thời, Visual Studio cũng cung cấp một số thư một cho
các tệp đặc biệt để bạn lưu trữ an toàn, dễ tìm, dễ sử dụng hơn.

 Kho lưu trữ an tồn

Với Visual Studio, bạn có thể hồn tồn n tâm về tính lưu trữ, bởi phần mềm
đã được kết nối GIT và một số kho lưu trữ an toàn được sử dụng phổ biến hiện
nay.

 Màn hình đa nhiệm

Visual Studio sở hữu tính năng màn hình đa nhiệm, cho phép người dùng mở
cùng lúc nhiều tập tin, thư mục dù chúng có thể khơng liên quan tới nhau.

 Hỗ trợ viết code

Khi sử dụng code vào trong lập trình, với Visual Studio, cơng cụ này có thể đề
xuất tới các lập trình viên một số tùy chọn thay thế nhằm điều chỉnh đôi chút để
đoạn code áp dụng thuận tiện hơn cho người dùng.


 Hỗ trợ thiết bị đầu cuối

Phần mềm Visual Studio cũng tích hợp các loại thiết bị đầu cuối, giúp người
dùng không cần chuyển đổi giữa hai màn hình hay trở về thư mục gốc khi thực
hiện một thao tác cần thiết nào đó.

 Hỗ trợ Git

Do kết nối với GitHub nên Visual Studio cho phép hỗ trợ sao chép, kéo thả trực
tiếp. Các mã code này sau đó cũng có thể thay đổi và lưu lại trên phần mềm.

 Intellisense

Tính năng nhắc Intellisense được sử dụng hầu hết trong các phần mềm lập trình,
bao gồm cả Visual Studio. Tuy nhiên, so với các trình viết mã, Visual Studio

8

vẫn được đánh giá cao về tính chuyên nghiệp. Đặc biệt, tính năng này cịn có
thể phát hiện tất cả các đoạn mã không đầy đủ, nhắc lập trình viên, gợi ý sửa
đổi, khai báo biến tự động trong trường hợp lập trình viên quên, giúp bổ sung
cú pháp cịn thiếu,…

 Tính năng comment

Một tính năng cũng khá hay ho, hỗ trợ cho người lập trình trong trường hợp
“nhớ nhớ qn qn” đó là tính năng bình luận. Tính năng này cho phép lập
trình viên để lại nhận xét, giúp dễ dàng ghi nhớ cơng việc cần hồn thành,
khơng bỏ sót cơng đoạn nào.


1.4.1.3 Ưu nhược điểm

Được đánh giá là một trong những cơng cụ lập trình có 1 – 0 – 2, Visual Studio là một
lựa chọn tuyệt vời dành cho các lập trình viên. Đặc biệt là khi cơng cụ này còn sở hữu
những ưu điểm vượt trội hơn hẳn bất kỳ IDE nào khác như:

 Ít dung lượng
 Tính năng phong phú, đa dạng và mạnh mẽ
 Hỗ trợ nhiều nền tảng khác nhau (Linux, Windows, Mac)
 Hỗ trợ đa ngôn ngữ (HTML, CSS, C#, F#, C/C++, JSON, JavaScript,…)
 Tính năng Intellisense chuyên nghiệp
 Giao diện thân thiện dễ sử dụng

Cập nhật đa dạng phiên bản cho nhiều đối tượng sử dụng khác nhau,…

Tuy nhiên Visual Studio sẽ khơng phù hợp với những lập trình viên PHP bởi đây là
một ngôn ngữ mã nguồn mở, để có thể lập trình website hoặc web app bằng PHP tốt
nhất thì bạn nên tham khảo các IDE dành riêng cho ngôn ngữ PHP tại http://free-php-
editor.com/.

Cho đến nay, nhà phát triển Microsoft vẫn đang không ngừng cải tiến và ứng dụng các
công nghệ mới cho Visual Studio. Bởi vậy, đây là “cánh tay đắc lực” hỗ trợ cho các
developers, data administrators, testers và bất kỳ ai có nhu cầu tiếp cận, tìm hiểu về lập
trình đều có thể sử dụng Visual Studio.

1.4.2 Phần mềm Ubuntu

1.4.2.1 Ubuntu là gì?


Ubuntu là một hệ điều hành trên máy tính, và nó được phát triển dựa trên
Linux/Debian GNU. Lần đầu được giới thiệu vào năm 2004, tính đến năm 2007,
Ubuntu đây là phiên bản chiếm 30% số bản tùy biến của Linux được cài đặt trên máy
tính, và cũng là bản tuỳ biến Linux phổ biến nhất. Công ty Canonical đã và đang chịu

9

trách nhiệm trong việc tài trợ Ubuntu, giúp cho hệ điều hành này có thể phát triển
trong tương lai.

Hình 1. 3 Ubutu
Có ba loại phiên bản Ubuntu mà người dùng cần biết đến, bao gồm Ubuntu
phiên bản thông thường, phiên bản hỗ trợ lâu dài (LTS) và các dự án khác. Thông
thường, bạn nên sử dụng phiên bản hỗ trợ lâu dài để nhận được hỗ trợ trong vịng 3
năm đối với máy tính để bàn và 5 năm đối với máy chủ.
1.4.2.2 Một số tính năng chính của Ubuntu
 Thừa hưởng tính năng nổi bật của Linux: Vì đây là phiên bản hệ điều hành
phát triển dựa trên Linux, vậy nên sẽ thừa hưởng được các tính năng đặc biệt
của Linux. Chẳng hạn như khả năng tùy biến hiệu suất làm việc, tốc độ, cũng
như khả năng bảo mật trước sự tấn công của malware hay virus.
 Hỗ trợ người dùng trong việc cài đặt: Để kiểm tra sự tương thích của các phiên
bản với máy tính, bạn có thể sử dụng đĩa chạy trực tiếp phiên bản đó của hệ
điều hành, từ đó người dùng sẽ quyết định xem có thể cài đặt trên thiết bị của
họ hay không thông qua phần mềm Ubiquity.
 Ngồi ra, người dùng sử dụng Windows có thể phân vùng lại đĩa cứng để cài
đặt Ubuntu, và bạn cũng có thể gỡ bỏ nó khá dễ dàng.ngay cả khi đang sử dụng
Windows.
 Giao diện: Ubuntu hiện đang sử dụng giao diện đồ hoạ Unity, và giao diện này
được thiết kế ra với mục đích tối ưu diện tích màn hình sử dụng, đồng thời
cũng mang lại trải nghiệm dùng thân thiện.


10

 Ứng dụng: Hệ điều hành Ubuntu đã được cài sẵn các phần mềm mã nguồn mở,
chẳng hạn như trình duyệt Internet Firefox, bộ ứng dụng văn phòng đến từ
LibreOffice (phiên bản Ubuntu 10.04 trở đi) hay trình tải file torrent
Tranmission. Ngoài ra, hệ điều hành này cũng có một kho các ứng dụng miễn
phí có tên là Ubuntu Software Center.

1.4.2.3 Ưu điểm của Ubuntu

Ưu điểm của hệ điều hành Ubuntu

 Không yêu cầu cấu hình mạnh: Thơng thường, q trình cài đặt Ubuntu trên
máy tính sẽ giao động từ 20 - 30 phút, tuỳ theo cấu hình của máy, và bạn chỉ
cần có thiết bị có dung lượng RAM từ 256MB trở lên. Và cấu hình khuyên
dùng thì chỉ cần RAM trên 384MB, và CPU là 700 MHz (x86).

 Có nhiều ứng dụng miễn phí: Bạn khơng cần tốn q nhiều chi phí cho các ứng
dụng, và chúng đều có mặt trên Ubuntu Software Center. Chẳng hạn như bộ
ứng dụng văn phịng LibreOffice miễn phí cũng đã được cài sẵn trên hệ điều
hành Ubuntu.

 Khả năng tương tác sâu: Mặc dù đôi khi phải sử dụng các câu lệnh để tương tác
với thiết bị, nhưng nhờ vậy mà người dùng có thể điều khiển phần mềm một
cách sâu hơn, từ đó hiệu quả công việc sẽ tốt hơn, nhất là khi so sánh với các
giao diện đồ họa. Đồng thời, đây là hệ điều hành mã nguồn mở, thế nên Ubuntu
có độ tùy biến cao.

 Có tính bảo mật cao: Bạn khơng cần lo lắng quá nhiều về việc có cần cài đặt

các phần mềm diệt virus như trên Windows bởi vì số lượng malware hay virus
khá ít trên hệ điều hành Ubuntu.

1.4.3 Makefile

1.4.3.1 Makefile là gì?

Makefile là một file dạng script chứa các thơng tin:

 Cấu trúc project (file, sự phụ thuộc)
 Các lệnh để tạo file
 Lệnh make sẽ đọc nội dung Makefile, hiểu kiến trúc của project và thực thi các

lệnh

1.4.3.2 Cấu trúc project

Cấu trúc và sự phụ thuộc của project có thể được biểu diễn bằng một DAG (Directed
Acyclic Graph)

11


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×