1. Trang chủ
  2. » Công Nghệ Thông Tin

Do an co so nganh mang

37 310 2

Đ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

Thông tin cơ bản

Định dạng
Số trang 37
Dung lượng 1,7 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Đâ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

Trang 1

ĐẠ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 : HOÀNG TUẤN NHÂN

Trang 2

ĐÀ NẴNG, 05/2016 LỜI MỞ ĐẦU

Nguyên lý hệ điều hành và Lập trình Mạng là những nền tảng mà người lập trìnhphải hiểu rõ để có thể nắm bắt các kiên thức cao hơn

Hệ điều hành là thành phần trung gian, là cầu nối cho sự giao tiếp giữa ngườidung và máy tính Thông qua hệ điều hành, người sử dụng dễ dàng làm việc và khaithác hiệu quả thiết bị phần cứng

Cũng như vậy, với sự phát triển trong lĩnh vực mạng hiện nay, thì việc nghiêncứu, nắm vững về Mạng là thực sự quan trọng đối với người lập trình

Dựa trên những hiểu biết của mình và tham khảo thêm, em đã thực hiện,nghiên cứu về 2 đề tài:Tìm hiểu về đường dẩn ống pipe ,viết chương trình mô phỏng

và Xây dựng website CV nhóm cá nhân bao gồm các thông tin về họ tên,địachỉ,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 trong khoa Công Nghệ Thông Tin, vàhơn hết là thầy Mai Văn Hà đã nhiệt tình theo dõi, hướng dẫn em nhiệt tình trong quátrình em thực hiện đề tài này

Em đã rất cố gắng hoàn thành đề tài, nhưng không thể tránh khỏi những thiếusót, mong nhận được sự góp ý của thầy cô để em hoàn thiện đề tài hơn

Sinh viên thực hiệnHoàng Tuấn Nhân-Hồ Thị Kim Huệ

GVHD: Mai Văn Hà Page 2

Trang 3

Sự khác nhau cơ bản giữa Linux và nhiều hệ điều hành phổ biến đương thời lànhân Linux và các thành phần khác đều là phần mềm tự do và mã nguồn mở Linuxkhông chỉ là một hệ điều hành, mặc dù cho đến nay đã được sử dụng phổ biến Vàigiấy phép phần mềm tự do và mã nguồn mở dựa trên copyleft, một vài công việc bắtnguồn từ một phần copyleft cũng phải được copyleft chính nó Giấy phép thông dụngnhất của phần mềm tự do là giấy phép cung GNU (the GNU General Public License -GPL), một dạng của copyleft, và được sử dụng cho nhân Linux và nhiều thành phần từ

dự án GNU

Các bản phân phối của Linux được các nhà phát triển cho phép giao tiếp với các hệđiều hành khác và thành lập tiêu chuẩn tính toán Hệ thống linux găn chặt với cácchuẩn POSIX, SUS, LSB, ISO và ANSI trong khả năng có thể

- Các loại nhân của hệ điều hành:

GVHD: Mai Văn Hà Page 3

Trang 4

2. Các ch c năng c a h đi u hành Linux ứ ủ ệ ề

Tính động - Nghĩa là các phần mềm có thể làm việc trên các kiểu khác nhau

của phần cứng theo cách giống nhau Kernel và các chương trình ứng dụng hỗtrợ sự cài đặt của nó trên bất kỳ nền cứng nào

Nguồn mở - Mã nguồn Linux là có sẵn miễn phies và nó là sở hữu chung dựa

trên dự án phát triển Nhiều team làm việc trong sự cộng tác để tăng hiệusuất của Hệ điều hành Linux và nó tiếp tục tiến triển

Đa người dùng - Linux là một hệ thống đa người dùng nghĩa là nhiều người sử

dụng có thể truy cập vào các nguồn tài nguyên hệ thống như bộ nhớ/ram/cácchương trình ứng dụng tại cùng một thời gian

Đa chương trình - Linux là một hệ thống đa chương trình nghĩa là nhiều ứng

dụng có thể chạy tại cùng một thời gian

Hệ thống file có thứ bậc - Linux cung cấp một cấu trúc file tiêu chuẩn trong đó

các file hệ thống/các file người dùng được sắp xếp

Shell - Linux cung cấp một chương trình biên dịch đặc biệt mà có thể được sử

