1_Intro.pptxfffffffffffffffffffffffffffffff

nguyenvanthanh76bk 0 views 31 slides Oct 15, 2025
Slide 1
Slide 1 of 31
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31

About This Presentation

d


Slide Content

Introduction

User Program Đa số các hệ thống đơn giản là các chương trình người dùng được chạy trên vi điều khiển. Microcontroller Mem Timer I/O Peripheral Program Sensors Devices

Operating System Hệ điều hành (Operating System) là phần mềm quản lý và xử lý các tài nguyên, đóng vai trò như 1 giao diện giao tiếp giữa người dùng và phần cứng máy tính. OS Microcontroller Mem Timer I/O Peripheral User Program User Program User Program Devices

Quản lý tài nguyên hệ thống: Cung cấp các giải thuật cấp phát & quản trị tài nguyên. ⇒ Đảm bảo tài nguyên được sử dụng hiệu quả cân bằng. Program Program Resource Resource OS Vai trò của OS CPU RAM Periph CPU RAM Periph

Vai trò của OS Phối hợp việc thực thi cho chương trình: Lên lịch điều phối và phân bổ tài nguyên cho chương trình. ⇒Đảm bảo các chương trình được vận hành công bằng hiệu quả. OS User Program User Program User Program CPU time Memory Priority

Vai trò của OS Quản lý thiết bị: Theo dõi tất cả các thiết bị được kết nối với hệ thống. ⇒Tạo ra môi trường có tính linh hoạt về dễ dàng cho việc sử dụng các thiết bị.

Các dịch vụ OS Giao diện cho người dùng. ⇒Cung cấp giao diện thống nhất cho người dùng để tương tác với hệ thống. Program Program OS Drivers APIs BareMetal (Register level) User Interface (UI) GUI/Batch/Command-line Drivers Drivers Drivers BareMetal (Register level)

Thực thi chương trình: ⇒Đảm bảo quá trình tạo, khởi chạy chương trình khi cần thiết, đồng bộ cũng như loại bỏ chương trình. Các dịch vụ OS User Program User Program User Program RAM Manager Scheduler Task … Execution on CPU Manager

Bảo mật: ⇒Cung cấp cơ chế kiểm tra và bảo mật đối với các phần mềm, file. Các dịch vụ OS

Quản lý tập tin: ⇒Cung cấp cơ chế quản lý tập tin trong bộ nhớ cho các chương trình đang chạy. Các dịch vụ OS Program File management File .img .pdf .cpp

Giao tiếp: ⇒Cung cấp cơ chế để chia sẻ, trao đổi dữ liệu giữa các tác vụ/tiến trình. Phát hiện và xử lý lỗi: ⇒Đảm bảo hệ thống có thể vận hành khi có lỗi xảy ra. Các dịch vụ OS P1 P2 P3 Data sharing

UNIX Unix là một hệ điều hành máy tính đa nhiệm, mã nguồn mở và dựa trên giao diện dòng lệnh. Đặc điểm nổi bật của Unix là khả năng xử lý nhiều tác vụ đồng thời, cung cấp một giao diện dòng lệnh linh hoạt để tương tác với hệ thống.

UNIX History Những năm 1960 tại Bell Labs, của AT&T. Hệ điều hành này được phát triển với mục đích ban đầu là để sử dụng trong hệ thống Bell của AT&T. Sau đó, Unix đã được cấp phép rộng rãi và trở thành nền tảng cho nhiều hệ điều hành khác sau này như BSD, Xenix, mac OS và Linux.

LINUX Linux là 1 dự án mã nguồn mở và hoàn toàn miễn phí. Linux là 1 UNIX-Clone OS: dựa trên ý tưởng của UNIX, nhưng không sử dụng trực tiếp mã nguồn của UNIX. Linux chỉ là một Kernel Project.

POSIX POSIX POSIX (Portable Operating System Interface) là 1 chuẩn hệ điều hành dành cho biến thể của HĐH Unix được định ra bởi IEEE. POSIX nhắm đến khả năng tương thích và tương tác giữa các hệ điều hành. Command-line System APIs Utilities Interface POSIX OS POSIX OS … Program

