Đây là đồ án mạng thời đại học của mình, mình nhớ hồi xưa mình cũng lên đây kiếm tài liệu, mình đã được A môn này. Mọi người có thể tham khảo tài liệu của mình,Hy vọng sẽ giúp được mọi người , Chúc các bạn ra trường đúng hạn
Đồ án sở ngành mạng ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN Tel (84-511) 736 949, Fax (84-511) 842 771 Website: itf.dut.edu.vn, E-mail: cntt@dut.udn.vn BÁO CÁO ĐỒ ÁN CƠ SỞ NGÀNH MẠNG NGÀNH CƠNG NGHỆ THƠNG TIN SINH VIÊN : HỒNG TUẤN NHÂN HỒ THỊ KIM HUỆ LỚP : 12T4-12T3 CBHD : ThS MAI VĂN HÀS GVHD: Mai Văn Hà Page Đồ án sở ngành mạng ĐÀ NẴNG, 05/2016 LỜI MỞ ĐẦU Nguyên lý hệ điều hành Lập trình Mạng tảng mà người lập trình phải hiểu rõ để nắm bắt kiên thức cao Hệ điều hành thành phần trung gian, cầu nối cho giao tiếp người dung máy tính Thơng qua hệ điều hành, người sử dụng dễ dàng làm việc khai thác hiệu thiết bị phần cứng Cũng vậy, với phát triển lĩnh vực mạng nay, việc nghiên cứu, nắm vững Mạng thực quan trọng người lập trình Dựa hiểu biết tham khảo thêm, em thực hiện, nghiên cứu đề tài:Tìm hiểu đường dẩn ống pipe ,viết chương trình mơ Xây dựng website CV nhóm cá nhân bao gồm thơng tin họ tên,địa chỉ,email,công việc,dự án thực hiện… Em xin chân thành cảm ơn thầy cô giáo khoa Công Nghệ Thông Tin, hết thầy Mai Văn Hà nhiệt tình theo dõi, hướng dẫn em nhiệt tình trình em thực đề tài Em cố gắng hoàn thành đề tài, khơng thể tránh khỏi thiếu sót, mong nhận góp ý thầy để em hồn thiện đề tài Sinh viên thực Hoàng Tuấn Nhân-Hồ Thị Kim Huệ GVHD: Mai Văn Hà Page Đồ án sở ngành mạng MỤC LỤC PHẦN 1: NGUYÊN LÝ HỆ ĐIỀU HÀNH TIÊU ĐỀ: Giao tiếp tiến trình chế đường ống Chương CƠ SỞ LÝ THUYẾT, I Giới thiệu hệ điều hành Linux Lịch sử đời: Linux hệ điều hành máy tính giống Unix (Unix-Like) phát phát triển dựa vào mơ hình “Phần mềm tự do” việc phát triển phần mềm mã nguồn mở Thành phần Linux hạt nhân Linux (thường gọi nhân Linux – Linux kernel), nhân hệ điều hành phát triển Linus Torvalds công bố lần vào tháng năm 1991 với phiên 0.01 Sự khác Linux nhiều hệ điều hành phổ biến đương thời nhân Linux thành phần khác phần mềm tự mã nguồn mở Linux không hệ điều hành, sử dụng phổ biến Vài giấy phép phần mềm tự mã nguồn mở dựa copyleft, vài công việc bắt nguồn từ phần copyleft phải copyleft Giấy phép thơng dụng phần mềm tự giấy phép cung GNU (the GNU General Public License GPL), dạng copyleft, sử dụng cho nhân Linux nhiều thành phần từ dự án GNU Các phân phối Linux nhà phát triển cho phép giao tiếp với hệ điều hành khác thành lập tiêu chuẩn tính tốn Hệ thống linux găn chặt với chuẩn POSIX, SUS, LSB, ISO ANSI khả - Các loại nhân hệ điều hành: GVHD: Mai Văn Hà Page Đồ án sở ngành mạng Các chức hệ điều hành Linux • Tính động - Nghĩa phần mềm làm việc kiểu khác phần cứng theo cách giống Kernel chương trình ứng dụng hỗ trợ cài đặt cứng • Nguồn mở - Mã nguồn Linux có sẵn miễn phies sở hữu chung dựa dự án phát triển Nhiều team làm việc cộng tác để tăng hiệu suất Hệ điều hành Linux tiếp tục tiến triển • Đa người dùng - Linux hệ thống đa người dùng nghĩa nhiều người sử dụng truy cập vào nguồn tài nguyên hệ thống nhớ/ram/các chương trình ứng dụng thời gian • Đa chương trình - Linux hệ thống đa chương trình nghĩa nhiều ứng dụng chạy thời gian • Hệ thống file có thứ bậc - Linux cung cấp cấu trúc file tiêu chuẩn file hệ thống/các file người dùng xếp • Shell - Linux cung cấp chương trình biên dịch đặc biệt mà sử dụng để thực lệnh Hệ điều hành Nó sử dụng để thực kiểu đa dạng hoạt động, gọi chương trình ứng dụng… • Bảo mật - Linux cung cấp bảo vệ sử dụng tính xác nhận mật bảo vệ/sự truy cập kiểm soát tới file đặc trưng II CƠ SỞ LÝ THUYẾT VỀ GIAO TIẾP GIỮA CÁC TIẾN TRÌNH Giao tiếp tiến trình : IPC (Inter-Process Communication) - Giao tiếp tiến trình hệ điều hành u cầu khơng thể thiếu Các tiến trình chạy độc lập xâm GVHD: Mai Văn Hà Page Đồ án sở ngành mạng phạm vùng nhớ Để tiến tình chuyển liệu trao đổi với nhau, ta phải dùng đến số kỹ thuật cung cấp hệ thống Tiến trình Một khả bật hệ điều hành đa nhiệm khả chạy đồng thời nhiều chương trình Hệ điều hành xem đơn thể mã lệnh mà điều khiển tiến trình Chương trình bao gồm nhiều tiến trình kết hợp với Các tiến trình hoạt động chia sẻ tốc độ xử lí CPU, dùng chung vùng nhớ tài nguyên hệ thống khác điều phối xoay vòng hệ điều hành Tiến trình định nghĩa thực thể điều khiển đoạn mã lệnh có riêng khơng gian địa chỉ, có ngăn xếp riêng rẽ, có bảng chứa số mơ tả file mở tiến trình đặc biệt có định danh PID (Process Identify) toàn hệ thống vào thời điểm tiến trình chạy Quản lý tiến trình Linux : Tiến trình giúp cho hệ điều hành phân chia công việc chạy độc lập Được bảo vệ hệ điều hành, đổ vỡ tiến trình khơng thể gây ảnh hưởng đến tiến trình khác Tuy nhiên vấn đề đặt làm để giao tiếp tiến trình hệ điều hành bảo vệ khơng cho tiến trình xâm phạm không gian địa nhớ Một vấn đề khác tranh chấp tài nguyên hay liệu kết xuất tiến trình làm cách gửi đến tiến trình khác sử dụng cho bước xử lí GVHD: Mai Văn Hà Page Đồ án sở ngành mạng - Chia sẻ thơng tin Hợp tác hồn thành tác vụ Tăng tốc độ xử lí Tiện lợi Mơ đun hóa Phân quyền • • • • • • • • • Mục tiêu Cho phép phối hợp hoạt động trình hệ thống Giải đụng độ vùng tranh chấp Truyền thông điệp từ trình đến trình khác Chia sẻ thơng tin q trình với • Giới thiệu Các chế chủ yếu Pipe Signal Message queue Shared memory Socket RPC/RMI Các vấn đề nảy sinh Do tiến trình sỡ hữu khơng gian địa riêng biệt, nên tiến trình khơng thể liên lạc trực tiếp dễ dàng mà phải nhờ vào chế hệ điều hành cung cấp Khi cung cấp chế liên lạc cho tiến trình, hệ điều hành thường phải tìm giải pháp cho vấn đề yếu sau : • Liên kết tường minh hay tiềm ẩn (explicit naming/implicit naming) : tiến trình có cần phải biết tiến trình trao đổi hay chia sẻ thơng tin với ? Mối liên kết gọi tường minh thiết lập rõ ràng , trực tiếp tiến trình, tiềm ẩn tiến trình liên lạc với thơng qua qui ước ngầm • Liên lạc theo chế độ đồng hay không đồng (blocking / non-blocking): tiến trình trao đổi thơng tin với tiến trình khác, tiến trình có cần phải đợi cho thao tác liên lạc hồn tất tiếp tục xử lý khác ? Các tiến trình liên lạc theo chế đồng chờ hồn tất việc liên lạc, tiến trình liên lạc theo chế nonblocking khơng • Hầu hết hệ điều hành đưa nhiều chế liên lạc khác nhau, chế có đặc tính riêng, thích hợp hồn cảnh chuyên biệt • Cơ chế đường ống Khi làm việc với hệ điều hành Linux/UNIX, pipe kênh liên lạc trực tiếp hai tiến trình : liệu xuất tiến trình chuyển đến làm liệu nhập cho tiến trình dạng dòng byte Trên đường ống, liệu chuyển theo chiều Hoặc từ A đến B từ B A Đổ liệu vào đường ống tương đương với thao tác ghi (pipe GVHD: Mai Văn Hà Page Đồ án sở ngành mạng write), lấy liệu từ đường ống tương đương với thao tác đọc (pipe read) Muốn chuyển liệu theo hai chiều, bạn cần dùng hai đường ống Dữ liệu thường chuyển theo luồng (stream) dãy byte với chế FIFO (First In First Out) vào trước trước Tiến trình B ln đọc byte liệu theo trật tự mà tiến trình A ghi vào từ đầu bên đường ống Một pipe có kích thước giới hạn (thường 4096 ký tự) Linux hỗ trợ tập tin pipe, gọi fifo (first-in-first-out), khác với tệp thường chỗ liệu tệp có tính chuyển tiếp : data đọc từ pipe khơng thể đọc lại lần nữa, đồng thời data đọc theo thứ tự mà data ghi vào hệ thống không cho phép làm chệch thứ tự Kernel cất data cách thức tệp thường khác dùng block đĩa kiểu cấp trực tiếp Các tác vụ pipe : Ghi liệu : fa_rc = write(readPipe[1], &expression, sizeof(expression)); Đọc liệu: sub_rc = read(readPipe[0], &exp_readed, sizeof(expression)); 10 Hai loại pipe: • Unnamed pipe : (đường ống nặc danh) o Tạo pipe : pid = pipe(readPipe) GVHD: Mai Văn Hà Page Đồ án sở ngành mạng Trong readPipe trỏ trỏ vào mảng nguyên chứa hai mô tả tệp để đọc ghi pipe Như đề cập, pipe loại tệp đặc biệt chưa tồn trước sử dụng, nên kernel phải cấp cho pipe inode để tạo pipe Kernel đồng thời cấp đôi mô tả tệp đầu vào file table: fd để đọc data từ pipe fd để ghi data pipe Với cách tổ chức file table, kernel đảm bảo cho giao tiếp đọc ghi GHT khác pipe quán tệp thường Vì TT khơng thể nhận biết TT làm việc với tệp hay với pipe Kết : • • o o • o i ii iii o Thành công, kết thực thi hàm pipe() 0, có hai file descriptor tương ứng trả readPipe [0], readPipe [1] Thất bại: hàm pipe() trả -1, mã lỗi biến ngoại perror có ý nghĩa cục dành cho process có quan hệ bố với Named pipe (FIFO) : Chức tương tự unnamed pipe có số tính đáng ý : Được ghi nhận file system (directory entry, file permission) Có thể dùng với process khơng có quan hệ bố Có thể tạo từ dấu nhắc lệnh shell (bằng lệnh mknod) Lệnh hệ thống : 11 Các đặc tính Hệ điều hành cung cấp lời gọi hệ thống read/write cho tiến trình thực thao tác đọc/ghi liệu pipe Hệ điều hành chịu trách nhiệm đồng hóa việc truy xuất pipe tình huống: • Tiến trình đọc pipe bị khóa pipe trống, phải đợi đến pipe có liệu để truy xuất • Tiến trình ghi pipe bị khóa pipe đầy, phải đợi đến pipe có chỗ trống để chứa liệu 12 Phân tích ưu nhược điểm Liên lạc pipe chế liên lạc chiều (unidirectional), nghĩa tiến trình kết nối với pipe thực hai thao tác đọc ghi, thực hai Một số hệ điều hành cho phép thiết lập hai pipe cặp tiến trình để tạo liên lạc hai chiều Trong hệ thống đó, có nguy xảy tình trạng tắc nghẽn (deadlock) : pipe bị giới hạn kích thước, hai pipe nối kết hai tiến trình đầy(hoặc trống) hai tiến trình muốn ghi (hay đọc) liệu vào pipe(mỗi tiến trình ghi liệu vào pipe), chúng bị khóa chờ lẫn mãi ! Cơ chế cho phép truyền liệu với cách thức không cấu trúc GVHD: Mai Văn Hà Page Đồ án sở ngành mạng Ngồi ra, giới hạn hình thức liên lạc cho phép kết nối hai tiến trình có quan hệ cha-con, máy tính Chương THIẾT KẾ VÀ XÂY DỰNG CHƯƠNG TRÌNH Phân tích yêu cầu I Nội dung đề tài : Quá trình thứ cho người dùng nhập vào từ bàn phím chuỗi biễu diễn phép tính gồm phần tử +, -, (, ) Ví dụ: 2+12+(12-4-6) –((3+4)-5) (11+(-2)–((3+4)-5)) Truyền chuỗi liệu cho trình thứ hai Q trình thứ hai thực tính tốn trả kết cho q trình thứ để hiển thị cho người sử dụng biết Hướng giải đề tài : - Do đường ống truyền chiều nên ta tạo đường ống (named pipe) : • Pipe : truyền liệu từ tiến trình sang tiến trình • Pipe : truyền liệu từ tiến trình trở lại tiến trình - Sử dụng kí pháp đảo Ba Lan (hậu tố) dùng Stack để chuyển biểu thức nhập dạng máy tính II Mục đích đề tài : Bài tốn đặt nhằm tìm hiểu qua trình giao tiếp hai tiến trình chế đường ống, từ xây dựng chương trình mơ Ngồi đề tài giúp ơn tập thuật tốn xử lí biểu thức nâng cao khả lập trình ngơn ngữ C/C++ III Phân tích chức Tạo hai tiến trình độc lập : làm nhiệm vụ nhập xuất để giao tiếp với người dùng, đảm nhiệm việc tính tốn biểu thức tiến trình gửi đến Tạo đường ống để truyền liệu tiến trình Tính tốn biểu thức với phép toán +, -, *, /, ^, … GVHD: Mai Văn Hà Page Đồ án sở ngành mạng Thuật toán IV Chuyển biểu thức dạng trung tố thành dạng hậu tố để tính tốn - Chuyển biểu thức sang dạng hậu tố - Convert chuỗi ngược lại, đọc từ đỉnh stack gặp phép tính thực cộng số gần stack lại đẩy vào lại stack Input exp i=0 i++ Y Exp[i] = toán hạng ? !stack.isEmpty() || peek(stack) >= exp[i] GVHD: Mai Văn Hà Page 10 N Peek(stack) Exp[i] Exp[i] == “)” “(” ??= “(” ? i++ Push(profix, pop(stack)) pop(stack) N YN Y Y N N Push(stack,exp[i]) Đồ án sở ngành mạng 2.3.3 Tìm kiếm tin tức theo danh mục trạng thái GVHD: Mai Văn Hà Page 23 Đồ án sở ngành mạng GVHD: Mai Văn Hà Page 24 Đồ án sở ngành mạng 2.3.4 xóa nhiều tin tức CHƯƠNG 3: TRIỂN KHAI VÀ ĐÁNH GIÁ KẾT QUẢ 1 Kịch Admin Thực đăng nhập vào hệ thống quản lý website Lựa chọn quản lý thành viên chức mục thành viên (Thêm , sửa , xóa, tìm kiếm thàn viên) GVHD: Mai Văn Hà Page 25 Đồ án sở ngành mạng Lựa chọn quản lý dự án thực hiên Kiểm tra chức mục dự án thực hiên (Thêm , sửa , xóa dự án) Lựa chọn quản lý tin tức Kiểm tra chức mục tin tức(Thêm , sửa , xóa nhiều tin tức) Lựa chọn quản lý quảng cáo Kiểm tra chức mục quảng cáo (Thêm , sửa , xóa quảng cáo) Lựa chọn quản lý liên hệ Kiểm tra chức mục dự án thực hiên (xóa liên hệ) Lựa chọn quản lý user Kiểm tra chức mục dự án thực hiên (Thêm , sửa , xóa user) Lựa chọn quản lý câu nói hay Kiểm tra chức mục dự án thực hiên (Thêm , sửa , xóa câu nói hay) Lựa chọn quản lý giới thiệu nhóm Kiểm tra chức mục giới thiệu ( sửa thông tin giới thiệu tổng quát) User - Thực đăng nhập vào hệ thống quản lý website Lựa chọn xem danh sách thành viên mục thành viên Lựa chọn xem danh sách dự án thực hiên mục dự án thực hiên Lựa chọn xem danh sách tin tức thực hiên mục tin tức Lựa chọn xem danh sách quảng cáo thực hiên mục quảng cáo Lựa chọn xem danh sách liên hệ thực hiên mục liên hệ Lựa chọn xem danh sách user thực hiên mục user Lựa chọn xem danh sách câu nói hay thực hiên mục câu nói hay Lựa chọn xem giới thiệu nhóm thực hiên mục giới thiệu Khách hàng Truy cập vào trang public xem tất thông tin nhóm admin quản lý gửi liên hệ cho admin muốn tham gia vào nhóm Kết thực chức năng(demo hình ảnh) Website phía admin - Thực đăng nhập Lựa chọn quản lý thành viên Lựa chọn quản lý tin tức Lựa chọn quản lý quảng cáo Lựa chọn quản lý liên hệ Lựa chọn quản lý user Lựa chọn quản lý câu nói hay Lựa chọn quản lý giới thiệu nhóm Website phía user - Thực đăng nhập - Lựa chọn xem thành viên - Lựa chọn xem tin tức GVHD: Mai Văn Hà Page 26 Đồ án sở ngành mạng - Lựa chọn xem quảng cáo Lựa chọn xem liên hệ Lựa chọn xem user Lựa chọn xem câu nói hay Lựa chọn xem giới thiệu nhóm Website phía user - Lựa chọn xem trang chủ Lựa chọn xem giới thiệu Lựa chọn xem dự án thực Lựa chọn xem tin tức Lựa chọn xem liên hệ Trong bao gồm có câu nói hay quảng cáo mà admin qu ản lý đưa trang Nhận xét đánh giá: Đã làm được: Đã xây dựng website theo mơ hình MVC, sử dụng Java làm ngôn ngữ xử lý Hiểu cách tạo website cách thức hoạt động website Có chức cho website Có thực việc kết nối database, lưu trữ liệu hệ thống Thiết kế giao diện website tương đối Chưa làm được: Chưa hoàn thành đầy đủ tất chức website đề Chưa kiểm tra triệt để ngoại lệ xảy trình thực thi website 3.3.3 Kết demo 3.3.3.1 Giao diện public GVHD: Mai Văn Hà Page 27 Đồ án sở ngành mạng Màn hình dự án thực Màn hình thành viên GVHD: Mai Văn Hà Page 28 Đồ án sở ngành mạng Màn hình tin tức GVHD: Mai Văn Hà Page 29 Đồ án sở ngành mạng Màn hình liên hệ 3.3.3.2 Màn hình admin Màn hình login Màn hình giới thiệu GVHD: Mai Văn Hà Page 30 Đồ án sở ngành mạng Màn hình dự án thực Màn hình tin tức Màn hình danh mục GVHD: Mai Văn Hà Page 31 Đồ án sở ngành mạng Màn hình người dùng GVHD: Mai Văn Hà Page 32 Đồ án sở ngành mạng Màn hình thành viên Màn hình liên hệ GVHD: Mai Văn Hà Page 33 Đồ án sở ngành mạng Màn hình câu nói hay Màn hình quảng cáo KẾT LUẬN Việc thực đề tài, em hiểu rõ kiến học hệ điều hành, cách giải hạn chế tình trạng deadlock, kiến thức mơ hình MVC thiết kế website, biết cách sử dụng kỹ thuật đóng gói gữi liệu, hiểu rõ sử dụng Html, Css, JavaScript Dù chưa hoàn thiện chức kỹ thuật, với kiến thức thu qua sản phẩm này, em mong muốn trì phát triển sản phẩm thêm mặt chức giao diện, đồng thời áp dụng kiến thức thu để đưa vào phát triển sản phẩm tương tự khác GVHD: Mai Văn Hà Page 34 Đồ án sở ngành mạng GVHD: Mai Văn Hà Page 35 Đồ án sở ngành mạng GVHD: Mai Văn Hà Page 36 Đồ án sở ngành mạng GVHD: Mai Văn Hà Page 37 ... printf("operator: %c ", exp[i]); printf("phep tinh: %c ", stack[top_Stack]); continue; } //neu la toan hang (so co chu so) if (exp[i] >= '0' && exp[i]