dụng để thực hiện các lệnh của Hệ điều hành Nó có thể được sử dụng đểthực hiện các kiểu đa dạng của các hoạt động, gọi các chương trình ứngdụng…

Bảo mật - Linux cung cấp sự bảo vệ sử dụng các tính năng xác nhận như mật

khẩu bảo vệ/sự truy cập được kiểm soát tới các file đặc trưng

II. C S LÝ THUY T V GIAO TI P GI A CÁC TI N TRÌNH Ơ Ở Ế Ề Ế Ữ Ế

1. Giao ti p gi a các ti n trình : ế ữ ế

IPC (Inter-Process Communication) - Giao tiếp giữa các tiến trình trong hệ điều

hành là một yêu cầu không thể thiếu Các tiến trình chạy độc lập và không thể xâm

GVHD: Mai Văn Hà Page 4

Trang 5

phạm vùng nhớ của nhau Để các tiến tình chuyển dữ liệu và trao đổi được với nhau,

ta phải dùng đến một số kỹ thuật cung cấp bởi hệ thống

Tiến trình được định nghĩa là một thực thể điều khiển đoạn mã lệnh có riêngmột không gian địa chỉ, có ngăn xếp riêng rẽ, có bảng chứa các số mô tả file được

mở cùng tiến trình và đặc biệt là có một định danh PID (Process Identify) duy nhất trong toàn bộ hệ thống vào thời điểm tiến trình đang chạy

3. Qu n lý ti n trình trên 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ệ bởi hệ điều hành, sự đổ vỡ của một tiến trình không thể gây ảnh hưởng đến các tiến trình khác Tuy nhiên vấn đề đặt ra là làm thế nào để giao tiếp giữa các tiến trình một khi hệ điều hành bảo vệ không cho các tiến trình xâm phạm không gian địa chỉ bộ nhớ của nhau Một vấn đề khác nữa là tranh chấp tài nguyên hay dữ liệu kết xuất của một tiến trình làm cách nào có thể gửi đến các tiến trình khác sử dụng cho bước xử lí tiếp theo

GVHD: Mai Văn Hà Page 5

Trang 6

• Cho phép phối hợp hoạt động giữa các quá trình trong hệ thống

• Giải quyết đụng độ trên vùng tranh chấp

• Truyền thông điệp từ quá trình này đến các quá trình khác

• Chia sẻ thông tin giữa các quá trình với nhau

• Liên kết tường minh hay tiềm ẩn (explicit naming/implicit naming) : tiến trình có cầnphải biết tiến trình nào đang trao đổi hay chia sẻ thông tin với nó ? Mối liên kết đượcgọi là tường minh khi được thiết lập rõ ràng , trực tiếp giữa các tiến trình, và là tiềm

ẩn khi các tiến trình liên lạc với nhau thông qua một qui ước ngầm nào đó

• Liên lạc theo chế độ đồng bộ hay không đồng bộ (blocking / non-blocking): khi mộttiến trình trao đổi thông tin với một tiến trình khác, các tiến trình có cần phải đợi chothao tác liên lạc hoàn tất rồi mới tiếp tục các xử lý khác ? Các tiến trình liên lạc theo

cơ chế đồng bộ sẽ chờ nhau hoàn tất việc liên lạc, còn các tiến trình liên lạc theo cơchế nonblocking thì không

• Hầu hết các hệ điều hành đưa ra nhiều cơ chế liên lạc khác nhau, mỗi cơ chế cónhững đặc tính riêng, và thích hợp trong một hoàn cảnh chuyên biệt

8. C ch đ ơ ế ườ ng ng ố

Khi làm việc với hệ điều hành Linux/UNIX, một pipe là một kênh liên lạc trực tiếp giữa hai tiến trình : dữ liệu xuất của tiến trình này được chuyển đến làm dữ liệu nhập cho tiến trình kia dưới dạng một dòng các byte

Trên một đường ống, dữ liệu chỉ có thể chuyển đi theo một chiều Hoặc từ Ađến B hoặc từ B về A Đổ dữ liệu vào đường ống tương đương với thao tác ghi (pipe

GVHD: Mai Văn Hà Page 6

Trang 7

write), trong khi lấy dữ liệu ra từ đường ống tương đương với thao tác đọc (piperead) Muốn chuyển dữ liệu theo cả hai chiều, bạn cần dùng hai đường ống.

