Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 42 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
42
Dung lượng
2,13 MB
Nội dung
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN - - BÁO CÁO ĐỒ ÁN CƠ SỞ NGÀNH MẠNG ĐỀ TÀI 1: BÀI TOÁN NĂM TRIẾT GIA ĂN TỐI ĐỀ TÀI 2: TÌM HIỂU GIAO THỨC SMTP VÀ POP3 XÂY DỰNG MAIL CLIENT Sinh viên thực hiện: Nguyễn Khánh Lớp SH: 12T1 MSSV: 102120249 GVHD: ThS Trần Hồ Minh Đà Nẵng, tháng năm 2016 Đánh giá hội đồng duyệt đồ án: MỤC LỤC LỜI MỞ ĐẦU Máy tính điện tử đời cách mạng lớn nhân loại, từ giúp người giảm bớt cơng sức việc tính tốn, nhằm nâng cao suất hiệu lao động Thế cổ máy sắt vụn máy tính khơng kèm với hệ điều hành Hệ điều hành giúp máy tính trở nên thông minh hơn, ngày làm nhiều việc Qua cho thấy tầm quan trọng thiếu hệ điều hành yêu cầu cần phải hiểu nguyên lý làm việc hệ điều hành việc lập trình điều quan trọng Sau máy tính, sản phẩm lồi người với quan trọng không sống đại, ln kèm với máy tính, Internet Internet kết nối nhiều máy tính lại với nhau, bỏ qua bất lợi mặc địa lý hay mơi trường Điều tạo nhiều thay đổi đời sống kinh tế – xã hội Hiện hầu hết ứng dụng khơng cịn chạy độc lập máy cục mà tương tác với máy khác qua mạng internet tương tác với server Điều có nghĩa lập trình mạng ngày quan trọng khơng thể thiếu việc lập trình ứng dụng Sau hoàn thành hai học phần lý thuyết gồm Nguyên lý hệ điều hành Lập trình mạng, em nghiên cứu thực đồ án cách để kiểm nghiệm lại lý thuyết học Đồng thời giải vấn đề đặt từ việc đưa lý thuyết vào thực tế Qua góp phần hồn thiện củng cố kiến thức Nguyên lý hệ điều hành Lập trình mạng Với mảng đề tài, tương ứng toán tiêu biểu trình bày khn khổ Đồ án Cơ sở ngành mạng Gồm Bài toán năm triết gia ăn tối Tìm hiểu giao thức smtp pop3, xây dựng mail Client Em xin gửi lời cảm ơn chân thành đến Ths GV Trần Hồ Thủy Tiên nhiệt tình giúp đỡ để giúp em hoàn thành đồ án SV Trần Đại Sơn BÁO CÁO ĐỒ ÁN CƠ SỞ NGÀNH MẠNG PHẦN I: NGUYÊN LÝ HỆ ĐIỀU HÀNH PHẦN I: NGUYÊN LÝ HỆ ĐIỀU HÀNH BÀI TOÁN NĂM TRIẾT GIA ĂN TỐI CHƯƠNG 1: CƠ SỞ LÝ THUYẾT Mô tả tốn a Đề tài mơ tả vấn đề nhà triết học ngồi ăn tối với Spaghetti tiếng Mỗi nhà triết học cần dùng nĩa để ăn Spaghetti Nhưng bàn có tổng cộng nĩa để xen kẽ nhà triết gia Mỗi nhà triết học suy ngẫm triết lý đến cảm thấy đói dự định cầm nĩa bên trái nĩa bên phải để ăn Nếu nhà triết học cầm nĩa bên trái lúc, khơng có có nĩa bên phải để bắt đầu thưởng thức spaghetti Đây tình trạng tắc nghẽn Hình 1: Bữa ăn tối triết gia b Yêu cầu toán Yêu cầu đặt phải thiết kế thuật toán cho triết gia bị đói ơng ta ăn đảm bảo khơng có triết gia bị đói Bài tốn đặt nên vấn đề đồng tiến trình để giải đề tắt nghẽn xảy Sinh viên: Trần Đại Sơn – Lớp 12T4 BÁO CÁO ĐỒ ÁN CƠ SỞ NGÀNH MẠNG PHẦN I: NGUYÊN LÝ HỆ ĐIỀU HÀNH Các khái niệm a Tiến trình Tiến trình (proccess) chương trình xử lý, sở hữu trỏ lệnh, tập ghi biến, quản lý qua thẻ Để hoàn thành nhiệm vụ mình, tiến trình cịn u cầu số tài nguyên hệ thống CPU, nhớ thiết bị ngoại vi Tiến trình hệ thống chia thành hai loại: tiến trình tiến trình song song Tiến trình tiến trình mà điểm khởi tạo điểm kết thúc tiến trình trước Tiến trình xuất hệ điều hành đơn nhiệm MSDOS Tiến trình song song tiến trình mà điểm khởi tạo triến trình nằm thân tiến trình khác Tức khởi tạo tiến trình tiến trình trước chưa kết thúc Các tiến trình song xuất hệ điều hành đa nhiệm sử dụng phổ biến Microsoft Windows P3 P2 P1 Time Hình 2: Các tiến trình song song b Luồng Luồng (thread) thành phần tiến trình sở hữu ngăn xếp thực thi độc lập đoạn mã tiến trình Nếu hệ điều hành có nhiều tiến trình tiến trình bạn tạo nhiều tuyến trình hoạt động song song hệ điều hành Ưu điểm luồng chúng hoạt động khơng gian địa tiến trình Tập hợp nhóm tuyến sử dụng chung biến tồn cục, vùng nhớ heap, bảng mô tả file… tiến trình, chế liên lạc luồng đơn giản hiệu chế liên lạc tiến trình với Ngày với vi xử lý đa lõi luồng thật chạy song song khơng phải giả lập xoay vịng Ưu điểm sử dụng tuyến tiến trình đơn giản lập trình Nhiều thao tác xuất nhập hiển thị liệu tách rời phân cho tuyến chạy độc lập thực thi Ví dụ môi trường đồ họa, copy Sinh viên: Trần Đại Sơn – Lớp 12T4 BÁO CÁO ĐỒ ÁN CƠ SỞ NGÀNH MẠNG PHẦN I: NGUYÊN LÝ HỆ ĐIỀU HÀNH file có dung lượng lớn, chương trình thiết kế để luồng đọc liệu từ đĩa cứng, luồng khác phụ trách việc hiển thị phần trăm cơng việc hồn thành lên hình cho người dùng theo dõi Đối với hệ điều hành chi phí để chuyển đổi ngữ cảnh tiến trình cao chậm chi phí chuyển đổi ngữ cảnh dành cho luồng (với tiến trình hệ điều hành phải cất thông số môi trường, ghi trạng thái, hoán đổi vùng nhớ,…) Tuy nhiên, điểm yếu việc dùng luồng khả đổ vỡ (crash) tuyến ảnh hưởng đến tất tuyến khác tồn tiến trình hoạt động Lý luồng dùng chung vùng nhớ khơng gian địa tiến trình Ngược lại, tiến trình bị đổ vỡ ln hệ điều hành lập hồn tồn, khơng gây ảnh hưởng đến tiến trình khác Tiến trình chạy nhiều máy khách tuyến thực thi máy tiến trình c Tài nguyên găng đoạn găng Các tài nguyên logic vật lý phân bổ cho tiến trình song hành tài ngun “găng” Trong mơi trường hệ điều hành đa nhiệm – đa chương – đa người dùng, việc chia sẻ tài nguyên dùng chung tiến trình cần thiết, hệ điều hành không tổ chức tốt việc dùng chung tiến trình hoạt động đồng thời khơng không mang lại hiệu khai thác tài nguên mà cịn làm hư hỏng liệu người dùng Đó điều mà hệ điều hành lẫn người lập trình khơng mong muốn Các tiến trình hoạt động đồng thời thường cạnh tranh việc sử dụng tài nguyên dùng chung Hai tiến trình hoạt động đồng thời ghi vào vùng chờ chung (dùng chung biến) nhớ hay hai tiến trình đồng thời ghi liệu vào file chia sẻ, đs biểu cạnh tranh sử dụng tài nguyên dùng chung tiến trình Để tiến trình hoạt động, đồng thời khơng xung đột với sử dụng tài nguyên dùng chung, hệ điều hành cần phải tổ chức cho tiến trình độc quyền đọc - ghi tài nguyên dùng chung Các đoạn mã chương trình sử dụng tài nguyên găng gọi đọan găng hay đoạn tới hạn (Critical Section) Tức đoạn mã dùng để đọc – ghi vùng nhớ chia sẻ, tập tin chia sẻ gọi đoạn găng Sinh viên: Trần Đại Sơn – Lớp 12T4 BÁO CÁO ĐỒ ÁN CƠ SỞ NGÀNH MẠNG PHẦN I: NGUYÊN LÝ HỆ ĐIỀU HÀNH Để hạn chế lỗi xảy sử dụng tài nguyên găng, hệ điều hành phải điều khiển tiến trình cho thời điẻm có tiến trình nằm đoạn găng Nếu có nhiều tiến trình muốn vào đoạn găng (thực đoạn mã) có tiến trình vào, tiến trình cịn lại phải chờ Sau tiến trình khỏi đoạn găng phải báo cho hệ điều hành và/hoặc tiến trình khác biết để tiến trình sau vào đoạn găng Các cơng tác điều khiển tiến trình thực đoạn găng hệ điều hành gọi điều độ tiến trình qua đoạn găng Để cơng tác điều độ tiến trình qua đoạn găng thành cơng, cần phải có phối hợp vi xử lý, hệ điều hành người lập trình Vi xử lý đưa thị, hệ điều hành cung cấp công cụ để người lập trình xây dựng sơ đồ điều độ hợp lý, để đảm bảo độc quyền việc sử dụng tài nguyên găng tiến trình d Giải pháp Semaphore Semaphore đề xuất nhà toán học Dijikstra năm 1965 Có thể xem semaphore mở rộng Mutex locks Một semaphore s biến có thuộc tính sau: • Một giá trị ngun dương e(s) • Một hàng đợi f(s) lưu danh sách tiến trình bị khóa (chờ) semaphore s Chỉ có hai thao tác định nghĩa semaphore Down(s): giảm giá trị semaphore s đơn vị semaphore có trị e(s) > 0, tiếp tục xử lý Ngược lại, e(s) ≤ 0, tiến trình phải chờ đến e(s) >0 Up(s): tăng giá trị semaphore s lên đơn vị Nếu có nhiều tiến trình chờ semaphore s, bị khóa thao tác Down, hệ thống chọn tiến trình để kết thúc thao tác Down cho tiếp tục xử lý Sinh viên: Trần Đại Sơn – Lớp 12T4 BÁO CÁO ĐỒ ÁN CƠ SỞ NGÀNH MẠNG Semaphor e e(s) S1 S2 S3 PHẦN I: NGUYÊN LÝ HỆ ĐIỀU HÀNH f(s) P1 null P2 P5 Hình 3: Semaphore s Mỗi tiến trình trước vào đoạn găng phải gọi Down để kiểm tra xác nhận lập quyền vào đoạn găng Mỗi tiến trình sau khỏi đoạn găng phải gọi Up để kiểm tra xem có tiến trình đợi hàng đợi khơng, có đưa tiến trình hàng đợi vào đoạn găng Khi tiến trình gọi p hệ thống thực Cài đặt: Gọi P tiến trình thực thao tác Down(s) hay Up(s) Down(s) { Up(s) { e(s) = e(s) - 1; e(s) = e(s) + 1; if e(s) < { if s ≤ { status(P)= blocked; //Q tiến trình chờ s enter(P,f(s)); exit(Q,f(s)); status (Q) = ready; } enter(Q, ready-list); } Cài đặt đưa đến giá trị âm cho semaphore, trị tuyệt đối semaphore cho biết số tiến trình chờ semaphore Sinh viên: Trần Đại Sơn – Lớp 12T4 BÁO CÁO ĐỒ ÁN CƠ SỞ NGÀNH MẠNG PHẦN II: LẬP TRÌNH MẠNG e Deadlock i Định nghĩa Một tập hợp tiến trình định nghĩa tình trạng tắc nghẽn tiến trình tập hợp chờ đợi kiện mà có tiến trình khác tập hợp phát sinh Nói cách khác, tiến trình tập hợp chờ cấp phát tài nguyên bị tiến trình khác trạng thái blocked chiếm giữ Như khơng có tiến trình tiếp tục xử lý , giải phóng tài ngun cho tiến trình khác sử dụng, tất tiến trình tập hợp bị khóa vĩnh viễn BÁO CÁO ĐỒ ÁN CƠ SỞ NGÀNH MẠNG PHẦN II: LẬP TRÌNH MẠNG ii Điều kiện xuất deadlock Coffman, Elphick Shoshani đưa điều kiện cần làm xuất tắc nghẽn: Có sử dụng tài ngun khơng thể chia sẻ (Mutual exclusion): Mỗi thời điểm, tài nguyên chia sẻ hệ thống cấp phát cho tiến trình , tiến trình sử dụng xong tài nguyên này, hệ thống thu hồi cấp phát tài nguyên cho tiến trình khác Sự chiếm giữ yêu cầu thêm tài nguyên (Wait for): Các tiến trình tiếp tục chiếm giữ tài nguyên cấp phát cho chờ cấp phát thêm số tài nguyên Không thu hồi tài nguyên từ tiến trình giữ chúng (No preemption): Tài ngun khơng thể thu hồi từ tiến trình chiếm giữ chúng trước tiến trình sủ dụng chúng xong Tồn chu kỳ đồ thị cấp phát tài ngun (Circular wait): có hai tiến trình chờ đợi lẫn : tiến trình chờ cấp phát tài nguyên bị tiến trình chiếm giữ ngược lại Khi có đủ điều kiện này, tắc nghẽn xảy Nếu thiếu điều kiện khơng có tắc nghẽn P R P R P giữ R P yêu cầu R R1 P1 P2 R1 Một tình tắt nghẽn Hình 4: Đồ thị cấp phát tài ngun • • iii Các phương pháp xử lý tắt nghẽn Chủ yếu có ba hương tiếp cận để xử lý tắc nghẽn : Sử dụng phương thức để bảo đảm hệ thống không xảy tắc nghẽn Cho phép xảy tắc nghẽn tìm cách sữa chữa tắc nghẽn BÁO CÁO ĐỒ ÁN CƠ SỞ NGÀNH MẠNG • PHẦN II: LẬP TRÌNH MẠNG Hồn tồn bỏ qua việc xử lý tắc nghẽn, xem hệ thống không xảy tắc nghẽn Các phương thức chặn tắc nghẽn tập trun giải điều kiện gây tắt nghẽn nêu trên, cho hệ thống xảy đồng thời điều kiện tắc nghẽn Ngơn ngữ lập trình Java a Giới thiệu Java ngơn ngữ lập trình hướng đối tượng, dùng Java để viết chương trình hướng chức Java giải hầu hết công việc mà ngôn ngữ khác làm Java ngơn ngữ vừa biên dịch vừa thông dịch Đầu tiên mã nguồn biên dịch công cụ JAVAC để chuyển thành dạng ByteCode Sau thực thi loại máy cụ thể nhờ chương trình thơng dịch Mục tiêu nhà thiết kế Java cho phép người lập trình viết chương trình lần chạy phần cứng cụ thể Ngày nay, Java sử dụng rộng rãi để viết chương trình chạy Internet Nó ngơn ngữ lập trình hướng đối tượng độc lập thiết bị, không phụ thuộc vào hệ điều hành Nó khơng dùng để viết ứng dụng chạy đơn lẻ hay mạng mà để xây dựng trình điều khiển thiết bị cho điện thoại di động, PDA Đây ngôn ngữ lập trình sử dụng để lập trình TCP Socket phổ biến sử dụng để giảng dạy cho mơn học Lập trình mạng Đồ án viết ngơn ngữ Java với gói lớp hỗ trợ sẵn cho việc lập đa tuyến locks, ReentrantLock, Thread, gói hỗ trợ lập trình giao diện awt swing b Đa luồng Java Với chế multithread ứng dụng ta thực thi nhiều công việc đồng thời Mỗi thread có số xác định quyền ưu tiên, thread có quyền ưu tiên cao thực thi trước, thấp thực thi sau Việc thực thi đánh số ưu tiên thực tự động hệ điều hành để tránh thread đợi lâu mà không vào xử lý Trong chương trình java ln có thread thực thi, thread khác tạo thread con, việc mở đầu kết thúc ứng dụng thực thread Để tạo quản lý thread java, dựa vào lớp Thread Runnable interface ... giúp em hồn thành đồ án SV Trần Đại Sơn BÁO CÁO ĐỒ ÁN CƠ SỞ NGÀNH MẠNG PHẦN I: NGUYÊN LÝ HỆ ĐIỀU HÀNH PHẦN I: NGUYÊN LÝ HỆ ĐIỀU HÀNH BÀI TOÁN NĂM TRIẾT GIA ĂN TỐI CHƯƠNG 1: CƠ SỞ LÝ THUYẾT Mơ tả... console để tiện theo dõi BÁO CÁO ĐỒ ÁN CƠ SỞ NGÀNH MẠNG • • • PHẦN II: LẬP TRÌNH MẠNG KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN Kết đạt Nắm lý thuyết đồng hóa tiến trình Giải vấn đề đồng hóa tiến trình sử dụng... thức tryLock() Như tránh trường hợp tắt nghẽn mà triết gia cầm đũa lên chờ đợi đũa từ người bên cạnh khơng có thả đũa xuống BÁO CÁO ĐỒ ÁN CƠ SỞ NGÀNH MẠNG PHẦN II: LẬP TRÌNH MẠNG private void pickUpChopstick(Lock