Mạng 5G đang dần trở thành xu hướng phát triển tiếp theo, với tốc độ kết nối nhanh hơn, khả năng đáp ứng hàng trăm nghìn thiết bị và hỗ trợ các ứng dụng công nghệ mới.. Đề tài bao gồm nh
GIỚI THIỆU VỀ ĐƠN VỊ THỰC TẬP
Sơ lược về công ty TMA Solutions
TMA Solutions là một công ty hàng đầu về việc cung cấp dịch vụ gia công phần mềm tại Việt Nam TMA Solutions được thành lập vào năm 1997 với mục tiêu cung cấp dịch vụ gia công phần mềm chất lượng cho các công ty hàng đầu trên toàn thế giới TMA có trụ sở chính tại Việt Nam và 6 văn phòng tại nước ngoài (Hoa Kỳ, Canada, Đức, Nhật Bản, Úc, Singapore) TMA Solutions là một trong những công ty gia công phần mềm lớn nhất tại Việt Nam, có đội ngũ kỹ sư gồm 4.000 người
Hình 1 1 Logo Công ty TMA Solutions
Lịch sử phát triển của công ty
- Thành lập TMA Solutions với 6 nhà phát triển phần mềm - Có khách hàng đầu tiên từ Canada, Hoa Kỳ và Nhật Bản - Đạt được 100 nhân viên
- Áp dụng RUP (Quy trình thống nhất Rational) Từ năm 2001 - 2005:
- Đạt được 500 kỹ sư - Mở văn phòng quốc tế đầu tiên tại Canada - Thành lập Trung tâm Nghiên cứu và Phát triển; Thành lập Trung tâm Đào tạo TMA - Đạt được ISO 9000:2001
- Thêm 3 văn phòng tại quận Phú Nhuận Từ năm 2006 - 2010:
- Đạt được 1.000 kỹ sư - Đạt được CMMi Level 3 và TL 9000 - Áp dụng phương pháp Agile
- Mở văn phòng quốc tế tại Nhật Bản, Hoa Kỳ và Úc - Thành lập Trung tâm Di động TMA
- Hoàn thành Tòa nhà TMA tại Công viên phần mềm Quang Trung Từ năm 2011 - 2015:
- Thành lập Trung tâm Giải pháp Dữ liệu; Thành lập Trung tâm IoT; Thành lập Trung tâm Thiết kế TMA UX/UI
- Đạt được CMMi Level 5 (Mức độ 5 của CMMi)
CHƯƠNG 1: GIỚI THIỆU ĐƠN VỊ THỰC TẬP
SVTH: VÕ THỊ KIM NGÂN LỚP: D19CQVTHI01-N Trang 6
- Đạt được ISO/IEC 27001:2005 Từ năm 2016 - 2020:
- Đạt được 2.500 nhân viên - Mở TMA Singapore - Thành lập TMA Innovation; Mở TMA Innovation Park tại Trung tâm Việt Nam - Thành lập Trung tâm 5G; Thành lập Trung tâm Phần mềm Ô tô
- Đạt được 4.000 kỹ sư - Mở Văn phòng TMA Europe tại Đức - TMA Innovation Park tại Trung tâm Việt Nam đạt 600 kỹ sư - Thành lập Phòng thí nghiệm phần cứng
Các dịch vụ cung cấp
Trong suốt hơn 25 năm phát triển ứng dụng viễn thông được đánh giá cao, TMA đã cung cấp cho khách hàng các Dịch vụ Toàn diện và Giải pháp Sẵn có để tăng tốc sẵn sàng thị trường của họ Đội ngũ của công ty có thể hỗ trợ nhiều nhu cầu Nghiên cứu và Phát triển khác nhau cho sản phẩm và giải pháp, bao gồm:
- Phân tích dữ liệu & Trí tuệ nhân tạo/Máy học;
- Thương mại điện tử, Bán lẻ, Phân phối, Vận chuyển hàng hóa;
- IoT & Robotics (Các ứng dụng trong lĩnh vực Robot);
- Phát triển ứng dụng; Trung tâm kiểm thử (Testing Center);
- Đám mây (Cloud), DevOps (Quy trình phát triển và triển khai ứng dụng)
CHƯƠNG 2: TỔNG QUAN VỀ 5G: GIỚI THIỆU VỀ MẠNG 5G VÀ CÁC TÍNH NĂNG QUAN TRỌNG
SVTH: VÕ THỊ KIM NGÂN LỚP: D19CQVTHI01-N Trang 7
TỔNG QUAN VỀ 5G: GIỚI THIỆU VỀ MẠNG 5G VÀ CÁC TÍNH NĂNG
Giới thiệu về mạng 5G
Kể từ khi công nghệ di động xuất hiện, cuộc cách mạng về viễn thông đã làm thay đổi cách chúng ta giao tiếp, làm việc và giải trí Từ thế hệ 1G đầu tiên ra đời vào những năm 1980 với khả năng chỉ giữ liên lạc thoại di động cơ bản, cho đến thế hệ 2G với các dịch vụ tin nhắn văn bản và di động dữ liệu chậm chạp, và thế hệ 3G với tốc độ dữ liệu truyền tải cao hơn, chúng ta đã trải qua một cuộc hành trình đáng kinh ngạc
Mạng di động đã trải qua nhiều cải tiến đáng kể kể từ khi công nghệ 3G (Third Generation) và 4G (Fourth Generation) ra đời Từ khi 3G được giới thiệu vào những năm 2000, cho đến khi 4G LTE (Long-Term Evolution) trở nên phổ biến vào những năm 2010, mỗi thế hệ mạng đã đem lại những tiến bộ đáng kể trong tốc độ truyền dữ liệu và độ trễ Tuy nhiên, mạng 5G (Fifth Generation) là bước tiến lớn nhất và đáng chú ý nhất cho ngành công nghệ di động, với những ưu điểm vượt trội hơn rất nhiều so với các thế hệ trước đó
Ban đầu, mạng 3G đã mang lại một cuộc cách mạng trong việc kết nối di động Với tốc độ truyền dữ liệu lên đến khoảng 384 Kbps, người dùng đã có thể truy cập internet di động, gửi email và truyền tải dữ liệu nhanh chóng hơn Mạng 3G cũng đưa ra các dịch vụ mới như cuộc gọi video và truyền dữ liệu thông qua ứng dụng như Facebook và Skype Tuy nhiên, 3G vẫn có một số hạn chế, bao gồm tốc độ chậm và độ trễ lớn, khiến trải nghiệm người dùng không thực sự linh hoạt và tiện lợi
Nhưng rồi, mạng 4G LTE đã xuất hiện và thay đổi hoàn toàn cách chúng ta sử dụng di động Với tốc độ truyền dữ liệu nhanh hơn, lên đến 100 Mbps và thậm chí hàng trăm Mbps trong điều kiện lý tưởng, 4G LTE mang đến trải nghiệm internet di động nhanh chóng và mượt mà
Người dùng có thể dễ dàng tải xuống và tải lên tệp tin, xem video chất lượng cao và chơi các trò chơi trực tuyến một cách mượt mà và thú vị hơn Độ trễ cũng được giảm đáng kể xuống mức khoảng 30-50 ms, làm cho việc sử dụng các ứng dụng yêu cầu độ trễ thấp như trò chơi trực tuyến và truyền phát video trực tiếp trở nên dễ dàng hơn
Tuy nhiên, mạng 4G cũng có những hạn chế Với sự phát triển nhanh chóng của Internet of Things (IoT) và các ứng dụng công nghiệp thông minh, mạng 4G đang đối diện với áp lực lớn từ số lượng thiết bị kết nối Mạng 4G có khả năng kết nối đồng thời một số lượng hạn chế các thiết bị, khiến cho việc triển khai các hệ thống công nghiệp thông minh và IoT gặp khó khăn Đồng thời, 4G cũng đối mặt với hạn chế về tốc độ truyền dữ liệu và phạm vi phủ sóng tại một số khu vực đông dân cư và phức tạp
Và khi mạng 5G xuất hiện, mang theo nhiều ưu điểm vượt trội hơn cả Mạng 5G (được gọi là thế hệ thứ năm của công nghệ mạng di động), theo 3GPP nó được định nghĩa là 5G New Radio (5G NR) Thế hệ này là một tiến bộ đáng kể trong công nghệ mạng di động, mang lại tốc độ, băng thông và khả năng kết nối chưa từng có trước đây Mạng 5G được thiết kế để cung cấp tốc độ truyền dữ liệu cực nhanh, lên đến hàng chục Gbps, vượt xa so với 4G Điều này cho phép người dùng tải xuống và tải lên dữ liệu một cách nhanh chóng và hiệu quả, trải nghiệm internet di động với tốc độ chưa từng có Ngoài ra, độ trễ trong mạng 5G được giảm xuống mức chỉ từ 1-10 ms, cải thiện đáng kể khả năng thực hiện các ứng dụng yêu cầu độ trễ thấp như trò chơi trực tuyến, xe tự hành và y tế từ xa
CHƯƠNG 2: TỔNG QUAN VỀ 5G: GIỚI THIỆU VỀ MẠNG 5G VÀ CÁC TÍNH NĂNG QUAN TRỌNG
SVTH: VÕ THỊ KIM NGÂN LỚP: D19CQVTHI01-N Trang 8
Hình 2 1 Lịch sử phát triển của mạng di động
Một ưu điểm nổi bật khác của 5G là khả năng kết nối đồng thời với hàng triệu thiết bị trên cùng một khu vực Mạng 5G hỗ trợ kết nối đồng thời với nhiều thiết bị thông qua công nghệ MIMO và băng thông rộng Điều này mở ra cơ hội mới cho Internet of Things (IoT) và các ứng dụng công nghiệp thông minh Các hệ thống công nghiệp 4.0 có thể triển khai mạng 5G để tự động hóa và tối ưu hóa hoạt động, giảm thiểu sự can thiệp của con người và tăng cường hiệu suất
Mạng 5G cũng đáp ứng nhu cầu ngày càng tăng của thế giới về trải nghiệm giải trí cao cấp và giải quyết các thách thức công nghệ phức tạp Với khả năng truyền phát video 4K/8K và hỗ trợ ứng dụng thực tế tăng cường (AR) và thực tế ảo (VR), người dùng có thể thưởng thức những trải nghiệm sống động và chân thực Mạng 5G cũng giúp giải quyết các thách thức trong y tế từ xa và chăm sóc sức khỏe thông minh, với khả năng truyền dữ liệu thời gian thực giữa các bác sĩ và bệnh nhân Mạng 5G cung cấp nền tảng vững chắc cho phát triển các ứng dụng công nghệ tiên tiến và tối ưu hóa trải nghiệm người dùng trong nhiều lĩnh vực Từ trải nghiệm di động tốc độ cao, công nghiệp thông minh, IoT và y tế từ xa, mạng 5G đã đem lại những tiến bộ đáng kể cho cuộc sống hàng ngày và mang đến những cơ hội mới cho tương lai công nghệ
2.1.2 Cơ sở hạ tầng mạng 5G
Cơ sở hạ tầng mạng 5G bao gồm cơ sở hạ tầng độc lập 5G, có mạng lõi chạy trên cloud riêng kết nối với công nghệ 5G New Radio (NR), và cơ sở hạ tầng không độc lập (NSA), vẫn phần nào dựa vào cơ sở hạ tầng 4G LTE hiện có Đến khi các nhà cung cấp mạng có thể xây dựng cơ sở hạ tầng độc lập cần thiết cho 5G, phương pháp NSA sử dụng sự kết hợp của mạng truy cập 5G Radio (RAN), giao diện 5G NR và cơ sở hạ tầng và mạng lõi LTE hiện có để cung cấp trải nghiệm giống như 5G
Triển khai 5G độc lập bao gồm thiết bị người dùng - RAN và giao diện NR - và mạng lõi
5G, dựa trên mô hình kiến trúc dịch vụ và chức năng mạng ảo hóa Các chức năng mạng thông thường chạy trên phần cứng được ảo hóa và chạy như phần mềm
Các thành phần cơ bản của cơ sở hạ tầng công nghệ 5G bao gồm cơ sở hạ tầng small cell 5G và các tháp RAN Trạm cơ sở small cell, một đặc điểm quan trọng của mạng 5G, được thiết kế để hòa trộn với cảnh quan hiện có, chiếm ít diện tích thực tế và phân phối theo cụm trong các khu vực có nhiều thiết bị, nhằm cung cấp kết nối liên tục và bổ sung cho mạng macro cung cấp phạm vi bao phủ rộng
CHƯƠNG 2: TỔNG QUAN VỀ 5G: GIỚI THIỆU VỀ MẠNG 5G VÀ CÁC TÍNH NĂNG QUAN TRỌNG
SVTH: VÕ THỊ KIM NGÂN LỚP: D19CQVTHI01-N Trang 9
Mạng 5G là khung nhìn linh hoạt và đa dạng của nhiều công nghệ tiên tiến hỗ trợ nhiều ứng dụng Nó cung cấp một số lợi ích quan trọng so với các thế hệ trước đó, bao gồm tốc độ truyền dữ liệu siêu nhanh, độ trễ thấp, khả năng chứa lượng lớn dữ liệu từ nhiều nguồn đồng thời và hỗ trợ hàng loạt ứng dụng đa dạng
2.1.3 Các băng tần chính của mạng 5G Để thiết kế cho kiến trúc mạng 5G hỗ trợ các ứng dụng đòi hỏi khắt khe rất phức tạp Không có một cách tiếp cận phù hợp cho tất cả các ứng dụng; phạm vi các ứng dụng yêu cầu dữ liệu di chuyển qua các khoảng cách xa, dung lượng dữ liệu lớn hoặc một sự kết hợp giữa chúng Do đó, kiến trúc mạng 5G phải hỗ trợ băng tần thấp, trung và cao - từ nguồn dữ liệu được cấp phép, chia sẻ và riêng tư - để cung cấp tầm nhìn đầy đủ về 5G Vì lý do này, 5G được thiết kế để hoạt động trên các tần số vô tuyến từ dưới 1 GHz đến các tần số cực cao, được gọi là "sóng milimét" (hoặc mmWave) Càng thấp tần số, tín hiệu có thể đi xa hơn Càng cao tần số, tín hiệu có thể mang được nhiều dữ liệu hơn Có ba dãi tần cốt lõi của mạng 5G
Băng tần high-band (mmWave) có dải tần từ khoảng 24 GHz đến 100 GHz Đây là băng tần có tốc độ dữ liệu cao nhất trong Mạng 5G Tuy nhiên, do tần số cao không dễ dàng xuyên qua các vật cản, băng tần này có phạm vi ngắn tự nhiên Điều này đòi hỏi cần có nhiều cơ sở trạm
Các tính năng trong mạng 5G
Mạng 5G có nhiều tính năng quan trọng, đáng chú ý như tốc độ truyền dữ liệu nhanh hơn:
Mạng 5G hỗ trợ tốc độ truyền dữ liệu lên đến hàng GB/giây, cho phép người dùng tải xuống và truyền dữ liệu với tốc độ cao hơn so với các thế hệ trước đó; Khả năng kết nối hàng triệu thiết bị đồng thời, từ điện thoại thông minh, máy tính bảng, đến các thiết bị IoT (Internet of Things) như cảm biến thông minh, xe tự hành, máy móc công nghiệp; Độ trễ rất thấp, chỉ trong khoảng từ mili giây đến một chữ số thấp, cho phép các ứng dụng yêu cầu đáp ứng gần như tức thì như xe tự hành, robot, hoặc tác động trực tiếp đến các hệ thống thời gian thực
Hiện nay nhu cầu về các dịch vụ truyền thông chất lượng cao, đáng tin cậy và hiệu quả đang tăng lên nhanh chóng Để đáp ứng nhu cầu này các nhà khai thác mạng đnag chuyển sang Network Slicing, một giải pháp tiên tiến cho phép họ mang lại trải nghiệm người dùng tối ưu bằng cách tạo nhiều mạng ảo trên một cơ sở hạ tầng
Network slicing là một phương pháp chia mạng thành nhiều mảnh (slices) độc lập, mỗi mảnh được tối ưu hóa để đáp ứng các yêu cầu cụ thể của các ứng dụng và dịch vụ khác nhau Mỗi slice sẽ hoạt động như một mạng ảo độc lập, cung cấp các tài nguyên mạng (như băng thông, tốc độ, thời gian đáp ứng) và chức năng mạng (như bảo mật, quản lý, routing) riêng biệt
Các slice có thể hỗ trợ một ứng dụng, dịch vụ, tập hợp người dùng hoặc mạng cụ thể và có thể trải dài qua nhiều miền mạng, bao gồm truy cập, lõi và vận chuyển Chúng cũng có thể triển khai qua nhiều nhà điều hành Điều này có nghĩa là mỗi mạng logic được thiết kế để phục vụ một mục đích kinh doanh xác định và bao gồm tất cả các tài nguyên mạng cần thiết - được cấu hình và kết nối từ đầu đến cuối
Một trong những tính năng quan trọng nhất của 5G, các sldie có thể được tạo ra và lập trình một cách linh hoạt để cung cấp cho khách hàng cuối mạng di động và quản lý thuê riêng của họ, có thể được cập nhật liên tục để đáp ứng nhu cầu tiến hóa của họ Từ băng thông cực cao đến độ trễ cực thấp, các trường hợp sử dụng đã được xác định cho 5G và network slicing bao gồm ba danh mục chính Phiên bản 15 của 3GPP cung cấp thông tin chi tiết về ba loại Slice/Service (SST):
SST 1 - Extreme (hoặc Enhanced) Mobile Broadband (eMBB): Dành cho các ứng dụng trung tâm video tiêu thụ nhiều băng thông và tạo ra lưu lượng nhiều nhất trên mạng di động
SST 2 - Ultra-reliable Low-Latency Communications (urLLC): Cho phép các ứng dụng như phẫu thuật từ xa hoặc liên lạc giữa xe và mạng (v2x) và yêu cầu các nhà điều hành mạng di động (MNOs) phải có khả năng tính toán cạnh máy tính di động
SST 3 - Massive Machine-Type Communications (mMTC): Mạng lát cắt này phục vụ ở quy mô lớn hơn, với hàng tỷ thiết bị được kết nối vào mạng Những thiết bị này sẽ tạo ra ít lưu lượng hơn so với các ứng dụng eMBB, nhưng số lượng của chúng sẽ nhiều hơn nhiều lần Điều này được thể hiện trong hình 2.6:
CHƯƠNG 2: TỔNG QUAN VỀ 5G: GIỚI THIỆU VỀ MẠNG 5G VÀ CÁC TÍNH NĂNG QUAN TRỌNG
SVTH: VÕ THỊ KIM NGÂN LỚP: D19CQVTHI01-N Trang 14
Hình 2 6 Ví dụ về Network Slicing trong 5G
Network slicing cho phép đồng thời phục vụ nhiều dịch vụ Có một hiệu ứng bên trong mỗi dịch vụ có đặc tính riêng: một hiệu ứng nhỏ khi thay đổi trong một lát cắt không ảnh hưởng đến lát cắt kế cận, và một hiệu ứng lớn khi tài nguyên vật lý được di chuyển sang lát cắt khác dựa trên yêu cầu NFV là thứ cung cấp tính mở rộng, linh hoạt và cô lập
Quan trọng để hiểu rằng sự cô lập mạng cấp độ - nơi khách hàng theo chiều dọc không chia sẻ chức năng mạng hoặc tài nguyên với khách hàng khác - trong một số trường hợp không được coi là yêu cầu cơ bản và không được đề cập trong network slicing Do đó, network slicing giả định rằng chỉ một số lượng nhỏ lát cắt sẽ được yêu cầu trong một mạng quốc gia và rằng chúng sẽ được chia sẻ bởi các doanh nghiệp có nhu cầu tương tự nhau
Network Slicing được thiết lập để đóng một vai trò quan trọng trong quá trình phát triển của mạng truyền thông, đặc biệt là khi hướng tới việc áp dụng rộng rãi công nghệ 5G Bằng cách cho phép các nhà khai thác dịch vụ và nhóm người dùng khác nhau, việc cắt mạng đảm bảo rằng mỗi dịch vụ nhận được mức hiệu suất, độ tin cậy và bảo mật tối ưu
Massive MIMO (Multiple-Input Multiple-Output) là một biến thể của kỹ thuật MIMO trong hệ thống truyền thông không dây, nơi số lượng lớn anten được sử dụng đồng thời để truyền và nhận dữ liệu Khác với MIMO thông thường, trong Massive MIMO, số lượng anten gửi và nhận được tăng lên đáng kể, thường lên tới hàng trăm hoặc thậm chí hàng ngàn anten
Hình 2 7 Mô tả kỹ thuật MIMO
CHƯƠNG 2: TỔNG QUAN VỀ 5G: GIỚI THIỆU VỀ MẠNG 5G VÀ CÁC TÍNH NĂNG QUAN TRỌNG
SVTH: VÕ THỊ KIM NGÂN LỚP: D19CQVTHI01-N Trang 15
Trong MIMO đa người dùng (MU-MIMO), bên phát cùng một lúc gửi các luồng khác nhau đến các người dùng khác nhau sử dụng cùng một khoảng thời gian và tài nguyên tần số, từ đó tăng khả năng của mạng Hiệu quả phổ và khả năng của mạng có thể được cải thiện bằng cách thêm nhiều ăng-ten để hỗ trợ nhiều luồng hơn, cho đến khi chia sẻ công suất và nhiễu giữa người dùng dẫn đến giảm thiểu sự tiến bộ và cuối cùng là sự suy giảm hiệu suất
Tín hiệu radio có thể đi qua nhiều đường giữa bộ phát và bộ thu Massive MIMO dựa trên ba khái niệm chính là đa dạng không gian (spatial diversity), đa luồng không gian (spatial multiplexing) và hình chiếu tia (beamforming) MIMO xây dựng trên việc tín hiệu radio giữa bộ phát và bộ thu được lọc qua môi trường, với các phản xạ từ các tòa nhà và các vật cản khác tạo ra nhiều đường truyền tín hiệu
Các tín hiệu phản xạ khác nhau sẽ đến bộ anten nhận với các độ trễ thời gian, mức suy giảm và hướng di chuyển khác nhau Khi triển khai nhiều anten nhận, mỗi anten nhận một phiên bản tín hiệu hơi khác nhau, có thể được kết hợp theo toán học để cải thiện chất lượng của tín hiệu truyền đi
TRÌNH BÀY VỀ CÁC THÀNH PHẦN CÓ TRONG MẠNG RADIO ACCESS
Traditional RAN và Open RAN
Hình 3 1 So sánh Traditional RAN và Open RAN
Traditional RAN là một kiến trúc mạng di động truyền thống được sử dụng trong các hệ thống viễn thông di động, bao gồm cả mạng di động 2G (GSM), 3G (UMTS), và 4G (LTE) Đây là một kiến trúc được phát triển từ các thế hệ mạng di động trước đó và đã được triển khai rộng rãi trong nhiều năm Mặc dù Traditional RAN đã phục vụ tốt trong nhiều năm và được triển khai rộng rãi trên toàn cầu, nhưng nó cũng có một số hạn chế Như đã đề cập trong phần trước, nó có thể hạn chế khả năng tùy chỉnh, đòi hỏi sự phụ thuộc vào một số nhà cung cấp duy nhất và có thể làm tăng chi phí triển khai và vận hành mạng Do đó, các nhà mạng và nhà cung cấp dịch vụ đang tìm cách chuyển đổi sang các kiến trúc mạng di động mới hơn như OpenRAN để tận dụng lợi ích của kiến trúc mở và tích hợp chức năng
OpenRAN sử dụng kiến trúc mở, nghĩa là các thành phần trong mạng di động được tách rời và độc lập hơn, cho phép tích hợp các sản phẩm từ nhiều nhà cung cấp khác nhau OpenRAN sử dụng "functional disaggregation," nghĩa là các chức năng truyền thống như BBU và RRH được tách rời và thực hiện bởi các phần cứng và phần mềm độc lập Kiến trúc mở cho phép sự tương thích và tương tác giữa các thành phần từ nhiều nhà cung cấp, tạo điều kiện thuận lợi cho việc chọn lựa và kết hợp các sản phẩm tối ưu từ nhiều nguồn
Một số điểm khác biệt giữa Traditional RAN và Open RAN
Phần cứng Được xây dựng chuyên dụng từ một nhà cung cấp duy nhất
Có thể được xây dựng dựa trên phần cứng thương mại từ nhiều nhà cung cấp khác nhau
Phần mềm Được xây dựng dựa trên phần mềm độc quyền từ một nhà cung cấp duy nhất Được thiết kế dựa trên các tiêu chuẩn mở, tức là phần mềm có thể được cung cấp bởi nhiều nhà cung cấp khác nhau
CHƯƠNG 3: TRÌNH BÀY VỀ CÁC THÀNH PHẦN CÓ TRONG MẠNG RADIO ACCESS NETWORK
SVTH: VÕ THỊ KIM NGÂN LỚP: D19CQVTHI01-N Trang 19
Có thể dễ bị tấn công vì nó dựa trên phần cứng và phần mềm độc quyền
Có thể an toàn hơn vì nó dựa trên các tiêu chuẩn mở và có thể được xây dựng với các tính năng bảo mật
Khó mở rộng khi nhu cầu tăng Có thể dễ dàng mở rộng hơn vì nó không bị ràng buộc với phần cứng hoặc phần mềm chuyên dụng
OpenRAN được coi là một trong những xu hướng quan trọng trong phát triển hạ tầng mạng di động hiện nay Nó có tiềm năng mang lại lợi ích về chi phí, linh hoạt, có khả năng tùy chỉnh và có thể giúp tăng cường hiệu suất và khả năng phục vụ trong mạng di động.
Kiến trúc 5G O-RAN (Open Radio Access Network)
Kiến trúc 5G O-RAN là một kiến trúc mạng truy cập vô tuyến (RAN) mở được thiết kế để linh hoạt hơn và tiết kiệm chi phí hơn kiến trúc RAN truyền thống Kiến trúc 5G O-RAN dựa trên các tiêu chuẩn mở và sử dụng phần cứng và phần mềm từ nhiều nhà cung cấp khác nhau Dưới đây là mô tả kiến trúc 5G O-RAN:
Bộ phận Trạm cơ sở tách rời (Distributed Baseband Unit - D-BBU): D-BBU là trung tâm xử lý và điều khiển chính của mạng O-RAN, có nhiệm vụ xử lý tín hiệu và dữ liệu của các thiết bị di động Nó chịu trách nhiệm xử lý các chức năng đa dạng của mạng 5G, như beamforming, phân bổ tài nguyên, quản lý kết nối và quản lý năng lượng Đơn vị Radio tách rời (Distributed Radio Unit - D-RU): D-RU là các đơn vị phát sóng được phân tán trong khu vực phủ sóng của mạng Chúng chịu trách nhiệm phát sóng và thu sóng từ các thiết bị di động và cung cấp kết nối không dây
Giao diện phần mềm Open Fronthaul (Open Fronthaul Interface): Điều này là giao diện phần mềm tiêu chuẩn giữa D-BBU và D-RU, cho phép truyền tải tín hiệu và dữ liệu giữa hai đơn vị Giao diện này được chuẩn hóa để đảm bảo tính tương thích và tương tác giữa các thành phần từ nhiều nhà cung cấp
Giao diện phần mềm Open Centralized Unit (Open CU) và Distributed Unit (Open DU): Điều này là giao diện phần mềm tiêu chuẩn giữa các bộ phận trung tâm và phân tán của mạng O- RAN Nó cho phép truyền tải dữ liệu và quản lý giữa các đơn vị trong mạng
Cơ sở dữ liệu mở và quản lý: Mạng 5G O-RAN cần có các cơ sở dữ liệu mở và hỗ trợ quản lý linh hoạt của các thành phần mạng Cơ sở dữ liệu này lưu trữ thông tin quan trọng về thiết bị di động, tài nguyên mạng và thông tin cấu hình của mạng
CHƯƠNG 3: TRÌNH BÀY VỀ CÁC THÀNH PHẦN CÓ TRONG MẠNG RADIO ACCESS NETWORK
SVTH: VÕ THỊ KIM NGÂN LỚP: D19CQVTHI01-N Trang 20
Hình 3 2 Mô tả kiến trúc mạng O-RAN
O-RAN (Open Radio Access Network) có nhiều nhóm công việc (Work Groups - WG), trong O-RAN, mỗi nhóm chịu trách nhiệm cho các lĩnh vực cụ thể và nhiệm vụ cụ thể liên quan đến phát triển và triển khai O-RAN Dưới đây là danh sách các nhóm công việc O-RAN (WG1 đến WG8) cùng với mô tả tóm tắt của chức năng của từng nhóm:
- WG1 - Architecture and Interfaces (Kiến trúc và Giao diện): Tập trung vào mô hình kiến trúc tổng thể của O-RAN và định nghĩa các giao diện giữa các thành phần trong mạng
- WG2 - Non-Real Time RAN Intelligent Controller (non-RT RIC) (Bộ Điều Khiển Thông Minh RAN không thời gian thực): Phát triển các chức năng quản lý chính sách, phân tích RAN và quản lý chức năng dựa trên trí tuệ nhân tạo cho O-RAN không thời gian thực (> 500ms)
- WG3 - Near-Real Time RAN Intelligent Controller (near-RT RIC) (Bộ Điều Khiển RAN Gần Thời gian thực): Chịu trách nhiệm phát triển các chức năng quản lý tài nguyên sóng vô tuyến (RRM) trong khoảng thời gian gần thời gian thực (< 500ms) với trí tuệ nhân tạo tích hợp Bao gồm cân bằng tải, quản lý nguồn tài nguyên sóng, quản lý chất lượng dịch vụ và điều khiển liền mạch
- WG4 - Open Fronthaul: Tập trung vào việc định nghĩa và phát triển các giao diện phần mềm và giao thức cho kết nối trước trong O-RAN
- WG5 - Stack Reference Design and F1/V1/E1/X2/Xn Interfaces (Thiết kế tham chiếu ngăn xếp và giao diện F1/V1/E1/X2/Xn) Phát triển ngăn xếp tham chiếu và định nghĩa các giao diện 3GPP (F1, V1, E1, X2, Xn) cho O-RAN
CHƯƠNG 3: TRÌNH BÀY VỀ CÁC THÀNH PHẦN CÓ TRONG MẠNG RADIO ACCESS NETWORK
SVTH: VÕ THỊ KIM NGÂN LỚP: D19CQVTHI01-N Trang 21
- WG6 - Cloudification and orchestration (Đám mây hóa và triển khai): Tập trung vào việc định nghĩa các yêu cầu, tiêu chuẩn và hướng dẫn về đám mây hóa và quản lý trong O-RAN
- WG7 - O-RU Hardware (Phần cứng O-RU): Phát triển các yêu cầu phần cứng và hướng dẫn cho O-RU (O-RAN Radio Unit)
- WG8 - O-DU Hardware (Phần cứng O-DU): Tập trung vào việc phát triển yêu cầu phần cứng và hướng dẫn cho O-DU (O-RAN Distributed Unit)
Kiến trúc 5G O-RAN là một kiểu kiến trúc mạng di động mở và tách rời, trong đó các thành phần mạng được phân tách và tương tác thông qua các giao diện phần mềm tiêu chuẩn Kiến trúc này giúp tăng cường hiệu suất và linh hoạt của mạng 5G, cũng như khuyến khích sự đổi mới và tăng cường sự cạnh tranh trong ngành viễn thông.
Định hướng phát triển của O-RAN trong tương lai
Định hướng phát triển của O-RAN trong tương lai đang nhắm đến nhiều mục tiêu quan trọng nhằm nâng cao hiệu quả, linh hoạt và khả năng tương tác trong mạng di động
Tiếp tục phát triển và thúc đẩy tiêu chuẩn mở trong O-RAN để tạo ra môi trường mạng di động đa nhà cung cấp và đa nhà sản xuất Sử dụng các giao diện tiêu chuẩn và giao thức phổ biến giữa các thành phần mạng để đảm bảo tính tương thích và tương tác giữa các phần tử
Tăng cường hiệu năng của mạng O-RAN bằng cách sử dụng các công nghệ tiên tiến như MIMO (Multiple-Input Multiple-Output), Beamforming và Massive MIMO để cải thiện khả năng truyền dẫn và tăng cường phạm vi phủ sóng Đồng thời, sử dụng các thuật toán thông minh và trí tuệ nhân tạo để tối ưu hóa mạng và quản lý tài nguyên Đáp ứng nhu cầu mở rộng của mạng di động bằng cách hỗ trợ các tầng mạng mới như 6G
O-RAN cần liên tục cập nhật và phát triển để đáp ứng các yêu cầu về tốc độ dữ liệu cao, độ trễ thấp, và hỗ trợ hàng tỷ thiết bị kết nối (IoT - Internet of Things) Tiếp tục phát triển và cải tiến mạng 5G trong O-RAN để hỗ trợ các dịch vụ đa dạng như truyền hình 4K/8K, trò chơi trực tuyến, tự động hóa công nghiệp, tương tác trực tuyến, và nhiều ứng dụng khác Đảm bảo mạng O-RAN có đủ băng thông và khả năng xử lý để hỗ trợ các dịch vụ này
O-RAN cần mở rộng và tăng cường tích hợp các cơ sở hạ tầng như trạm cơ sở (gNodeB), trung tâm điều khiển mạng (gNB-CU/DU), và các thiết bị radio (O-RU) Điều này giúp tạo ra một hệ sinh thái mạng di động mở, linh hoạt và có khả năng mở rộng Đảm bảo bảo mật và an ninh trong mạng O-RAN là một ưu tiên hàng đầu Phát triển và triển khai các giải pháp bảo mật tiên tiến như mã hóa, xác thực và xử lý các mối đe dọa an ninh mạng Tận dụng lợi thế của O-RAN để mở rộng việc cung cấp dịch vụ di động đến các khu vực nông thôn và khu vực hẻo lánh O-RAN cung cấp khả năng triển khai linh hoạt và giá trị kinh tế, giúp cải thiện phạm vi phủ sóng và tiếp cận internet cho những khu vực khó tiếp cận
Hướng tới xây dựng mạng O-RAN hiệu quả về năng lượng và thân thiện với môi trường bằng cách sử dụng các công nghệ tiết kiệm năng lượng và tối ưu hóa quản lý tài nguyên mạng
O-RAN đang phát triển với mục tiêu tạo ra một môi trường mạng di động mở và linh hoạt, đồng thời đảm bảo tính tương thích, hiệu quả và an toàn trong việc triển khai và quản lý mạng di động trong tương lai
CHƯƠNG 4: TRÌNH BÀY VỀ KỸ THUẬT LẬP TRÌNH C/C++ CHO CÁC THÀNH PHẦN TRONG MẠNG RAN
SVTH: VÕ THỊ KIM NGÂN LỚP: D19CQVTHI01-N Trang 22
TRÌNH BÀY VỀ KỸ THUẬT LẬP TRÌNH C/C++ CHO CÁC THÀNH PHẦN
Máy ảo và ứng dụng của chúng
Máy ảo là một khái niệm trong lĩnh vực công nghệ thông tin, cho phép chạy nhiều hệ điều hành và ứng dụng trên cùng một máy tính vật lý Máy ảo được tạo ra bằng cách sử dụng phần mềm ảo hóa, mà có thể là VMware, VirtualBox, hay Kernel-based Virtual Machine trên nền Linux
Máy ảo có nhiều ứng dụng quan trọng, nó cho phép các nhà phát triển tạo ra môi trường ảo để kiểm thử và phát triển ứng dụng 5G, điều này giúp họ tiết kiệm thời gian và chi phí so với việc sử dụng các thiết bị vật lý; Người dùng có thể mô phỏng mạng 5G và thử nghiệm các kịch bản truyền thông khác nhau mà không cần đến cơ sở hạ tầng thực tế, điều này giúp họ nhanh chóng xác định các vấn đề và tối ưu hóa hiệu suất mạng; Phân chia hạ tầng mạng (Network Slicing), nó cho phép chia mạng thành nhiều phần độc lập để đáp ứng nhu cầu của các ứng dụng khác nhau, là công cụ quan trọng để triển khai và quản lý các phân đoạn này
Hệ điều hành Linux là một hệ điều hành mã nguồn mở và miễn phí dựa trên Linux Kernel
Nó được phát triển và sử dụng rộng rãi trên nhiều loại thiết bị, từ máy tính cá nhân, máy chủ, máy tính xách tay, điện thoại di động, đến các thiết bị nhúng và hệ thống nhúng phức tạp
Linux là một hệ điều hành mã nguồn mở, có nghĩa là mã nguồn của nó được công khai và có thể sửa đổi, phân phối và phát triển bởi cộng đồng lập trình viên trên toàn cầu Điều này mang lại tính minh bạch, độ tin cậy và khả năng tùy chỉnh cao
Linux Kernel là lõi của hệ điều hành Linux, điều khiển và quản lý tài nguyên phần cứng của máy tính như bộ nhớ, bộ vi xử lý, thiết bị ngoại vi và hệ thống tập tin Linus Torvalds đã tạo ra nhân Linux vào năm 1991, và kể từ đó, nó đã trở thành một phần quan trọng của nhiều bản phân phối Linux khác nhau
Linux không phải là một sản phẩm duy nhất, mà là một hạt nhân (kernel) kết hợp với các phần mềm và các thành phần khác để tạo thành các bản phân phối Linux Mỗi bản phân phối có đặc điểm riêng, đi kèm với giao diện người dùng, hỗ trợ phần cứng và công cụ quản lý gói khác nhau Một số bản phân phối Linux phổ biến bao gồm Ubuntu, Fedora, CentOS, Debian, Arch Linux và Linux Mint
Linux nổi tiếng với tính bảo mật cao và ổn định Nhờ cộng đồng mã nguồn mở rộng lớn và các bản vá bảo mật thường xuyên, Linux có thể nhanh chóng phát hiện và vá các lỗ hổng bảo mật mới Linux cung cấp môi trường phát triển mạnh mẽ cho các nhà phát triển, với các ngôn ngữ lập trình và công cụ phong phú để xây dựng ứng dụng Nó cũng có các công cụ quản lý gói như APT (Advanced Package Tool) và YUM (Yellowdog Updater, Modified) giúp dễ dàng cài đặt, cập nhật và gỡ bỏ phần mềm từ các kho lưu trữ chính thống và cộng đồng
Nhờ những đặc điểm và ưu điểm trên, hệ điều hành Linux đã trở thành một lựa chọn phổ biến và mạnh mẽ trong ngành công nghiệp công nghệ thông tin, được sử dụng rộng rãi cho nhiều mục đích khác nhau, từ máy tính cá nhân đến các hệ thống mạng phức tạp
Các kỹ thuật lập trình được trình bày trong phần tới đều được triển khai trên hệ điều hành Ubuntu Ubuntu là một hệ điều hành máy tính miễn phí và mã nguồn mở dựa trên Debian GNU/Linux Nó được phát triển bởi Canonical Ltd., một công ty của Nam Phi do Mark Shuttleworth thành lập Ubuntu được phát hành lần đầu tiên vào năm 2004 và kể từ đó đã trở thành một trong những hệ điều hành phổ biến nhất trên thế giới Ubuntu được thiết kế để dễ sử dụng và
CHƯƠNG 4: TRÌNH BÀY VỀ KỸ THUẬT LẬP TRÌNH C/C++ CHO CÁC THÀNH PHẦN TRONG MẠNG RAN
SVTH: VÕ THỊ KIM NGÂN LỚP: D19CQVTHI01-N Trang 23 có sẵn cho nhiều loại thiết bị, bao gồm máy tính để bàn, máy tính xách tay, máy tính bảng và điện thoại thông minh Hệ điều hành này đi kèm với một bộ ứng dụng đa dạng, bao gồm trình duyệt web, trình soạn thảo văn bản, trình quản lý tập tin và nhiều hơn nữa.
Makefile
Makefile được sử dụng để giúp xác định những phần nào của một chương trình lớn cần được biên dịch lại Trong hầu hết các trường hợp, các tập tin C hoặc C++ được biên dịch Các ngôn ngữ khác thường có các công cụ riêng của chúng có chức năng tương tự như Make Ngoài việc biên dịch, Make cũng có thể được sử dụng trong các trường hợp khác, khi bạn cần chạy một loạt các hướng dẫn tùy thuộc vào các tập tin đã thay đổi Hướng dẫn này sẽ tập trung vào việc biên dịch C/C++
Dưới đây là một ví dụ về biểu đồ phụ thuộc có thể xây dựng với Make Nếu bất kỳ phụ thuộc nào của tập tin thay đổi, thì tập tin đó sẽ được biên dịch lại:
Hình 4 1 Biểu đồ phụ thuộc phụ thuộc có thể xây dựng bằng Make
Có nhiều hệ thống xây dựng thay thế phổ biến cho C/C++ như SCons, CMake, Bazel và Ninja Một số trình biên tập mã như Microsoft Visual Studio có các công cụ xây dựng tích hợp sẵn Đối với Java, có Ant, Maven và Gradle Các ngôn ngữ khác như Go và Rust cũng có các công cụ xây dựng riêng của chúng
Các ngôn ngữ thông dịch như Python, Ruby và JavaScript không đòi hỏi có phiên bản đối quan tới Makefile Mục tiêu của Makefile là biên dịch các tập tin cần thiết dựa trên các tập tin đã thay đổi Nhưng khi các tập tin trong các ngôn ngữ thông dịch thay đổi, không có gì cần được biên dịch lại Khi chạy chương trình, phiên bản mới nhất của tập tin sẽ được sử dụng Đặc điểm chính của Makefile:
- Mục tiêu (Target): Mục tiêu là các tập tin kết quả cần xây dựng sau khi thực hiện quá trình biên dịch Ví dụ: chương trình thực thi (executable), thư viện (library) hoặc các tập tin đầu ra khác
- Phụ thuộc (Dependencies): Phụ thuộc là các tập tin mã nguồn mà mục tiêu phụ thuộc vào
Nếu một tập tin mã nguồn đã thay đổi, Makefile sẽ biên dịch lại các mục tiêu liên quan
- Quy tắc (Rule): Quy tắc xác định cách biên dịch các tập tin và tạo ra các mục tiêu Nó bao gồm các chỉ thị cho trình biên dịch và các tham số cần thiết
- Biến (Variable): Biến trong Makefile giúp lưu trữ thông tin như tên trình biên dịch, các tùy chọn biên dịch, đường dẫn đến các tập tin và thư mục, và nhiều thông tin khác
Dưới đây là một ví dụ đơn giản về Makefile cho một chương trình C:
# Biến để lưu trữ tên trình biên dịch CC = gcc
CHƯƠNG 4: TRÌNH BÀY VỀ KỸ THUẬT LẬP TRÌNH C/C++ CHO CÁC THÀNH PHẦN TRONG MẠNG RAN
SVTH: VÕ THỊ KIM NGÂN LỚP: D19CQVTHI01-N Trang 24
# Các tùy chọn biên dịch CFLAGS = -Wall -O2
# Tên mục tiêu: chương trình thực thi TARGET = my_program
# Danh sách các tập tin mã nguồn SOURCES = main.c foo.c bar.c
# Biên dịch các tập tin mã nguồn thành tập tin đối tượng (.o) OBJECTS = $(SOURCES:.c=.o)
# Quy tắc để tạo các tập tin đối tượng từ các tập tin mã nguồn
# Quy tắc để xây dựng chương trình thực thi từ các tập tin đối tượng
$(TARGET): $(OBJECTS) $(CC) $(CFLAGS) $(OBJECTS) -o $(TARGET)
# Quy tắc xóa các tập tin đối tượng và chương trình thực thi clean: rm -f $(OBJECTS) $(TARGET)
Trong ví dụ trên, Makefile định nghĩa mục tiêu là chương trình thực thi my_program và các tập tin mã nguồn cần thiết là main.c, foo.c và bar.c Biên dịch bằng trình biên dịch gcc và thêm các tùy chọn biên dịch được lưu trữ trong biến CFLAGS
Khi chạy lệnh make, Makefile sẽ tự động xác định các phụ thuộc giữa các tập tin và biên dịch các tập tin mã nguồn thành các tập tin đối tượng Sau đó, nó sẽ xây dựng chương trình thực thi my_program từ các tập tin đối tượng.
Multithread
4.3.1 Tạo và quản lý các luồng (thread) trong môi trường đa luồng
Tạo một chương trình C sử dụng thư viện pthread để tạo và quản lý các luồng (thread)
Chương trình này bao gồm 3 luồng (task1, task2 và task3) chạy song song và chia sẻ một biến toàn cục (globalVariable) Để đảm bảo tính đồng bộ và tránh xung đột dữ liệu, chương trình sử dụng mutex (pthread_mutex_t) để khóa (lock) và mở khóa (unlock) quyền truy cập vào biến toàn cục khi các luồng thực hiện
Khai báo biến và khởi tạo mutex: int globalVariable = 0; pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
- Biến globalVariable là biến toàn cục được sử dụng để chia sẻ giữa các luồng Ban đầu, giá trị của biến này được gán bằng 0
- Biến mutex là một biến kiểu pthread_mutex_t dùng để khóa (lock) và mở khóa (unlock) quyền truy cập vào biến globalVariable Hàm PTHREAD_MUTEX_INITIALIZER được sử dụng để khởi tạo mutex với giá trị mặc định Định nghĩa các hàm thực hiện công việc cho từng luồng:
CHƯƠNG 4: TRÌNH BÀY VỀ KỸ THUẬT LẬP TRÌNH C/C++ CHO CÁC THÀNH PHẦN TRONG MẠNG RAN
SVTH: VÕ THỊ KIM NGÂN LỚP: D19CQVTHI01-N Trang 25 void *task1(void *vargp){ while(1){ pthread_mutex_lock(&mutex); globalVariable += 10; printf("Task 1: %d\n", globalVariable); pthread_mutex_unlock(&mutex); sleep(1);
Hàm task1: Thực hiện việc tăng giá trị của biến globalVariable lên 10 và in ra giá trị mới
Sau đó, ngủ trong 1 giây void *task2(void *vargp){ while(1){ pthread_mutex_lock(&mutex); globalVariable -= 5; printf("Task 2: %d\n", globalVariable); pthread_mutex_unlock(&mutex); sleep(5);
Hàm task2: Thực hiện việc giảm giá trị của biến globalVariable đi 5 và in ra giá trị mới
Sau đó, ngủ trong 5 giây void *task3(void *vargp){ while(1){ pthread_mutex_lock(&mutex); printf("Task 3: %d\n", globalVariable); pthread_mutex_unlock(&mutex); sleep(2);
Hàm task3: Chỉ in ra giá trị hiện tại của biến globalVariable mà không thay đổi giá trị của nó Sau đó, ngủ trong 2 giây
Hàm main() - Chương trình bắt đầu từ hàm main Đầu tiên, ba biến kiểu pthread_t (tid1, tid2, tid3) được khai báo để lưu các ID của ba luồng được tạo Tiếp theo, ba luồng được tạo bằng cách sử dụng hàm pthread_create: int main(){ pthread_t tid1, tid2, tid3; if (pthread_create(&tid1, NULL, task1, NULL) != 0){ printf("Thread can't be created"); return 1;
} sleep(.1); if (pthread_create(&tid2, NULL, task2, NULL) != 0){ printf("Thread can't be created"); return 1;
} sleep(.1); if (pthread_create(&tid3, NULL, task3, NULL) != 0){ printf("Thread can't be created");
CHƯƠNG 4: TRÌNH BÀY VỀ KỸ THUẬT LẬP TRÌNH C/C++ CHO CÁC THÀNH PHẦN TRONG MẠNG RAN
SVTH: VÕ THỊ KIM NGÂN LỚP: D19CQVTHI01-N Trang 26 return 1;
} if (pthread_join(tid1, NULL) != 0 || pthread_join(tid2, NULL) != 0 || pthread_join(tid3, NULL) != 0){ printf("Thread can't be joined"); return 1;
Lần lượt tạo các hàm pthread_create(&tid, NULL, task1, NULL), pthread_create(&tid2, NULL, task2, NULL) và pthread_create(&tid3, NULL, task3, NULL) để tạo luồng task1 sau đó lưu ID vào biến tid1, tạo luồng task2 sau đó lưu ID của nó vào biến tid2 và tạo luồng task3 sau đó lưu ID vào biến tid3 Để đảm bảo rằng các luồng có thể chạy song song ngay sau khi tạo, hàm sleep(.1) được gọi sau mỗi lệnh pthread_create để ngắn chặn chương trình chờ trong 0.1 giây Tiếp theo, hàm pthread_join được sử dụng để chờ các luồng hoàn thành Hàm này đảm bảo rằng chương trình không kết thúc cho đến khi tất cả các luồng đã hoàn thành công việc của mình Cuối cùng, chương trình kết thúc và trả về giá trị 0
Trong quá trình chạy, ba luồng task1, task2 và task3 sẽ chạy song song và cùng truy cập vào biến toàn cục globalVariable Tuy nhiên, để đảm bảo đồng bộ hoạt động, luồng nào muốn thay đổi giá trị của biến globalVariable cần khóa mutex trước khi thực hiện thay đổi và mở khóa mutex sau khi hoàn tất Điều này đảm bảo rằng chỉ có một luồng có quyền truy cập vào biến globalVariable tại một thời điểm, từ đó tránh được xung đột và hiệu chỉnh sai kết quả
Nội dung của Makefile để biên dịch chương trình trên:
CC = gcc CFLAGS = -Wall -Wextra -pthread SRC = main.c
OBJ = main.o TARGET = program all: $(TARGET)
$(CC) $(CFLAGS) -c $(SRC) -o $(OBJ) clean: rm -f $(OBJ) $(TARGET) Kết quả chạy chương trình:
CHƯƠNG 4: TRÌNH BÀY VỀ KỸ THUẬT LẬP TRÌNH C/C++ CHO CÁC THÀNH PHẦN TRONG MẠNG RAN
SVTH: VÕ THỊ KIM NGÂN LỚP: D19CQVTHI01-N Trang 27
Hình 4 2 Kết quả chạy chương trình tạo và quản lý các luồng
4.1.2 Sử dụng các luồng (thread) để xử lý ghi log cùng lúc
Một chương trình C++ đơn giản để ghi log vào console và file Chương trình sử dụng các luồng (thread) để xử lý ghi log cùng lúc và sử dụng mutex và condition_variable để đảm bảo đồng bộ trong việc ghi log và tránh xung đột dữ liệu giữa các luồng
#include Định nghĩa kiểu enum Severity: Kiểu enum Severity được sử dụng để đại diện cho mức độ nghiêm trọng của log, bao gồm INFO, WARN và ERROR enum class Severity { INFO,
Khai báo và định nghĩa cấu trúc LogMessage: Cấu trúc LogMessage chứa hai thành phần: severity (kiểu enum Severity) và message (kiểu std::string), dùng để lưu thông tin của log. struct LogMessage { Severity severity; std::string message;
Khai báo biến toàn cục và mutex Biến toàn cục logQueue (kiểu std::queue) được sử dụng để lưu trữ các log được ghi vào từ các luồng Biến toàn cục mutex (kiểu std::mutex) được sử dụng để đảm bảo đồng bộ hóa truy cập vào logQueue giữa các luồng
Khai báo condition_variable và stopLogging Biến toàn cục logCondition (kiểu std::condition_variable) được sử dụng để đồng bộ hoạt động giữa các luồng khi ghi log Biến toàn cục stopLogging (kiểu bool) được sử dụng để xác định khi nào nên dừng quá trình ghi log std::queue logQueue; std::mutex mutex; std::condition_variable logCondition; bool stopLogging = false;
CHƯƠNG 4: TRÌNH BÀY VỀ KỸ THUẬT LẬP TRÌNH C/C++ CHO CÁC THÀNH PHẦN TRONG MẠNG RAN
SVTH: VÕ THỊ KIM NGÂN LỚP: D19CQVTHI01-N Trang 28 Định nghĩa hàm writeToConsole(const LogMessage& logMessage): Hàm này thực hiện ghi thông tin log vào console dựa trên mức độ nghiêm trọng (severity) của log void writeToConsole(const LogMessage& logMessage) { switch (logMessage.severity) { case Severity::INFO: std::cout