Hệ Điều HànhCơ Chế Liên Lạc Tiến Trình

47 389 0
Hệ Điều HànhCơ Chế Liên Lạc Tiến Trì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

Hệ Điều HànhCơ Chế Liên Lạc Tiến Trình Tiến trình là thể hiện (instance) của một chương trình máy tính trong bộ nhớ, đang thực thi hoặc chờ thực thi.Một chương trình có thể có vài tiến trình trong bộ nhớMột tiến trình gồm:Mã nguồn chương trình (code)Dữ liệu (data)Bộ đếm chương trình (program counter)Ngăn xếp (stack)Giá trị ở các thanh ghi (register values)Các tiến trình muốn trao đổi dữ liệu với nhau cần sử dụng các cơ chế giao tiếp tiến trình

Hệ Điều Hành Giảng Viên: L……………… Hệ Điều Hành Giảng Viên: ………………  Nhóm …:      ……………………… ……………………… ……………………… ……………………… ……………………… HỆ ĐIỀU HÀNH  Chủ đề: Các chế liên lạc tiến trình  Sinh viên thực : • ……………………….(Vùng nhớ chia sẻ, Trao đổi thơng điệp, Sockets) • ………………………(Vùng nhớ chia sẻ, Đường ống) • ………………………(Tín hiệu, Trao đổi thơng điệp) Xây dựng ứng dụng quản lí máy tính  Sinh viên thực hiện: • ……………………… • ……………………… HỆ ĐIỀU HÀNH Tiến Trình:    Tiến trình thể (instance) chương trình máy tính nhớ, thực thi chờ thực thi Một chương trình có vài tiến trình nhớ Một tiến trình gồm: • • • • •  Mã nguồn chương trình (code) Dữ liệu (data) Bộ đếm chương trình (program counter) Ngăn xếp (stack) Giá trị ghi (register values) Các tiến trình muốn trao đổi liệu với cần sử dụng chế giao tiếp tiến trình HỆ ĐIỀU HÀNH Tiến Trình:  Các chế giao tiếp tiến trình: Tín hiệu Tín hiệu Vùng nhớ chia sẻ Vùng nhớ chia sẻ Các chế liên lạc Sockets Sockets Đường ống Đường ống Trao đổi thông điệp Trao đổi thơng điệp HỆ ĐIỀU HÀNH 1.0 Signal(Tín Hiệu):  Khái niệm :     Tín hiệu chế phần mềm tương tự ngắt cứng tác động đến tiến trình Một tín hiệu sử dụng để thơng báo cho tiến trình kiện xảy Có nhiều tín hiệu định nghĩa, tín hiệu có ý nghĩa tương ứng với kiện đặc trưng Ví dụ: Một số tín hiệu UNIX Tín hiệu Mơ tả SIGINT Người dùng nhấn phím DEL để ngắt xử lý tiến trình SIGQUIT u cầu xử lý SIGILL Tiến trình xử lí thị bất hợp lệ HỆ ĐIỀU HÀNH 1.0 Signal(Tín Hiệu):   Mỗi tiến trình sở hữu bảng biễu diễn tín hiệu khác Với tín hiệu có tương ứng trình xử lý tín hiệu (signal handler) qui định xử lý tiến trình nhận tín hiệu tương ứng   Liên lạc tín hiệu mang tính chất  khơng đồng bộ, nghĩa tiến trình nhận tín hiệu khơng thể xác định trước thời điểm nhận tính hiệu  Các tiến trình khơng thể kiểm tra kiện tương ứng với tín hiệu có thật xảy  Các tiến trình thơng báo cho biến cố đó, mà không trao đổi liệu theo chế HỆ ĐIỀU HÀNH 2.0 Pipe( Đường ống):  Đường ống cách để đưa đầu chương trình thành liệu đầu vào chương trình khác mà không cần qua file trung gian  Đường ống thực chất vùng nhớ tạm thời, nơi lưu trữ đầu lệnh sau chuyển chúng cho đầu vào lệnh thứ hai • Lệnh_1 | Lệnh_2 • • ls | sort ls | sort | less HỆ ĐIỀU HÀNH 2.0 Pipe( Đường ống):  Định hướng lại thiết bị đầu vào/ra chuẩn :          Hầu hết tất lệnh hiển thị kết đầu ra hình, lấy liệu đầu vào từ bàn phím Có thể gửi kết đầu ra file đọc đầu vào từ file cách sử dụng định hướng lại (redirect)   Ghi kết lệnh file (thay hình) Lệnh > tên_file_đầu_ra   ls > danh_sach_file Định hướng đầu vào: Lệnh < tên_file_đầu_vào cat < a.txt   sort < a.txt > a.sorted.txt   tr “[a-z]” “[A-Z]” < a.txt > b.txt HỆ ĐIỀU HÀNH 2.0 Pipe( Đường ống): Có hai loại Pipe:  Unnamed Pipe: giới hạn không gian phạm vi địa trình, cho phép giao tiếp trình cha với trình hay trình trình với Trong q trình thay luồng  Named pipe (còn gọi FIFO): loại cho phép hai q trình có khơng gian địa khác (trên cung máy) giao tiếp với Thực chất giống tập tin với quy định liệu lấy đầu tập tin thêm vào cuối tập tin HỆ ĐIỀU HÀNH 5.2 TCP Socket: Client Server  Sau chấp nhận yêu cầu kết nối, Server thực lệnh Read() chờ có thơng điệp yêu cầu từ Client  accept() write() requ est read() read() reply write() Server phân tích thực thi yêu cầu Kết trả Client lệnh Wrire()  Sau gửi yêu cầu lệnh Write(), Client chờ nhận thông điệp kết từ Server lệnh Read() HỆ ĐIỀU HÀNH 5.2 TCP Socket: Client Server accept() write() read() requ est Các câu lệnh Read(), Write() thực nhiều lần (ký hiệu hình ellipse) read()  Kênh ảo bị xóa Server Client đóng Socket lệnh Close() reply write() close()  close() HỆ ĐIỀU HÀNH 5.2 TCP Socket: Client socket() socket() bind() listen() connect() accept() write() request read() read() close() reply write() close() Server HỆ ĐIỀU HÀNH 5.2 TCP Socket:  Các bước tiến hành server client sử dụng giao thức TCP/IP C# (có thể chạy server client máy):  Chương trình phía Server:  Tạo Socket  Gắn Socket với địa cụ thể (binding)  Đặt Socket trạng thái lắng nghe kết nối tới từ Client  Chấp nhận kết nối từ Client  Chương trình phía Client:  Tạo Socket  Kết nối đến Server  Thực giao tiếp với Server  Đóng luồng Socket HỆ ĐIỀU HÀNH 5.2 TCP Socket:  Gửi nhận thông điệp dạng Byte[ ]    Lớp NetworkStream  Socket cung cấp phương thức gửi nhận liệu dạng mảng byte Vì cần phải thực bước chuyển đổi liệu sang dạng byte ngược lại Ví dụ: Chương trình gửi nhận liệu sử dụng TCPListener, Socket (phía server) TCPClient, NetworkStream (phía client) dạng mảng byte    Ở ta sử dụng liệu dạng văn ASCII console, dùng lớp namespace System.Text để chuyển đổi cách tạo đối tượng có kiểu ASCIIEncoding HỆ ĐIỀU HÀNH 5.2 TCP Socket: private const int BUFFER_SIZE=1024; Server.cs private const int PORT_NUMBER=9540; static ASCIIEncoding encoding=new ASCIIEncoding(); public static void Main() { try { IPAddress address = IPAddress.Parse("127.0.0.1"); TcpListener listener =newTcpListener(address,PORT_NUMBER); // close socket.Close(); // listen listener.Start(); listener.Stop(); Console.WriteLine(“TCPServer started on“ + listener.LocalEndpoint); } Console.WriteLine("Waiting for a connection "); catch (Exception ex) Socket socket=listener.AcceptSocket(); { Console.WriteLine("Connection received from " + socket.RemoteEndPoint); // receive byte[] data=new byte[BUFFER_SIZE]; socket.Receive(data); string str=encoding.GetString(data); //send socket.Send(encoding.GetBytes("Hello "+str)); Console.WriteLine("Error: " + ex); } Console.Read(); HỆ ĐIỀU HÀNH 5.2 TCP Socket: private const int BUFFER_SIZE=1024; Client.cs private const int PORT_NUMBER=9540; static ASCIIEncoding encoding= new ASCIIEncoding(); public static void Main() { try { TcpClient client = new TcpClient(); //connect //close stream.Close(); client.Connect(“127.0.0.1",PORT_NUMBER); Stream stream = client.GetStream(); client.Close(); Console.WriteLine("Connected to TCPServer."); } Console.Write(“Enter a username: "); catch (Exception ex) string str = Console.ReadLine(); { // send byte[] data=encoding.GetBytes(str); stream.Write(data,0,data.Length); //receive data =new byte[BUFFER_SIZE]; stream.Read(data,0,BUFFER_SIZE); Console.WriteLine(encoding.GetString(data)); Console.WriteLine("Error: " + ex); } Console.Read(); HỆ ĐIỀU HÀNH 5.2 TCP Socket:  Chạy Server trước, cửa sổ console Server hiển thị:  Sau chạy Client, kết nối thành công, Server hiển thị: HỆ ĐIỀU HÀNH 5.2 TCP Socket:  Chuyển qua cửa sổ console Client nhập username Nếu nhận liệu, server gửi trả lại message: “Hello [UserName]”  Ngay sau bước này, server client thực đóng kết nối HỆ ĐIỀU HÀNH 5.2 TCP Socket:  Gửi nhận thông điệp dạng StreamReader StreamWriter     StreamReader: Được sử dụng để đọc ký tự từ stream StreamWriter: Được sử dụng để ghi ký tự tới stream Các đối tượng StreamReader StreamWriter khởi tạo trực tiếp từ NetworkStream Ví dụ: chương trình gửi nhận thơng điệp dạng StreamReader StreamWriter   Sử dụng vòng lặp while để thực gửi nhận liệu liên tục server/client Nếu chuỗi nhập vào EXIT dừng chương trình HỆ ĐIỀU HÀNH 5.2 TCP Socket: private const int BUFFER_SIZE = 1024; private const int PORT_NUMBER = 9540; static ASCIIEncoding encoding = new ASCIIEncoding(); // receive string str = reader.ReadLine(); if (str.ToUpper() == "EXIT") { public static void Main() { writer.WriteLine("bye"); try { break; IPAddress address = IPAddress.Parse("127.0.0.1"); TcpListener listener = new TcpListener(address, PORT_NUMBER); } // send // listen writer.WriteLine("Hello " + str); listener.Start(); Console.WriteLine("Server started on " + listener.LocalEndpoint); } // close Console.WriteLine("Waiting for a connection "); stream.Close(); Socket socket = listener.AcceptSocket(); socket.Close(); Console.WriteLine("Connection received from "+ socket.RemoteEndPoint); var stream = new NetworkStream(socket); var reader = new StreamReader(stream); var writer = new StreamWriter(stream); listener.Stop(); } catch (Exception ex) { writer.AutoFlush = true; while (true) { Console.WriteLine("Error: " + ex); } Console.Read(); Server.cs HỆ ĐIỀU HÀNH 5.2 TCP Socket: Client.cs private const int BUFFER_SIZE = 1024; private const int PORT_NUMBER = 9540; // receive static ASCIIEncoding encoding = new ASCIIEncoding(); str = reader.ReadLine(); public static void Main() { Console.WriteLine(str); try { if (str.ToUpper() == “bye") TcpClient client = new TcpClient(); break; // connect } client.Connect("127.0.0.1", PORT_NUMBER); Stream stream = client.GetStream(); // close stream.Close(); Console.WriteLine("Connected to TCPServer "); client.Close(); while (true) { } Console.Write("Enter a username: "); string str = Console.ReadLine(); var reader = new StreamReader(stream); catch (Exception ex) { Console.WriteLine("Error: " + ex); var writer = new StreamWriter(stream); writer.AutoFlush = true; // send writer.WriteLine(str); } Console.Read(); HỆ ĐIỀU HÀNH 5.2 TCP Socket:  Chạy Server trước, cửa sổ console Server hiển thị:  Sau chạy Client, kết nối thành công, Server hiển thị: HỆ ĐIỀU HÀNH 5.2 TCP Socket:  Chuyển qua cửa sổ console Client nhập username Nếu nhận liệu, server gửi trả lại message: “Hello [UserName]”  Nếu chuỗi nhập vào “ Exit “ ngắt kết nối HỆ ĐIỀU HÀNH Cảm ơn thầy bạn theo dõi

Ngày đăng: 27/05/2018, 15:58

Từ khóa liên quan

Mục lục

  • Slide 1

  • Slide 2

  • Slide 3

  • Slide 4

  • Slide 5

  • Slide 6

  • Slide 7

  • Slide 8

  • Slide 9

  • Slide 10

  • Slide 11

  • Slide 12

  • Slide 13

  • Slide 14

  • Slide 15

  • Slide 16

  • Slide 17

  • Slide 18

  • Slide 19

  • Slide 20

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

Tài liệu liên quan