Dữ liệu thường được chuyển đi theo luồng (stream) là một dãy các byte với cơchế FIFO (First In First Out) vào trước ra trước Tiến trình B luôn đọc được các byte

dữ liệu theo đúng trật tự mà tiến trình A đã ghi vào từ đầu bên kia đường ống Mộtpipe có kích thước giới hạn (thường là 4096 ký tự)

Linux hỗ trợ tập tin pipe, còn gọi là fifo (first-in-first-out), khác với tệp thường ở chỗ

dữ liệu của tệp là có tính chuyển tiếp ngay : một khi data đã đọc từ pipe thì không thểđọc lại lần nữa, đồng thời data đọc theo thứ tự mà data đã được ghi vào hệ thốngkhông cho phép làm chệch thứ tự đó Kernel cất data cũng cùng một cách thức nhưtệp thường chỉ khác là chỉ dùng các block đĩa kiểu cấp trực tiếp

Trang 8

Trong đó readPipe là một con trỏ trỏ vào một mảng nguyên chứa hai mô tả tệp

để đọc và ghi trong pipe Như đã đề cập, pipe là một loại tệp đặc biệt và chưa tồn tại trước khi sử dụng, nên kernel phải cấp cho pipe một inode để tạo ra pipe Kernel đồng thời cấp một đôi mô tả tệp cũng như các đầu vào trong file table: một fd để đọc data từ pipe và một fd để ghi data và pipe Với cách tổ chức trong file table, kernel đảm bảo sao cho giao tiếp đọc và ghi và các GHT khác trên pipe là nhất quán như đối với các tệp thường Vì vậy TT không thể nhận biết được là TT đang làm việc với tệp hay với pipe

o chỉ dành cho các process có quan hệ bố con với nhau

• Named pipe (FIFO) :

o Chức năng tương tự unnamed pipe nhưng có một số tính năng đáng chú ý :

i Được ghi nhận trên file system (directory entry, file permission)

ii Có thể dùng với các process không có quan hệ bố con

iii Có thể tạo ra từ dấu nhắc lệnh shell (bằng lệnh mknod)

o Lệnh hệ thống :

11. Các đ c tính ặ

Hệ điều hành cung cấp các lời gọi hệ thống read/write cho các tiến trình thực hiệnthao tác đọc/ghi dữ liệu trong pipe Hệ điều hành cũng chịu trách nhiệm đồng bộ hóaviệc truy xuất pipe trong các tình huống:

• Tiến trình đọc pipe sẽ bị khóa nếu pipe trống, nó sẽ phải đợi đến khi pipe có

dữ liệu để truy xuất

• Tiến trình ghi pipe sẽ bị khóa nếu pipe đầy, nó sẽ phải đợi đến khi pipe cóchỗ trống để chứa dữ liệu

12. Phân tích u nh ư ượ c đi m ể

Liên lạc bằng pipe là một cơ chế liên lạc một chiều (unidirectional), nghĩa là mộttiến trình kết nối với một pipe chỉ có thể thực hiện một trong hai thao tác đọc hoặcghi, nhưng không thể thực hiện cả hai Một số hệ điều hành cho phép thiết lập hai pipegiữa một cặp tiến trình để tạo liên lạc hai chiều Trong những hệ thống đó, có nguy cơxảy ra tình trạng tắc nghẽn (deadlock) : một pipe bị giới hạn về kích thước, do vậy nếu

cả hai pipe nối kết hai tiến trình đều đầy(hoặc đều trống) và cả hai tiến trình đều muốnghi (hay đọc) dữ liệu vào pipe(mỗi tiến trình ghi dữ liệu vào một pipe), chúng sẽ cùng

bị khóa và chờ lẫn nhau mãi mãi !

Cơ chế này cho phép truyền dữ liệu với cách thức không cấu trúc

GVHD: Mai Văn Hà Page 8

Trang 9

Ngoài ra, một giới hạn của hình thức liên lạc này là chỉ cho phép kết nối hai tiến trình có quan hệ cha-con, và trên cùng một máy tính.

Ch ươ ng 2 THI T K VÀ XÂY D NG CH Ế Ế Ự ƯƠ NG TRÌNH

2 H ướ ng gi i quy t đ tài : ả ế ề

- Do đường ống chỉ truyền một chiều nên ta tạo ra 2 đường ống (named pipe) :

