Tìm hiểu single thread và multi thread (nguyên lý hệ điều hành)

13 8 0
Tìm hiểu single thread và multi thread (nguyên lý hệ điều hành)

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

1. Giới thiệu về single thread và multi thread server architecture, multithread model .. 4 1.1.Single thread ............................................................................................................... 4 1.2.Multi thread server architecture ................................................................................... 4 1.3.Multithread model ........................................................................................................ 5 2. Chi tiết các giải pháp: ................................................................................................. 7 2.1:Singlethread: .............................................................................................................. 7 2.2: Multithread: ................................................................................................................. 8 2.3: Multithread Model: ...................................................................................................... 8 3. Demo .......................................................................................................................... 8 4. Đánh giá so sánh công nghệthuật toán khác cùng giải quyết vấn đề ........................ 9 4.1.So sánh Single thread và Event Loop và Nonblocking IO .......................................... 9 4.2. So sánh Multi thread server architecture và Java Threads ....................................... 11 5.Tài liệu tham khảo ..................................................................................................... 12

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ  BÁO CÁO BÀI TẬP LỚN MÔN: NGUYÊN LÝ HỆ ĐIỀU HÀNH LỚP INT2214 2: Nhóm 14 Giảng viên hướng dẫn: TS.Nguyễn Thị Hậu Sinh viên thực hiện: Nguyễn Thị Tình - 19020177 Trương Lương Lai - 20020338 Hà Nội, 2023 Mục lục Lời mở đầu Giới thiệu single thread multi thread server architecture, multithread model 1.1.Single thread 1.2.Multi thread server architecture 1.3.Multithread model Chi tiết giải pháp: 2.1:Single-thread: 2.2: Multithread: 2.3: Multithread Model: Demo Đánh giá so sánh cơng nghệ/thuật tốn khác giải vấn đề 4.1.So sánh Single thread Event Loop Non-blocking I/O 4.2 So sánh Multi thread server architecture Java Threads 11 5.Tài liệu tham khảo 12 Lời mở đầu: Trong ngữ cảnh kiến trúc máy chủ, hiểu biết mơ hình đơn luồng (single thread) đa luồng (multi thread) đóng vai trị quan trọng trình thiết kế triển khai hệ thống Điều đặc biệt xem xét mô hình đa luồng Mơ hình đơn luồng sử dụng luồng thực thi để xử lý tất yêu cầu từ người dùng nguồn khác Trong đó, mơ hình đa luồng sử dụng nhiều luồng thực thi song song để xử lý yêu cầu Điều cải thiện hiệu suất khả đáp ứng hệ thống Mơ hình đa luồng triển khai theo nhiều cách, mơ hình phổ biến mơ hình đa luồng (multithread model) Trong mơ hình này, luồng độc lập xử lý phần nhỏ công việc tổng thể, giúp tận dụng tối đa nguồn lực tăng khả mở rộng hệ thống Bằng cách hiểu rõ hai mơ hình, đưa định thiết kế phù hợp với yêu cầu cụ thể dự án tối ưu hóa khả hiệu suất hệ thống máy chủ Giới thiệu single thread multi thread server architecture, multithread model 1.1.Single thread Khái niệm: Trong kiến trúc máy chủ đơn luồng, máy chủ sử dụng luồng để xử lý yêu cầu từ khách hàng cách Điều có nghĩa xử lý yêu cầu trước xử lý yêu cầu Đặc trưng: • Dễ triển khai hiểu, phức tạp • Phù hợp cho ứng dụng nhẹ khách hàng đồng thời • Khả xử lý u cầu theo thứ tự • Có thể gây block luồng xử lý yêu cầu tốn thời gian Vai Trò: Dùng cho ứng dụng đơn giản, có kết nối đồng thời, khơng địi hỏi xử lý đồng thời nhiều tác vụ Ứng Dụng Thực Tiễn: • Hệ thống nhỏ với người sử dụng, nơi hiệu suất ưu tiên hàng đầu • Ứng dụng đơn giản máy chủ web cho trang web cá nhân doanh nghiệp nhỏ 1.2.Multi thread server architecture Khái niệm: Trong kiến trúc máy chủ đa luồng, máy chủ sử dụng nhiều luồng để xử lý yêu cầu từ khách hàng đồng thời Mỗi yêu cầu gửi đến luồng riêng biệt, cho phép xử lý đa nhiệm Đặc trưng: • Khả xử lý nhiều yêu cầu đồng thời • Các luồng chia sẻ tài nguyên cách hiệu • Có thể gây vấn đề đồng race condition không quản lý cẩn thận Vai Trị: Thích hợp cho ứng dụng đòi hỏi xử lý đồng thời nhiều kết nối, tăng hiệu suất độ phản hồi Ứng Dụng Thực Tiễn: • Máy chủ web đa nhiệm phục vụ nhiều yêu cầu đồng thời từ nhiều người dùng • Hệ thống điều khiển video trực tuyến, nơi cần xử lý đồng thời nhiều luồng liệu video từ nhiều nguồn 1.3.Multithread model Khái niệm: Multithread model mơ hình lập trình cho phép phát triển ứng dụng sử dụng đa luồng để cải thiện hiệu suất đáp ứng Trong mơ hình này, luồng độc lập tạo để xử lý nhiệm vụ cụ thể Điều cho phép chia sẻ tài nguyên máy tính tận dụng vi xử lý đa nhân.Concurrency Parallelism: Cho phép nhiều luồng thực công việc đồng thời tận dụng tài nguyên đa lõi Đặc trưng: • Bộ Nhớ Chia Sẻ: Các luồng chia sẻ không gian nhớ, giúp truyền thơng liệu chúng • Thực Hiện Cơng Việc Độc Lập: Mỗi luồng thực cơng việc độc lập, tăng đồng thời tương tác luồng • Synchronization: Địi hỏi việc sử dụng kỹ thuật đồng hóa locks semaphores để tránh xung đột liệu • Deadlock Race Conditions: Cần quản lý cẩn thận để tránh vấn đề deadlock race conditions • Hiệu Suất Tăng Cao: Multithreading cung cấp hiệu suất tốt ứng dụng có nhiều nhiệm vụ cần thực đồng thời • Quản Lý Luồng: Địi hỏi quản lý cẩn thận việc tạo, trì hủy bỏ luồng • Tăng Cường Đáng Kể Cho Ứng Dụng Đa Nhiệm: Multithread model tăng cường khả đa nhiệm ứng dụng, giúp xử lý nhiều công việc đồng thời • Phục Hồi Lỗi: Yêu cầu quản lý cẩn thận để tránh vấn đề memory leaks đảm bảo tính qn liệu Vai Trị: Cung cấp đồng thời thông qua việc sử dụng nhiều luồng thực thi quy trình (process) Ứng Dụng Thực Tiễn: • Ứng dụng địi hỏi xử lý đồng thời nhiều tác vụ ứng dụng đồng thời tác vụ tính tốn giao diện người dùng • Hệ thống chat nơi cần xử lý yêu cầu nhiều người dùng lúc Chi tiết giải pháp: Các công nghệ sinh để giải số vấn đề sau: Single-threading, tức việc sử dụng luồng thực thi ứng dụng, thường thiết kế để giải số vấn đề sau: 2.1:Single-thread: • Đơn Giản Hóa: Single-threading giúp làm cho mã nguồn trở nên đơn giản khơng cần quản lý đồng hóa nhiều luồng lúc • Dễ Debug: Việc debug ứng dụng với single-threading thường dễ dàng hơn, bạn cần theo dõi luồng thực thi • Ít Rủi Ro Đồng Bộ Hóa Dữ Liệu: Khơng có vấn đề đồng hóa liệu luồng, giảm nguy phát sinh lỗi nhiều luồng truy cập sửa đổi liệu • Sử Dụng Hiệu Quả Trong Một Số Trường Hợp Cụ Thể: Trong trường hợp đơn giản, khơng địi hỏi xử lý đồng thời nhiều, single-threading mang lại hiệu suất tốt • Ứng Dụng Nhỏ Dễ Hiểu: Trong ứng dụng nhỏ đơn giản, việc sử dụng luồng lựa chọn thích hợp để đơn giản hóa phát triển hiểu mã nguồn 2.2: Multithread: • Xử Lý Đồng Thời: Mơ hình multithread server sử dụng nhiều luồng thực thi để xử lý nhiều yêu cầu đồng thời Mỗi luồng xử lý yêu cầu mà khơng làm chặn luồng khác • Hiệu Suất Cao: Đối với ứng dụng có nhiều yêu cầu đồng thời, multithread server giúp tận dụng tốt tài nguyên hệ thống cải thiện hiệu suất 2.3: Multithread Model: • Phân Tách Nhiệm Vụ: Multithread model chia nhỏ công việc thành luồng riêng biệt, luồng đảm nhận phần công việc Điều giúp tận dụng đa nhân nhiệm hệ thống • Parallel Processing: Model thường sử dụng để thực xử lý đồng thời xử lý song song, giúp cải thiện hiệu suất ứng dụng có nhiều tác vụ cần thực lúc • Đồng Bộ Hóa: Mơ hình multithread thường địi hỏi kỹ thuật đồng hóa để tránh xung đột liệu đảm bảo tính quán ứng dụng Demo Link video demo chức tiêu biểu Single thread Multi thread server architecture, Multithread model: https://drive.google.com/file/d/1H7WNdWmW9UTOY_9sJKEN43BGKGuZnw49/view Đánh giá so sánh cơng nghệ/thuật tốn khác giải vấn đề Chúng em tiến hành so sánh đánh giá Single thread Event Loop Non-blocking I/O, Multi thread server architecture Java Threads 4.1.So sánh Single thread Event Loop Non-blocking I/O Tên công nghệ/thuật Ưu điểm Nhược điểm toán Single Thread ● Dễ triển khai hiểu, ● Khả xử lý đồng khơng có vấn đề đồng thời giảm có hóa luồng luồng ● Việc theo dõi luồng đơn ● Khi có tác vụ chờ giản so với việc đợi, tồn q trình quản lý nhiều luồng chờ đợi luồng ● Ít xung đột bị block luồng Event Loop Nonblocking I/O ● Có thể xử lý nhiều kết ● Phức tạp hóa code nối mạng đồng thời mà ● Có thể khó theo dõi khơng cần nhiều luồng debug vấn đề ● Event Loop giúp giảm liên quan đến việc sử dụng tài nguyên callback hell hệ thống so với việc tạo nhiều luồng ● Non-blocking I/O giúp tránh chờ đợi, giảm thiểu chậm trễ Kết luận: • Nếu ứng dụng có u cầu đơn giản khơng địi hỏi nhiều xử lý đồng thời, Single Thread lựa chọn tốt • Nếu cần xử lý nhiều kết nối mạng đồng thời với hiệu suất cao, Event Loop Non-blocking I/O lựa chọn phù hợp • Sự chọn lựa hai phương pháp thường phụ thuộc vào yêu cầu cụ thể ứng dụng yếu tố hiệu suất, độ tin cậy, dễ bảo trì 10 4.2 So sánh Multi thread server architecture Java Threads Tên cơng Ưu điểm Nhược điểm cụ/thuật tốn Multi-thread ● Cho phép xử lý nhiều tác ● Điều quản lý luồng vụ đồng thời, cải thiện đồng thời phức hiệu suất hệ thống tạp dễ dẫn đến ● Các luồng vấn đề deadlock ưu tiên để ưu tiên việc ● Cần phải đảm bảo đồng xử lý tác vụ quan hóa truy cập vào trọng liệu chia sẻ để tránh ● Tận dụng tốt tình trạng đua điều kiện CPU có nhiều lõi Java Thread ● Java cung cấp API ● Mỗi luồng sử dụng đơn giản để tạo quản phần tài nguyên hệ lý luồng, giúp giảm thống, việc quản phức tạp triển khai lý số lượng lớn luồng đa luồng tốn ● Java chạy nhiều ● Vấn đề deadlock luồng JVM, race conditions có nâng cao hiệu suất ứng thể xảy khó để dụng theo dõi Kết luận: • Multi-thread khái niệm tổng quát, Java Threads cách Java cụ thể triển khai quản lý đa luồng 11 • Java Threads giúp giảm bớt số khía cạnh phức tạp việc triển khai đa luồng, giữ lại số nhược điểm tổng quát việc quản lý đa luồng • Sự chọn lựa hai phương pháp thường phụ thuộc vào yêu cầu cụ thể ứng dụng yếu tố hiệu suất, độ tin cậy, dễ bảo trì 5.Tài liệu tham khảo 1.Thread Models in Operating System Link: https://www.geeksforgeeks.org/thread-models-in-operating-system/ Thread gì? Luồng hệ điều hành gì? Link: https://stream-hub.com/thread-la-gi/ 3.Server Architectures Link: https://berb.github.io/diploma-thesis/original/042_serverarch.html 4.Single-Threaded vs Multi-Threaded Servers: An Experiment with Node.js and Java Link:https://dev.to/michinoins/single-threaded-vs-multi-threaded-servers-anexperiment-with-nodejs-and-java-3183 5.Process -Thread & Single-threaded - Multithreaded Link:https://viblo.asia/p/process-thread-single-threaded-multithreaded4P856JR35Y3 12 13

Ngày đăng: 11/12/2023, 00:23

Tài liệu cùng người dùng

Tài liệu liên quan