Thảo luận Bài 4
+105
TranQuyThanh (I11C)
HoangThanhChuong (I11C)
Truc_Phuong(I111C)
PhamDuyPhuong87(I11C)
TranVuThuyVan_(I11C)
nguyenhoangthinh (I11C)
NguyenTienPhong083 (I11C)
HuynhVanNhut (I11C)
nguyenthanhphuong(I11C)
NguyenVietThuan11
minhgiangbc
nguyenduc_gia.18(I11c)
chipphonui
quicly_I111c
nguyen huynh nhu (102C)
LeMInhTien(I11C)
nguyenquoctruong (I11C)
LeThiThuyDuong (I11C)
NguyenXuanTri28
HuynhPhuong (I11C)
tranleanhngoc88(i11c)
AnhDuong
HuynhThiThanhHien25(I11C)
thanhnam06511c
nguyenthingocloan (I11C)
nguyenvanlinheban (I11C)
vohongcong(I111C)
hoangquocduy.i11c
TranMinh (I11C)
NguyenThiThanhThuy(I11C)
lequocthinh (I11C)
TangHuynhThanhThanh I11C
NguyenCongVinh(102C)
NguyenDoTu (I11C)
HoangNgocQuynh(I11C)
NGUYENDINHNGHIA-I11C
PhamHuyHoang (I11C)
BuiHoangTuan.131.I11C
lengocthuthao89 (i11c)
NguyenNgocMyTien(I11C)
dongocthien (I11C)
ngocquynh2091(i11C)
chauchanduong (I11C)
NgoThiCamNhung47 (I11C)
TranCamThu(I11C)
nguyenthithutrang (I11C)
DuongTrungTinh(I11C)
TranTrungKien (I11C)
08H1010052
caotanthanh(i11c)
dangminhthinh2107
NguyenThiMinhHuong(I11C)
LeMinhDuc (I11C)
NguyenTrongHuy(I11C)
TranVanDucHieu I11c
nguyenminhlai.(I11C)
PhamAnhKhoa(I11C)
VOTHANHTRUNG(I11C)
HoangThiVe (I11C)
tranvanhai_21(I11c)
NguyenMinhNhut.(I11c)
Nguyenminhduc (I11C)
PhanThiThanhNguyen_72I11C
DuongKimLong(I111C)
buithithudung24 (i11c)
DoThiNgocNuong (I11C)
luuphuvinh1985
LaVanKhuong (I11C)
NguyThiGai (I11C)
nguyenvulinh_i11c
BuiHuuThanhLuan(I11C)
TranThanhHoang(I91C)
namzhou(I11C)
TruongThiThuyPhi(I11C)
VanTanVu(I11c)
lakhaiphat-i11c
phamdieptuan (I11C)
LeTanDat (I11C)
DoThuyTien16 (I11C)
nguyenthithuylinh (I11C)
Tranvancanh(I11C)
nguyenthaihiep (I11C)
Duongthithanhhuynh (I11C)
TranTrungTinh(I11C)
XuanThai_I11C
DaoQuangSieu (I11C)
hongthuanphong (I11C)
NguyenDongGiang
HoiHoangHongVu I11C
tranphanhieu36_i11c
NguyenHuuHung(I11C)
lamhuubinh(I91C)
TranHaDucHuy (I11c)
BuiVanHoc(I11C)
NgoDucTuan (I11C)
DaoVanHoang (I11C)
TranThiMyTien18(i11c)
VoMinhHoang (I11C)
ToThiThuyTrang (I11C)
NguyenThanhTam (I11C)
tranvantoan83(I11c)
NgoLeYen48(I11C)
tannamthanh(I11C)
TruongHanhPhuc (I11C)
Admin
109 posters
Trang 10 trong tổng số 13 trang
Trang 10 trong tổng số 13 trang • 1, 2, 3 ... 9, 10, 11, 12, 13
Re: Thảo luận Bài 4
Theo cách mình làm thì có hai cách để thực hiện điều này.vohongcong(I111C) đã viết:NguyenHuuHung(I11C) đã viết:Như chúng ta đã biết Remote Desktop là công cụ triển khai truy cập máy tính từ xa rất hữu ích do Microsoft cung cấp sẵn cho chúng ta trên Windows. Mặc định nếu ta chỉ bật chức năng Remote Desktop trên máy tính của chúng ta lên thì chúng ta chỉ có thể thực hiện Remote Desktop trong mạng nội bộ (LAN). Vậy vấn đề đặt ra là làm thế nào để Remote Desktop có thể thực hiện qua mạng WAN? Vấn đề đơn giản chỉ là chúng ta biết cách NAT port 3389 của máy để Modem/Router mở cổng cho bạn từ ngoài có thể truy cập vào máy bên trong. Vậy NAT cổng 3389 như thế nào?
Dưới đây mình trình bày cụ thể bằng hình ảnh để các bạn thấy được mình sẽ NAT cổng đó qua Router/Modem như thế nào nhé? Dưới đây là hình mình chụp từ Modem TP-Link TP=8840T do FPT khuyến mãi. Khuyến cáo với các bạn rằng mỗi Router/Modem có một truy cập và Menu nó để khác nhau, nhưng chung quy thì tất cả các Modem/Router đều có mục NAT để các bạn cấu hình. Rồi, bắt đầu nhé:
+ Bước 1: Đầu tiên ta phải xác định được máy cần truy cập, để xác định được máy cần truy cập chúng ta tiến hành đặt IP tĩnh cho máy cần truy cập.Ở đây tôi đặt IP máy tôi là 192.168.1.10 như trên hình dưới:
+ Bước 2: Sau khi đặt IP tĩnh cho máy để xác định máy cần Remote vào, ta tiến hành NAT port từ bên ngoài trỏ thẳng vào máy cần truy cập mà ta vừa đặt IP bên trên, chúng ta tiến hành đăng nhập vào Modem/Router rồi tìm mục NAT và cấu hình như hình dưới:
+ Bước 3: Sau khi cấu hình xong Modem/Router chúng ta tiến hành Save lại, Reboot lại Modem/Router để tiến hành cập nhật thao tác cho Modem/Router.
+ Bước 4: Chúng ta đăng kí một tài khoản tại địa chỉ cung cấp dịch vụ cập nhật IP động cho bạn như dyndns.org, no-ip.com, ... để download phần mềm cập nhật IP động và cài vào máy cần truy cập. Riêng một số Router cao cấp, bạn không cần sử dụng phần mềm này vì nó được tích hợp dịch vụ Dyndns sẵn trong Router, bạn chỉ cần đăng kí tài khoản trên dyndns hoặc no-ip, sau đó add host mà bạn đã đăng kí trên đó vào router là được. Điển hỉnh là các router của draytek.
+ Một lưu ý là khi chúng ta muốn thực hiện Remote vào nhiều máy trong mạng cùng Modem/Router thì chúng ta phải đổi port của các máy thành các port khác nhau. Để đổi port mặc định của remote desktop bạn truy cập Registry rồi tìm khóa theo đường dẫn sau:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TerminalServer\WinStations\RDP-Tcp\PortNumber
Sau khi đổi port chúng ta tiến hành NAT với các port đã đổi.
Cách truy cập các đường dẫn mà bạn đã đổi port là bạn thêm dấu 2 chấm vào đằng sau domain rồi thêm số hiệu port vào. Ví dụ đường dẫn của tôi nếu tôi đổi port Remote Desktop từ 3389 thành 3390 tôi sẽ gõ và address là:
huuhung.dyndns.org:3390
Bài viết còn gì thiếu sót mong thầy và các bạn góp ý!
Chúc vui!
Mình đồng ý với cách cấu hình và mở port như vậy là đúng.Nhưng minh chưa hiểu nếu như có nhiều máy tính trong mạng Lan thì sao,làm sao ta có thể bít chính xác được máy nào.Nếu với cách cấu hình trên thì chỉ remote được 1 máy tình.Có phải nếu ta mở 1 port và ta cấu hình nhiều máy tính.Sau Khi ta connect được với modem của hệ thống mạng vậy thì gõ trực tiep username or đia chỉ Ip của máy tính cần vào làm như vậy là đúng hay sai? Mình chưa áp dụng lần nào có gì các bạn góp ý thêm cho mình.
+ Một, nếu hệ thống bạn có thể đảm bảo thêm một máy khách, và điều này rất cần thiết cho người quản trị vì nếu có một máy Client dành cho người quản trị thì sẽ ít phải đụng vào server, vì toàn bộ những gì cần làm trên server ta có thể làm trên máy Client này với gói AdminPark dành cho client. Và giải quyết vấn đề bạn đặt ra bằng cách ta Remote thẳng vào cái máy Client của Admin đó, sau đó từ máy Client của Admin này ta có thể Remote đến các máy trong mạng LAN bằng Computer Name của từng máy cần remote. Computer Name của các máy thì nằm trong Active Directory của Server.
+ Cách thứ 2 như mình đã nói ở cuối bài trên là cực hơn, đó là bạn phải đổi port từng máy rồi NAT từng port đó ra ngoài. Cách này rất cực. Còn cách 1 sẽ đơn giản hơn rất nhiều.
Ai còn cách nào hay hơn thì reply bài lại nhé!
Chúc vui!
NguyenHuuHung(I11C)- Tổng số bài gửi : 16
Join date : 27/08/2011
Age : 39
Phân biệt điều phối chậm & điều phối nhanh
Điều phối chậm (Long-term scheduler (or job scheduler)) :
• Chọn process nào sẽ được đưa vào ready queue (từ New chuyển sang Ready)
• Kiểm soát Độ đa chương
• Do có nhiều thời gian (tới vài phút), loại scheduler này có điều kiện để lựa chọn kỹ càng nhằm phối hợp cân đối 2 loại tiến trình
. Hướng CPU: tính toán nhiều, ít I/O.
Ví dụ: Công ty có một chiếc ô tô (CPU), nhiều nhân viên cần đi công tác (nhiều tiến trình) phải sử dụng ô tô. Do đó, ô tô (CPU) phải bận (phục vụ) cho nhiều người (nhiều tiến trình).
. Hướng I/O: tính toán ít, nhiều I/O
Ví dụ: Công ty có một chiếc ô tô (CPU), các nhân viên trong công ty chỉ ngồi nghiên cứu (I/O), không sử dụng đến ô tô. Vậy quá lãng phí ô tô (CPU)
• Mục đích cân bằng tải
Điều phối nhanh (Short-term scheduler (or CPU scheduler)) :
• Còn gọi là Điều phối CPU.
• Chọn tiến trình từ Ready Queue để cấp CPU.
• Có tần suất công việc cao. Thường cứ 100 ms lại tốn 10 ms để xác định tiến trình kế tiếp, như vậy 10/(100+10)=9% thời gian CPU được dùng để điều phối công việc.
• Chọn process nào sẽ được đưa vào ready queue (từ New chuyển sang Ready)
• Kiểm soát Độ đa chương
• Do có nhiều thời gian (tới vài phút), loại scheduler này có điều kiện để lựa chọn kỹ càng nhằm phối hợp cân đối 2 loại tiến trình
. Hướng CPU: tính toán nhiều, ít I/O.
Ví dụ: Công ty có một chiếc ô tô (CPU), nhiều nhân viên cần đi công tác (nhiều tiến trình) phải sử dụng ô tô. Do đó, ô tô (CPU) phải bận (phục vụ) cho nhiều người (nhiều tiến trình).
. Hướng I/O: tính toán ít, nhiều I/O
Ví dụ: Công ty có một chiếc ô tô (CPU), các nhân viên trong công ty chỉ ngồi nghiên cứu (I/O), không sử dụng đến ô tô. Vậy quá lãng phí ô tô (CPU)
• Mục đích cân bằng tải
Điều phối nhanh (Short-term scheduler (or CPU scheduler)) :
• Còn gọi là Điều phối CPU.
• Chọn tiến trình từ Ready Queue để cấp CPU.
• Có tần suất công việc cao. Thường cứ 100 ms lại tốn 10 ms để xác định tiến trình kế tiếp, như vậy 10/(100+10)=9% thời gian CPU được dùng để điều phối công việc.
Huỳnh Thị Thúy Phượng_0854050100_I11C
HuynhPhuong (I11C)- Tổng số bài gửi : 39
Join date : 26/08/2011
Age : 34
Đến từ : Hóc Môn, Tp HCM
Ưu điểm visual 6.0
VB.NET giải quyết tất cả các vấn đề trên. Bộ công cụ này đã được thiết kế lại từ đầu để hỗ trợ phát triển dễ dàng ứng dụng Web và client/server trong môi trường phân tán và không kết nối. Hiệu suất và kỹ thuật mới đáng để bạn bỏ thời gian và công sức học công cụ mới này.
Khác biệt giữa VB 6.0 và VB.NET có thể phân thành hai nhóm như bảng 1:
• Thay đổi về kỹ thuật cải thiện hiệu suất ứng dụng.
• Thay đổi trong cú pháp và cách thức lập trình.
Thay đổi về kỹ thuật
trong VB.NET là yếu tố dẫn đến thay đổi về cú pháp và cách thức lập trình; xuất phát từ mục tiêu kỹ thuật mà Microsoft hướng đến trong phiên bản mới của VB.
Để VB thống nhất về mặt kỹ thuật với C++ và C#, Microsoft đã phát triển Common Language Runtime (CLR) thành nền tảng chung. VB không còn là công cụ sinh mã giả nữa, CLR làm cho nó trở thành ngôn ngữ hướng đối tượng thực sự và đặt nó ngang cấp với C++ và C#. Về mặt kỹ thuật, một ứng dụng được tạo bởi VB.NET không có gì khác biệt so với ứng dụng tạo bằng C++ hay C#.
Thay đổi cú pháp
Tuy những thay đổi về kỹ thuật trong VB.NET cực kỳ quan trọng (và rất được hoan nghênh) nhưng lại không dễ nhận biết như những thay đổi trong cú pháp và cách thức lập trình. Chúng ảnh hưởng nhiều đến khả năng chuyển đổi ứng dụng VB 6.0 sang VB.NET.
Trong bộ công cụ Studio.Net, Microsoft có cung cấp tiện ích Upgrade Wizard để chuyển đổi ứng dụng VB 6.0 sang VB.NET.
Thay đổi kiểu dữ liệu
VB.NET đã nói lời chia tay với các kiểu dữ liệu Variant, Short và Long. VB.NET kết hợp kiểu dữ liệu Object và Variant thành kiểu dữ liệu Object duy nhất. Variant là kiểu dữ liệu mặc định của VB 6.0 được gán cho tất cả các biến không được khai báo kiểu cụ thể. Kiểu Variant còn được gán cho các biến ngoài biến đầu tiên trên cùng một dòng khai báo. Ví dụ dòng khai báo sau:
Dim ipCount, ipNumber as Integer
Khai báo biến ipCount là Integer và ipNumber là Variant.
Kiểu dữ liệu Integer giờ đây là Short (16-bit) và kiểu dữ liệu Long là Integer (32-bit). Kiểu Long giờ đây là số 64-bit. Tiện ích Upgrade Wizard thực hiện rất tốt việc thay các kiểu dữ liệu này.
Tầm ảnh hưởng của biến
VB 6.0 cho phép tất cả các biến khai báo trong một thủ tục có tầm ảnh hưởng trong toàn thủ tục, nghĩa là một khi biến được khai báo thì nó có thể được dùng ở bất kỳ đâu trong thủ tục. Trong VB.NET, tầm ảnh hưởng của biến bị giới hạn trong khối mà nó được khai báo.
Ví dụ, trong VB.NET, ví dụ 1 sẽ sinh ra lỗi do biến đi ra ngoài tầm ảnh hưởng khi khối kết thúc (khối được xác định bắt đầu bằng các phát biểu Do, For hay If và kết thúc bằng các phát biểu Loop, Next hay End If). Khi khối For… Next kết thúc với phát biểu Next, biến J vượt khỏi tầm ảnh hưởng vì nó được khai báo bên trong khối này. Bạn có thể tránh điều này bằng cách khai báo tất cả các biến ở đầu thủ tục bất kể chúng được dùng ở đâu trong thủ tục.
Upgrade Wizard sẽ lập báo cáo bất kỳ khai báo nào mà tầm ảnh hưởng có khả năng bị vi phạm nhưng không tự động sửa.
Khác biệt giữa VB 6.0 và VB.NET có thể phân thành hai nhóm như bảng 1:
• Thay đổi về kỹ thuật cải thiện hiệu suất ứng dụng.
• Thay đổi trong cú pháp và cách thức lập trình.
Thay đổi về kỹ thuật
trong VB.NET là yếu tố dẫn đến thay đổi về cú pháp và cách thức lập trình; xuất phát từ mục tiêu kỹ thuật mà Microsoft hướng đến trong phiên bản mới của VB.
Để VB thống nhất về mặt kỹ thuật với C++ và C#, Microsoft đã phát triển Common Language Runtime (CLR) thành nền tảng chung. VB không còn là công cụ sinh mã giả nữa, CLR làm cho nó trở thành ngôn ngữ hướng đối tượng thực sự và đặt nó ngang cấp với C++ và C#. Về mặt kỹ thuật, một ứng dụng được tạo bởi VB.NET không có gì khác biệt so với ứng dụng tạo bằng C++ hay C#.
Thay đổi cú pháp
Tuy những thay đổi về kỹ thuật trong VB.NET cực kỳ quan trọng (và rất được hoan nghênh) nhưng lại không dễ nhận biết như những thay đổi trong cú pháp và cách thức lập trình. Chúng ảnh hưởng nhiều đến khả năng chuyển đổi ứng dụng VB 6.0 sang VB.NET.
Trong bộ công cụ Studio.Net, Microsoft có cung cấp tiện ích Upgrade Wizard để chuyển đổi ứng dụng VB 6.0 sang VB.NET.
Thay đổi kiểu dữ liệu
VB.NET đã nói lời chia tay với các kiểu dữ liệu Variant, Short và Long. VB.NET kết hợp kiểu dữ liệu Object và Variant thành kiểu dữ liệu Object duy nhất. Variant là kiểu dữ liệu mặc định của VB 6.0 được gán cho tất cả các biến không được khai báo kiểu cụ thể. Kiểu Variant còn được gán cho các biến ngoài biến đầu tiên trên cùng một dòng khai báo. Ví dụ dòng khai báo sau:
Dim ipCount, ipNumber as Integer
Khai báo biến ipCount là Integer và ipNumber là Variant.
Kiểu dữ liệu Integer giờ đây là Short (16-bit) và kiểu dữ liệu Long là Integer (32-bit). Kiểu Long giờ đây là số 64-bit. Tiện ích Upgrade Wizard thực hiện rất tốt việc thay các kiểu dữ liệu này.
Tầm ảnh hưởng của biến
VB 6.0 cho phép tất cả các biến khai báo trong một thủ tục có tầm ảnh hưởng trong toàn thủ tục, nghĩa là một khi biến được khai báo thì nó có thể được dùng ở bất kỳ đâu trong thủ tục. Trong VB.NET, tầm ảnh hưởng của biến bị giới hạn trong khối mà nó được khai báo.
Ví dụ, trong VB.NET, ví dụ 1 sẽ sinh ra lỗi do biến đi ra ngoài tầm ảnh hưởng khi khối kết thúc (khối được xác định bắt đầu bằng các phát biểu Do, For hay If và kết thúc bằng các phát biểu Loop, Next hay End If). Khi khối For… Next kết thúc với phát biểu Next, biến J vượt khỏi tầm ảnh hưởng vì nó được khai báo bên trong khối này. Bạn có thể tránh điều này bằng cách khai báo tất cả các biến ở đầu thủ tục bất kể chúng được dùng ở đâu trong thủ tục.
Upgrade Wizard sẽ lập báo cáo bất kỳ khai báo nào mà tầm ảnh hưởng có khả năng bị vi phạm nhưng không tự động sửa.
NguyenMinhNhut.(I11c)- Tổng số bài gửi : 8
Join date : 30/08/2011
TCP và UDP
Giao thức TCP và UDP là hai giao thức phổ biến nhất ở lớp transport của chồng giao thức TCP/IP. UDP dùng ít bytes hơn cho phần header và yêu cầu xử lý từ host ít hơn. TCP thì cần nhiều bytes hơn trong phần header và phải xử lý nhiều hơn nhưng cung cấp nhiều chức năng hữu ích hơn, như khả năng khôi phục lỗi.
[/tr]
Các header của TCP và UDP thì khác nhau ở kích thước (20 và 8 bytes), nguyên nhân chủ yếu là do TCP phải hỗ trợ nhiều chức năng hơn
Do đó : Ứng dụng của TCP,UDP vào các services có khác nhau,ví dụ :
+ TCP thường được ứng dụng vào : Email, File Sharing, Downloading ..
+ UDP : Voice streaming, Video streaming.
Một số ứng dụng thông thường của TCP, UDP:
TCP : FTP, Telnet, HTTP ..
UDP : TFTP, SNMP, ...
Chức năng | TCP | UDP |
Multiplexing dùng nhiều cổng | Có. Chỉ số cổng nhận dạng duy nhất một tiến trình trên máy gửi và máy nhận | - Giống như TCP |
Truyền dữ liệu tuần tự | Có. TCP tái sắp xếp bất kỳ dữ liệu nào nhận sai thứ tự. | Không. UDP không có khái niệm sắp xếp dữ liệu |
Truyền tin cậy | Có. TCP công nhận dữ liệu, gửi lại những phân đoạn bị mất. Các trường sequence và ACK trong TCP header. | Không hỗ trợ. |
Kiểm soát dòng | Có. TCP dùng các cửa sổ trượt để kiểm tra các cửa sổ của máy gửi. | Không |
Connection | Có. Quá trình bắt tay 3 lần thiết lập quá trình khởi động cổng | Phi kết nối |
Kiểu giao thức của IP | 6 | 17 | RFC | 793 | 768 |
Các header của TCP và UDP thì khác nhau ở kích thước (20 và 8 bytes), nguyên nhân chủ yếu là do TCP phải hỗ trợ nhiều chức năng hơn
Do đó : Ứng dụng của TCP,UDP vào các services có khác nhau,ví dụ :
+ TCP thường được ứng dụng vào : Email, File Sharing, Downloading ..
+ UDP : Voice streaming, Video streaming.
Một số ứng dụng thông thường của TCP, UDP:
TCP : FTP, Telnet, HTTP ..
UDP : TFTP, SNMP, ...
lakhaiphat-i11c- Tổng số bài gửi : 12
Join date : 25/08/2011
Phân biệt giao thức TCP với UDP
Giao thức TCP và UDP là hai giao thức phổ biến nhất ở lớp vận chuyển (transport layer) của chồng giao thức TCP/IP. UDP dùng ít byte hơn cho phần header và yêu cầu xử lý từ host ít hơn. TCP thì cần nhiều byte hơn trong phần header và phải xử lý nhiều hơn nhưng cung cấp nhiều chức năng hữu ích hơn, như khả năng khôi phục lỗi.
tóm lại là:
TCP : Hy sinh tốc độ để đảm bảo độ tin cậy của gói tin truyền đi.
UDP : Ưu tiên tốc độ không đảm bảo độ tin cậy của gói tin truyền đi
Do đó : ứng dụng của TCP,UDP vào các services có khác nhau,ví dụ :
+ TCP thường được ứng dụng vào : Email, File Sharing, Downloading...
+ UDP : Voice streaming, Video streaming.
Một số ứng dụng thông thường của TCP, UDP:
TCP : FTP, Telnet, HTTP ..
UDP : TFTP, SNMP, ...
So sánh tổng quan
Chức năng | TCP | UDP |
Multiplexing dùng nhiều cổng | Có. Chỉ số cổng nhận dạng duy nhất một tiến trình trên máy gửi và máy nhận | Có. Chỉ số cổng nhận dạng duy nhất một tiến trình trên máy gửi và máy nhận |
Truyền dữ liệu tuần tự | Có. TCP tái sắp xếp bất kỳ dữ liệu nào nhận sai thứ tự. | Không. UDP không có khái niệm sắp xếp dữ liệu |
Truyền tin cậy | Có. TCP công nhận dữ liệu, gửi lại những phân đoạn bị mất. Các trường sequence và ACK trong TCP header. | Không hỗ trợ. |
Kiểm soát dòng | Có. TCP dùng các cửa sổ trượt để kiểm tra các cửa sổ của máy gửi. | Không. |
Connection. | Có. Quá trình bắt tay 3 lần thiết lập quá trình khởi động cổng. | Phi kết nối |
Kiểu giao thức của IP | 6 | 17 |
Request For Comment (RFC) | 793 | 768 |
Ứng dụng của TCP va UDP thường thấy
+ TCP hỗ trợ nhiều giao thức ứng dụng phổ biến nhất trên Internet và các ứng dụng kết quả, trong đó có WWW
+ UDP cho đến thời điểm hiện tại điện thoại cố định có dây và điện thoại di động sử dụng giao thức UDP
NguyenXuanTri28- Tổng số bài gửi : 39
Join date : 05/09/2011
So Sánh VB6 với VB.net
Một số nhược điểm của Visual Basic
Tuy Visual Basic bền hơn do không cần phải khởi tạo mã nguồn trong Form khi thiết kế nhưng Visual Basic cũng có nhiều khuyết điểm :
♦ Không hỗ trợ thiết kế hướng đối tượng, nhất là khả năng thừa kế (inheritance).
♦ Giới hạn về việc chạy nhiều tiểu trình trong một ứng dụng, ví dụ ta không thể dùng.
♦ Visual Basic để viết một Service kiểu NT.
♦ Khả năng xử lý lỗi rất yếu, không thích hợp trong môi trường Multi- tier.
♦ Khó dùng chung với ngôn ngữ khác như C++. Không có User Interface thích hợp cho Internet.
Tuy Visual Basic bền hơn do không cần phải khởi tạo mã nguồn trong Form khi thiết kế nhưng Visual Basic cũng có nhiều khuyết điểm :
♦ Không hỗ trợ thiết kế hướng đối tượng, nhất là khả năng thừa kế (inheritance).
♦ Giới hạn về việc chạy nhiều tiểu trình trong một ứng dụng, ví dụ ta không thể dùng.
♦ Visual Basic để viết một Service kiểu NT.
♦ Khả năng xử lý lỗi rất yếu, không thích hợp trong môi trường Multi- tier.
♦ Khó dùng chung với ngôn ngữ khác như C++. Không có User Interface thích hợp cho Internet.
TranCamThu(I11C)- Tổng số bài gửi : 11
Join date : 02/09/2011
Re: Thảo luận Bài 4
Mình có thêm chút ý kiến:NguyenMinhNhut.(I11c) đã viết:VB.NET giải quyết tất cả các vấn đề trên. Bộ công cụ này đã được thiết kế lại từ đầu để hỗ trợ phát triển dễ dàng ứng dụng Web và client/server trong môi trường phân tán và không kết nối. Hiệu suất và kỹ thuật mới đáng để bạn bỏ thời gian và công sức học công cụ mới này.
Khác biệt giữa VB 6.0 và VB.NET có thể phân thành hai nhóm như bảng 1:
• Thay đổi về kỹ thuật cải thiện hiệu suất ứng dụng.
• Thay đổi trong cú pháp và cách thức lập trình.
Thay đổi về kỹ thuật
trong VB.NET là yếu tố dẫn đến thay đổi về cú pháp và cách thức lập trình; xuất phát từ mục tiêu kỹ thuật mà Microsoft hướng đến trong phiên bản mới của VB.
Để VB thống nhất về mặt kỹ thuật với C++ và C#, Microsoft đã phát triển Common Language Runtime (CLR) thành nền tảng chung. VB không còn là công cụ sinh mã giả nữa, CLR làm cho nó trở thành ngôn ngữ hướng đối tượng thực sự và đặt nó ngang cấp với C++ và C#. Về mặt kỹ thuật, một ứng dụng được tạo bởi VB.NET không có gì khác biệt so với ứng dụng tạo bằng C++ hay C#.
Thay đổi cú pháp
Tuy những thay đổi về kỹ thuật trong VB.NET cực kỳ quan trọng (và rất được hoan nghênh) nhưng lại không dễ nhận biết như những thay đổi trong cú pháp và cách thức lập trình. Chúng ảnh hưởng nhiều đến khả năng chuyển đổi ứng dụng VB 6.0 sang VB.NET.
Trong bộ công cụ Studio.Net, Microsoft có cung cấp tiện ích Upgrade Wizard để chuyển đổi ứng dụng VB 6.0 sang VB.NET.
Thay đổi kiểu dữ liệu
VB.NET đã nói lời chia tay với các kiểu dữ liệu Variant, Short và Long. VB.NET kết hợp kiểu dữ liệu Object và Variant thành kiểu dữ liệu Object duy nhất. Variant là kiểu dữ liệu mặc định của VB 6.0 được gán cho tất cả các biến không được khai báo kiểu cụ thể. Kiểu Variant còn được gán cho các biến ngoài biến đầu tiên trên cùng một dòng khai báo. Ví dụ dòng khai báo sau:
Dim ipCount, ipNumber as Integer
Khai báo biến ipCount là Integer và ipNumber là Variant.
Kiểu dữ liệu Integer giờ đây là Short (16-bit) và kiểu dữ liệu Long là Integer (32-bit). Kiểu Long giờ đây là số 64-bit. Tiện ích Upgrade Wizard thực hiện rất tốt việc thay các kiểu dữ liệu này.
Tầm ảnh hưởng của biến
VB 6.0 cho phép tất cả các biến khai báo trong một thủ tục có tầm ảnh hưởng trong toàn thủ tục, nghĩa là một khi biến được khai báo thì nó có thể được dùng ở bất kỳ đâu trong thủ tục. Trong VB.NET, tầm ảnh hưởng của biến bị giới hạn trong khối mà nó được khai báo.
Ví dụ, trong VB.NET, ví dụ 1 sẽ sinh ra lỗi do biến đi ra ngoài tầm ảnh hưởng khi khối kết thúc (khối được xác định bắt đầu bằng các phát biểu Do, For hay If và kết thúc bằng các phát biểu Loop, Next hay End If). Khi khối For… Next kết thúc với phát biểu Next, biến J vượt khỏi tầm ảnh hưởng vì nó được khai báo bên trong khối này. Bạn có thể tránh điều này bằng cách khai báo tất cả các biến ở đầu thủ tục bất kể chúng được dùng ở đâu trong thủ tục.
Upgrade Wizard sẽ lập báo cáo bất kỳ khai báo nào mà tầm ảnh hưởng có khả năng bị vi phạm nhưng không tự động sửa.
VB.Net có nhiều điểm khác biệt hơn với VB6 . Điểm khác biệt lớn nhất là lúc chương trình biên dịch. VD: Code VB6 sẽ được chương trình biên dịch thẳng sang mã máy vì thế nếu có đem chương trình VB6 (*.exe) đến máy tính cùng hệ điều hành thì có thể chạy được ngay. Còn VB.Net thì biên dịch theo hai công đoạn. Công đoạn 1 biên dịch Code VB.Net sang dạng mã .Net, Công đoạn 2 biên dịch mã .Net này sang mã máy và chạy trên máy tính. Vì thế tại sao máy tính cùng hệ điều hành nhưng không cài .Net thì sẽ không chạy được, mặc dù nó đã được dịch sang file *.exe
DuongTrungTinh(I11C)- Tổng số bài gửi : 31
Join date : 26/08/2011
Re: Thảo luận Bài 4
Đọc bài viết của bạn mình thấy các phần mềm chát hiện nay cũng có nhiều nhược điểm quá. Nhưng bạn phải công nhận một điều rằng YM vẫn được đông đảo người dùng sử dụng, và một số phần mềm chat khác như Skype, zingchat... cũng đông không kém.Mỗi phần mềm có ưu và nhược điểm khác nhau vd : Skype nhận và gửi file rất nhanh, webcam khá rõ thì YM lại không làm được điều đó, nhưng YM lại dễ dùng , thân thiện và phổ biến. Chúng ta học VB 6 hay Visual C .NET ... thì cũng chỉ để hiểu rõ hơn cơ chế làm việc của những ứng dụng này thôi, chứ chúng ta không học để viết ra ứng dụng chat, vì có viết cũng không ai dùng (:d cái này giống thầy nói) cũng giồng như chúng ta học môn HĐH thực chất cũng để hiểu rõ hơn về cơ chế hoạt động của nó hơn là để viết ra một HĐH mới. Vì dẫu sao khi ta xài thứ gì ta biết rổ nó tốt hay xấu để mà sử dụng vẫn tốt hơn đúng không các bạn.BuiHuuThanhLuan(I11C) đã viết:Trên mạng hiện nay có nhiều phần mền có sẵn với nhiều tính năng, nhưng tại sao chúng ta vẫn học về giao thức TCP/UDP và viết các phần mền, chúng ta có thể viết phần mền tốt hơn họ không.
Hiện nay, các phần mền giao tiếp giữa các máy nhằm đáp ứng nhu cầu liên lạc trao đổi thông tin giữa các máy tính rất phổ biến, thậm chí rất nhiều phần mền được sử dụng rộng rãi. Các phần mền miễn phí như: Yahoo Messenger, Skype, Pidgin, Zingchat … Với các tính năng đầy đủ,giao diện bắt mắt, thân thiện, hỗ trợ kết nối internet.
Nếu chúng ta đi làm cho một Công ty, Tổ chức mục đích trao đổi trong nội bộ công ty đòi hỏi phải có độ tin cậy, bảo mật, nhanh và chính xác. Nhưng sau đây là một số nhược điểm mà các phần mền có sẵn, gây ảnh hưởng tới các mục đích trên:
- Các phần mền chat có sẵn, tính bảo mật không cao, dễ bị ăn cắp thông tin mật khẩu, lây nhiễm các loại virut nguy hiểm.
Ví dụ: Yahoo là ví dụ điển hình, nhiều loại virut nguy hiểm đã lây lan qua máy tính bởi các tin nhắn, lấy cắp mật khẩu …
- Do các phần mền phải thông qua server riêng của nó nên tốc độ truy cập chậm, thường bị mất thông tin, người sử dụng phải phụ thuộc rất nhiều vào các server này.
Ví dụ: Người dùng yahoo rất hay gặp các trường hợp đăng nhập không được, hay không gửi được chính xác thông tin mình cần gửi …
- Có nhiều tính năng không cần thiết, tốn bộ nhớ máy và phần lớn đều là các phần mền miễn phí nên có rất nhiều trang quảng cáo, banner quảng cáo khi sử dụng phần mền điều này rất khó chịu.
- Các phần mền này, chúng ta chỉ được sử dụng chương trình còn không được cung cấp mã nguồn, do đó khi cần thêm, sửa hay xóa các chức năng thì không thể làm được.
- Do có giao diện và nhiều tính năng có thể phải tốn thời gian và chi phí để bỗi dưỡng, mở các lớp hướng dẫn sử dụng.
Trên đây là một số nhược điểm của phần mền giao tiếp được cung cấp sẵn. Qua đó có thể thấy nhiều ưu điểm nếu chung ta dùng một phần mền được viết dưới ngôn ngữ Visual Basic C 6.0. Do đó chúng ta cần phải học thêm để biết và viết được một ứng dụng đơn giản với chức năng vừa đủ để phục vụ công tác trao đổi thông tin trong một tổ chức, công ty … và hiểu biết thêm về nó cũng là một việc rất hay và không lãng phí một tí nào.
Thân!
DuongTrungTinh(I11C)- Tổng số bài gửi : 31
Join date : 26/08/2011
Re: Thảo luận Bài 4
PCB là một cấu trúc dữ liệu được hệ điều hành duy trì cho mỗi tiến trình dùng để chứa các thông tin cần thiết về tiến trình đó. PCB chứa "Bản sao công việc của tiến trình".
Nó lưu lại trạng thái của tiến trình tại thời điểm đang xét . Trạng thái này bao gồm (các địa chỉ liên kết của tiến trình & dữ liệu, số hiệu tiến trình, bộ đếm lệnh, nội dung các thanh ghi, giới hại bộ nhớ của tiến trình, danh sách các file đang mở, các thông tin về thời gian thống kê tiến trình hiện tại).
Vd: Dùng chung 1 bảng, bạn thứ 2 lên bảng sửa bài thì phải xóa bài của bạn thứ 1 đã viết>> Phải chup lai để nội dung không bị mất khi người khác xóa.khi cần thì sử dụng
LeThiThuyDuong (I11C)- Tổng số bài gửi : 16
Join date : 31/08/2011
SO SANH VOI VB6.0 VA VB.NET
Khác biệt giữa VB 6.0 và VB.NET có thể phân thành hai nhóm như bảng 1:
• Thay đổi về kỹ thuật cải thiện hiệu suất ứng dụng.
• Thay đổi trong cú pháp và cách thức lập trình.
Thay đổi về kỹ thuật
trong VB.NET là yếu tố dẫn đến thay đổi về cú pháp và cách thức lập trình; xuất phát từ mục tiêu kỹ thuật mà Microsoft hướng đến trong phiên bản mới của VB.
Để VB thống nhất về mặt kỹ thuật với C++ và C#, Microsoft đã phát triển Common Language Runtime (CLR) thành nền tảng chung. VB không còn là công cụ sinh mã giả nữa, CLR làm cho nó trở thành ngôn ngữ hướng đối tượng thực sự và đặt nó ngang cấp với C++ và C#. Về mặt kỹ thuật, một ứng dụng được tạo bởi VB.NET không có gì khác biệt so với ứng dụng tạo bằng C++ hay C#.
Thay đổi cú pháp
Tuy những thay đổi về kỹ thuật trong VB.NET cực kỳ quan trọng (và rất được hoan nghênh) nhưng lại không dễ nhận biết như những thay đổi trong cú pháp và cách thức lập trình. Chúng ảnh hưởng nhiều đến khả năng chuyển đổi ứng dụng VB 6.0 sang VB.NET.
Trong bộ công cụ Studio.Net, Microsoft có cung cấp tiện ích Upgrade Wizard để chuyển đổi ứng dụng VB 6.0 sang VB.NET.
Thay đổi kiểu dữ liệu
VB.NET đã nói lời chia tay với các kiểu dữ liệu Variant, Short và Long. VB.NET kết hợp kiểu dữ liệu Object và Variant thành kiểu dữ liệu Object duy nhất. Variant là kiểu dữ liệu mặc định của VB 6.0 được gán cho tất cả các biến không được khai báo kiểu cụ thể. Kiểu Variant còn được gán cho các biến ngoài biến đầu tiên trên cùng một dòng khai báo. Ví dụ dòng khai báo sau:
Dim ipCount, ipNumber as Integer
Khai báo biến ipCount là Integer và ipNumber là Variant.
Kiểu dữ liệu Integer giờ đây là Short (16-bit) và kiểu dữ liệu Long là Integer (32-bit). Kiểu Long giờ đây là số 64-bit. Tiện ích Upgrade Wizard thực hiện rất tốt việc thay các kiểu dữ liệu này.
• Thay đổi về kỹ thuật cải thiện hiệu suất ứng dụng.
• Thay đổi trong cú pháp và cách thức lập trình.
Thay đổi về kỹ thuật
trong VB.NET là yếu tố dẫn đến thay đổi về cú pháp và cách thức lập trình; xuất phát từ mục tiêu kỹ thuật mà Microsoft hướng đến trong phiên bản mới của VB.
Để VB thống nhất về mặt kỹ thuật với C++ và C#, Microsoft đã phát triển Common Language Runtime (CLR) thành nền tảng chung. VB không còn là công cụ sinh mã giả nữa, CLR làm cho nó trở thành ngôn ngữ hướng đối tượng thực sự và đặt nó ngang cấp với C++ và C#. Về mặt kỹ thuật, một ứng dụng được tạo bởi VB.NET không có gì khác biệt so với ứng dụng tạo bằng C++ hay C#.
Thay đổi cú pháp
Tuy những thay đổi về kỹ thuật trong VB.NET cực kỳ quan trọng (và rất được hoan nghênh) nhưng lại không dễ nhận biết như những thay đổi trong cú pháp và cách thức lập trình. Chúng ảnh hưởng nhiều đến khả năng chuyển đổi ứng dụng VB 6.0 sang VB.NET.
Trong bộ công cụ Studio.Net, Microsoft có cung cấp tiện ích Upgrade Wizard để chuyển đổi ứng dụng VB 6.0 sang VB.NET.
Thay đổi kiểu dữ liệu
VB.NET đã nói lời chia tay với các kiểu dữ liệu Variant, Short và Long. VB.NET kết hợp kiểu dữ liệu Object và Variant thành kiểu dữ liệu Object duy nhất. Variant là kiểu dữ liệu mặc định của VB 6.0 được gán cho tất cả các biến không được khai báo kiểu cụ thể. Kiểu Variant còn được gán cho các biến ngoài biến đầu tiên trên cùng một dòng khai báo. Ví dụ dòng khai báo sau:
Dim ipCount, ipNumber as Integer
Khai báo biến ipCount là Integer và ipNumber là Variant.
Kiểu dữ liệu Integer giờ đây là Short (16-bit) và kiểu dữ liệu Long là Integer (32-bit). Kiểu Long giờ đây là số 64-bit. Tiện ích Upgrade Wizard thực hiện rất tốt việc thay các kiểu dữ liệu này.
LeThiThuyDuong (I11C)- Tổng số bài gửi : 16
Join date : 31/08/2011
PHAN BIET GIAO THUC TCP VA UDP
Giao thức TCP và UDP là hai giao thức phổ biến nhất ở lớp vận chuyển (transport layer) của chồng giao thức TCP/IP. UDP dùng ít byte hơn cho phần header và yêu cầu xử lý từ host ít hơn. TCP thì cần nhiều byte hơn trong phần header và phải xử lý nhiều hơn nhưng cung cấp nhiều chức năng hữu ích hơn, như khả năng khôi phục lỗi.
tóm lại là:
TCP : Hy sinh tốc độ để đảm bảo độ tin cậy của gói tin truyền đi.
UDP : Ưu tiên tốc độ không đảm bảo độ tin cậy của gói tin truyền đi
Do đó : ứng dụng của TCP,UDP vào các services có khác nhau,ví dụ :
+ TCP thường được ứng dụng vào : Email, File Sharing, Downloading...
+ UDP : Voice streaming, Video streaming.
Một số ứng dụng thông thường của TCP, UDP:
TCP : FTP, Telnet, HTTP ..
UDP : TFTP, SNMP, ...
Các header của TCP và UDP thì khác nhau ở kích thước (20 và 8 bytes), nguyên nhân chủ yếu là do TCP phải hỗ trợ nhiều chức năng hơn.
Ứng dụng của TCP va UDP thường thấy
+ TCP hỗ trợ nhiều giao thức ứng dụng phổ biến nhất trên Internet và các ứng dụng kết quả, trong đó có WWW
+ UDP cho đến thời điểm hiện tại điện thoại cố định có dây và điện thoại di động sử dụng giao thức UDP
tóm lại là:
TCP : Hy sinh tốc độ để đảm bảo độ tin cậy của gói tin truyền đi.
UDP : Ưu tiên tốc độ không đảm bảo độ tin cậy của gói tin truyền đi
Do đó : ứng dụng của TCP,UDP vào các services có khác nhau,ví dụ :
+ TCP thường được ứng dụng vào : Email, File Sharing, Downloading...
+ UDP : Voice streaming, Video streaming.
Một số ứng dụng thông thường của TCP, UDP:
TCP : FTP, Telnet, HTTP ..
UDP : TFTP, SNMP, ...
Các header của TCP và UDP thì khác nhau ở kích thước (20 và 8 bytes), nguyên nhân chủ yếu là do TCP phải hỗ trợ nhiều chức năng hơn.
Ứng dụng của TCP va UDP thường thấy
+ TCP hỗ trợ nhiều giao thức ứng dụng phổ biến nhất trên Internet và các ứng dụng kết quả, trong đó có WWW
+ UDP cho đến thời điểm hiện tại điện thoại cố định có dây và điện thoại di động sử dụng giao thức UDP
LeThiThuyDuong (I11C)- Tổng số bài gửi : 16
Join date : 31/08/2011
PHAN BIET DIEU PHOI NHANH & DIEU PHOI CHAM
Điều phối chậm :
• Chọn process nào sẽ được đưa vào ready queue (từ New chuyển sang Ready)
• Kiểm soát Độ đa chương
• Do có nhiều thời gian (tới vài phút), loại scheduler này có điều kiện để lựa chọn kỹ càng nhằm phối hợp cân đối 2 loại tiến trình
. Hướng CPU: tính toán nhiều, ít I/O.
Ví dụ: Công ty có một chiếc ô tô (CPU), nhiều nhân viên cần đi công tác (nhiều tiến trình) phải sử dụng ô tô. Do đó, ô tô (CPU) phải bận (phục vụ) cho nhiều người (nhiều tiến trình).
. Hướng I/O: tính toán ít, nhiều I/O
Ví dụ: Công ty có một chiếc ô tô (CPU), các nhân viên trong công ty chỉ ngồi nghiên cứu (I/O), không sử dụng đến ô tô. Vậy quá lãng phí ô tô (CPU)
• Mục đích cân bằng tải
Điều phối nhanh :
• Còn gọi là Điều phối CPU.
• Chọn tiến trình từ Ready Queue để cấp CPU.
• Có tần suất công việc cao.
• Chọn process nào sẽ được đưa vào ready queue (từ New chuyển sang Ready)
• Kiểm soát Độ đa chương
• Do có nhiều thời gian (tới vài phút), loại scheduler này có điều kiện để lựa chọn kỹ càng nhằm phối hợp cân đối 2 loại tiến trình
. Hướng CPU: tính toán nhiều, ít I/O.
Ví dụ: Công ty có một chiếc ô tô (CPU), nhiều nhân viên cần đi công tác (nhiều tiến trình) phải sử dụng ô tô. Do đó, ô tô (CPU) phải bận (phục vụ) cho nhiều người (nhiều tiến trình).
. Hướng I/O: tính toán ít, nhiều I/O
Ví dụ: Công ty có một chiếc ô tô (CPU), các nhân viên trong công ty chỉ ngồi nghiên cứu (I/O), không sử dụng đến ô tô. Vậy quá lãng phí ô tô (CPU)
• Mục đích cân bằng tải
Điều phối nhanh :
• Còn gọi là Điều phối CPU.
• Chọn tiến trình từ Ready Queue để cấp CPU.
• Có tần suất công việc cao.
LeThiThuyDuong (I11C)- Tổng số bài gửi : 16
Join date : 31/08/2011
Visual Basic.net va VB6
-Visual Basic.NET là một công cụ lập trình hỗ trợ ngôn ngữ lập trình Visual Basic.NET trong bộ công cụ lập trình Microsoft Visual Studio. Trong Microsoft Visual Studio 2005, bạn có thể kết hợp các project (dự án) viết bằng các ngôn ngữ khác như C#, J#, ... với VB2005.
VB2005 được chạy trên nền .NET Framework 2.0, khi đóng gói chương trình cũng cần bộ Framework này để chạy chương trình.
-Visual Basic 6.0 (VB) là một ngôn ngữ lập trình hướng đối tượng, trực quan trên môi trường Windows. VB cung cấp một bộ công cụ hoàn chỉnh đểđơn giản hóa việc triển khai lập trình ứng dụng, có thể nói đây là cách nhanh và tốt nhất để học và lập trình ứng dụng trên Microsoft Windows.
*VB 6.0, VB2005 cũng là ngôn ngữ lập trình huớng đối tuợng.
*Các phát triển của VB2005 so với VB6:
1/ Tự động hoàn thành cấu trúc
VB2005 có khả năng tự hoàn thành các cấu trúc như vòng lặp, rẽ nhánh. Ví dụ, bạn nhập :
For i = 0 to 10
Và nhấn Enter, VB2005 tự động trả về :
For i = 0 to 10
Next
Và đặt vị trí con trỏ ở giữa.
2/ Gọi gián tiếp API và chuyển đổi kiểu dữ liệu
- Trong VB2005, việc gọi API có thể nói là rất ít, vì VB2005 có nhiều hàm, thủ tục gọi gián tiếp. Ví dụ : Trong VB6, bạn cần gọi API ShellExecute để Windows chạy một tập tin bằng ứng dụng đúng thì với VB2005 thì chỉ cần gọi Process.Start - Ngoài ra, kiểu dữ liệu trong VB2005 có thay đổi đôi chút, ví dụ kiểu Integer của VB2005 tương ứng với Long trong VB6.0, còn kiểu Long của VB2005 là kiểu Int64 có tới tối đa là hơn 9.000.000.000.000, vì vậy khả năng Overflow là rất thấp.
3/ Tự động thụt vào đầu dòng
Đây là chức năng rất hay của VB2005, nó giúp code gọn, dễ xem và bẫy lỗi.
4/ Debug lỗi thông qua cửa sổ Watch
Đây là chức năng giúp nguời dùng biết giá trị của biến mà không cần phải nhập ?<tên biến> và nhấn Enter, rất thích hợp với các code dài.
VB2005 được chạy trên nền .NET Framework 2.0, khi đóng gói chương trình cũng cần bộ Framework này để chạy chương trình.
-Visual Basic 6.0 (VB) là một ngôn ngữ lập trình hướng đối tượng, trực quan trên môi trường Windows. VB cung cấp một bộ công cụ hoàn chỉnh đểđơn giản hóa việc triển khai lập trình ứng dụng, có thể nói đây là cách nhanh và tốt nhất để học và lập trình ứng dụng trên Microsoft Windows.
*VB 6.0, VB2005 cũng là ngôn ngữ lập trình huớng đối tuợng.
*Các phát triển của VB2005 so với VB6:
1/ Tự động hoàn thành cấu trúc
VB2005 có khả năng tự hoàn thành các cấu trúc như vòng lặp, rẽ nhánh. Ví dụ, bạn nhập :
For i = 0 to 10
Và nhấn Enter, VB2005 tự động trả về :
For i = 0 to 10
Next
Và đặt vị trí con trỏ ở giữa.
2/ Gọi gián tiếp API và chuyển đổi kiểu dữ liệu
- Trong VB2005, việc gọi API có thể nói là rất ít, vì VB2005 có nhiều hàm, thủ tục gọi gián tiếp. Ví dụ : Trong VB6, bạn cần gọi API ShellExecute để Windows chạy một tập tin bằng ứng dụng đúng thì với VB2005 thì chỉ cần gọi Process.Start - Ngoài ra, kiểu dữ liệu trong VB2005 có thay đổi đôi chút, ví dụ kiểu Integer của VB2005 tương ứng với Long trong VB6.0, còn kiểu Long của VB2005 là kiểu Int64 có tới tối đa là hơn 9.000.000.000.000, vì vậy khả năng Overflow là rất thấp.
3/ Tự động thụt vào đầu dòng
Đây là chức năng rất hay của VB2005, nó giúp code gọn, dễ xem và bẫy lỗi.
4/ Debug lỗi thông qua cửa sổ Watch
Đây là chức năng giúp nguời dùng biết giá trị của biến mà không cần phải nhập ?<tên biến> và nhấn Enter, rất thích hợp với các code dài.
lamhuubinh(I91C)- Tổng số bài gửi : 34
Join date : 28/08/2011
Bài Toán Xuất -Tiêu Thụ
Bài toán sản xuất- tiêu thụ:
-Tiến trình sản xuất tạo ra dòng thông tin để tiến trình tiêu thụ sử dụng.
Phát biểu bài toán:
Giả sử có bộ nhớ đệm(buffer) bao gồm nhiều khoang(items) đựơc tiến trình Producer lần lựoc đưa các sản phẩm S1, S2,.....vào. vd: phòng học
Tiến trình Consumer lần lượt lấy sản phẩm ra theo đúng thứ tự.(Sản xuất đến đâu tiêu thụ đến đó)
Công việc của Producer phải đồng bộ với Consumer: Không được đưa sản phẩm vào khi Buffer đầy, không đựoc lấy ra khi chưa có.
Vấn đề Sản xuất- Tiêu Thụ và Giải pháp dùng Bộ nhớ đệm chung có giới hạn thực thi bằng mãng xoay vòng.
Phát biểu bài toán Sản xuất - Tiêu thụ để minh họa một hệ thống có nhiều tiến trình cộng tác,song song, đồng hành.
ví dụ: Gồm nhiều tiến trình chia sẽ tài nguyên dùng chung:
Mỗi học sinh trong lớp là 1 tiến trình;
Những người lên bảng ghi là nhà Sản xuất.
Những người chuyên lấy máy ảnh chụp lại nội dung trên bảng là nhà Tiêu thụ
-Tiến trình sản xuất tạo ra dòng thông tin để tiến trình tiêu thụ sử dụng.
Phát biểu bài toán:
Giả sử có bộ nhớ đệm(buffer) bao gồm nhiều khoang(items) đựơc tiến trình Producer lần lựoc đưa các sản phẩm S1, S2,.....vào. vd: phòng học
Tiến trình Consumer lần lượt lấy sản phẩm ra theo đúng thứ tự.(Sản xuất đến đâu tiêu thụ đến đó)
Công việc của Producer phải đồng bộ với Consumer: Không được đưa sản phẩm vào khi Buffer đầy, không đựoc lấy ra khi chưa có.
Vấn đề Sản xuất- Tiêu Thụ và Giải pháp dùng Bộ nhớ đệm chung có giới hạn thực thi bằng mãng xoay vòng.
Phát biểu bài toán Sản xuất - Tiêu thụ để minh họa một hệ thống có nhiều tiến trình cộng tác,song song, đồng hành.
ví dụ: Gồm nhiều tiến trình chia sẽ tài nguyên dùng chung:
Mỗi học sinh trong lớp là 1 tiến trình;
Những người lên bảng ghi là nhà Sản xuất.
Những người chuyên lấy máy ảnh chụp lại nội dung trên bảng là nhà Tiêu thụ
lamhuubinh(I91C)- Tổng số bài gửi : 34
Join date : 28/08/2011
ví dụ kiểm soát tiến trình trong công việc quản lý hệ điều hành
Trong một lớp học có 2 sinh viên A,B cùng lên bảng giải bài tập là tiến trình người dùng .Thầy là tiến trình hệ thống sẽ ghi lại tất cả các bài tập của A và B.Như vậy thầy sẽ kiểm soát và quản lý được tất cả các bài tập của A và B
Giao Thức TCP/IP Và Giao Thức UDP
- Bộ giao thức TCP/IP, ngắn gọn là TCP/IP (tiếng Anh: Internet protocol suite hoặc IP suite hoặc TCP/IP protocol suite - bộ giao thức liên mạng), là một bộ các giao thức truyền thông cài đặt chồng giao thức mà Internet và hầu hết các mạng máy tính thương mại đang chạy trên đó. Bộ giao thức này được đặt tên theo hai giao thức chính của nó là TCP (Giao thức Điều khiển Giao vận) và IP (Giao thức Liên mạng). Chúng cũng là hai giao thức đầu tiên được định nghĩa.
- UDP (User Datagram Protocol) là một trong những giao thức cốt lõi của giao thức TCP/IP. Dùng UDP, chương trình trên mạng máy tính có thể gởi những dữ liệu ngắn được gọi là datagram tới máy khác. UDP không cung cấp sự tin cậy và thứ tự truyền nhận mà TCP làm; các gói dữ liệu có thể đến không đúng thứ tự hoặc bị mất mà không có thông báo. Tuy nhiên UDP nhanh và hiệu quả hơn đối với các mục tiêu như kích thước nhỏ và yêu cầu khắt khe về thời gian. Do bản chất không trạng thái của nó nên nó hữu dụng đối với việc trả lời các truy vấn nhỏ với số lượng lớn người yêu cầu.
Những ứng dụng phổ biến sử dụng UDP như DNS (Domain Name System), ứng dụng streaming media, Voice over IP, Trivial File Transfer Protocol (TFTP), và game trực tuyến.
So Sánh:
TCP:
- dùng cho mạng WAN
- ko cho phép mất gói tin
- đảm bảo việc truyền dữ liệu
UDP:
- dùng cho mạng LAN
- cho phép mất dữ liệu
- ko đảm bảo.
- UDP (User Datagram Protocol) là một trong những giao thức cốt lõi của giao thức TCP/IP. Dùng UDP, chương trình trên mạng máy tính có thể gởi những dữ liệu ngắn được gọi là datagram tới máy khác. UDP không cung cấp sự tin cậy và thứ tự truyền nhận mà TCP làm; các gói dữ liệu có thể đến không đúng thứ tự hoặc bị mất mà không có thông báo. Tuy nhiên UDP nhanh và hiệu quả hơn đối với các mục tiêu như kích thước nhỏ và yêu cầu khắt khe về thời gian. Do bản chất không trạng thái của nó nên nó hữu dụng đối với việc trả lời các truy vấn nhỏ với số lượng lớn người yêu cầu.
Những ứng dụng phổ biến sử dụng UDP như DNS (Domain Name System), ứng dụng streaming media, Voice over IP, Trivial File Transfer Protocol (TFTP), và game trực tuyến.
So Sánh:
TCP:
- dùng cho mạng WAN
- ko cho phép mất gói tin
- đảm bảo việc truyền dữ liệu
UDP:
- dùng cho mạng LAN
- cho phép mất dữ liệu
- ko đảm bảo.
lamhuubinh(I91C)- Tổng số bài gửi : 34
Join date : 28/08/2011
Re: Thảo luận Bài 4
TranTrungTinh(I11C) đã viết:
Giả sử lúc 7h tiến trình P0 đang chạy, 7h05 ngắt xảy ra, lưu môi trường và trạng thái làm việc của P0 vào PCB0, nạp môi trường và trạng thái làm việc của P1 từ PCB1. Đến 7h10 P1 chạy, đến 7h20 ngắt xảy ra, tương tự như P0, lưu môi trường và trạng thái làm việc của P1 vào PCB1, nạp môi trường và trạng thái làm việc của P0 từ PCB0, tương tự như vậy thực hiện tiếp.
Bổ sung thêm ý bạn TranTrungTinh(I11C) : Giả sử P0 đang chạy, 7h05 ngắt xảy ra, thì tiến trình cần phải sử dụng bộ nhớ trong (RAM) để xử lý công việc của chúng, nên hệ điều hành cần phải chuyển toàn bộ dữ liệu của tiến trình đang xử lý (bị ngắt) trong bộ nhớ hiện tại sang một vùng nhớ tạm trước khi chuyển sang xử lý tiến trình tiếp theo và được khối kiểm soát tiến trình (Process control block - PCB ) lưu trạng thái làm việc của P0 như (new, ready, running, waiting), Credentials (user ID, group ID, effective ID...), Information memory : base/limit register, page tables… vào PCB0 tại phân vùng thấp của Ram . Sau khi tiến trình hiện tại được PCB lưu trạng thái thì tiến trình tiếp theo sẽ bắt đầu được thực hiện , nếu như tiến trình thứ 2 kết thúc và lúc này trạng thái CPU nghỉ thì nó sẽ dựa vào thông tin PCB0 lưu trên phân vùng thấp Ram để load tiến trình này lên và tiếp tục xử lý .
NGUYENDINHNGHIA-I11C- Tổng số bài gửi : 36
Join date : 25/08/2011
Ví dụ từ đời thường của Đồng bộ hóa liên lạc (Synchronization)
Ví dụ từ đời thường của việc gửi thông điệp có chờ ( Blocking Send) và gửi thông điệp không chờ ( Nonblocking Send) :
- Gửi thông điệp có chờ ( Blocking Send) : bạn A gửi một thông điệp cho bạn B và chờ khi nào bạn B trả lời mới làm việc khác. Nếu bạn B không trả lời thì bạn A vẫn chờ cho đến khi nào bạn B trả lời và không làm việc gì khác cả.
- Gửi thông điệp không chờ ( Nonblocking Send) : bạn A gửi thông điệp cho bạn B rồi vào nhà xem phim không chờ bạn B trả lời. Dù bạn B có trả lời hay không thì A vẫn đi làm việc khác.
Ta có thể lấy ví dụ tương tự cho nhận thông điệp có chờ ( Blocking Receive) và nhận thông điệp không chờ ( Nonblocking Receive)
- Gửi thông điệp có chờ ( Blocking Send) : bạn A gửi một thông điệp cho bạn B và chờ khi nào bạn B trả lời mới làm việc khác. Nếu bạn B không trả lời thì bạn A vẫn chờ cho đến khi nào bạn B trả lời và không làm việc gì khác cả.
- Gửi thông điệp không chờ ( Nonblocking Send) : bạn A gửi thông điệp cho bạn B rồi vào nhà xem phim không chờ bạn B trả lời. Dù bạn B có trả lời hay không thì A vẫn đi làm việc khác.
Ta có thể lấy ví dụ tương tự cho nhận thông điệp có chờ ( Blocking Receive) và nhận thông điệp không chờ ( Nonblocking Receive)
NguyenNgocMyTien(I11C)- Tổng số bài gửi : 27
Join date : 01/09/2011
Age : 37
Đến từ : Long An
Re: Thảo luận Bài 4
NgoDucTuan (I11C) đã viết:NguyenNgocMyTien(I11C) đã viết:Sơ đồ này mình vẽ lại, các bạn cho ý kiến nhé!Sơ đồ chuyển trạng thái của tiến trình- New : là tiến trình đang được tạo lập
- Ready : các chỉ thị của tiến trình đang được xử lý
- Waitting : tiến trình chờ đợi được cấp phát một tài nguyên hay chờ một sự kiện nào đó xảy ra
- Running: tiến trình chờ được cấp phát CPU để xử lý
- Terminated : kết thúc
1 => Tiến trình mới tạo được đưa vào hệ thống
2 => Bộ điều phối cấp phát cho tiến trình một khoảng thời gian sử dụng CPU
3 => Tiến trình kết thúc
4 => Tiến trình yêu cầu 1 tài nguyên nhưng chưa được đáp ứng vì tài nguyên chưa sẳn sàng để cấp phát tại thời điểm đó hoặc tiến trình phải chờ một sự kiện hay một thao tác nhập xuất
5 => Bộ điều phối chọn một tiến trình khác để cho xử lý
6 => Tài nguyên mà tiến trình yêu cầu trở nên sẳn sàng để cấp phát hay sự kiện hoặc thao tác nhập xuất tiến trình đang đợi hoàn tất
Bài này mình thấy bạn diễn giải cũng dễ hiểu nè, các bạn tham khảo bài này được đó...
Cảm ơn bạn NgoDucTuan (I11C)...^^!
Mình up lần nữa để bạn nào chưa xem cho ý kiến thêm nhé...^^!
NguyenNgocMyTien(I11C)- Tổng số bài gửi : 27
Join date : 01/09/2011
Age : 37
Đến từ : Long An
Tìm Hiểu TCP và UDP
1. Chức năng TCP và UDP
- Giao thức TCP và UDP là hai giao thức phổ biến nhất ở lớp vận chuyển (transport layer) của chồng giao thức TCP/IP. UDP dùng ít byte hơn cho phần header và yêu cầu xử lý từ host ít hơn. TCP thì cần nhiều byte hơn trong phần header và phải xử lý nhiều hơn nhưng cung cấp nhiều chức năng hữu ích hơn, như khả năng khôi phục lỗi.
- Các header của TCP và UDP khác nhau ở kích thước (20 và 8 byte), nguyên nhân chủ yếu là do TCP phải hỗ trợ nhiều chức năng hơn.
Chú ý: rằng UDP hoạt động tương tự như TCP trong vấn đề số cổng và kiểm tra lỗi phần header. Trường độ dài gói tin của UDP chỉ ra chiều dài của nguyên thông điệp UDP bao gồm cả header và dữ liệu.
2. Các kết nối TCP và các cổng
- Hai ứng dụng dùng TCP phải thiết lập một kết nối TCP trước khi dữ liệu có thể được truyền. Mỗi kết nối sẽ tồn tại giữa một cặp TCP socket với socket được định nghĩa như là sự kết hợp của địa chỉ IP, cổng được dùng, giao thức lớp vận chuyển. Quá trình thiết lập kết nối, khởi tạo socket bao gồm giá trị cổng nguồn và cổng đích, chỉ số tuần tự và ACK. Hình dưới mô tả tiến trình bắt tay ba bước trong thiết lập một kết nối TCP và quá trình hủy một kết nối TCP.
- Trong quá trình thiết lập kết nối, hai host sẽ chọn lựa cổng, chọn lựa chỉ số tuần tự (sequence number) và dùng các chỉ số của TCP để nhận ra thông điệp trong quá trình bắt tay ba bước. Đầu tiên, đối với vấn đề cổng, bên máy chủ (máy chủ) phải lắng nghe các yêu cầu kết nối từ máy yêu cầu (máy khách), trong trường hợp này là cổng 80. Phía máy khách sẽ chọn một cổng chưa dùng làm cổng nguồn, thường là giá trị 1024 hoặc lớn hơn. Lưu ý rằng khi so sánh các phân đoạn (segment) trong tiến trình trên, giá trị cổng là không đổi. Segment là đơn vị mô tả dữ liệu tại lớp vận chuyển được gọi là PDU (Protocol Data Unit).
- Trong phần header của TCP có bao gồm vài trường có giá trị 1 bit, gọi là các cờ. Các cờ này phục vụ cho các mục đích khác nhau. Các cờ SYN và ACK sẽ chỉ ra một segment có phải là segment đầu tiên hay là thứ hai trong một kết nối TCP mới. Một segment có cờ SYN sẽ là segment đầu tiên trong một kết nối TCP. Một segment có cả SYN và ACK sẽ là segment thứ hai trong một kết nối. Các cờ này cho phép các host dễ dàng nhận ra các yêu cầu kết nối mới. Chỉ số ban đầu có thể được gán về bất kỳ giá trị hợp lệ nào và thường không được gán về 0. Hãy nhớ rằng trong quá trình khôi phục lỗi, việc sử dụng các giá trị này là độc lập trong cả hai chiều.
3. Quá trình khôi phục lỗi
- Để thực hiện quá trình khôi phục lỗi, TCP sẽ gửi các gói tin ACK để báo rằng đã nhận được dữ liệu. Khi dữ liệu gửi đi không được ACK, bên gửi có thể gửi lại dữ liệu. Hình 6.3 mô tả tiến trình một máy chủ phục vụ Web gửi ra 1000 byte trong đó khi segment thứ hai bị mất, dữ liệu sẽ được khôi phục lại.
Ví dụ trên mô tả một tiến trình khôi phục lỗi trong đó bên gửi (máy chủ phục vụ web) nhận được một ACK trong đó chỉ ra rằng một segment đã bị mất. Lưu ý rằng trường ACK sẽ chỉ ra byte mong đợi kế tiếp chứ không phải là byte nhận được cuối cùng. Cũng lưu ý rằng trường ACK và trường sequence chỉ ra số byte, chứ không phải chỉ ra segment của TCP. Bên máy gửi sẽ tạo ra một bộ định thời, dựa trên giá trị thời gian tính toán vòng TCP (Measured Round Trip Time - MRTT) sao cho nếu một gói tin ACK là không nhận được, máy gửi sẽ gửi lại tất cả những dữ liệu chưa được xác nhận ACK mà không cần chờ cho bên máy nhận gửi một yêu cầu truyền lại.
4. Cơ chế cửa sổ trượt của giao thức TCP
- Cũng giống như nhiều giao thức khác, TCP sẽ dùng cơ chế cửa sổ trượt để kiểm soát dòng lưu lượng. Máy nhận sẽ khai báo kích thước cửa sổ (tính bằng đơn vị byte) dùng trường Windows của tất cả các phân đoạn mạng được gửi trên kết nối TCP. Cửa sổ này còn được gọi là cửa sổ của máy nhận hoặc cửa sổ do máy nhận quảng bá. Máy gửi sau đó chỉ có thể gửi một lượng dữ liệu có kích thước bằng kích thước của một cửa sổ đến máy nhận mà không cần nhận ACK. Mục đích cuối cùng của cơ chế của sổ trượt này là cho phép máy nhận mô tả máy gửi có thể gửi nhanh như thế nào, qua đó giúp bảo vệ máy nhận khỏi việc hết bộ nhớ. Máy nhận có thể tăng hay giảm kích thước cửa sổ của máy gửi bằng cách thay đổi cửa sổ trong các segment của TCP theo sau.
- Bên truyền dữ liệu sẽ giới hạn kích thước cửa sổ trượt dựa trên hai thông số khác nhau: cửa sổ quảng cáo và một cơ chế khác cho phép bên truyền phản ứng lại việc mất gói tin bằng cách giảm kích thước của cửa sổ. Cơ chế này được mô tả trong RFC 2581. Bên truyền TCP sẽ dùng một cửa sổ trượt với kích thước cửa sổ trượt sẽ nhỏ hơn hai giá trị có thể. Giá trị đầu tiên là giá trị cửa sổ do bên nhận truyền về và giá trị thứ hai được gọi là cửa sổ nghẽn (Congestion window - CWND). CWND là thành phần quan trọng nhất trong cơ chế tránh nghẽn của TCP.
• Bước 1: Ở thời điểm thiết lập kết nối, CWND được gán về giá trị thấp, thường là bằng kích thước tối đa của một phân đoạn (MSS).
• Bước 2: Nếu không có segment nào bị mất, CWND sẽ tăng lên dần, dùng cơ chế bắt đầu chậm (Slow Start). Khi đó sẽ tăng giá trị CWND theo cấp số nhân.
• Bước 3: Đối với mỗi segment bị mất, CWND sẽ giảm đi một nửa.
• Bước 4: Nếu segment bị mất đã được truyền lại, CWND sẽ tăng lại một lần nữa, bắt đầu bằng với cơ chế Slow Start.
• Bước 5: Nếu mất một số segment, trong khi CWND tăng cho đến khi nào đến được giá trị một nửa của giá trị CWND ban đầu. Sau đó CWND sẽ tăng với tốc độ chậm lại dùng một thuật toán tránh nghẽn. Thuật toán này tăng giá trị CWND ở tốc độ tuyến tính.
Tổng quát hơn, thuật toán bắt đầu với một kích thước cửa sổ nhỏ. Kích thước này tăng nhanh nhưng khi nghẽn xảy ra, kích thước cửa sổ truyền bị giới hạn bằng cách giảm bớt giá trị CWND. Khi dữ liệu đã được gửi lại thành công, CWND sẽ tăng nhanh hơn nhưng sẽ không quá nhanh bởi vì bản thân máy truyền này là nguyên nhân gây nghẽn ban đầu làm mất gói tin.
Trong bước 1: bên truyền chỉ có thể truyền tối đa một segment trước khi yêu cầu phải có ACK, kích thước cửa sổ truyền ban đầu là khá nhỏ. Giá trị kích cỡ segment tối đa TCP (MSS) định nghĩa kích thước cho phép lớn nhất của trường dữ liệu TCP, không bao gồm phần header của TCP. Với giá trị MTU mặc định trên phần lớn các cổng là 1500 byte (MTU có bao gồm IP header), giá trị MSS tiêu biểu là 1460.
Trong bước 2: giá trị CWND tăng nhanh dùng một thuật toán gọi là TCP slow start. CWND sẽ có thể tăng đến một con số lớn hơn kích thước cửa sổ cho phép trong khoảng thời gian vài giây. Phần lớn việc mất gói diễn ra do nghẽn vì vậy trong bước 3, CWND cũng sẽ giảm rất nhanh. Ý tưởng rất đơn giản đó là làm chậm bên máy truyền khi gói bị mất, điều này giúp cho nghẽn giảm đi. Hành động tương ứng là giảm đi một nửa giá trị CWND cho mỗi segment bị mất, phản ứng diễn ra rất nhanh.
Trong bước 4 và 5, các segment đã được khôi phục và bên truyền có thể giới hạn kích thước cửa sổ dựa trên giá trị CWND đã giảm xuống gần nhất. CWND có thể tăng lên một lần nữa ở thời điểm này nhưng thay vì tăng lên giá trị CWND trước đây, thuật toán chọn một tỉ lệ tăng chậm hơn cho đến khi nào CWND đạt đến giá trị trước khi có mất gói tin.
- Giao thức TCP và UDP là hai giao thức phổ biến nhất ở lớp vận chuyển (transport layer) của chồng giao thức TCP/IP. UDP dùng ít byte hơn cho phần header và yêu cầu xử lý từ host ít hơn. TCP thì cần nhiều byte hơn trong phần header và phải xử lý nhiều hơn nhưng cung cấp nhiều chức năng hữu ích hơn, như khả năng khôi phục lỗi.
- Các header của TCP và UDP khác nhau ở kích thước (20 và 8 byte), nguyên nhân chủ yếu là do TCP phải hỗ trợ nhiều chức năng hơn.
Chú ý: rằng UDP hoạt động tương tự như TCP trong vấn đề số cổng và kiểm tra lỗi phần header. Trường độ dài gói tin của UDP chỉ ra chiều dài của nguyên thông điệp UDP bao gồm cả header và dữ liệu.
2. Các kết nối TCP và các cổng
- Hai ứng dụng dùng TCP phải thiết lập một kết nối TCP trước khi dữ liệu có thể được truyền. Mỗi kết nối sẽ tồn tại giữa một cặp TCP socket với socket được định nghĩa như là sự kết hợp của địa chỉ IP, cổng được dùng, giao thức lớp vận chuyển. Quá trình thiết lập kết nối, khởi tạo socket bao gồm giá trị cổng nguồn và cổng đích, chỉ số tuần tự và ACK. Hình dưới mô tả tiến trình bắt tay ba bước trong thiết lập một kết nối TCP và quá trình hủy một kết nối TCP.
- Trong quá trình thiết lập kết nối, hai host sẽ chọn lựa cổng, chọn lựa chỉ số tuần tự (sequence number) và dùng các chỉ số của TCP để nhận ra thông điệp trong quá trình bắt tay ba bước. Đầu tiên, đối với vấn đề cổng, bên máy chủ (máy chủ) phải lắng nghe các yêu cầu kết nối từ máy yêu cầu (máy khách), trong trường hợp này là cổng 80. Phía máy khách sẽ chọn một cổng chưa dùng làm cổng nguồn, thường là giá trị 1024 hoặc lớn hơn. Lưu ý rằng khi so sánh các phân đoạn (segment) trong tiến trình trên, giá trị cổng là không đổi. Segment là đơn vị mô tả dữ liệu tại lớp vận chuyển được gọi là PDU (Protocol Data Unit).
- Trong phần header của TCP có bao gồm vài trường có giá trị 1 bit, gọi là các cờ. Các cờ này phục vụ cho các mục đích khác nhau. Các cờ SYN và ACK sẽ chỉ ra một segment có phải là segment đầu tiên hay là thứ hai trong một kết nối TCP mới. Một segment có cờ SYN sẽ là segment đầu tiên trong một kết nối TCP. Một segment có cả SYN và ACK sẽ là segment thứ hai trong một kết nối. Các cờ này cho phép các host dễ dàng nhận ra các yêu cầu kết nối mới. Chỉ số ban đầu có thể được gán về bất kỳ giá trị hợp lệ nào và thường không được gán về 0. Hãy nhớ rằng trong quá trình khôi phục lỗi, việc sử dụng các giá trị này là độc lập trong cả hai chiều.
3. Quá trình khôi phục lỗi
- Để thực hiện quá trình khôi phục lỗi, TCP sẽ gửi các gói tin ACK để báo rằng đã nhận được dữ liệu. Khi dữ liệu gửi đi không được ACK, bên gửi có thể gửi lại dữ liệu. Hình 6.3 mô tả tiến trình một máy chủ phục vụ Web gửi ra 1000 byte trong đó khi segment thứ hai bị mất, dữ liệu sẽ được khôi phục lại.
Ví dụ trên mô tả một tiến trình khôi phục lỗi trong đó bên gửi (máy chủ phục vụ web) nhận được một ACK trong đó chỉ ra rằng một segment đã bị mất. Lưu ý rằng trường ACK sẽ chỉ ra byte mong đợi kế tiếp chứ không phải là byte nhận được cuối cùng. Cũng lưu ý rằng trường ACK và trường sequence chỉ ra số byte, chứ không phải chỉ ra segment của TCP. Bên máy gửi sẽ tạo ra một bộ định thời, dựa trên giá trị thời gian tính toán vòng TCP (Measured Round Trip Time - MRTT) sao cho nếu một gói tin ACK là không nhận được, máy gửi sẽ gửi lại tất cả những dữ liệu chưa được xác nhận ACK mà không cần chờ cho bên máy nhận gửi một yêu cầu truyền lại.
4. Cơ chế cửa sổ trượt của giao thức TCP
- Cũng giống như nhiều giao thức khác, TCP sẽ dùng cơ chế cửa sổ trượt để kiểm soát dòng lưu lượng. Máy nhận sẽ khai báo kích thước cửa sổ (tính bằng đơn vị byte) dùng trường Windows của tất cả các phân đoạn mạng được gửi trên kết nối TCP. Cửa sổ này còn được gọi là cửa sổ của máy nhận hoặc cửa sổ do máy nhận quảng bá. Máy gửi sau đó chỉ có thể gửi một lượng dữ liệu có kích thước bằng kích thước của một cửa sổ đến máy nhận mà không cần nhận ACK. Mục đích cuối cùng của cơ chế của sổ trượt này là cho phép máy nhận mô tả máy gửi có thể gửi nhanh như thế nào, qua đó giúp bảo vệ máy nhận khỏi việc hết bộ nhớ. Máy nhận có thể tăng hay giảm kích thước cửa sổ của máy gửi bằng cách thay đổi cửa sổ trong các segment của TCP theo sau.
- Bên truyền dữ liệu sẽ giới hạn kích thước cửa sổ trượt dựa trên hai thông số khác nhau: cửa sổ quảng cáo và một cơ chế khác cho phép bên truyền phản ứng lại việc mất gói tin bằng cách giảm kích thước của cửa sổ. Cơ chế này được mô tả trong RFC 2581. Bên truyền TCP sẽ dùng một cửa sổ trượt với kích thước cửa sổ trượt sẽ nhỏ hơn hai giá trị có thể. Giá trị đầu tiên là giá trị cửa sổ do bên nhận truyền về và giá trị thứ hai được gọi là cửa sổ nghẽn (Congestion window - CWND). CWND là thành phần quan trọng nhất trong cơ chế tránh nghẽn của TCP.
• Bước 1: Ở thời điểm thiết lập kết nối, CWND được gán về giá trị thấp, thường là bằng kích thước tối đa của một phân đoạn (MSS).
• Bước 2: Nếu không có segment nào bị mất, CWND sẽ tăng lên dần, dùng cơ chế bắt đầu chậm (Slow Start). Khi đó sẽ tăng giá trị CWND theo cấp số nhân.
• Bước 3: Đối với mỗi segment bị mất, CWND sẽ giảm đi một nửa.
• Bước 4: Nếu segment bị mất đã được truyền lại, CWND sẽ tăng lại một lần nữa, bắt đầu bằng với cơ chế Slow Start.
• Bước 5: Nếu mất một số segment, trong khi CWND tăng cho đến khi nào đến được giá trị một nửa của giá trị CWND ban đầu. Sau đó CWND sẽ tăng với tốc độ chậm lại dùng một thuật toán tránh nghẽn. Thuật toán này tăng giá trị CWND ở tốc độ tuyến tính.
Tổng quát hơn, thuật toán bắt đầu với một kích thước cửa sổ nhỏ. Kích thước này tăng nhanh nhưng khi nghẽn xảy ra, kích thước cửa sổ truyền bị giới hạn bằng cách giảm bớt giá trị CWND. Khi dữ liệu đã được gửi lại thành công, CWND sẽ tăng nhanh hơn nhưng sẽ không quá nhanh bởi vì bản thân máy truyền này là nguyên nhân gây nghẽn ban đầu làm mất gói tin.
Trong bước 1: bên truyền chỉ có thể truyền tối đa một segment trước khi yêu cầu phải có ACK, kích thước cửa sổ truyền ban đầu là khá nhỏ. Giá trị kích cỡ segment tối đa TCP (MSS) định nghĩa kích thước cho phép lớn nhất của trường dữ liệu TCP, không bao gồm phần header của TCP. Với giá trị MTU mặc định trên phần lớn các cổng là 1500 byte (MTU có bao gồm IP header), giá trị MSS tiêu biểu là 1460.
Trong bước 2: giá trị CWND tăng nhanh dùng một thuật toán gọi là TCP slow start. CWND sẽ có thể tăng đến một con số lớn hơn kích thước cửa sổ cho phép trong khoảng thời gian vài giây. Phần lớn việc mất gói diễn ra do nghẽn vì vậy trong bước 3, CWND cũng sẽ giảm rất nhanh. Ý tưởng rất đơn giản đó là làm chậm bên máy truyền khi gói bị mất, điều này giúp cho nghẽn giảm đi. Hành động tương ứng là giảm đi một nửa giá trị CWND cho mỗi segment bị mất, phản ứng diễn ra rất nhanh.
Trong bước 4 và 5, các segment đã được khôi phục và bên truyền có thể giới hạn kích thước cửa sổ dựa trên giá trị CWND đã giảm xuống gần nhất. CWND có thể tăng lên một lần nữa ở thời điểm này nhưng thay vì tăng lên giá trị CWND trước đây, thuật toán chọn một tỉ lệ tăng chậm hơn cho đến khi nào CWND đạt đến giá trị trước khi có mất gói tin.
nguyenquoctruong (I11C)- Tổng số bài gửi : 22
Join date : 29/08/2011
Tìm Hiểu TCP và UDP
Nói về TCP và UDP : Như ta thấy lý thuyết thì học rất nhiều rồi, Thầy cũng đã giảng rất kỹ trên lớp và các bạn đã trình bầy rất chi tiết cụ thể trên diễn đàn. Cái mình quan tâm ở đây là ứng dụng của nó vào thực tế thì sao? Khi nào thì nên dùng giao thức TCP và khi nào dùng UDP? Sự chọn lựa đó mới quyết định được tính hiểu quả của ứng dụng dựa vào ưu điểm và nhược điểm của 2 giao thức TCP và UDP mà các Thầy và các bạn đã trình bầy rất tuyệt vời.
Mình thí dụ ngoài thực tế để áp vào ứng dụng là cách hay nhất trong ứng dụng CNTT. Theo hiểu biết TCP và UDP tương tự như 2 hình thức gửi thư bưu điện lúc trước là gửi bảo đảm và không bảo đảm. Gửi không bảo đảm là cách gửi đơn giản nhất, chi phí rẻ, người gửi chỉ việc bỏ thư vào bưu điện và hy vọng người nhận nhận được, nếu chẳng may thất lạc thì thôi và đành gửi lại, đó là UDP. Còn gửi bảo đảm là cách gửi phải có sự xác nhận đã nhận được của bên nhận bằng cách ký nhận, sau đó báo lại cho bên gửi, cách này rất đảm bảo nhưng thủ tục rườm rà tốn thời gian và chi phí cao hơn, đó là TCP.
Giờ thì bạn nghĩ những giao dịch quan trọng như tiền bạc, tài khoản, password, mua bán online ... nên gửi bảo đảm hay không bảo đảm? Không cần nhanh nhưng phải thật bảo đảm, vậy tất nhiên phải dùng TCP.
Như vậy học lý thuyết là rất cần thiết nhưng ứng dụng vào thực tế thì khó hơn nhiều. Do đó, học lý thuyết không chỉ để hiểu nó mà đưa nó vào thực tiễn thì sự học có giá trị hơn rất nhiều. Không hiểu sao mình lại quan tâm đến các ứng dụng hiện nay rất nhiều, không biết họ có viết giống mình học không, sao suy nghĩ đến nó thấy nó ghê gớm vậy. Như ứng dụng thẻ ATM, mua bán trực tuyến, gửi mail, chat,...
Mong muốn của mình ở bài học lần sau sẽ có nhiều ứng dụng thực tế đưa lên diễn đàn phân tích, mổ sẽ để tất cả mọi người quan tâm đến lập trình hiểu biết thêm, để khi ra thực tế khỏi phải ngỡ ngàng, phân vân rằng những ứng dụng tương tự như vậy mình đã biết qua rồi bây giờ chỉ áp vào thôi. Như vậy tinh thần rất là phấn khởi và công việc rất hiệu quả.
Mình thí dụ ngoài thực tế để áp vào ứng dụng là cách hay nhất trong ứng dụng CNTT. Theo hiểu biết TCP và UDP tương tự như 2 hình thức gửi thư bưu điện lúc trước là gửi bảo đảm và không bảo đảm. Gửi không bảo đảm là cách gửi đơn giản nhất, chi phí rẻ, người gửi chỉ việc bỏ thư vào bưu điện và hy vọng người nhận nhận được, nếu chẳng may thất lạc thì thôi và đành gửi lại, đó là UDP. Còn gửi bảo đảm là cách gửi phải có sự xác nhận đã nhận được của bên nhận bằng cách ký nhận, sau đó báo lại cho bên gửi, cách này rất đảm bảo nhưng thủ tục rườm rà tốn thời gian và chi phí cao hơn, đó là TCP.
Giờ thì bạn nghĩ những giao dịch quan trọng như tiền bạc, tài khoản, password, mua bán online ... nên gửi bảo đảm hay không bảo đảm? Không cần nhanh nhưng phải thật bảo đảm, vậy tất nhiên phải dùng TCP.
Như vậy học lý thuyết là rất cần thiết nhưng ứng dụng vào thực tế thì khó hơn nhiều. Do đó, học lý thuyết không chỉ để hiểu nó mà đưa nó vào thực tiễn thì sự học có giá trị hơn rất nhiều. Không hiểu sao mình lại quan tâm đến các ứng dụng hiện nay rất nhiều, không biết họ có viết giống mình học không, sao suy nghĩ đến nó thấy nó ghê gớm vậy. Như ứng dụng thẻ ATM, mua bán trực tuyến, gửi mail, chat,...
Mong muốn của mình ở bài học lần sau sẽ có nhiều ứng dụng thực tế đưa lên diễn đàn phân tích, mổ sẽ để tất cả mọi người quan tâm đến lập trình hiểu biết thêm, để khi ra thực tế khỏi phải ngỡ ngàng, phân vân rằng những ứng dụng tương tự như vậy mình đã biết qua rồi bây giờ chỉ áp vào thôi. Như vậy tinh thần rất là phấn khởi và công việc rất hiệu quả.
nguyenquoctruong (I11C)- Tổng số bài gửi : 22
Join date : 29/08/2011
VD CHUYEN NGU CANH
Mỗi lớp là 1 tiến trình cha, mỗi thành viên trong lớp là tiến trình con trong tiến trình cha, thầy giáo là HĐH. Chuyển ngữ cảnh của tiến trình con trong tiến trình cha sẽ dễ hơn chuyển ngữ cảnh giữa tiến trình cha với tiến trình cha.
(Công nghệ đa luồng chuyển ngữ cảnh nhanh hơn)
(Công nghệ đa luồng chuyển ngữ cảnh nhanh hơn)
nguyenthingocloan (I11C)- Tổng số bài gửi : 33
Join date : 26/08/2011
Re: Thảo luận Bài 4
Ai có bài toán nào cụ thể hơn, xin chia sẻ cho mọi người cùng học nhé. thanksToThiThuyTrang (I11C) đã viết:Phát biểu:
Bài toán sản xuất tiêu thụ được phát biểu chung như sau:
Có một bộ đệm(Buffer) và 2 tiến trình sản xuất Producer và tiến trình tiêu thụ Consumer.Tiến trình Producer lần lượt sản xuất các sản phẩm S1, S2 vào khoang của bộ đệm Buffer.Tiến trình tieu thụ lần lượt lấy các sản phẩm ra khỏi bộ đệm.Công việc của Producer và Consumer cần được đồng bộ hóa tiến trình Consumer không thể lấy sản phẩm ra khi bộ đệm trống, và tiến trình Producer không thể sản xuất khi bộ đệm đầy.
Đồng bộ hóa bằng 2 đèn hiệu semFull và semEmpty.
CODE:
Producer()
{
//Chờ trong khi bộ đệm đầy
WaitForSingleObject(semFull, INFINITE);
// Sản xuất sản phẩm và đưa vào Buffer
ReleaseSemaphore(semEmpty);
//Bộ đệm đã có sản phẩm
}
CODE:
Consumer()
{
//Chờ đến khi có sản phẩm
WaitForSingleObject(semEmpty, INFINITE);
// Tiêu thụ sản phẩm
ReleaseSemaphore(semFull);
//Bộ đệm đã có chỗ trống
}
NgoDucTuan (I11C)- Tổng số bài gửi : 52
Join date : 31/08/2011
Re: Thảo luận Bài 4
Duongthithanhhuynh (I11C) đã viết:Mình bổ sung thêm ý mà thầy nhấn mạnh trong phần này là:tannamthanh(I11C) đã viết:_ Điều phối chậm(long –term queue) chọn 1 tiến trình từ job queue đưa sang qua Ready queue(chuyển từ New sang Ready). Scheduler lựa chọn kỹ các tiến trình nhằm phối hợp cân bằng giữa hai loại tiến trình
+ hướng CPU(CPU-BOUND) tính toán nhiều , ít I/O.
+ hướng I/O(I/O BOUND) tính toán ít , nhiều I/O.
Mục đích nhằm cân bằng tải giữa hai tiến trình..
VD: Trong cuộc thi Vietnam Idol, các thi sinh ngồi đợi bên ngoài đang trong Job Queue ( đều phối chậm),
sau đó giám khảo sẽ gọi 3 bạn vào Ready Queue rồi sẽ gọi liên tục 1 trong 3 bạn lên trình bày (điều phối nhanh)
_ Điều phối nhanh (Short-term scheduler): Chọn tiến trình sẽ chiếm CPU để xử lý (chuyển từ trạng thái Ready sang trạng thái Runing).
VD: Các thí sinh đã được gọi lên trình diễn thì đã biết mình phải làm gì
Trong thực tế không phải các process ở trạng thái new cũng được chuyển tất cả sang trạng thái ready mà phải được "sơ tuyển".Và tại sao phải "sơ tuyển"? là để có 1 hỗn hợp tối ưu hai loại process khác nhau: hướng CPU và hướng I/O.
VD: Chương trình "Ai là triệu phú"
Những người được chọn là tiến trình new, qua sơ tuyển là tiến trình ready. Những người từ tiến trình ready, qua sơ tuyển được chọn ngồi trước màn hình máy tính trả lời là tiến trình running.
nguyenthingocloan (I11C)- Tổng số bài gửi : 33
Join date : 26/08/2011
Truyền thông điệp trong windows (Message-Passing in Windows)
Các hàm API dùng để Gửi/Nhận thông điệp:
SendMessage - Gửi có chờ
PostMessage - Gửi không chờ
SendMessageTimeout- Gửi có chờ nhưng với thời hạn
WaitMessage - Chờ thông điệp đến
GetMessage - Nhận có chờ
PeekMessage - Nhận không chờ
SendMessage - Gửi có chờ
PostMessage - Gửi không chờ
SendMessageTimeout- Gửi có chờ nhưng với thời hạn
WaitMessage - Chờ thông điệp đến
GetMessage - Nhận có chờ
PeekMessage - Nhận không chờ
NgoDucTuan (I11C)- Tổng số bài gửi : 52
Join date : 31/08/2011
Trang 10 trong tổng số 13 trang • 1, 2, 3 ... 9, 10, 11, 12, 13
Trang 10 trong tổng số 13 trang
Permissions in this forum:
Bạn không có quyền trả lời bài viết