POSIX & LINUX LINUX có tính tương thích cao với các UNIX OS qua tiêu chuẩn mở POSIX. Ví dụ: Cả LINUX và UNIX đều sử dụng giao diện Command-Line với cùng các lệnh và options ( tuy vẫn có khác biệt nhưng rất ít). ⇒Nâng cao tính linh hoạt giữa các OS và giữa các phiên bản của cùng 1 OS cho người dùng khi phát triển các ứng dụng. Program Linux 1.0 Linux 2.0 Unix

LINUX vs other UNIX based OS Đặc điểm Unix Linux Cấp phép Độc quyền Mã nguồn mở Kiến trúc C C và C++ Cộng đồng phát triển Nhà phát triển chuyên nghiệp Cộng đồng các nhà phát triển Hỗ trợ phần mềm Thương mại và mã nguồn mở Mã nguồn mở

LINUX vs other UNIX based OS Linux và cả UNIX đều phát triển dựa trên các tiêu chuẩn đã có sẵn. LINUX hoàn toàn được phát triển với source riêng.

Kernel Project Kernel Project là nhân của 1 OS, thành phần chính để các nhà phát triển tạo nên các OS. Kernel là chương trình thay mặt các chương trình người dùng để tương tác với phần cứng.\ Kernel không bao gồm các ứng dụng và giao diện người dùng. Program Hardware Kernel Driver Driver Driver Program Hardware Driver Driver Driver

Full Stack OS Full Stack OS Bao gồm Kernel và các ứng dụng, giao diện người dùng. Các hệ điều hành ta thường dùng phổ biến như Windows, MacOS… là những FullStack OS KERNEL Hardware Application & Service Driver Driver Driver

Full Stack OS Nhiều Full Stack OS khác nhau có thể được phát triển từ cùng Kernel. Một số OS Linux thường gặp: Ubuntu, Debian… đây gọi là các bản phân phối của Linux, các FullStack OS phát triển từ nhân Linux. KERNEL Hardware Application & Service Application & Service Application & Service Driver Driver Driver OS 1 OS 2 …

CPU Trap & Syscall. Vì có nhiều đặc quyền nên cơ chế Trap và Syscall được sử dụng để có thể chuyển đổi giữa các cấp độ đặc quyền. Trap Syscall

Kiến trúc cấp cao của OS Kernel. Kernel cũng được phát triển với nhiều chương trình phụ trách nhiều chức năng, nhiệm vụ khác nhau.

MAKFILE Giới thiệu về Makefile Quá trình biên dịch một chương trình C Static Lib va ̀ Shared Lib

Quá trình biên dịch một chương trình C 1. Giai đoạn tiền xử lý (Pre-processing) Loại bo ̉ comments Mơ ̉ rộng các macros Mơ ̉ rộng các include file Biên dịch các câu lệnh điều kiện Kết quả thu được sau bước này là một file “. i ” 2. Giai đoạn dịch ngôn ngữ bậc cao sang asm Ở giai đoạn này , mã nguồn sẽ tiếp tục thực hiện biên dịch tư ̀ file “. i ” thu được ở bước trước thành một file “.s” 3. Giai đoạn dịch asm sang mã máy (Assembly) File “.s” ở giai đoạn trước tiếp tục được sư ̉ dụng cho giai đoạn này . Thông qua assembler, output mà chúng ta thu được là một file “.o”. 4. Giai đoạn Linker (Linking) Mỗi một file “.o” thu được ở gian đoạn Assembly là một phần của chương trình . Ở giai đoạn linking sẽ liên kết chúng đê ̉ thu được một file thực thi hoàn chỉnh .

CMAKE Giới Thiệu Make và Makefile cung cấp một hệ thống build mà chúng ta có thể sử dụng để quản lý việc compile và re-compilation của một chương trình được viết bằng ngôn ngữ bất kỳ . Như vậy sẽ khó cho trường hợp project có nhiều subdirectories hoặc phải chạy trên nhiều nền tảng khác nhau . ⇒ CMake ra đời . CMake là một công cụ sinh Makefile đa nền tảng (Windows/Unix/Linux). Nói đơn giản thì CMake sẽ tự động tạo ra Makefile cho project của chúng ta. Other Cmake Modules CmakeList.txt CMake MakeFile Make

