Đầu tiên chỉ ra sự khác biệt tiêu biểu của các chương trình hệ thống khi đã so sánh tới lập trình ứng dụng là ở đó nhắm vào lập trình ứng dụng đề sản sinh phần mềm mà cung cấp những dịc
Trang 1
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN & TRUYEN THONG
VIỆT HÀN Khoa Hoc May Tinh
VK Tt es GD _
ĐỒ AN MON HOC LAP TRINH HE THONG
THU MUC VA TEP TIN
Sinh viên thực hiện : Nguyễn Đình Anh Tài-
21IT580
Lê Duy Tân-21IT5SS1
Trần Hoàng Nam-21IT565
Trịnh Công Toàn-21TT388 Giảng viên hướng dẫn : TS Nguyễn Hữu Nhật Minh Lớp : 21SE2 | 21SE2 | 21SE1 | 21SE5
Trang 2
Đà Nẵng, ngày 20 tháng 12 năm 2023
Trang 3TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN & TRUYÊN THÔNG
VIỆT HÀN Khoa Khoa Hoc May Tính
VÀ ss \ \Gmp
ĐỒ AN MON HOC LAP TRINH HE THONG
TAP TIN VA THU MUC
Sinh viên thực hiện : Nguyễn Đình Anh Tài-2IIT580
Lê Duy Tân-21IT58§1
Trần Hoàng Nam-21IT565
Trịnh Công Toàn-21TT38§
: TS Nguyễn Hữu Nhật Minh
: 21SE2 | 21SE2 | 21SE1 | 21SE5
Giảng viên hướng dẫn
Lớp
Đà Nẵng, ngày 20 tháng 12 năm 2023
Trang 4NHAN XET CUA GIANG VIEN HUONG DAN
Xác nhận của giáo viên hướng dân
Trang 5LỜI NÓI ĐẦU
Ngày nay, ứng dụng công nghệ thông tin và việc tin học hóa được xem là một trong những yếu tố mang tính quyết định trong hoạt động của các chính phủ, tổ chức, cũng như của các công ty, nó đóng vai trò hết sức quan trọng, có thê tạo ra những bước đột phá mạnh mẽ Cùng với sự phát triển không ngừng về kỹ thuật máy tính và mạng điện tử, công nghệ thông tin cũng được những công nghệ có đăng cấp cao và lần lượt chỉnh phục hết đỉnh cao này đến đỉnh cao khác Mạng Internet là một trong những sản phẩm có giá trị hết sức lớn lao và ngày càng trở nên một công cụ không thê thiếu, là nền tảng chính cho sự truyền tải, trao đối thông
tin trên toàn cầu
Giờ đây, mọi việc liên quan đến thông tin trở nên thật dễ dàng cho người sử dụng: chỉ cần có một máy tính kết nối internet và một dòng dữ liệu truy tìm thì gần như lập tức cả thế giới về vấn đề mà bạn đang quan tâm sẽ hiện ra, có đầy đủ thông tin, hình ảnh và thậm chí đôi lúc có
cả những âm thanh nếu bạn cần Bằng internet, chung ta đã thực hiện được nhiều công việc
với tốc độ nhanh hơn và chỉ phí thấp hơn nhiều so với cách thức truyền thống Chính điều này,
đã thúc đây sự khai sinh và phát triển của thương mại điện tử và chính phủ điện tử trên khắp
thể giới, làm biến đôi đáng kế bộ mặt văn hóa, nâng cao chất lượng cuộc sống con người
Vì vậy, chúng em đã thực hiện đồ án môn học '“THƯ MỤC VÀ TỆP TIN, VIẾT CHƯƠNG TRÌNH C LAY CAC THUOC TINH TEP HOẶC THƯ MỤC VÀ HIẾN THI CHUNG TREN THIET BI DAU CUOTI”.
Trang 6LỜI CẢM ƠN
Trên thực tế không có sự thành công nào mà không gắn liền với những sự hỗ trợ, giúp đỡ
dù ít hay nhiều, dù trực tiếp hay gián tiếp của người khác Trong suốt thời gian từ khi bắt đầu học tập ở giảng đường đại học đến nay, em đã nhận được rất nhiều sự quan tâm, giúp đỡ của
quý Thây Cô, gia đình và bạn bè
Với lòng biết ơn sâu sắc nhất, em xin gửi đến quý Thầy Cô tại Trường đại học Công
Nghệ Thông Tin và Truyền thông Việt Hàn đã cùng với tri thức và tâm huyết của mình để
truyền đạt vốn kiến thức quý báu cho chúng em trong suốt thời gian học tập tại trường Và đặc biệt, trong học kỳ này, Khoa đã tô chức cho chúng em được tiếp cận với môn học mà theo em
là rất hữu ích đôi với các sinh viên thuộc các chuyên ngành Đó là môn học “Lập trình hệ thống”
Em xin chân thành cảm ơn TS Nguyễn Hữu Nhật Minh đã tận tâm hướng dẫn chúng em qua từng buổi học trên lớp cũng như những buổi nói chuyện, thảo luận về lĩnh vực sáng tạo trong nghiên cứu khoa học Nếu không có những lời hướng dẫn, dạy bảo của thay thì em nghĩ
bài thu hoạch này của em rất khó có thê hoàn thiện được Một lần nữa, em xin chân thành cảm
on thay
Bài báo cáo được thực hiện trong khoảng thời gian gần ngắn Bước đầu đi vào thực tế, tìm
hiểu về lĩnh vực sáng tạo trong nghiên cứu khoa học, kiến thức của em còn hạn chế và còn
nhiều bỡ ngỡ Do vậy, không tránh khỏi những thiếu sót là điều chắc chắn, em rất mong nhận được những ý kiến đóng góp quý báu của quý Thầy Cô
Một lần nữa, chúng em xin chân thành cảm ơn!
Trang 7CHUONG 1: = COSOLY THUYET 10
1.1 Sơ lược về lap trimb hé thong scsessessssssssessssnessesseescsasescesssaseateessaneneeees 10
1.1.1 Khái niệm lập trình hệ thống 5s s se secssssesssssessssse 11 1.1.2 Tổng quan về lập trình hệ thống - - 5 s52 2 =<cscscsssseses 12
1.2 Tìm hiểu về truyền thông giữa các tuyến trình . ‹- 13
1.2.1 Khái niệm Process và [PC wl 1.2.2 Vì sao các process phải giao tiếp với nhau? -.«-5eccs se se see 14 1.2.3 Một số cơ chế giao tiếp giữa các process trong Linux 14 1.3 Lập trình Socket trên LnUX - G0 ng TH HH ng vớ 15 1.3.1 Mô hình Client/SŠ€TV€T «HH HH th nHê 15
1.3.2 Sơ lược về So ket - s-s- se se ktEExEksEEsEkEEeeEsEksgkesrssssrsrrsesrke 17
Trang 82.1 Giới thiệu về Tệp tin và Thư mục s- s- se se se se se sesesesseerscs 20
ph (1 mẽ 23 2.2.2 Các bước giải QuyẾt -s-cs-csscsevsvsevtevAeSkvkeErsekessrkesereersraersre 24 CHƯƠNG 3: MÃ NGUỎN VÀ DEMO 25
4.3 Hướng phát triỀn ¿5c se sctvshzhvsvxgxEvevkExxEEetaesrkrsrke sersrssee 28
Trang 9DANH MỤC HÌNH ẢNH
Hình 1 — Sơ lược về lập trình hệ thống - - G5 SE HT TY SH ng ng cay 1 Hình 2 — Mơ hình hoạt động của Stream SOCEk€fS c1 1v 1v 1 11H HH gen 5 Hình 3_— Mơ hình hoạt động của Datagram SoCkfS - -ss c 1 1S Y9 Hs yyy 6 Hình 4— Logo VirtUaÏBOX - sc ct H H H H TH H H T H H re 6 Hình 5 — Giao diện VirtualBOX - 24c v1 1S vn KH 93 E04 5 7 Hinh 6 — Logo ng6n ng? lap trinh Co eee cecessessecsseesessecesecseessceeeeseneceneeceeseseeseesseeeeues 8 Hình 7 — Lý do nên sử dụng C, c- c s21 1S 1H ng ng ng tà HH HH kg 9 Hinh 10s 0ii0ï 1, 17
li 8c 10: 0i0ì 0:0 11 18
CAC TU VIET TAT
Trang 10
1 IPC Inter-Process Communication
2 OS Operating System
3 TCP Tranmission Control Protocol
4 UDP User Datagram Protocol
Trang 11
Lập trình hệ thống là hoạt động của các phan mém hé thong Đầu tiên chỉ ra sự khác biệt
tiêu biểu của các chương trình hệ thống khi đã so sánh tới lập trình ứng dụng là ở đó nhắm vào
lập trình ứng dụng đề sản sinh phần mềm mà cung cấp những dịch vụ tới người dùng (ví du: bộ
xử lý văn bản), trong khi những nhà lập trình hệ thống nhắm vào việc sản xuất phần mềm mà cung cấp những dịch vụ tới phần cứng máy tính (ví dụ: phần mềm chống phân mánh đĩa) Nó cũng yêu cầu một độ lớn hơn của sự ý thức phân cứng
1.1.2 Tổng quan lập trình hệ thống
Những điểm đặc biệt hơn trong lập trình hệ thông:
+ Những nhà lập trình sẽ tạo những gánh vác về phần cứng và một số thuộc tính khác của những chương trình chạy trên hệ thống đó, và sẽ thường khai thác những thuộc tính đó
(cho ví dụ bởi việc sử dụng một giải thuật mà được biết mà hiệu quả khi nào được sử dụng với
phân cứng đặc biệt)
10
Trang 12+ Thông thường một ngôn ngữ lập trình cấp thấp hoặc tiếng địa phương ngôn ngữ lập
trỉnh sử dụng đó là:
« Có thê hoạt động trong những môi trường tài nguyên bắt buộc
« - Là rất hiệu quá và có thê thực hiện một ít ở trên dau
° - Có một thư viện thực hiện nhỏ, hoặc không ở mọi thứ
* Cho phép trực tiếp và “thô” mà điều khiển qua truy cập bộ nhớ và điều khién
chảy tràn
« _ Để cho người lập trình viết những phần của chương trình ngay tức khắc trên ngôn ngữ assembly
Những nhà lập trình hệ thống một cách đây đủ thì khác với lập trình ứng dụng mà những người lập trình hướng tới chuyên về một hoặc cái khác
Trong lập trình hệ thông, những phương tiện lập trình có hạn thường sẵn có Sự sử dụng của
tập hợp rác tự động thì không phải là phô biến và gỡ rối là không đối đôi khi đề làm Thư viện
thực hiện, nếu sẵn có ở mọi nơi, thì ít mạnh hơn nhiều thông thường, và làm ít sợ kiểm tra lỗi hơn Bởi vì những sự hạn chế đó, màn hình và sự đăng ký thường được sử dụng: những hệ điều hành có thê có vô cùng chỉ tiết hóa những hệ thống con đăng ký
Thực hiện những phân nhất định trong Hệ điều hành và những quy định hoạt động mạng những nhà lập trình hệ thống (cho ví dụ thi hành phân trang (bộ nhớ ảo) hoặc một trình điều
khiên thiết bị cho một hệ điều hành)
1.2 Tìm hiểu về truyền thông giữa các tuyén trinh — Interprocess Communication
1.2.1 Khai niém Process va IPC
Một process (tiễn trình) là một ví dụ của một chương trình đang chạy Bắt cứ khi nào bạn
thông báo một lệnh trong Linux, nó tạo hoặc bắt đầu một DTOC€sS mới Mỗi process co | PID
(Process ID) đại điện PID gồm tối đa 5 chữ sô và là duy nhất tai 1 thoi diém PID cua process
A có thê được tận dung cho process B néu process A da kết thúc
II
Trang 13Inter-process communication (IPC) là một cơ chế cho phép trao đôi dữ liệu giữa các quá trình Bằng cách cung cấp một người dùng với một tập hợp các giao diện lập trình,
IPC giúp một lập trình tô chức thực hiện hoạt động giữa các quá trình khác nhau [PC
cho phép một ứng dụng để kiêm soát một ứng dụng khác, do đó cho phép chia sẻ dữ liệu mà không cần can thiệp
1.2.2 Vi sao cac process phai giao tiếp với nhau?
Việc cho phép truyền data giữa các process là do những lý do sau:
+ Giúp chia sẻ thông tin giữa các users
+ Giúp speech up các tác vụ trong máy tính
+ Giúp xây dựng modun
+ Giúp thuận tiện trong chạy nhiều tác vụ cùng một lúc
1.2.3 Một sô cơ chê giao tiệp giữa các process trong Linux
Linux cung cấp một số cơ chế giao tiếp giữa các tiến trình gọi là IPC (Inter-Process Communication):
+ Signals handling - Trao đối bằng tín hiệu
+ Pipe -Trao đôi bằng cơ chế đường ống
+ Message Queues - Trao déi thông qua hàng đợi tin nhắn
+ Shared Memory - Trao d6i bằng phân đoạn nhớ chung
+ Giao tiép thong qua socket
+ Giao tiếp đồng bộ dùng semaphore
1.2.4 IPC su dung Pipes?
Chia Sé Théng Tin Vé Files va Folders: IPC có thể được sử dụng để chia sẻ thông tin về
các files và folders giữa các tiên trình trong hệ thông
Tìm Kiếm và Lọc Dữ Liệu: Một tiến trình có thể tim kiém thông tin trong một thư mục
và gửi kết quả đến tiên trình khác thông qua pipes Điều này giúp tách biệt nhiệm vụ của các tiên trình và tăng tính hiệu quả
Quét Thư Mục Đệ Quy: Các tiễn trình có thể sử dụng IPC đề gửi thông tin về cầu trúc thư mục đệ quy, chăng hạn như danh sách các files và thư mục con
Xử Lý Sự Kiện Trên Thư Mục: IPC có thê được sử dụng dé thong báo về sự kiện liên
quan đên thư mục, chăng hạn như thêm mới, xóa bỏ, hoặc thay đôi tên của files va folders
12
Trang 14Phân Tích Thông Kê và Dữ Liệu: [PC cung cấp khả năng cho các tiến trình khác nhau để phân tích và thống kê thông tin vé files và thư mục một cách đồng bộ
Bảo Mật và Quyền Truy Cập: Các tiến trình sử dụng IPC có thể trao đôi thong tin về quyền truy cập và bảo mật của ñles va folders dé dam bao tinh an toàn của hệ thông Hiệu Suất và Tôi Ưu Hóa: Sử dụng IPC cần thận có thê giúp tôi ưu hóa hiệu suất khi xử
ly lớn lẻ dữ liệu về files và thư mục
Xử Lý Lỗi và Khôi Phục: Trong quả trình chia sẻ thông tin, quản lý lỗi là quan trong dé đảm bảo tính ôn định của hệ thông
1.3 Lập trình Socket trên Linux
1.3.1 M6 hinh Client/Server
Client — Server là mô hình phố biển cho giao tiếp giữa 2 tiến trình/2 máy, trong
đó, tiến trình client kết nối đến tiễn trình server để yêu cầu trao đổi dữ liệu
Client cần biết về sự tồn tại và địa chỉ của tiến trình server, nhưng server không
cần biết về sự tồn tại và địa chỉ của client cho đến khi kết nối được thiết lập
Mỗi khi kết nối được thiết lập, cả 2 bên đều có thể trao đổi (gửi và nhận dữ liệu)
Đề thiết lập một kết nỗi cho cả 2 phía, cần xây dựng một socket Có thể hiểu socket
như một điềm đầu cuối của kênh kết nỗi giữa 2 tiến trình
Các hệ thống (limux, windows) đều cung cấp các hàm hệ thống để thực hiện thiết lập
một socket
1.3.2 Sơ lược về Socket
Socket là điểm cuối end-point trong liên kết truyền thông hai chiéu (two-way communication) biéu dién kết nối giữa Client — Server Các lớp Socket được ràng buộc với một công port (thể hiện là một con số cụ thé) dé cac tang TCP (TCP Layer) co thé định danh ứng dụng mà dữ liệu sẽ được gửi tới
Có 2 loại socket được str dung réng rai la: stream sockets va datagram sockets Stream sockets: Dya trén giao thirc TCP (Tranmission Control Protocol), la giao thức hướng luỗng (stream oriented) Việc truyền dữ liệu chỉ thực hiện giữa 2 tiễn trình
đã thiết lập kết nổi Giao thức này đảm bảo dữ liệu được truyền đến nơi nhận một cách
đáng tin cậy, đúng thứ tự nhờ vào cơ chế quản lý luồng lưu thông trên mạng và cơ chế
13
Trang 15chống tắc nghẽn
Hình 2 — Mô hình hoạt động của Stream Sockets
- Datagram sockets: Dwa trên giao thie UDP (User Datagram Protocol), la giao thức hướng thông điệp (message oriented) Việc truyền dữ liệu không yêu cầu có sự thiết lập kết nối giữa tiến quá trình Ngược lại với giao thức TCP thì dữ liệu được truyền theo giao thức UDP không được tin cậy, có thế không đúng trình tự và lặp lại Tuy nhiên vì nó không yêu cầu thiết lập kết nối không phải có những cơ chế phức tạp nên tốc độ nhanh ứng dụng cho các ứng dụng truyền dữ liệu nhanh như chat, game
14