He Dieu Hanh
February 6, 2018 | Author: Lộc Đức Chu | Category: N/A
Short Description
Download He Dieu Hanh...
Description
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI Viện Công nghệ Thông tin và Truyền thông
BÀI TẬP LỚN HỆ ĐIỀU HÀNH
Sinh viên thực hiện: 1. Chu Đức Lộc
SHSV: 20091678
2. Phạm Quang Toản
SHSV: 20092793
Mã lớp: 21538 Giáo viên hướng dẫn: TS. Phạm Đăng Hải
HÀ NỘI – 2011
1
Mục lục Mục lục......................................................................................................................2 1 Khái niệm...........................................................................................................2 2 Các phương pháp truyền thông (Khái quát):......................................................3
A
Các phương pháp truyền thông Client-Server
1 Khái niệm Mô hình client-server là một mô hình nổi tiếng trong mạng máy tính, được áp dụng rất rộng rãi và là mô hình của mọi trang web hiện có. Ý tưởng của mô hình này là máy con (đóng vài trò là máy khách) gửi một yêu cầu (request) để máy chủ (đóng vai trò người cung ứng dịch vụ), máy chủ sẽ xử lý và trả kết quả về cho máy khách.
2
Thuật ngữ server được dùng cho những chương trình thi hành như một dịch vụ trên toàn mạng. Các chương trình server này chấp nhận tất cả các yêu cầu hợp lệ đến từ mọi nơi trên mạng, sau đó nó thi hành dịch vụ và trả kết quả về máy yêu cầu. Một chương trình được coi là client khi nó gửi các yêu cầu tới máy có chương trình server và chờ đợi câu trả lời từ server. Chương trình server và client nói chuyện với nhau bằng các thông điệp (messages) thông qua một cổng truyền thông liên tác IPC (Interprocess Communication). Để một chương trình server và một chương trình client có thể giao tiếp được với nhau thì giữa chúng phải có một chuẩn để nói chuyện, chuẩn này được gọi là giao thức. Nếu một chương trình client nào đó muốn yêu cầu lấy thông tin từ server thì nó phải tuân theo giao thức mà server đó đưa ra. 2 Các phương pháp truyền thông (Khái quát): 2.1 Socket Một socket là một thiết bị truyền thông 2 chiều tương tự như một tập tin. Chúng ta có thể đọc hay ghi lên nó. Tuy nhiên mỗi socket là một thành phần trong một mối nối nào đó giữa các máy trên mạng máy tính và các thao tác đọc/ghi chính là sự trao đổi dữ liệu giữa các ứng dụng trên nhiều máy khác nhau. Ở đây ta hiểu Socket trong Winsock như là một “phương tiện” để ứng dụng mạng có thể trao đổi dữ liệu. Nghĩa là 1 Server thì sẽ cần một Socket để lắng nghe, chờ đợi các kết nối từ client và Client thì phải cần có một Socket để kết nối tới Sever. 2.2 RMI RMI (Remote Method Invocation) là một cơ chế cho phép một đối tượng đang chạy trên một máy ảo Java này ( Java Virtual Machine) gọi các phương thức của một đối tượng đang tồn tại trên một máy ảo Java khác (JVM). Thực chất RMI là một cơ chế gọi phương thức từ xa đã được thực hiện và tích hợp trong ngôn ngữ Java. Vì Java là một ngôn ngữ lập trình hướng đối tượng, nên phương pháp lập trình trong RMI là phương pháp hướng đối tượng do đó các thao tác hay các lời gọi phương thức đều liên quan đến đối tượng. Ngoài ra, RMI còn cho phép một Client có thể gửi tới một đối tượng đến cho Server xử lý, và đối tượng này cũng có thể được xem là tham số cho
3
lời gọi hàm từ xa, đối tượng này cũng có những dữ liệu bên trong và các hành vi như một đối tượng thực sự. 2.3 RPC RPC (Remote Procedure Calls) – Thủ tục gọi hàm từ xa là một kỹ thuật tiến bộ cho quá trình kết nối từ Client đến Server để sử dụng các ứng dụng và dịch vụ. RPC cho phép client có thể kết nối tới 1 dịch vụ sử dụng dynamic port nằm ở một máy tính khác. Trong hệ thống mạng máy tính hiện nay có rất nhiều dịch vụ và ứng dụng sử dụng cơ chế kết nối RPC. RPC được thiết kế để cung cấp cho việc truyền tải thông tin giữa client và server dễ dànghơn, bảo mật hơn, và thuận tiện hơn cho việc đồng bộ hóa các luồn dữ liệu. Các thông điệp gửi cho một dịch vụ RPC được biểu diễn bởi ngôn ngữ XDR (External Data Representation): dạng thức biểu diễn dữ liệu ngoài. Chỉ có các kiểu dữ liệu có thể được định nghĩa bởi XDR mới có thể truyền đi. B
Chương trình mô phỏng chat đơn giản thông qua socket +Server:
import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.net.InetAddress; import java.net.ServerSocket; import java.net.Socket; public class Server {public static void main(String[] args) { // Xử lí các trường hợp ngoại lệ có thể xảy ra của các lệnh đặt trong khối try...catch try { // Khởi tạo sever tại cổng 6132 ServerSocket server = new ServerSocket(1234); // Tạo vòng lặp vô hạn while (true) { System.out.println("Listening..."); // Chờ cho đến khi có Client kết nối tới thì sẽ trả Client về Socket sock Socket sock = server.accept(); // Lấy thông tin về Client vừa conect tới InetAddress addr = sock.getInetAddress(); System.out.println("Connection made to " + addr.getHostName()+ " (" + addr.getHostAddress() + ") \n");
4
ObjectInputStream ois = new ObjectInputStream(sock.getInputStream()); ObjectOutputStream oos = new ObjectOutputStream(sock.getOutputStream()); Object infor = ois.readObject(); System.out.println(infor.toString()); oos.writeObject("Hi, I'm Server \n"); // Đóng kết nối sock.close(); } } catch (ClassNotFoundException x) {System.out.println(x);} catch (IOException x) {System.out.println("Exception detected: " + x);} } } + Client import java.io.*; import java.net.Socket; public class Client{public static void main(String[] args) { Socket sock; int port = 1234; String hostname = "127.0.0.1"; // Địa chỉ để chat trên cùng một máy // Xử lí các trường hợp ngoại lệ có thể xảy ra của các lệnh đặt trong khối try...catch try { sock = new Socket(hostname, port); System.out.println("Connect successfully \n"); ObjectOutputStream oos = new ObjectOutputStream(sock.getOutputStream()); ObjectInputStream ois = new ObjectInputStream(sock.getInputStream()); oos.writeObject("Hello, I'm Client \n"); Object infor = ois.readObject(); System.out.println(infor.toString()); } catch (ClassNotFoundException x) {System.out.println(x);} catch (IOException x) {System.out.println(x);} catch (Exception x) {System.out.println(x);} }}}}
C Chương trình mô phỏng hàng đợi đa mức có phản hồi
5
+ Bài toán: Sử dụng 3 hàng đợi với 3 mức độ ưu tiên lần lượt là 1, 2, 3. Các tiến trình trên cùng 1 hàng đợi có cùng mức độ ưu tiên. * Queue 1 sử dụng chiến lược điều phối RR với lượng tử thời gian là 8. * Queue 2 sử dụng chiến lược điều phối RR với lượng tử thời gian là 16. * Queue 3 sử dụng chiến lược điều phối FCFS. + Thuật toán: * Khi 1 tiến trình P1 yêu cầu CPU mà không được đáp ứng ngay thì xếp nó vào Queue 1. * Nếu hết lượng tử thời gian dùng CPU ở Queue 1 mà P1 vẫn chưa thực hiện xong thì đẩy nó xuống Queue 2. * Nếu hết lượng tử thời gian dùng CPU ở Queue 2 mà P1 vẫn chưa thực hiện xong thì đẩy nó xuống Queue 3. * Thực hiện các tiến trình theo mức độ ưu tiên và thứ tự trong hàng đợi. + Sử dụng chương trình: * Nhập số lượng tiến trình tham gia điều phối. * Với mỗi tiến trình thì nhập thời điểm bắt đầu vào hệ thống và thời gian chạy cần thiết để tiến trình hoàn tất. * Chương trình sẽ in ra thời điểm chạy của các tiến trình. + Chương trình: #include #include #define max 100
6
float t[max], b[max]; int q1[max], q2[max], q3[max], vt[max], kt[max], n, f1, r1, f2, r2, f3, r3; void sort() { int i,j,t3; float t1,t2; for (i=1; i0)&&(b[vt[j-1]]>b[t3])) { vt[j]=vt[j-1]; --j; } vt[j]=t3; } } void push(int q[], int i, int &f, int &r) { if ((max-f+r)%max==max-1) {cout
View more...
Comments