Bước 1 : Tạo file .c Bước 2 : Tạo file CMakeLists.txt. Đây là đầu vào của hệ thống build CMake , giúp build các gói phần mềm . Bước 3 : Tạo thư mục Build. CMake sẽ tạo ra nhiều tệp trong quá trình chạy , tốt nhất nên có thư mục Build để tổ chức chúng gọn gàng . Bước 4 : Cấu hình CMake ( tạo file Config và Makefile ). Chạy lệnh cd Build để vào thư mục Build. Tùy hệ điều hành mà chạy lệnh CMake phù hợp : Linux : sh cmake .. Windows : sh cmake -G "Unix Makefiles " .. cmake -DCMAKE_MAKE_PROGRAM="make.exe" -G "Unix Makefiles " .. Bước 5 : Build mã nguồn . Chạy lệnh : sh cmake --build . CMAKE

Build.sh Viết build.sh để biên dịch thư viện và chương trình 2. Viết install.sh để cài đặt thư viện 3. CMakeLists.txt File build.sh này sẽ thực hiện các bước sau : Tạo thư mục build/ nếu chưa có Biên dịch các file . cpp thành các file .o Tạo thư viện tĩnh libipb_arithmetic.a từ các file .o Biên dịch chương trình main_exec và liên kết với thư viện Tạo thư mục results/bin/ và results/lib/ nếu chưa có Di chuyển thư viện và file thực thi vào results/ Khi chạy ./build.sh , nó sẽ : ✅ Tạo thư mục build nếu chưa có ✅ Biên dịch file . cpp thành .o ✅ Tạo thư viện tĩnh .a ✅ Biên dịch chương trình main_exec và liên kết với thư viện ✅ Di chuyển file thư viện và file thực thi vào thư mục results/ Install.sh File install.sh giúp cài đặt các file cần thiết sau khi build xong ✅ Tạo thư mục install/ nếu chưa có ✅ Sao chép thư viện .a vào install/lib/ ✅ Sao chép file header vào install/include/ ✅ Sao chép file thực thi vào install/bin/

Kiểm tra định dạng code với clang-format Kiểm tra và hiển thị kết quả ra màn hình ( không sửa file) clang-format your_file.cpp Tự động sữa trực tiếp trong file clang-format -i your_file.cpp Một số lưu ý khi chạy clang-format, clang-tidy Thường các dự án sẽ có file cấu hình ( ví dụ .clang-format, .clang-tidy) để quy định style cũng như danh sách check. Nếu có sẵn , clang-format và clang-tidy sẽ tự động đọc và áp dụng . Bạn nên chạy clang-format - i trước để định dạng code, sau đó chạy clang-tidy để phát hiện lỗi logic hoặc vi phạm quy tắc code.

Html_writer.cpp Hàm Chức năng OpenDocument() Mở đầu trang HTML (<!DOCTYPE html>). CloseDocument() Kết thúc trang HTML (</html>). AddCSSStyle(stylesheet) Thêm file CSS vào HTML. AddTitle(title) Đặt tiêu đề cho trang web. OpenBody () Mở phần <body> của trang web. CloseBody() Đóng <body> của trang web. OpenRow() Mở <div class="row"> (hàng ảnh). CloseRow() Đóng <div class="row">. AddImage(img_path, score, highlight) Thêm ảnh vào HTML với điểm số. Ảnh đầu tiên được bôi đỏ nếu highlight = true .

image_browser.cpp AddFullRow (row, first_row ) Thêm một hàng gồm 3 ảnh vào HTML. Ảnh đầu tiên của hàng đầu tiên được bôi đỏ. CreateImageBrowser(title, stylesheet, rows) Tạo toàn bộ trang HTML với nhiều hàng ảnh . #include "image_browser.hpp" int main() { std::vector< image_browser :: ImageRow > rows = { { {" web_app /data/000000.png", 9.5f}, {" web_app /data/000100.png", 8.9f}, {" web_app /data/000200.png", 7.6f} }, { {" web_app /data/000300.png", 8.5f}, {" web_app /data/000400.png", 7.2f}, {" web_app /data/000500.png", 6.6f} } }; image_browser :: CreateImageBrowser ("Image Gallery", "style.css", rows); return 0; }
Tags