• Pipe 1 : truyền dữ liệu từ tiến trình 1 sang tiến trình 2

• Pipe 2 : truyền dữ liệu từ tiến trình 2 trở lại tiến trình 1

- Sử dụng kí pháp đảo Ba Lan (hậu tố) dùng Stack để chuyển biểu thức nhập vềdạng máy có thể tính được

II. M c đích đ tài : ụ ề

Bài toán đặt ra nhằm tìm hiểu về qua trình giao tiếp giữa hai tiến trình bằng cơ chếđường ống, từ đó xây dựng chương trình mô phỏng Ngoài ra đề tài cũng giúp ôn tậpcác thuật toán xử lí biểu thức và nâng cao khả năng lập trình bằng ngôn ngữ C/C++

III. Phân tích các ch c năng ứ

Tạo ra hai tiến trình độc lập : một làm nhiệm vụ nhập xuất để giao tiếp với ngườidùng, một đảm nhiệm việc tính toán biểu thức do tiến trình kia gửi đến

Tạo đường ống để truyền dữ liệu giữa 2 tiến trình

Tính toán các biểu thức với các phép toán +, -, *, /, ^, …

GVHD: Mai Văn Hà Page 9

Trang 10

IV. Thu t toán ậ

1 Chuy n bi u th c d ng trung t thành d ng h u t đ tính ể ể ứ ạ ố ạ ậ ố ể

toán

- Chuyển biểu thức sang dạng hậu tố

- Convert chuỗi ngược lại, đọc từ đỉnh stack cho đến khi gặp phép tính thì thực hiện

cộng 2 số gần nhất ở stack lại rồi đẩy vào lại trong stack

GVHD: Mai Văn Hà Page 10

!stack.isEmpty() || peek(stack) >= exp[i]

Push(profix, pop(stack)) i++

Trang 11

2.Đ c ghi đ ọ ườ ng ng trong ti n trình ố ế

- Tiến trình cha đọc dữ liệu từ file hoặc nhập bằng tay

- Tạo 1 tiến trình con xử lý biểu thức được nhập vào

- Hiển thị kết quả

GVHD: Mai Văn Hà Page 11

Pipe(readPipe)

Pid = fork()

Trang 12

printf("Bieu thuc la: %s\n", expression);

int fa_rc = write(readPipe[1], &expression, sizeof(expression));

int sub_rc = read(readPipe[0], &exp_readed, sizeof(expression));

GVHD: Mai Văn Hà Page 12

Proccess B Pid = 0?

Proccess A

Trang 13

- Convert biểu thức sang dạng hậu tố

