Đây là tổng hợp của hai đồ án cơ sở ngành mạng RSS feed và Pipe process
MỤC LỤC PHẦN 1: HỆ ĐIỀU HÀNH I Cơ sở lý thuyết: a Hệ điều hành: b Tiến trình việc giao tiếp tiến trình: c Giao tiếp tiến trình thơng qua đường ống (pipe): II Đề tài mơ tả tốn: III Các thuật toán: a Thuật toán đồng bộ: b Thuật toán xử lý liệu: 10 c Thuật toán xử lý biệt lệ: 13 d Thuật tốn chi tiết tiến trình cha 17 e Thuật tốn chi tiết tiến trình 18 IV Demo chương trình: 20 a Mã nguồn tổng quan chương trình: 20 b Mã nguồn tiến trình cha: 24 c Mã nguồn tiến trình 25 d Kết chạy chương trình 30 PHẦN 2: QUẢN TRỊ MẠNG 32 I Cơ sở lý thuyết: 32 a Mơ hình Client-Server: 32 b Mơ hình truyền tin Socket: 33 c Socket.IO: 33 d Sơ lược RSS: 35 II Mô tả đề tài: 37 III Thuật tốn chương trình: 37 a Youtube Search API: 37 b Youtube RSS Feed Extension 39 c Thuật toán chuyển đổi XML thành JSON 40 IV Mã nguồn chương trình demo: 44 a Mã nguồn Client: 44 b Mã nguồn Server 47 c Hình ảnh demo: 50 PHỤ LỤC VÀ TÀI LIỆU THAM KHẢO 54 ii DANH MỤC HÌNH ẢNH Hình 1: Biến hóa giao diện xấu xí phần cứng trở nên xinh đẹp Hình Giao tiếp tiến trình P1 P2 thông qua pipe Hình Cấu trúc tập tin đọc Hình Hai tiến trình giao tiếp hai đường ống Hình Mơ hình giao tiếp Hình Sơ đồ thuật tốn đồng hai tiến trình Hình Thuật tốn xử lý liệu tiến trình cha 10 Hình Hàm gộp thành phần mảng số thực thành số thực 11 Hình Thuật tốn xử lý liệu tiến trình 12 Hình 10 Thuật tốn xử lý biệt lệ tiến trình cha 14 Hình 11 Hàm exeOP() xử lý biệt lệ ký tự nhận tốn tử 15 Hình 12 Thuật tốn xử lý biệt lệ tiến trình 16 Hình 13 Thuật tốn tiến trình cha 17 Hình 14 Hàm exeOP() xử lý biệt lệ cho ký tự toán tử 18 Hình 15 Thuật tốn chi tiết tiến trình 19 Hình 16 Thơng tin phép tính 30 Hình 17 Kết tính tốn 31 Hình 18 Kết chạy thông tin xuất console 31 Hình 19 Client gửi yêu cầu Server phản hồi 32 Hình 20 Socket ổ cắm điện 33 Hình 21 Giao tiếp hai chiều Client Server 34 Hình 22 Tổng quan việc kết nối với Socket.IO 35 Hình 23 Logo RSS 36 Hình 24 Giao diện Feedly, ứng dụng đọc tin RSS 36 Hình 25 Thuật tốn đệ quy chuyển đổi XML thành Javascript Object 42 Hình 26 Giao diện tổng quan trang web 50 Hình 27 Chức thêm kênh 50 Hình 28 Tìm kiếm thêm kênh Ted-Ed 51 Hình 29 Giao diện thơng tin kênh thêm vào 51 Hình 30 Tiến hành xóa kênh 52 Hình 31 Giao diện sau xóa 52 Hình 32 Nội dung console Server thao tác bước client 53 iii PHẦN 1: HỆ ĐIỀU HÀNH I Cơ sở lý thuyết: a Hệ điều hành: Rất khó để cắt nghĩa hồn hảo hệ điều hành Có thể hiểu hệ điều hành chương trình chạy chế độ nhân (kernel) chịu trách nhiệm thực hai chức năng: cung cấp chương trình ứng dụng cho người dùng - trừu tượng hóa tài nguyên phần cứng, hai quản lý tổ chức tài ngun phần cứng máy tính Với chức đầu tiên, hệ điều hành giống cỗ máy mở rộng Hệ điều hành cung cấp lớp giao diện phương pháp giao tiếp dễ tiếp cận để người dùng tương tác với máy mà không cần hiểu phần cứng ẩn bên hoạt động Hình 1: Biến hóa giao diện xấu xí phần cứng trở nên xinh đẹp Song song với việc cung cấp chương trình ứng dụng có giao diện phương pháp tương tác “đẹp” cho người dùng Hệ điều hành giúp quản lý tài ngun mà chương trình ứng dụng cần cung cấp Tài nguyên sử dụng chương trình phép chạy chạy khoảng thời gian hệ điều hành quản lý Một số loại hệ điều hành phổ biến cho người dùng phổ thông Windows 10, Windows11và MacOS Trong báo cáo này, chương trình lập trình để chạy Ubuntu Windows 11 b Tiến trình việc giao tiếp tiến trình: Có nhiều đầu việc mà máy tính phải xử lý để thực tác vụ mà người yêu cầu Những việc chia nhỏ thành việc nhỏ nhỏ Và đơn vị công việc xử lý ta gọi tiến trình Tiến trình hiểu đơn vị công việc nhỏ mà máy tính cần xử lý Một chương trình lớn cấu thành từ nhiều tiến trình Ở quy mơ chương trình ứng dụng người dùng máy tính thiết bị đa nhiệm quy mơ vi mơ tiến trình máy tính hoạt động đơn nhiệm, nghĩa thời điểm có tiến trình thực mà thơi Các tiến trình thuộc chương trình lớn chắn phải có giao tiếp với Chúng sử dụng tài nguyên chung với Kết xử lý tiến trình đầu vào tiến trình ngược lại Vì ngồi việc quản lý thời gian hoạt động cho tiến trình, tài nguyên cấp phát cho tiến trình hệ điều hành phải quản lý việc giao tiếp tiến trình với Có cách thức giao tiếp tiến trình sau: Giao tiếp nhớ dùng chung (shared memory) Giao tiếp nhớ ánh xạ (mapped memory) Giao tiếp thông qua đường ống (pipe) c Giao tiếp tiến trình thơng qua đường ống (pipe): Đường ống (hay pipe) cách thức giao tiếp tiến trình Có thể hiểu đường ống chiều có đầu vào đầu Một tiến trình ghi liệu vào ống từ đầu vào tiến trình khác đọc liệu từ đầu Đường ống chứa chuỗi byte, thứ tự chúng tuân theo quy tắc FIFO, nghĩa byte ghi vào trước đọc trước Một pipe có kích thước cố định Nếu liệu pipe đầy từ đầu ghi bị đóng lại đến có tiến trình đọc bớt liệu pipe Hình Giao tiếp tiến trình P1 P2 thơng qua pipe Có hai loại đường ống pipe: • Normal pipe (đường ống thông thường): Đường ống bị giới hạn nhớ tiến trình mà thơi Nó đường ống nội tiến trình Đường ống thơng thường giúp giao tiếp tiến trình thuộc với tiến trình tiến trình Có thể hiểu kênh liên lạc nội cha-con tiến trình • Named pipe (đường ống có tên): Là đối tượng độc lập có tên hệ thống Nó cho phép tiến trình có khơng gian địa khác giao tiếp với Chính mà cần đặt tên để kết nối Thực chất loại đường ống tập tin mà quy định hai đầu, đầu ghi đầu đọc! II Đề tài mô tả toán: Đề tài phần báo cáo là: Viết chương trinh tính tốn phép tính sử dụng giao tiếp đường ống Bài toán cụ thể là: Cho tập tin có tên readFile.txt chứa biểu thức tính tốn hai số thực có cấu trúc sau: Hình Cấu trúc tập tin đọc Viết chương trình sử dụng giao tiếp đường ống (pipe) để viết lại vào tập tin khác biểu thức kèm với kết theo sau, ý đến vấn đề biệt lệ Với toán trên, ta thấy phải sử dụng đường ống thơng thường viết chương trình mà thơi Ta phải có hai tiến trình, tiến trình giao tiếp với tập tin tiến trình tính tốn Ta cần đến hai đường ống để giao tiếp hai tiến trình Một đường ống dùng để đọc biểu thức vào tiến trình tính tốn đường ống dùng để lấy kết sau tính tốn Ta phải ý đến biệt lệ khác chia cho 0, ký tự nhập vào không giúp cấu thành số số vấn đề khác ký tự xuống dòng, ký tự kết thúc tập tin (EOF) Hình Hai tiến trình giao tiếp hai đường ống III Các thuật tốn: a Thuật tốn đồng bộ: Dựa phân tích phần trước, xây dựng mơ hình giao tiếp gồm thành phần sau: Hình Mơ hình giao tiếp Ta có hai tập tin: tập tin chứa phép tính số thực, tập tin thứ hai tập tin đích cần ghi vào Ta có hai tiến trình tiến trình cha tiến trình Tiến trình cha đảm nhiệm việc giao tiếp với hai file Tiến trình đọc ký tự từ file vào ghi chúng vào file 2, đồng thời ghi vào pipePC để tiến trình sử dụng để xử lý Tiến trình cha sau nhận kết trả từ tiến trình cách đọc kết từ pipeCP ghi vào file Tiến trình nhận phép tính từ tiến trình cha từ pipePC, xử lý chúng sau trả lại kết vào pipe CP Quy tắc đọc tiến trình cha tiến trình đọc ghi ký tự Các phép tính liền ghi vào file phép tính xen kẽ với kết Vì ta cần phải đồng trình Ta tiến hành đồng theo thuật toán sau: Tiến trình cha đọc ký tự file 1, ghi vào file 2, xử lý vài bước ghi vào pipePC, đọc/ghi ký tự xuống dòng \n EOF (end of file) ngủ vài giây chờ cho xử lý phép tính Tiến trình nhận ký tự từ pipePC lưu trữ ký tự vào Nếu đọc phải ký tự ‘\n’ EOF thực phép tính ghi kết vào pipeCP Nếu đọc phải ký tự EOF tiến trình kết thúc Tiến trình cha đọc kết từ pipeCP ghi vào file Nếu trước đọc ký tự EOF kết thúc Nếu khơng tiếp tục đọc ghi ký tự từ file Ta có sơ đồ thuật tốn đồng hình Hình Sơ đồ thuật tốn đồng hai tiến trình Như dựa vào ký tự \n EOF ta đồng hai tiến trình với nhau, đảm bảo tiến trình cha ln kết thúc sau tiến trình kết đọc xen kẽ với phép tính b Thuật tốn xử lý liệu: Đối với tiến trình cha, nhiệm vụ giao tiếp với tập tin đường ống Vì đồng vấn đề quan trọng mà tiến trình cha cần xử lý Về việc xử lý liệu tiến trình cha chuyển đổi ký tự chữ số thành số để tiến trình tính tốn sau Ta có thuật tốn xử lý liệu tiến trình cha sau: Hình Thuật tốn xử lý liệu tiến trình cha Đối với tiến trình con, trình xử lý phức tạp nhiều tiến trình phải thu thập ký tự một, nhận kết thúc số hạng tính tốn để ghi trả lại cho tiến trình cha Ta mơ tả thuật tốn xử lý liệu tiến trình sau: - Tiến trình liên tục đọc ký tự từ pipePC lưu vào mảng số thực digits[] - Nếu gặp tốn tử, tiến trình gộp tất thành phần mảng digits[] lại thành số thực lưu vào mảng nums[] Sau lưu lại toán tử - Nếu gặp phải ký tự xuống dịng \n tiến trình gộp tất thành phần digits[] lại lưu vào mảng nums Sau dựa vào tốn tử lưu tính tốn tương ứng với nums[index] nums[index-1] 10 Tên video