Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 132 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
132
Dung lượng
2,81 MB
Nội dung
Xây dưng dich vu tính toán phân bô" CBHD : K.S THOAI NAM ĐẠI HỌC QUOC GIA THÁNH PHO HO CHI MINH TRƯỜNG ĐẠI HỌC KỸ THUẬT KHOA CÔNG NGHỆ THÔNG TIN BỘ MÔN HỆ THỐNG - -oOo- LUẬN VĂN TỐT NGHỆP (ềề tài XÂY DƯNG DỊCH vụ " ờũnÁ ạMBÔùĩì cám MAXCLIENTARGV) break; pt = va_arg (ap, pmatrix); } va_end (ap); #ifdef VIEW fprintf (stderr, "Number of param %d \nUsername %s\n", nParam, ascuserid (Client.Msg.uid)); pt = NULL; Client.Msg.type = DCE_MSG_CLIENT_REQUEST_AGENT_SERVICE; Client.Msg.nextra = nParam; strcpy (Client.Msg.sername, servicename); while (nTimes ) { dce_mcastsendsend (Client.nMSockSend, Client.maddr, Client.mport, (char *) &Client.Msg, sizeof (MSG)); nTimeOut = CLIENTTIMEOUT; Client.Timerld = dce_settimer (nTimeOut, dce_timerzero, (void *) &nTimeOut); while (nTimeOut) ( if ((fd = dce_socketaccept (Client.nSocket)) < 0) continue; dce_killtimer (Client.Timerld); read (fd, &msg, sizeof (msg)); switch (msg.type) { case DCE_MSG_AGENT_REPLY_CLIENT_NOSERVER: #ifdef VIEW fprintf (stderr, "Reply from %s %s :No server running on DCE system\n", _szwho[msg.who], ascaddr (msg.saddr)); close (fd); close (Client.nMSockSend); close (Client.nSocket); return NULL; break; SVTH :NGUYỄN VĂN Nối - 59406114 137 Xây dưng dich vu tính toán phân bô" CBHD : K.S THOAI NAM #ifdef VIEW #ifdef #ifdef #ifdef #ifdef fprintf (stderr, "Reply from %s %s :Service : %s not found on DCE system\n", _szwho[msg.who], ascaddr (msg.saddr), servicename); close (fd); close (Client.nMSockSend); close (Client.nSocket); return NULL; break; case DCE_MSG_ALL_REPLY_CLIENT_ERROR: VIEW fprintf (stderr, "Reply from %s %s :Error in data transfered to Service : %s\n", _szwho[msg.who], ascaddr (msg.saddr), servicename); close (fd); close (Client.nMSockSend); close (Client.nSocket); case DCE_MSG_ALL_REPLY_CLIENT_PLEASEWAIT: VIEW fprintf (stderr, "Reply from %s %s :Please wait the result of : %s\n", _szwho[msg.who], ascaddr (msg.saddr), servicename); break; case DCE_MSG_SERVICE_REQUEST_CLIENT_DATA: VIEW fprintf (stderr, "Request from %s %s : Transfer data : matrix %d\n", _szwho[msg.who]/ ascaddr msg.sport); writematrix (fd, (msg.saddr), _pm[msg.sport]); break; case DCE_MSG_SERVICE_REPLY_C LIENT_DATA: sleep (1); pt = readmatrix (fd); VIEW fprintf (stderr, "Reply from %s %s : Receive result matrix _szwho[msg.who], ascaddr (msg.saddr)); if (pt) fprintf (stderr, "Successfully\n"); else fprintf (stderr, "Error with failure !\n"); close (fd); close (Client.nMSockSend); close (Client.nSocket); return pt; break; } } #ifdef VIEW close (fd); nTimeOut = CLIENTTIMEOUT; fprintf (stderr, "End of request with failure !\n"); #endif close (Client.nMSockS end); Se rver SVTH (NGUYỄN VĂN Nối - 59406114 4.2.1.3.4 138 Xây dưng dich vu tính toán phân bô" CBHD : K.S THOAI NAM 4.2.1.3.4.1 dce_server.c on Mon Dec 21 18:36:20 1998 #include #include tinclude "dce_server.h " ServerDes Server; int dce_server_init (int, char **); void dce_server_exit (); int dce_agent_mcastrecv (char *buf, int len); int dce_server_mcastsend (char *buf, int len) ; void dce_server_alive (void *p); void dce_server_election_agent (void *p); void dce_server_fork_agent 0; void dce_msg_admin_request_all_killserver 0; void dce_msg_agent_request_server_broadcastdata 0; void dce_msg_admin_reqeust_agent_addservice 0; void dce_msg_client_request_agent_service 0; void dce_msg_agent_request_server_serve_client 0; void dce_msg_all_replỵ_client_pleasewait ; void dce_msg_service_reply_all_finish 0; dce_msg_all_reply_alluserservi.ce ; void dce_server_treat_for_electionagent 0; double dce_server_getload 0; main (int argc, char *argv[]) { if (! dce_diamon 0) exit (-1); if (!dce_server_init (argc, argv)) exit (-2); while (!Server.bExit) { if (dce_server_mcastrecv ( (char *) &msg, sizeof (MSG)) != sizeof (MSG)) continue; switch (msg.who) { case ADMIN: break; case AGENT: Server.AgentTime = * TIMEOUT_IAMALIVE + 1; dce_killtimer (Server.TimerldElection); break; case SERVER: dce_agent_update _newmsg 0; break; case SERVIC E: break; } switch (msg.tỵpe) { SVTH :NGUYỄN VĂN Nối - 59406114 139 Xây dưng dich vu tính toán phân bô" CBHD : K.S THOAI NAM case DCE_MSG_CLIENT_REQUEST_ AGENT_SERVICE: dce_msg_client_request_ agent_service 0; break; case DCE_MSG_ADMIN^REQUEsT_AGE NT_ADDSERVICE: dce_msg_admin_reqeust_age nt_addservice (); break; case DCE_MSG_ADMIN^REQUEsT_ALL_ADDUsER: AddUid (Server.pUserList, msg.lextra); break; cass DCE_MSG_ADMIN_REQUEsT_A LL_KILLSERVER: dce_msg_admin_request_a ll_killserver 0; break; case DCE_MSG_KILLALL: Server.bEx it = 1; break; } } } dce_server_init (int argc, char **argv) int i, n; u_long u; if (argc < 7) return 0; atexit (dce_server_exit); Server.Msg.order = atoi value.1) / (double) (FSCALE); if ((vp = kstat_data_lookup (ksp, "avenrun_5min")) == (void *) NULL) return y; y = y2 = (double) (((kstat_named_t *) vp)>value.1) / (double) (FSCALE); if ((vp = kstat_data_lookup (ksp, "avenrun_15min")) == (void *) NULL) return y; y = ỵl = (double) (((kstat_named_t *) vp)>value.1) / (double) (FSCALE); y = y3; return y; dce_server_treat_for_electionagent () { char c = Server.Msg.type; if (msg.order == Server.Msg.order) return; dce_killtimer (Server.TimerldElection); Server.Msg.type = DCE_MSG_IAMALIVE; dce_server_mcastsend ((char *) &Server.Msg, sizeof (MSG)); Server.Msg.type = c; } 4.2.1.3.4.2dce_hinfo.c on Tue Dec 22 13:30:40 1998 tinclude tinclude "dce_server.h" NewHinfo (int order, u_long addr) { PHINFO p = (PHINFO) malloc (sizeof (HINFO)); if (!p) return NULL; p->order = order; p->addr = addr; p->status = 1; p->time = * TIMEOUT_IAMALIVE + 1; return p; } SVTH :NGUYỄN VĂN Nối - 59406114 144 Xây dưng dich vu tính toán phân bô" } CBHD : K.S THOAI NAM if ( (p->status == 1) && (_MinOrder > p->order) ) _MinOrder = p->order; đce_server_minorder { _MinOrder = MAXINT; TravelList (Server.pList, MinOrder); return _MinOrder; } cmpsinfo (void *pl/ void *p2) { PHINFO p = (PHINFO) pl; u_long *pu = (u_long *) p2; if (*pu == p>addr) < p->status = 1; p->time = * TIMEOUT_IAMALIVE + 1; return 1; } } return 0; dce_agent_update_newmsg { PHINFO p; void **pr = ItemLookup (Server.pList, (void *) Smsg.saddr, cmpsinfo); if (pr) { free (pr); return; } p = NewHinfo (msg.order, msg.saddr); if (!p> return; InsertList (Server.pList, (void *) p); } cmppp (void *pl, void *p2) { PHINFO p = (PHINFO) pl; u_long *pu = (u_long *) p2; if (*pu == p>addr) return 1; return 0; } SVTH :NGUYỄN VĂN Nối - 59406114 145 Xây dưng dich vu tính toán phân bô" CBHD : K.S THOAI NAM } dce_server_servicebroadcast { TravelList (Server.pService, servicebroadcast) ; } Userservicebroadcast (void *pt) } PUSERSERVICE p = (PUSERSERVICE) pt; msg.type = DCE_MSG_ALL_REPLY_ALL_USERSERVICE; msg.who = UNKNOWN; msg.pid = p->pid; msg.saddr = p->serveraddr; msg.uid = p->uid; msg.nextra = p->sernum; msg.aaddr = p->clientaddr; msg.lextra = p->tstart; msg.lextral = p->tEnd; msg.sport = p->time; dce_server_mcastsenđ ((char *) &msg, sizeof (MSG)); dce_server_userservicebroadcast () { TravelList (Server.pCurUserService, userservicebroadcast); } 4.2.1.3.5 Service 4.2.1.3.5.1dce_service1.c ort Thu Dec 24 16:43:19 1998 tinclude "dce_service.h" void main (int argc, char *argv[]) { pmatrix pl; int i, j; if (!dce_service_init (argc, argv)) exit (-1); pl = dce_get_matrix (0) ; sleep (500); dce_service_sendmatrix (pl); } 4.2.1.3.5.2dce_sum.c on TueJan 14:15:16 1999 #include #include "dce_service.h" #define MAXPARM void main (int argc, char *argv[]) { int i, j; pmatrix pm, p[MAXPARM]; if (!dce_service_init (argc, argv)) exit (-1); if (Service.nParam < MAXPARM) exit (-2); for (i = 0; i < MAXPARM; i++) if (!(p[i] = dce_get_matrix (i))) SVTH (NGUYỄN VĂN Nối - 59406114 146 Xây dưng dich vu tính toán phân bô" CBHD : K.S THOAI NAM 4.2.1.3.5.3dce_addmatrix.c on Fri Jan 20:41:43 1999 #include #include "dce_service.h" #define MAXPARM void main (int argc, char *argv[]) { int i, j; pmatrix pm, p[MAXPARM]; if (! dce_service_init (argc, argv)) exit (-1); if (Service.nParam < MAXPARM) exit (-2); for (i = 0; i < MAXPARM; i++) if (1(p[i] = dce_get_matrix (i))) dce_service_sender r 0; if ((p[ũ]->type != p[l]->type) II (p[0]->col != p[l]->col) II (p[0]->row != p[l]->row)) dce_service_senderr 0; if (!(pm = newmatrix (p[0]->type, p[0]->row, p[0]>col, NULL))) dce_service_senderr ();; for (i =0; i < p[0]->row; i++) for (j = 0; j < p[0]->col; j++) pm->_ppint[±][j] = p[0]->_ppint[i] [j] + p[1]->_ppint[i][j]; dce_service_sendmatrix (pm); for (i = 0; i < MAXPARM; i++) freematrix (p[i]); freematrix (pm); } 4.2.1.3.5.4dce_revmatrix.c on Fri Jan 21:26:15 1999 tinclude tinclude "dce_service.h" #define MAXPARM void main (int argc, char *argv[]) { int i, j; pmatrix pm, p[MAXPARM]; if (!dce_service_init (argc, argv)) exit (-1); if (Service.nParam < MAXPARM) exit (-2); for (i = 0; i < MAXPARM; i++) if (!(p[i) = dce_get_matrix (i))) dce_service_sender r 0; if (!(pm = newmatrix (p[0]->type, p[0]->col, p[0]>row, NULL))) dce_service_senderr 0; for (i = 0; i < pm->row; i++) for (j = 0; j < pm->col; j++) pm->_ppint[±][j] = p[0]->_ppint[j][i]; dce_service_sendmatrix (pm); SVTH :NGUYỄN VĂN Nối - 59406114 147 Xây dưng dich vu tính toán phân bô" CBHD : K.S THOAI NAM exit (-2); for (i =0; i < MAXPARM; i++) if (!(p[i] = dce_get_matrix (i))) dce_service_sender r 0; if ((p[0]->type != p[l]->type) II (p[0]>col != p[l]->row)) dce_service_senderr 0; if (!(pm = newmatrix (p[0]->type, p[0]>row, p[l]->col, NULL))) dce_service_senderr ();; for (i = 0; i < pm->row; i++) for (j = 0; j < pm->col; j++) { pm->_ppint[i][j] = 0; for (k =0; k < p[0]->col; k++) pm->_ppint[i][j] += p[0]->_ppint[i][k] * p[1]>_ppint[k][j]; } } dce_service_sendmatrix (pm); for (i = 0; i < MAXPARM; i++) freematrix (p[i]); freematrix (pm); 4.2.1.3.6 Test 4.2.1.3.6.1 testl.c on Thu Dec 24 05:13:55 1998 #include #include "dcec.h" #define SIZE 10 #define SERVICENAME "servicel" void main (int argc, char *argv[]) { int i, j; pmatrix p, pl = newmatrix (sizeof (int), SIZE, SIZE, NƯLL); printf ("Testing program at Client for %s Service \n", SERVICENAME); for (i =0; i < pl->row; i++) < for (j = 0; j < pl->col; j++) < pl->_ppint[i][j] = i + j; printf ("%4d ", pl->_ppint[i][j]); } printf ("\n"); } if (!(p = dce_service (SERVICENAME, pl, NULL))) exit (-1); for (i =0; i < p->row; i++) { for (j = 0; j < p->col; j++) < printf ("%4d ", p->_ppint[i] [j]); } SVTH :NGUYỄN VĂN Nối - 59406114 148 Xây dưng dich vu tính toán phân bô" } } CBHD : K.S THOAI NAM for (j = 0; j < pl->col; j++) { pl->_ppint[i][j] = 1; prinữ ("%4d ", pl->_ppint[i][j]); } printf ("\n"); if (!(p = dce_service (SERVICENAME, pl, NULL))) exit (-1); printf ("sum %4d\n", p->_ppint[0][0]); ĩreematrix (pl); freematrix (p); 4.2.1.3.6.3testaddmatrix.c on Fri Jan 21:05:09 1999 #include #include "dcec.h" #define SIZE 10 #define SERVICENAME "addmatrix" void main (int argc, char *argv[]) { int i, j; pmatrix p, pl = newmatrix (sizeof (int), SIZE, SIZE, NULL), p2 = newmatrix (sizeof (int), SIZE, SIZE, NULL); printf ("Testing program at Client for %s Service \n", SERVICENAME); printf ("Matrix l\n"); for (i =0; i < pl->row; i++) { for (j = 0; j < pl->col; j++) { pl->_ppint[i][j] = 1; printi ("%4d ", pl->_ppint[i] [j]); > } printf ("\n"); printĩ ("Matrix 2\n"); for (i =0; i < pl->row; i++) { for (j = 0; j < pl->col; j++) { p2->_ppintt1][j] = 2; printf ("%4d ", p2->_ppint[i][j]); } printf ("\n"); } if (!(p = dce_service (SERVICENAME, pl, p2, NULL))) exit (-1); printf ("Add matrixXn"); for (i = 0; i < pl->row; i++) { for (j = 0; j < pl->col; j++) SVTH :NGUYỄN VĂN Nối - 59406114 149 Xây dưng dich vu tính toán phân bô" CBHD : K.S THOAI NAM int i, j; pmatrix p, pl = newmatrix (sizeof (int), SIZE, SIZE, NULL); printf ("Testing program at Client for %s Service \n", SERVICENAME); printf ("Matrix \n"); for (i =0; i < pl->row; i++) { for (j = 0; j < pl->col; j + +) { } pl->_ppint[i][j) = j; printĩ ("%4d ", pl->_ppint[i][j]); printf ("\n"); } if (!(p = dce_service (SERVICENAME, pl, NULL))) exit (-1); printf ("rev matrix\n"); for (i =0; i < pl->row; i++) { for (j = 0; j < pl->col; j++) { } } printĩ ("%4d ", p->_ppint[i][j]); printf ("\n"); } freematrix (pl); freematrix (p); 4.2.1.3.6.5testmulmatrix.c on Fri Jan 21:51:47 1999 #include #include "dcec.h" #define SIZE 10 #define SERVICENAME "mulmatrix" void main (int argc, char *argv[]) { int i, j; pmatrix p, pl = newmatrix (sizeof (int), SIZE, SIZE, NULL), p2 = newmatrix (sizeof (int), SIZE, SIZE, NULL); printf ("Testing program at Client for %s Service \n", SERVICENAME); printf ("Matrix l\n"); for (i =0; i < pl->row; i++) { for (j = 0; j < pl->col; j + +) { } } pl->_ppint[i][j] = 1; printĩ ("%4d ", pl->_ppint[i][j]); printf ("\n"); SVTH :NGUYỄN VĂN Nối - 59406114 150 Xây dưng dich vu tính toán phân bô" CBHD : K.S THOAI NAM } } freematri x (pl); freematri x (p2); freematri x (p); 4.2.1.3.7 Tools 4.2.1.3.7.1 dce_monitor.c on Thu Dec 17 15:18:57 1998 #include #include "dce_core.h" u_long maddr; int mport; int nMSockRecv; static char * s[]={"ADMIN","AGENT","SERVER","SERVICE","CLIENT" ,"UNKNOWN", NULL}; void main () if (!(dce_readconf(Smađdr,Smport))) exit(-l); ((nMSockRecv=dce_mcastsockrecv(maddr ,mport))[...]... Application 6 Presentation 5 4 Xây Xâydưng dưngdich dichvu vutính tínhtoán toánphân phânbô" bô" Session 3 Transport 2 Cơ sỏr lv thuvết Netvvork 2 Datalink 1 2.1 CBHD CBHD: :K.S K.S.THOAI THOAINAM NAM TCP/IP Để có thể trao đổi thông tin giữa các quá trình ở cắc máy khác nhau, thì Physical các máy phải được kết nôi với nhau và từ đó mạng máy tính được hình thành Do một thực tế là các máy tính này có thể chạy các... Vì thế dịch vụ được 2.1.4.1 Giới thiệu gọi là dịch Mặc vụ chuỗi bytevà (byte stream ứng dụng gởi 10TCP bytecung sau dù TCP UDP cùng Service) sử dụng nếu lớp một network ĨP, nhưng đó 20 cấp byte sauvụ nữa là 50 byte ứng dụng ở hơn đầu kia sẽ không thể biết nhiềuv dịch khác nhau chothìlớp ứng dụng là UDP TCP cung cấpđược dịch độ vụ 2.1.4.2 Phần đầu của TCP việc nôi kết theo hướng, cung cấp dịch vụ tin... cầu thì nó sẽ fork() ra process con (Slave process) để phục vụ yêu cầu của Client Công việc của process xử lý yêu cầu (Slave process) SVTH :NGUYỄN VĂN Nổi - 59406114 36 Xây dưng dich vu tính toán phân bô" CBHD : K.S THOAI NAM Concurrent, Connection-Oriented Server Server SVTH :NGUYỄN VĂN Nối - 59406114 Client 37 Xây dưng dich vu tính toán phân bô" 2.4 CBHD : K.S THOAI NAM Multicast 2.4.1 Giới thiệu... A) a Dạng B (Class B) a Dạng c (Class C) SVTH :NGUYỄN VĂN Nổi - 59406114 17 Etherne t IP header TCP Header Application data Etherne t 14 20 bytes 20 bytes 0-1452 bytes 4 bytes Xây Xâydưng dưngdich dichvu vutính tínhtoán toánphân phânbô" bô" CBHD CBHD: :K.S K.S.THOAI THOAINAM NAM bytes 4 bit 4 bit header 8 bit type of Service 16 bit total length version length Trong (TOS) Tóm lại, dụng sử dụng dữthái... có cấp transport Trong đó cấp transport là rất quan trọng vì nó cung cấp dịch vụ (Service) SVTH SVTH:NGUYỄN :NGUYỄNVĂN VĂNNổi Nổi- -59406114 59406114 12 13 Xây dưng dich vu tính toán phân bô" CBHD : K.S THOAI NAM (retransmisssion) và kiểm soát dòng dữ kiện (flow control) dược xử lý bởi cấp transport Session layer: chứa các dịch vụ cho phép trao đổi thông tin giữa các quá trình, tạo và kết thúc kết nối... trình, tạo và kết thúc kết nối của các quá trình trên các máy khác nhau Presentation layer : chứa các dịch vụ về thao tác dữ liệu như nén, giải nén Cấp này không có các dịch vụ thông tin của riêng nó Application layer: chứa các dịch vụ phục vụ cho người dùng như truyền nhận file hay email Do đặc tính cấu mô hình OSĨ, dữ liệu của chương trình gởi phải đi qua tất cả 14 cấp để đến được chương trình... đã trình bày ở trên , có bôn mạng khác nhau của địa chỉ broadcast Bây giờ chúng ta xem xét cụ thể SVTH :NGUYỄN VĂN Nổi - 59406114 40 lớp netvvork Upper -Layer Protocol value Xây Xâydưng dưngdich dichvu vutính tínhtoán toánphân phânbô" bô" CBHD CBHD: :K.S K.S.THOAI THOAINAM NAM Các cấp thực hiện : ba cấp Multicasting IP Service interface- Subnet-directed 2.4.23 broadcast • ICMP Cấp 0 : không support... network , mốì datagram chỉ được gởi ra trên máy duy nhất một giao tiếp mạng đến Multicast agent Từ đây, các SVTH :NGUYỄN VĂN Nổi - 59406114 43 Multicast group ID (28 bit) Xây Xây dưng dưng dich dich vu vu tính tính toán toán phân phân bô" bô" CBHD CBHD :: K.S K.S THOAI THOAI NAM NAM Chức năng Group máy nàyinteríace không còn là thành viên của Không cần Leave thay đổi đôi yêu với cầu IP Service để nhận... trình vì nhiệm vụ chủ yếu của Server là nhận kết nôi và gởi đáp ứng cho Client Các vân đề về an toàn dữ liệu , trật tự các gói data đến đã được câ"p transport xử lý Nhược điểm của loại Server này là với những ứng dụng đơn giản thì sẽ có phí tổn do việc bắt tay ba lần khi thực hiện SVTH :NGUYỄN VĂN Nổi - 59406114 33 Xây dưng dich vu tính toán phân bô" CBHD : K.S THOAI NAM Trong quá trình xây dựng chương... Các phương pháp trên đều có ưu điểm và nhược điểm : Đặc tả địa chỉ Server là hằng sô" khi biên dịch làm cho chương trình chạy nhanh hơn Tuy nhiên nếu Server chuyển sang máy khác thì chương trình Client SVTH :NGUYỄN VĂN Nổi - 59406114 32 Xây dưng dich vu tính toán phân bô" 2.3.1.2 CBHD : K.S THOAI NAM Xây dựng giải thuật chương trình Client Thuật giải với protocol TCP : 1 Tìm địa chỉ của Server ... cứu tính toán phân bố: SVTH :NGUYỄN VĂN Nổi - 59406114 Xây dưng dich vu tính toán phân bô" 1.2 CBHD : K.S THOAI NAM Bài toán Bài toán đặt cho luận văn sau : Một hệ thông máy tính gồm máy tính. .. - truy xuất dịch vụ tính toán Server Người quản trị hệ thông (Admin) quản lý hoạt động server Ngừời phát triển dịch vụ xây dựng thêm dịch vụ Server Vấn đề đặt cho luận văn yêu cầu toán cần phải... (Admin) quản lý hoạt động server Ngừời phát triển dịch vụ xây dựng thêm dịch vụ SVTH :NGUYỄN VĂN Nổi - 59406114 64 Xây dưng dich vu tính toán phân bô" • • CBHD : K.S THOAI NAM Làm để Admin quản