void convertExpression(char *exp, char *result, int *resultNumber, char

*stack,

int nLen) {

char pop_stack;

int j;

for (int i = 0; i < nLen; i++) {

printf("gia tri dau vong for tai %d: %c\n", i, exp[i]);

//neu la toan hang (so co 1 chu so)

if (exp[i] >= '0' && exp[i] <= '9') {

j = i;

int number = 0;

while (exp[j] >= '0' && exp[j] <= '9') {

number = number * 10 + exp[j] - '0';

j++;

}

push_char(result, 'x', top_Result);

top_Result = top_Result - 1;

push_Int_Int(resultNumber, number, top_Result);

GVHD: Mai Văn Hà Page 13

Trang 14

pop_stack = pop_char(stack, top_Stack);

push_char(result, pop_stack, top_Result);

pop_stack = pop_char(stack, top_Stack);

push_char(result, pop_stack, top_Result);

Trang 15

Ch ươ ng 3 TRI N KHAI VÀ ĐÁNH GIÁ K T QU Ể Ế Ả

I Môi tr ườ ng tri n khai ể

Chương trình được cài đặt bằng ngôn ngữ C++ và thực thi trên môi trường của hệđiều hành Linux Các file : settings.h, producer.cpp và consumer.cpp nằm trong thưmục Home của hệ điều hành Ubuntu

Lệnh để biên dịch và chạy chương trình :

Gcc –o mainPipeProcess mainPipeProcess.cpp

./ mainPipeProcess

GVHD: Mai Văn Hà Page 15

Trang 16

II K t qu các ch c năng c a ch ế ả ứ ủ ươ ng trình

Tính toán và in ra kết quả của biểu thức đã nhập vào ở tiến trình 1

Đã hiểu rõ được cơ chế pipe và vận dụng vào để xây dựng chương trình

Tìm hiểu được việc xử lí tiến trình của Linux

Phát hiện ra một số lỗi đặc biệt khi lập trình bằng ngôn ngữ C/C++ trên Linux và

có các thuật toán để xử lí

2 Những vấn đề tồn tại

Chương trình chạy trên giao diện console chưa được thân thiện với người dùng

Sự không đồng bộ giữa việc xuất nhập trên Linux gây khó khăn trong lập trình.Một số hàm không thuộc chuẩn ANSI gây ra lỗi trong biên dịch, phải thay thế bằng các hàm khác

3 Hướng phát triển

Xây dựng thêm nhiều công cụ để có thể thực hiện những phép toán phức tạp hơn

GVHD: Mai Văn Hà Page 16

Trang 17

Cải thiện giao diện và cách xuất nhập để tránh gặp lỗi.

Xây dựng nên một phần mềm mô phỏng máy tính tương tự phần mềm calculator trong Windows

PHẦN 2: LẬP TRÌNH MẠNG

TIÊU Đ : Ề So n trang web cá nhân c a nhóm bao g m: H và tên, Công ạ ủ ồ ọ

vi c và ch c v hi n nay, Đ a ch liên l c, Đi n tho i, Fax, Email, Mobile ệ ứ ụ ệ ị ỉ ạ ệ ạ Phone, Ngoài ra các nhóm có th b sung các thông tin khác ể ổ

CHƯƠNG 1: CƠ SỞ LÝ THUYẾT

1 Thiết kế website với JSP

1 HTML

HTML(HyperText Markup Language) còn được gọi là ngôn ngữ đánh dấu siêu văn bản, được tạo ra nhằm cấu trúc lên một trang web với các mẩu thông tin được trình bày trên World Wide Web

Một trang web được bắt đầu bằng thẻ mở <html> và kết thúc bằng thẻ đóng

</html> Trong đó bao gồm 2 nội dung chính là thông tin header được khai báo trong cặp thẻ <head></head>, nội dung trang web được khai báo trong cặp thẻ

<body></body>

Nội dung đặt trong cặp thẻ <head></head> bao gồm

 Tiêu đề trang web (title)

 Phần mô tả trang web (description)

 Tên tác giả(author)

 Từ khóa liên quan đến nội dung trang web

Nội dung được đặt trong cặp thẻ <body></body> được thể hiện trên trang web , bao gồm các cặp thẻ như là <p></p>, <div></div>, <table></table>,

<span></span>,<h2></h2>,<a></a>,<form></form>

2 CSS

GVHD: Mai Văn Hà Page 17

Trang 18

CSS (Cascading Style Sheet) Website được cấu tạo từ các thẻ html nhưng với những thẻ html thì mới chỉ thể hiện được bộ khung cua website Để căn chỉnh , trình bày cho đẹp mắt thì ta cần sử dụng ngôn ngữ CSS.Đây là ngôn ngữ được dùng rất nhiều trong lập trình web , thường đi cùng với ngôn ngữ html.

Chúng ta có 3 cách để chèn CSS vào trang HTML

 Chèn nội dung CSS vào cặp thẻ <style></style> trog phần <head></head> của trang web

 Chèn trực tiếp vào bên trong thẻ HTML

 Liên kết với một file css bên ngoài

Trong thực tế, cách thứ 3 được các nhà lập trình viên sử dụng nhiều nhất dotính tiện ích và linh hoạt

Cơ chế hoạt động của trang JSP được minh họa như hình sau:

+ Khi bạn yêu cầu một trang JSP, trình chủ sẽ đọc trang JSP từ đĩa cứng,

+ Bộ diễn dịch JSP sẽ diễn dịch mã lệnh Java chứa trong trang JSP thành mộtservlet

+ Sau đó trình chủ Java Web Server sẽ triệu gọi servlet trả kết xuất thuần HTML

về cho trình khách

Trình diễn dịch JSP cho phép ta sử dụng một số đối tượng đã khai báo trước.Điều này sẽ giúp ta viết mã lệnh trong trang jsp nhanh hơn servlet

GVHD: Mai Văn Hà Page 18

Ngày đăng: 06/10/2019, 00:04

TỪ KHÓA LIÊN QUAN

w