Thảo luận Bài 4
+111
DangLeHieu(I102C)
NguyenTuanHai_I12A
Đỗ Phan Diễm Hương I12A
TRANTHINHPHAT (I11C)
lengocthuthao89 (i11c)
NguyenthechinhI12A
DaoQuangTri38(I12A)
LyHuynhThanhYen (I11C)
BuiDaiNghia-102C
nguyenhuutho
TrinhThiPhuongThaoI12C
TranVanBao(I12A)
tranthithanhuyen85 (I11C)
KimHue36 (I11C)
phanngocthinh(i12a)
fantomas113
PhamDucPhuong(I12A)
VoTrongQuyet-I12A
vominhhai_09H1012028
nguyenvanhonglac_0066
leminhtam13(I12A)
TruongQuocTrung_I12A
HuaTranTuQuyen(I12A)
NguyenNgocDuy(I12A)
PhamMinhLuan(102C)
sonha89
Nguyen Doan Linh051(I11c)
HuynhMinhChanh(i91C)
ngophicamI12A
HuynhNguyenTrungHau_I12C
LeMinhDuc (I11C)
huynhtamhaoI12A
LuongGiaDuc(I12A)
HUYNHMINHHAI(I12A)
TranHuyCuong17 (I12A)
NguyenThanhCang(I12A)
lymydung_I12A
VuNguyenQuynhLam_I12C
TranHoangNhanI12C
BuiHuongTra(I12A)
NgoXuanQuoc_(102C)
NguyenVinhQuang_I12A
LeMInhTien(I11C)
nguyenthihongtham_I12C
maidangvu_I12A
NguyenVanBenI12C
NguyenVanThang25 (I12A)
phamduyI12A
NguyenHaCamThu(I12A)
TranTrungTinh(I12A)
trantrungnam-HC11TH2A
LacChiHao(I12A)
luthioanh-I12A
nguyen_tuan_phat_I12A
lacongchinh_I12A
lethanhsang_I12A
TranTrungHienI12C
plminhhoangI12A
ngothihanHC11TH2A
TranBinhCongLuanI12A
nguyenthanhphongHC11TH2A
quynhnhi.nguyen_I12A
LeXuanHau (I12C)
DaoThaiHuyI12A
levanhop.it
Nguyen Sy Hung I12A
thailongI12C
nguyenthingocmai_I12A
hoanghaiyen
Đinh Đông Dương
NguyenThiHue48(I12A)
phuongnguyen
nguyenthaihiep (I11C)
nguyenthimao_I12A
TranMinhTuan143(I12A)
NguyenHongHaiI12C
nguyenhuutrang_11h1010135
nguyenthanhnghi_I12C
quicly_I111c
NguyenThiHongYen(I12A)
NgoPhuQuoc_I12C
TranThiNgocQuynh(I12C)
hoxuanvu_I12A
LuongHueChanh_I12A
TranThiMyKhanh(I12A)
DoanNgocDan(I12A)
LeLamThang (113A)
tranvanthien27(I12C)
BuiPhamAnBinh(I12A)
LeThanhTung (I11C)
LeQuocKhanh-11H1010059
trinhvanminh_11h1010077
letanthanh18(I12A)
vothingocthuy87(I11C)
NguyenTriVienI12A
NguyenHoangThangI12A
LeThiMaiPhuongI12A
hoanggiangI12C
TranPhiLong (I11C)
phamphihung55
TranThiAnhDao89I12C
TrinhVinhThanh (I12A)
lequanghanh(102c)
Truc_Phuong(I111C)
LePhucHiep(102C)
NguyenXuanTri28
huynhvanhung(I12A)
VoThiHongNhung(I12A)
PhamQuangHien_I12A
minhtam_I12C
Admin
115 posters
Trang 11 trong tổng số 15 trang
Trang 11 trong tổng số 15 trang • 1 ... 7 ... 10, 11, 12, 13, 14, 15
Định nghĩa tiến trình&Các trạng thái của tiến trình
Định nghĩa tiến trình
Trạng thái của một hệ thống tính toán tại một thời điểm đ¬ợc hiểu là một bộ thông tin của tất cả các thành phần trong hệ thống tính toán.
Một dãy chuyển trạng thái của hệ thống tính toán ký hiệu là S0, S1,..Sn trong đó S0 là trạng thái đầu, Sn là trạng thái kết thúc thì ta gọi đó là một tiến trình
Tiến trình được xem là một chương trình đang hoạt động, sỡ hữu một con trỏ lệnh, tập các thanh ghi và các biến.
Vì thế nên tiến trình được xem như là một thực thể động. Quá trình thực thi tiếng trình diễn ra tuần tự( tại một thời điểm chỉ có duy nhất một chỉ thị trong tiếng trình được thực hiện).
Tiến trình là một chương trình đang xử lý.Để hoàn thành tác vụ của mình, một tiến trình có thể cần đến một số tài nguyên: CPU, bộ nhớ chính, các tập tin và thiết bị nhập/xuất.
Tiến trình gồm có…
Đoạn mã lệnh (code, có sách gọi là text)
Đoạn dữ liệu
Đoạn ngăn xếp và heap (stack/heap)
Các hoạt động hiện tại đượcthể hiện qua con đếm lệnh (IP) và nội dung các thanh ghi (registers) của bộ xử lý
Các trạng thái của tiến trình
Trạng thái của tiến trình tại một thời điểm được xác định bởi hoạt động hiện thời của tiến trình tại thời điểm đó. Trong quá trình sống, một tiến trình thay đổi trạng thái do nhiều nguyên nhân như : phải chờ một sự kiện nào đó xảy ra, hay đợi một thao tác nhập/xuất hoàn tất, buộc phải dừng hoạt động do đã hết thời gian xử lý …
Tại một thời điểm, một tiến trình có thể nhận trong một các trạng thái sau đây :
Mới tạo : tiến trình đang được tạo lập.
Running : các chỉ thị của tiến trình đang được xử lý.
Blocked : tiến trình chờ được cấp phát một tài nguyên, hay chờ một
sự kiện xảy ra .
Ready : tiến trình chờ được cấp phát CPU để xử lý.
Kết thúc : tiến trình hoàn tất xử lý.
Tại một thời điểm, chỉ có một tiến trình có thể nhận trạng thái running trên một bộ xử lý bất kỳ. Trong khi đó, nhiều tiến trình có thể ở trạng thái blockedhay ready.
Các cung chuyển tiếp trong sơ đồ trạng thái biễu diễn sáu sự chuyển trạng thái có thể xảy ra trong các điều kiện sau :
Tiến trình mới tạo được đưa vào hệ thống
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
Tiến trình kết thúc
Tiến trình yêu cầu một 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 thao tác nhập/xuất.
Bộ điều phối chọn một tiến trình khác để cho xử lý .
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.
Trạng thái của một hệ thống tính toán tại một thời điểm đ¬ợc hiểu là một bộ thông tin của tất cả các thành phần trong hệ thống tính toán.
Một dãy chuyển trạng thái của hệ thống tính toán ký hiệu là S0, S1,..Sn trong đó S0 là trạng thái đầu, Sn là trạng thái kết thúc thì ta gọi đó là một tiến trình
Tiến trình được xem là một chương trình đang hoạt động, sỡ hữu một con trỏ lệnh, tập các thanh ghi và các biến.
Vì thế nên tiến trình được xem như là một thực thể động. Quá trình thực thi tiếng trình diễn ra tuần tự( tại một thời điểm chỉ có duy nhất một chỉ thị trong tiếng trình được thực hiện).
Tiến trình là một chương trình đang xử lý.Để hoàn thành tác vụ của mình, một tiến trình có thể cần đến một số tài nguyên: CPU, bộ nhớ chính, các tập tin và thiết bị nhập/xuất.
Tiến trình gồm có…
Đoạn mã lệnh (code, có sách gọi là text)
Đoạn dữ liệu
Đoạn ngăn xếp và heap (stack/heap)
Các hoạt động hiện tại đượcthể hiện qua con đếm lệnh (IP) và nội dung các thanh ghi (registers) của bộ xử lý
Các trạng thái của tiến trình
Trạng thái của tiến trình tại một thời điểm được xác định bởi hoạt động hiện thời của tiến trình tại thời điểm đó. Trong quá trình sống, một tiến trình thay đổi trạng thái do nhiều nguyên nhân như : phải chờ một sự kiện nào đó xảy ra, hay đợi một thao tác nhập/xuất hoàn tất, buộc phải dừng hoạt động do đã hết thời gian xử lý …
Tại một thời điểm, một tiến trình có thể nhận trong một các trạng thái sau đây :
Mới tạo : tiến trình đang được tạo lập.
Running : các chỉ thị của tiến trình đang được xử lý.
Blocked : tiến trình chờ được cấp phát một tài nguyên, hay chờ một
sự kiện xảy ra .
Ready : tiến trình chờ được cấp phát CPU để xử lý.
Kết thúc : tiến trình hoàn tất xử lý.
Tại một thời điểm, chỉ có một tiến trình có thể nhận trạng thái running trên một bộ xử lý bất kỳ. Trong khi đó, nhiều tiến trình có thể ở trạng thái blockedhay ready.
Các cung chuyển tiếp trong sơ đồ trạng thái biễu diễn sáu sự chuyển trạng thái có thể xảy ra trong các điều kiện sau :
Tiến trình mới tạo được đưa vào hệ thống
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
Tiến trình kết thúc
Tiến trình yêu cầu một 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 thao tác nhập/xuất.
Bộ điều phối chọn một tiến trình khác để cho xử lý .
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.
NguyenHaCamThu(I12A)- Tổng số bài gửi : 22
Join date : 02/03/2012
Tại sao phải cộng tác giữa các tiến trình?
Tiến trình hợp tác (Cooperating process)
Có thể tác động hoặc chịu tác động bởi sự thực hiện của tiến trình khác.
Vi du: tiến trình này chia sẻ dữ liệu với tiến trình khác
Các lợi điểm của tiến trình hợp tác
-- Chia sẻ thông tin - Information sharing
-- Tăng tốc độ tính toán - Computation speed-up
-- Mô-đun hóa - Modularity
-- Sự tiện lợi - Convenience (vd người sử dụng cùng thực hiện soạn thảo, in ấn, biên dịch song song)
Sự cộng tác giữa các quá trình yêu cầu hệ điều hành hỗ trợ cơ chế giao tiếp và cơ chế đồng bộ hoạt động của các quá trình
VD: cũng giống như chơi game qua 1 mạng lan có nhiều người: CS chẳng hạn
Có thể tác động hoặc chịu tác động bởi sự thực hiện của tiến trình khác.
Vi du: tiến trình này chia sẻ dữ liệu với tiến trình khác
Các lợi điểm của tiến trình hợp tác
-- Chia sẻ thông tin - Information sharing
-- Tăng tốc độ tính toán - Computation speed-up
-- Mô-đun hóa - Modularity
-- Sự tiện lợi - Convenience (vd người sử dụng cùng thực hiện soạn thảo, in ấn, biên dịch song song)
Sự cộng tác giữa các quá trình yêu cầu hệ điều hành hỗ trợ cơ chế giao tiếp và cơ chế đồng bộ hoạt động của các quá trình
VD: cũng giống như chơi game qua 1 mạng lan có nhiều người: CS chẳng hạn
NguyenHaCamThu(I12A)- Tổng số bài gửi : 22
Join date : 02/03/2012
Hai phương thức liên lạc giữa các tiến trình.
Liên lạc trực tiếp (Direct Communications)
1. Theo địa chỉ đối xứng (Symmetric Scheme)
Send (P, Message) - Gửi thông điệp cho P
Receive (Q, Message) - Nhận thông điệp từ Q
Đặc điểm:
2. Theo địa chỉ phi đối xứng (Asymmetric Scheme)
Send (P, Message) - Gửi thông điệp cho P
Receive (id, Message) - Nhận thông điệp từ tiến trình bất kỳ, Biến id chứa số hiệu tiến trình gửi
Liên lạc gián tiếp (Indirect Communications)
1. Theo địa chỉ đối xứng (Symmetric Scheme)
Send (P, Message) - Gửi thông điệp cho P
Receive (Q, Message) - Nhận thông điệp từ Q
Đặc điểm:
- Liên kết được thiết lập tự động giữa mỗi cặp tiến trình.
Liên kết chỉ giữa 2 tiến trình.
Chỉ có 1 liên kết giữa mỗi cặp.
Tính đối xứng của liên lạc (2 bên đều biết đích xác tên của nhau khi Gửi/Nhận).
2. Theo địa chỉ phi đối xứng (Asymmetric Scheme)
Send (P, Message) - Gửi thông điệp cho P
Receive (id, Message) - Nhận thông điệp từ tiến trình bất kỳ, Biến id chứa số hiệu tiến trình gửi
Liên lạc gián tiếp (Indirect Communications)
- Qua các Hộp thư (Mailboxes) hoặc Cổng (Ports).
Hộp thư là một thực thể qua đó thông điệp được gửi đến và lấy ra.
Mỗi hộp thư có định danh riêng.
Hai tiến trình phải chung nhau một hộp thư nào đó.
Hai loại hộp thư:
Hộp thư tiến trình (Process Mailbox): Nằm trong vùng địa chỉ của một tiến trình nào đó.
Hộp thư hệ điều hành (OS Mailbox): Nằm trong vùng địa chỉ của HĐH
PhamMinhLuan(102C)- Tổng số bài gửi : 15
Join date : 21/02/2011
Thảo luận bài 4 - câu 4 : Lí do cộng tác giữa các tiến trình
Giữa các tiến trình cần sự cộng tác với nhau để đảm bảo các tiến trình được xử lí hoạt động đạt hiệu quả tối đa
Chia sẻ thông tin (Information Sharing): Một tiến trình sử dụng thông tin do tiến trình khác cung cấp.
Ví dụ thực tế: Trong một nhóm kỹ sư xe máy tham gia nghiên cứu một dự án cải tiến mẫu xe máy mới. Nhóm kỹ thuật viên này chia tài liệu về dự án mới cho mỗi thành viên trong nhóm. Thành viên thứ nhất nghiên cứu về cách thay đổi mẫu mã của xe, thành viên thứ hai nghiên cứu về cách tiết kiệm xăng cho xe. Sau đó các thành viên này tập hợp những thông tin mình nghiên cứu được để hoàn thiện một chiếc xe máy mới.
Tăng tốc tính toán (Computation Speedup): Các tiến trình cùng làm việc song song trên 1 hoặc nhiều máy để giải quyết bài toán chung.
Ví dụ thực tế: Mỗi người kỹ sư sẽ áp dụng những nghiên cứu của mình trên mỗi xe riêng để kiểm thử kết quả nghiên cứu.
Đảm bảo tính đơn thể (Modularity): Chương trình được chia thành các đơn thể chức năng vận hành trong các tiến trình hoặc luồng khác nhau.
Ví dụ thực tế: Trong một dây chuyền lắp ráp một chiếc xe máy, mỗi người kỹ sư sẽ lắp ráp bộ phận do mình phụ trách. Điều này đảm bảo được tính đơn thể của sự cộng tác tiến trình.
Đảm bảo tính tiện dụng (Convenience): Đảm bảo tính tiện dụng cho người dùng, người dùng sẽ được sử dụng nhiều tính năng mới.
Ví dụ thực tế: Sau khi chiếc xe cải tiến, người sử dụng sẽ được hưởng nhiều tính năng mới như: Mẫu mã đẹp, ít hao xăng, xe chạy khỏe hơn, ....[i]
Chia sẻ thông tin (Information Sharing): Một tiến trình sử dụng thông tin do tiến trình khác cung cấp.
Ví dụ thực tế: Trong một nhóm kỹ sư xe máy tham gia nghiên cứu một dự án cải tiến mẫu xe máy mới. Nhóm kỹ thuật viên này chia tài liệu về dự án mới cho mỗi thành viên trong nhóm. Thành viên thứ nhất nghiên cứu về cách thay đổi mẫu mã của xe, thành viên thứ hai nghiên cứu về cách tiết kiệm xăng cho xe. Sau đó các thành viên này tập hợp những thông tin mình nghiên cứu được để hoàn thiện một chiếc xe máy mới.
Tăng tốc tính toán (Computation Speedup): Các tiến trình cùng làm việc song song trên 1 hoặc nhiều máy để giải quyết bài toán chung.
Ví dụ thực tế: Mỗi người kỹ sư sẽ áp dụng những nghiên cứu của mình trên mỗi xe riêng để kiểm thử kết quả nghiên cứu.
Đảm bảo tính đơn thể (Modularity): Chương trình được chia thành các đơn thể chức năng vận hành trong các tiến trình hoặc luồng khác nhau.
Ví dụ thực tế: Trong một dây chuyền lắp ráp một chiếc xe máy, mỗi người kỹ sư sẽ lắp ráp bộ phận do mình phụ trách. Điều này đảm bảo được tính đơn thể của sự cộng tác tiến trình.
Đảm bảo tính tiện dụng (Convenience): Đảm bảo tính tiện dụng cho người dùng, người dùng sẽ được sử dụng nhiều tính năng mới.
Ví dụ thực tế: Sau khi chiếc xe cải tiến, người sử dụng sẽ được hưởng nhiều tính năng mới như: Mẫu mã đẹp, ít hao xăng, xe chạy khỏe hơn, ....[i]
Nguyen Sy Hung I12A- Tổng số bài gửi : 28
Join date : 15/02/2012
Age : 35
Thảo luận bài 4 - Ứng dụng UDP - TCP (Ưu điểm và nhược điểm của 2 giao thức )
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.
Cụ thể như ữ liệu đến đích đúng thứ tự.
Sửa lỗi dữ liệu ở mức tối thiểu( thật ra là truyền lại).
Dữ liệu trùng lặp bị loại bỏ.
Các gói tin thất lạc/loại bỏ được gửi lại.
Kiểm soát tắc nghẽn giao thông trong việc truyền/nhận dữ liệu.
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, ...
Một số port mặc định của TCP. 21(FTP), 25(SMTP), 23(Telnet),53(DNS), 80(web), 443(SSL- Secure web)
Một số port UDP : 53(DNS), 161,162(SNMP), TFTP (69)..
So sánh TCP & UDP
Giống nhau:
Đều là nền tảng trong việc truyền thông tin trên mạng IP, hỗ trợ nhiều ứng dụng.
Có cơ chế checksum( 16 bits).
Không hỗ trợ truyền dữ liệu theo dòng(stream).
Không hỗ trợ Multi-homing.
Khác nhau:
TCP yêu cầu Length field trong header còn UDP thì không.
Kích thước gói tin khác nhau(gói TCP Header 20 bytes, UDP chỉ có 8 bytes).
Truyền dữ liệu không lỗi(do cơ chế sửa lỗi/ truyền lại).
Truyền dữ liệu theo đúng thứ tự( dựa vào số sequence numbers).
Truyền lại các gói dữ liệu bị mất trên đường truyền.
Loại bỏ các gói dữ liệu trùng lặp.
Có cơ chế tránh tắc nghẽn đường truyền.
tóm lại là:
TCP : Hy sinh tốc độ để đảm bảo độ tin cậy của gói tin truyền đi.
Cụ thể như ữ liệu đến đích đúng thứ tự.
Sửa lỗi dữ liệu ở mức tối thiểu( thật ra là truyền lại).
Dữ liệu trùng lặp bị loại bỏ.
Các gói tin thất lạc/loại bỏ được gửi lại.
Kiểm soát tắc nghẽn giao thông trong việc truyền/nhận dữ liệu.
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, ...
Một số port mặc định của TCP. 21(FTP), 25(SMTP), 23(Telnet),53(DNS), 80(web), 443(SSL- Secure web)
Một số port UDP : 53(DNS), 161,162(SNMP), TFTP (69)..
So sánh TCP & UDP
Giống nhau:
Đều là nền tảng trong việc truyền thông tin trên mạng IP, hỗ trợ nhiều ứng dụng.
Có cơ chế checksum( 16 bits).
Không hỗ trợ truyền dữ liệu theo dòng(stream).
Không hỗ trợ Multi-homing.
Khác nhau:
TCP yêu cầu Length field trong header còn UDP thì không.
Kích thước gói tin khác nhau(gói TCP Header 20 bytes, UDP chỉ có 8 bytes).
Truyền dữ liệu không lỗi(do cơ chế sửa lỗi/ truyền lại).
Truyền dữ liệu theo đúng thứ tự( dựa vào số sequence numbers).
Truyền lại các gói dữ liệu bị mất trên đường truyền.
Loại bỏ các gói dữ liệu trùng lặp.
Có cơ chế tránh tắc nghẽn đường truyền.
Nguyen Sy Hung I12A- Tổng số bài gửi : 28
Join date : 15/02/2012
Age : 35
Lập trình tương tác
Theo mình thấy thì những chương trình được gọi là "lập trình tương tác" được sử dụng rất nhiều, nhưng theo mình thì ví dụ cụ thể mà gần gủi nhất là các chương trình chat trên ĐTDĐ như Ola, ViTalk,....để đang nhập vào tài khoảng Yahoo của bạn!
Mình chỉ nghĩ vậy thôi, không biết có đúng hay không nữa???
Mình chỉ nghĩ vậy thôi, không biết có đúng hay không nữa???
TranHoangNhanI12C- Tổng số bài gửi : 45
Join date : 16/02/2012
VOS - Giọng đọc văn bản truyền cảm
Tháng 09/2009, nhóm nghiên cứu thuộc Phòng thí nghiệm Trí tuệ nhân tạo (AILAB), trường ĐH Khoa học tự nhiên, ĐH Quốc gia TP.HCM đã xây dựng thành công hệ thống tổng hợp tiếng Việt có tên gọi “tiếng nói phương Nam” (VOS) phiên bản 1.6DaoThaiHuyI12C đã viết:Text-To-Speech of Vietnam, phần mềm giúp máy tính nói tiếng việt
+ Text-To-Speech of Vietnam được thiết kế như một thư viện phần mềm, sẵn sàng cho các nhà phát triển tích hợp, đem lại khả năng nói tiếng Việt cho mọi chương trình ứng dụng.
+ Text-To-Speech of Vietnam là một trong những thành quả thuộc dự án Hệ xử lý Ngôn ngữ tiếng Việt gồm hệ thống một loạt các engine, từ đầu vào nhận dạng chữ viết - tiếng nói, đến các xử lý như dịch tự động, phân tích - hiểu ngôn ngữ, kiểm tra chính tả - ngữ pháp, tìm kiếm theo nội dung, và cuối cùng đầu ra là tổng hợp tiếng nói. Trong quá trình nghiên cứu, triển khai thực hiện các nội dung trên, Tác giả đã tích hợp vào luận văn tốt nghiệp của mình tại trường Đại Học Dân Lập Hùng Vương khoá 1999-2003 và đạt điểm thủ khoa 10/10, và nay là Text-To-Speech of Vietnam - phần mềm thực hiện chuyển văn bản tiếng Việt thành tiếng nói. Text-To-Speech of Vietnam được thiết kế như một thư viện phần mềm, sẵn sàng cho các nhà phát triển tích hợp, đem lại khả năng nói tiếng Việt cho mọi chương trình ứng dụng.
Công nghệ chuyển văn bản thành tiếng nói
Chuyển văn bản thành tiếng nói (Text To Speech - TTS) là thuật ngữ chỉ việc tự động đọc bằng tiếng nói tổng hợp các văn bản hay nội dung bất kỳ. TTS khác với PRP (Pre-Recorded Prompts), là hệ thống phát thông báo bằng tiếng nói với thông tin cần cung cấp theo một kịch bản dựng sẵn gồm các đoạn cố định và một số phần có thể thay đổi (như các thông báo ở nhà ga, bến xe hoặc báo giờ qua điện thoại).
Quá trình chuyển từ văn bản thành tiếng nói gồm hai phần:
a) Xử lý văn bản: chuẩn hóa văn bản, cách đọc các ký hiệu của ngôn ngữ, xác định các thông tin ngữ âm, ngữ điệu từ văn bản sau đó chuyển thành dạng biểu diễn thích hợp với bộ tổng hợp tiếng nói.
b) Tổng hợp tiếng nói: là phần trực tiếp tạo ra tín hiệu tiếng nói, phần này sẽ sinh ra tín hiệu tiếng nói tương ứng với văn bản ở phần trước. Có nhiều phương pháp tạo tiếng nói tổng hợp nhưng hiện chỉ có hai phương pháp được sử dụng trong các hệ TTS: một là tổng hợp bằng cách ghép nối các đoạn ngắn của tiếng nói tự nhiên được ghi âm trước, sau đó phát lại; hai là tổng hợp bằng các luật dựa trên mô hình tạo tiếng nói con người và các quy tắc ngữ âm.
• Tổng hợp tiếng nói dựa trên ghép nối: Đơn giản và tự nhiên nhất là ghi âm chính tiếng nói con người và sau đó phát lại, kỹ thuật này có thể áp dụng với mọi âm thanh chứ không chỉ riêng tiếng nói! Vấn đề mấu chốt của phương pháp này là làm trơn chỗ ghép các đơn vị khi tổng hợp và thay đổi được các tham số đặc trưng để diễn tả ngữ điệu của câu. Do đó, chọn độ dài của đoạn tiếng nói tự nhiên làm đơn vị để lưu trữ là điều quan trọng. Các ngôn ngữ như tiếng Anh, Pháp, đơn vị thường được chọn là diphone (hai nửa của hai âm vị liền nhau), còn tiếng Việt, đoạn tiếng nói thường là phụ âm đầu, vần và có thể là cả âm tiết. Ưu điểm của phương pháp là ban đầu dễ triển khai, tiếng nói tạo ra chính là tiếng người (đương nhiên!), hạn chế của nó là dữ liệu lớn, thêm giọng nói là công việc tốn kém và các tham số đặc trưng chỉ có thể điều khiển hạn chế, điều này dễ dẫn đến méo tiếng và sẽ rất không tự nhiên khi ghép thành đoạn dài ứng với cả câu.
• Tổng hợp tiếng nói bằng các luật: Tìm hiểu bản chất, các đặc trưng của tiếng nói, và quy luật để tạo tiếng nói con người là mục tiêu của ngành khoa học nghiên cứu xử lý tiếng nói từ rất lâu. Các nghiên cứu về xử lý tiếng nói đã chỉ ra rằng, về mặt tín hiệu, bộ máy phát âm của con người tương đương với một hệ thống gồm nguồn âm, các bộ lọc và sự tán xạ. Mô hình được áp dụng nhiều nhất là mô hình nguồn âm - bộ lọc (source-filter), phương pháp tổng hợp theo mô hình này được gọi là tổng hợp formant. Phương pháp tổng hợp formant có ưu điểm là kích thước toàn hệ thống rất nhỏ gọn vì không yêu cầu dữ liệu mà chỉ gồm các quy tắc, mọi tham số tiếng nói có thể điều khiển dễ dàng, không giới hạn, thuận tiện khi cần tạo thêm giọng mới, tuy nhiên, tiếng nói của nó tạo ra vẫn còn một chút kiểu "robot". Để tổng hợp được một ngôn ngữ, cần phải nghiên cứu để xác định các đặc trưng ngữ âm của hệ thống âm vị, và các quy tắc cấu âm của ngôn ngữ. Do vậy, không nhiều ngôn ngữ có thể tổng hợp được bằng phương pháp này, hệ Text-To-Speech of Vietnam được giới thiệu dưới đây là kết quả đầu tiên thực hiện thành công cho tiếng Việt.
Hệ TTS tiếng việt - Text-To-Speech of Vietnam
Text-To-Speech of Vietnam là hệ TTS tiếng Việt dựa trên tiếng nói được tổng hợp bằng phương pháp tổng hợp formant, có nghĩa là tiếng nói của Text-To-Speech of Vietnam tạo ra không phải là tiếng nói tự nhiên được ghi từ trước sau đó phát lại, mà bằng phương pháp sinh ra tín hiệu tiếng nói trên cơ sở các thông số đặc trưng của ngữ âm và luật cấu âm của tiếng Việt (xem sơ đồ).
Sơ đồ khối hệ Text-To-Speech of Vietnam
Text-To-Speech of Vietnam là phần mềm đầu tiên có thể tổng hợp được tiếng Việt bằng các luật từ các thành phần đặc trưng của ngữ âm tiếng Việt, tự động đọc không hạn chế văn bản tiếng Việt. Ngoài ra, Text-To-Speech of Vietnam còn là một công cụ mới để nghiên cứu ngữ âm tiếng Việt - Phân tích bằng Tổng hợp. Text-To-Speech of Vietnam thực hiện phân tích và chuẩn hóa văn bản tiếng Việt, đọc khá rõ tất cả các âm tiết tiếng Việt, thể hiện hợp lý ngữ điệu khi đọc các loại câu khác nhau, có thể điều khiển không hạn chế tốc độ đọc, cao độ của giọng nói để thành các giọng nói khác nhau. Đặc biệt, kích thước toàn bộ của Text-To-Speech of Vietnam rất nhỏ, không cần file dữ liệu riêng, toàn bộ đều nằm trên file thực thi (chương trình minh hoạ chỉ 350KB), thuận tiện để tích hợp vào mọi loại ứng dụng trên các hệ điều hành, phần cứng khác nhau, hoặc các thiết bị có tài nguyên hạn chế (như thiết bị cầm tay, di động,...). Text-To-Speech of Vietnam xử lý văn bản tiếng Việt đầu vào thuộc bảng mã TCVN 5712 và Unicode dựng sẵn, tạo dãy tín hiệu tiếng nói đầu ra mã hóa theo chuẩn PCM (16 bit, mono, có thể thay đổi tần số lấy mẫu tùy ý), có thể ghi lên đĩa thành các file theo định dạng WAV hoặc phát trực tiếp ra loa.
Phần mềm minh họa
Phần mềm VTTSDemo.exe minh họa các tính năng của Text-To-Speech of Vietnam, chạy trên MS Windows có thể tải xuống tại
http://www.text-to-speech.r8.org. Phần mềm này cho phép khảo sát một số đặc tính như điều chỉnh tốc độ đọc, cao độ của giọng nói, cũng như một số khả năng xử lý văn bản tiếng Việt để tạo thành tiếng nói tương ứng. Cách sử dụng và ý nghĩa của một số điều khiển của phần mềm như sau:
• Nhập đoạn văn bản tiếng Việt vào ô soạn thảo (đánh máy hoặc dán từ Clipboard) theo mã TCVN3 (mọi phiên bản Windows) hoặc Unicode dựng sẵn (Windows XP, Server 2003).
• Chọn (bôi đen) một đoạn hoặc đặt con trỏ về đầu đoạn cần đọc.
• Nhấn nút Speak để đọc đoạn văn bản được chọn, nhấn nút Stop để dừng giữa chừng, nếu ô soạn thảo trống (rỗng) chương trình sẽ đọc bản thông báo thời gian hiện tại.
• Chương trình có thể đọc được các dãy số, ngày-tháng, viết tắt theo kiểu tiếng Việt.
• Thay đổi giá trị Speed (tốc độ, tính bằng số âm tiết sẽ đọc trong 1 phút) để khảo sát sự điều khiển tốc độ đọc.
• Thay đổi giá trị Pitch (cao độ) để khảo sát sự điều khiển cao độ giọng nói.
Phát triển ứng dụng với thư viện lập trình
Toàn bộ thư viện lập trình chuyển văn bản thành tiếng nói cho tiếng Việt dựa trên tổng hợp formant - Text-To-Speech of Vietnam được đóng gói trong chương trình, trong thư viện hàm DLL hoặc trong Component (OCX).
Để sử dụng, tích hợp nó cùng với ứng dụng quy cách ứng với từng ngôn ngữ lập trình cụ thể.
Để thử nghiệm, chỉ cần gọi duy nhất hàm TTSvn, hàm này sẽ chuyển đoạn văn bản mong muốn thành tín hiệu tiếng nói và tự động phát ra loa.
Hình thức cung cấp Text-To-Speech of Vietnam
Text-To-Speech of Vietnam được thiết kế thành một engine, có thể cung cấp ở các dạng:
• Thư viện phần mềm lập trình dạng DLL, COM.
• Ứng dụng trên server
• Phần mềm ứng dụng độc lập
• Hợp tác phát triển các ứng dụng đặc thù
• Đóng gói tương thích với SAPI
• Phát triển thành phần mềm nhúng (firmware) hay cứng hoá, tích hợp phần cứng theo yêu cầu (thiết bị tài nguyên hạn chế, máy chuyên dụng, đồ chơi, robot...)
Khả năng ứng dụng của Text-To-Speech of Vietnam
Thư viện lập trình Text-To-Speech of Vietnam sẵn sàng để tích hợp vào lớp lớn các ứng dụng:
• Hệ thống đáp ứng bằng tiếng nói
• Hệ thống giao tiếp người-máy bằng tiếng nói
• Thêm lựa chọn cung cấp thông báo bằng tiếng Việt cho các ứng dụng
• Các ứng dụng hỗ trợ người tàn tật (khiếm thị)
• Các hệ thống telematics
• Các hệ thống thông điệp hợp nhất
• Các hệ thống khai thác thông tin qua điện thoại
• Các ứng dụng thông báo bằng tiếng nói với nội dung thay đổi như: các hệ thống xếp chỗ tự động trong các ngân hàng, phòng bán vé...
• Ứng dụng soát lỗi chính tả, đọc các thông tin trên màn hình giúp người dùng
• Các ứng dụng trong giáo dục
Tuy nhiên sẽ không có link cho mọi người tải phần mềm về, chúng chỉ có thể dùng thử từ AILAB . So sánh với phần mềm trên thì thấy giọng đọc tự nhiên hơn hẳn!
Ứng dụng do TS. Vũ Hải Quân - Giảng viên trường Đại học Khoa học Tự nhiên viết phục vụ cho quá trình nghiên cứu và giảng dạy.
Hệ thống phân tích các câu, chữ rất thông minh có khả năng ngắt âm sau dấu phẩy, dấu chấm câu rất tốt. Hơn nữa, các âm điệu đơn vị cũng được mở rộng với một cụm từ cho tiếng nói tự nhiên hơn.
Để thực hiện đọc văn bản trên nền web chúng ta hãy truy cập vào AILAB (Artificial Intelligence Laboratory) trang web phục vụ cho việc nghiên cứu giảng dạy và phát triển các ứng dụng về trí tuệ nhân tạo của trường Đại học Khoa học Tự nhiên:
Copy (sao chép) đoạn văn bản cần đọc vào khung click chọn nút có tên "Version 1.6" một cửa sổ phát nhạc hiện ra, hiện tại ứng dụng đã có thể đọc tối đa 150 chữ, phiên bản càng về sau sẽ đọc được số chữ nhiều hơn (ảnh trên).
Hiện tại ALIAB đang phát triển phiên bản 2.0, hy vọng ứng dụng sẽ sớm hoàn thiện và được phát triển rộng rãi.
NguyenNgocDuy(I12A)- Tổng số bài gửi : 17
Join date : 16/02/2012
Re: Thảo luận Bài 4
[quote="NguyenXuanTri28"]Job Queue: là hàng chờ công việc, chứa các tiến trình chờ được vận hành.
Ready Queue: là hàng chờ sẵn sàng, chứa các tiến trình chờ được cấp CPU.
Giống nhau:- Đều là các hàng chờ chứa các tiến trình cần vận hành.
- Đều cần thuật giải điều phối để sắp xếp các tiến trình.
Các bạn có thể cho ví dụ cụ thể được không????
Ready Queue: là hàng chờ sẵn sàng, chứa các tiến trình chờ được cấp CPU.
Giống nhau:- Đều là các hàng chờ chứa các tiến trình cần vận hành.
- Đều cần thuật giải điều phối để sắp xếp các tiến trình.
Các bạn có thể cho ví dụ cụ thể được không????
luthioanh-I12A- Tổng số bài gửi : 29
Join date : 17/02/2012
Age : 39
Ví dụ Job Queue và Ready Queue
[quote="luthioanh-I12A"]
VD1: Tại vòng sơ tuyển thầy giáo chọn ra trong danh sách lớp 1 nhóm gồm 20 ngưởi (đưa vào Job Queue), bước vào vòng bán kết tiếp tục tuyển ra 5 người để chuẩn bị lên dĩa ( đưa vào Ready Queue), tiếp theo, tại 1 thời điểm thầy chỉ gọi ra 1 bạn lên bảng làm bài tập!..
VD2: nguyên lý trò chơi Ai là Triệu phú:
- Trong trường quay có 10 người chơi (Job Queue)
- Căn cứ vào câu trả lời của các thí sinh, ban tổ chức sẽ chọn ra những thí sinh có câu trả lời đúng để đưa vào Ready Queue.
- Tại 1 thời điểm chỉ có duy nhất 1 thí sinh có câu trả lời đúng và nhanh nhất được ngồi vào chiếc ghế nóng!..
Các bạn tham khảo, bổ sung thêm!
Hi, chào bạn. Câu hỏi này nằm trong đề thi giữa kỳ của lớp I92C, đây là ví dụ bạn có thể tham khảo:NguyenXuanTri28 đã viết:Job Queue: là hàng chờ công việc, chứa các tiến trình chờ được vận hành.
Ready Queue: là hàng chờ sẵn sàng, chứa các tiến trình chờ được cấp CPU.
Giống nhau:- Đều là các hàng chờ chứa các tiến trình cần vận hành.
- Đều cần thuật giải điều phối để sắp xếp các tiến trình.
Các bạn có thể cho ví dụ cụ thể được không????
VD1: Tại vòng sơ tuyển thầy giáo chọn ra trong danh sách lớp 1 nhóm gồm 20 ngưởi (đưa vào Job Queue), bước vào vòng bán kết tiếp tục tuyển ra 5 người để chuẩn bị lên dĩa ( đưa vào Ready Queue), tiếp theo, tại 1 thời điểm thầy chỉ gọi ra 1 bạn lên bảng làm bài tập!..
VD2: nguyên lý trò chơi Ai là Triệu phú:
- Trong trường quay có 10 người chơi (Job Queue)
- Căn cứ vào câu trả lời của các thí sinh, ban tổ chức sẽ chọn ra những thí sinh có câu trả lời đúng để đưa vào Ready Queue.
- Tại 1 thời điểm chỉ có duy nhất 1 thí sinh có câu trả lời đúng và nhanh nhất được ngồi vào chiếc ghế nóng!..
Các bạn tham khảo, bổ sung thêm!
NguyenNgocDuy(I12A)- Tổng số bài gửi : 17
Join date : 16/02/2012
Khái niệm IPC
IPC (Interprocess Communication)
Truyền thông giữa các quá trình IPC là một tập các kỹ thuật được dùng bởi các chương trình và các quá trình đang chạy trên hệ điều hành đa nhiệm, hay giữa các máy tính nối mạng. Có hai loại IPC. Loại LPC (local procedure call) được dùng trong hệ điều hành đa nhiệm cho phép các tác vụ đang chạy đồng thời trao đổi thông tin với nhau. Chúng có thể dùng chung không gian nhớ, đồng bộ các tác vụ và gửi thông điệp cho nhau. Loại RPC (remote procedure call) tương tự như LPC nhưng làm việc trên mạng. RPC cung cấp cơ cấu truyền thông cho khách hàng để truyền thông các yêu cầu cần phục vụ của họ đến server back-end. Nếu bạn nghĩ các ứng dụng client/server như một chương trình đã được chia thành các hệ thống front-end và back-end, thì RPC có thể được xem như một thành phần để tái hợp chúng trên mạng. Cơ chế truyền thông giữa các quá trình trong UNIX là pipe và cơ chế truyền thông giữa các quá trình trên mạng là socket. Socket cũng trở thành một phần của UNIX khi giao thức TCP/IP được tích hợp vào Berkeley UNIX đầu năm 1980. Đây là một đề án được tài trợ bởi DARPA. TỪ MỤC LIÊN QUAN API (Application Programming Interface); Middleware and Messaging; MOM (Message-Oreinted Middleware); Named Pipies; RPC (Remote Procedure Call); Sockets API; và WinSock
Truyền thông giữa các quá trình IPC là một tập các kỹ thuật được dùng bởi các chương trình và các quá trình đang chạy trên hệ điều hành đa nhiệm, hay giữa các máy tính nối mạng. Có hai loại IPC. Loại LPC (local procedure call) được dùng trong hệ điều hành đa nhiệm cho phép các tác vụ đang chạy đồng thời trao đổi thông tin với nhau. Chúng có thể dùng chung không gian nhớ, đồng bộ các tác vụ và gửi thông điệp cho nhau. Loại RPC (remote procedure call) tương tự như LPC nhưng làm việc trên mạng. RPC cung cấp cơ cấu truyền thông cho khách hàng để truyền thông các yêu cầu cần phục vụ của họ đến server back-end. Nếu bạn nghĩ các ứng dụng client/server như một chương trình đã được chia thành các hệ thống front-end và back-end, thì RPC có thể được xem như một thành phần để tái hợp chúng trên mạng. Cơ chế truyền thông giữa các quá trình trong UNIX là pipe và cơ chế truyền thông giữa các quá trình trên mạng là socket. Socket cũng trở thành một phần của UNIX khi giao thức TCP/IP được tích hợp vào Berkeley UNIX đầu năm 1980. Đây là một đề án được tài trợ bởi DARPA. TỪ MỤC LIÊN QUAN API (Application Programming Interface); Middleware and Messaging; MOM (Message-Oreinted Middleware); Named Pipies; RPC (Remote Procedure Call); Sockets API; và WinSock
HuaTranTuQuyen(I12A)- Tổng số bài gửi : 10
Join date : 20/02/2012
Re: Thảo luận Bài 4
nguyenthanhphongHC11TH2A đã viết:Job Queue: là hàng chờ công việc, chứa các tiến trình chờ được vận hành.
Ready Queue: là hàng chờ sẵn sàng, chứa các tiến trình chờ được cấp CPU.
Giống nhau:
- Đều là các hàng chờ chứa các tiến trình cần vận hành.
- Đều cần thuật giải điều phối để sắp xếp các tiến trình.
Khác nhau:
- Dùng giải thuật điều phối chậm(Long - term Scheduler) để đưa các tiến trình từ Job Queue vào Ready Queue.
- Dùng giải thuật điều phối nhanh(Short - term Scheduler) chọn các tiến trình trong Ready Queue để cấp CPU.
Job Queue : Có nhiều thời gian xử lý hơn.
Ready Queue : Có ít thời gian so với Job Queue.
Có gì thiếu thì các bạn bổ sung dùm mình cho hoàn chỉnh hơn. Thanks
Mình xin bổ sung thêm vài ý:
Đ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..
-Đ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).
Ví dụ:
- Job Queue chứa các nhân viên của công ty sẵn sàng được Tuyển chọn lên gặp Giám đốc !
- Một "Phó giám đốc" với vai trò của Long-Term Scheduler có trách nhiệm chọn ra khoảng 10 nhân viên đủ 2 loại Hướng CPU (dùng máy tính nhiều) và Hướng I/O (ít dùng máy tính, hay đi Tiếp thị).
- Giám đốc (Short-Term Scheduler) sẽ liên tục chọn 1 trong 10 nhân viên kể trên theo nhu cầu công việc cụ thể của mình (giả sử phòng Giám đốc chỉ có 1 máy tính).
- Nếu Long-Term Scheduler tuyển nhiều nhân viên Hướng CPU quá, họ sẽ phải chờ nhau nhiều do chỉ có 1 máy tính. Nhưng nhiều nhân viên Hướng I/O quá (nhiều người đi tiếp thị), máy tính sẽ ít được dùng !
nguyenthimao_I12A- Tổng số bài gửi : 35
Join date : 16/02/2012
Sơ Lược Các Cơ Chế Thông Tin Liên lạc
1. Trao đổi thông điệp (Message)
Giới thiệu: Hệ điều hành còn cung cấp một cơ chế liên lạc giữa các tiến trình không thông qua việc chia sẻ một tài nguyên chung , mà thông qua việc gởi thông điệp. Để hỗ trợ cơ chế liên lạc bằng thông điệp, hệ điều hành cung cấp các hàm IPC chuẩn (Interprocess communication), cơ bản là hai hàm:
Send(message) : gởi một thông điệp
Receive(message) : nhận một thông điệp
Nếu hai tiến trình P và Q muốn liên lạc với nhau, cần phải thiết lập một mối liên kết giữa hai tiến trình, sau đó P, Q sử dụng các hàm IPC thích hợp để trao đổi thông điệp, cuối cùng khi sự liên lạc chấm dứt mối liên kết giữa hai tiến trình sẽ bị hủy. Có nhiều cách thức để thực hiện sự liên kết giữa hai tiến trình và cài đặt các thao tác send /receive tương ứng : liên lạc trực tiếp hay gián tiếp, liên lạc đồng bộ hoặc không đồng bộ , kích thước thông điệp là cố định hay không ? Nếu các tiến trình liên lạc theo kiểu liên kết tường minh, các hàm Send và Receive sẽ được cài đặt với tham số :
Send(destination, message) : gởi một thông điệp đến destination
Receive(source,message) : nhận một thông điệp từ source
Thảo luận: Đơn vị truyền thông tin trong cơ chế trao đổi thông điệp là một thông điệp, do đó các tiến trình có thể trao đổi dữ liệu ở dạng có cấu trúc.
2. Sockets
Giới thiệu: Một socket là một thiết bị truyền thông hai chiều tương tự như tập tin, chúng ta có thể đọc hay ghi lên nó, tuy nhiên mỗi socket là một thành phần trong một mối nối nào đó giữa các máy trên mạng máy tính và các thao tác đọc/ghi chính là sự trao đổi dữ liệu giữa các ứng dụng trên nhiều máy khác nhau.
Sử dụng socket có thể mô phỏng hai phương thức liên lạc trong thực tế : liên lạc thư tín (socket đóng vai trò bưu cục) và liên lạc điện thoại (socket đóng vai trò tổng đài) .
Các thuộc tính của socket:
Domaine: định nghĩa dạng thức địa chỉ và các nghi thức sử dụng. Có nhiều domaines, ví dụ UNIX, INTERNET, XEROX_NS, ...
Type: định nghĩa các đặc điểm liên lạc:
a) Sự tin cậy
b) Sự bảo toàn thứ tự dữ liệu
c) Lặp lại dữ liệu
d) Chế độ nối kết
e) Bảo toàn giới hạn thông điệp
f) Khả năng gởi thông điệp khẩn
Để thực hiện liên lạc bằng socket, cần tiến hành các thao tác ::
Tạo lập hay mở một socket
Gắn kết một socket với một địa chỉ
Liên lạc : có hai kiểu liên lạc tùy thuộc vào chế độ nối kết:
a) Liên lạc trong chế độ không liên kết : liên lạc theo hình thức hộp thư:
hai tiến trình liên lạc với nhau không kết nối trực tiếp
mỗi thông điệp phải kèm theo địa chỉ người nhận.
Hình thức liên lạc này có đặc điểm được :
người gởi không chắc chắn thông điệp của học được gởi đến người nhận,
một thông điệp có thể được gởi nhiều lần,
hai thông điệp đượ gởi theo một thứ tự nào đó có thể đến tay người nhận theo một thứ tự khác.
Một tiến trình sau khi đã mở một socket có thể sử dụng nó để liên lạc với nhiều tiến trình khác nhau nhờ sử hai primitive send và receive.
b) Liên lạc trong chế độ nối kết:
Một liên kết được thành lập giữa hai tiến trình. Trước khi mối liên kết này được thiết lập, một trong hai tiến trình phải đợi có một tiến trình khác yêu cầu kết nối. Có thể sử dụng socket để liên lạc theo mô hình client-serveur. Trong mô hình này, server sử dụng lời gọi hệ thống listen và accept để nối kết với client, sau đó , client và server có thể trao đổi thông tin bằng cách sử dụng các primitive send và receive.
Giới thiệu: Hệ điều hành còn cung cấp một cơ chế liên lạc giữa các tiến trình không thông qua việc chia sẻ một tài nguyên chung , mà thông qua việc gởi thông điệp. Để hỗ trợ cơ chế liên lạc bằng thông điệp, hệ điều hành cung cấp các hàm IPC chuẩn (Interprocess communication), cơ bản là hai hàm:
Send(message) : gởi một thông điệp
Receive(message) : nhận một thông điệp
Nếu hai tiến trình P và Q muốn liên lạc với nhau, cần phải thiết lập một mối liên kết giữa hai tiến trình, sau đó P, Q sử dụng các hàm IPC thích hợp để trao đổi thông điệp, cuối cùng khi sự liên lạc chấm dứt mối liên kết giữa hai tiến trình sẽ bị hủy. Có nhiều cách thức để thực hiện sự liên kết giữa hai tiến trình và cài đặt các thao tác send /receive tương ứng : liên lạc trực tiếp hay gián tiếp, liên lạc đồng bộ hoặc không đồng bộ , kích thước thông điệp là cố định hay không ? Nếu các tiến trình liên lạc theo kiểu liên kết tường minh, các hàm Send và Receive sẽ được cài đặt với tham số :
Send(destination, message) : gởi một thông điệp đến destination
Receive(source,message) : nhận một thông điệp từ source
Thảo luận: Đơn vị truyền thông tin trong cơ chế trao đổi thông điệp là một thông điệp, do đó các tiến trình có thể trao đổi dữ liệu ở dạng có cấu trúc.
2. Sockets
Giới thiệu: Một socket là một thiết bị truyền thông hai chiều tương tự như tập tin, chúng ta có thể đọc hay ghi lên nó, tuy nhiên mỗi socket là một thành phần trong một mối nối nào đó giữa các máy trên mạng máy tính và các thao tác đọc/ghi chính là sự trao đổi dữ liệu giữa các ứng dụng trên nhiều máy khác nhau.
Sử dụng socket có thể mô phỏng hai phương thức liên lạc trong thực tế : liên lạc thư tín (socket đóng vai trò bưu cục) và liên lạc điện thoại (socket đóng vai trò tổng đài) .
Các thuộc tính của socket:
Domaine: định nghĩa dạng thức địa chỉ và các nghi thức sử dụng. Có nhiều domaines, ví dụ UNIX, INTERNET, XEROX_NS, ...
Type: định nghĩa các đặc điểm liên lạc:
a) Sự tin cậy
b) Sự bảo toàn thứ tự dữ liệu
c) Lặp lại dữ liệu
d) Chế độ nối kết
e) Bảo toàn giới hạn thông điệp
f) Khả năng gởi thông điệp khẩn
Để thực hiện liên lạc bằng socket, cần tiến hành các thao tác ::
Tạo lập hay mở một socket
Gắn kết một socket với một địa chỉ
Liên lạc : có hai kiểu liên lạc tùy thuộc vào chế độ nối kết:
a) Liên lạc trong chế độ không liên kết : liên lạc theo hình thức hộp thư:
hai tiến trình liên lạc với nhau không kết nối trực tiếp
mỗi thông điệp phải kèm theo địa chỉ người nhận.
Hình thức liên lạc này có đặc điểm được :
người gởi không chắc chắn thông điệp của học được gởi đến người nhận,
một thông điệp có thể được gởi nhiều lần,
hai thông điệp đượ gởi theo một thứ tự nào đó có thể đến tay người nhận theo một thứ tự khác.
Một tiến trình sau khi đã mở một socket có thể sử dụng nó để liên lạc với nhiều tiến trình khác nhau nhờ sử hai primitive send và receive.
b) Liên lạc trong chế độ nối kết:
Một liên kết được thành lập giữa hai tiến trình. Trước khi mối liên kết này được thiết lập, một trong hai tiến trình phải đợi có một tiến trình khác yêu cầu kết nối. Có thể sử dụng socket để liên lạc theo mô hình client-serveur. Trong mô hình này, server sử dụng lời gọi hệ thống listen và accept để nối kết với client, sau đó , client và server có thể trao đổi thông tin bằng cách sử dụng các primitive send và receive.
TruongQuocTrung_I12A- Tổng số bài gửi : 18
Join date : 14/03/2012
[color=red][b]CÓ MẤY PHUƠNG THỨC LIÊN LẠC GIỮA CÁC TIẾN TRÌNH????[/b][/color]
Phương thức liên lạc giữa các tiến trình qua IPC
Liên lạc trực tiếp (Direct Communications)
- Theo địa chỉ đối xứng (Symmetric Scheme)
+ Send (P,Message) - Gửi thông điệp cho P
+ Recieve (Q,Message) - Nhận thông điệp từ Q
+ Đặc điểm :
1. Liên kết được thiết lập tự động giữa mỗi cặp tiến trình.
2. Liên kết chỉ giữa 2 tiến trình.
3. Chỉ có 1 liên kết giữa mỗi cặp.
4. Tính đối xứng của liên lạc (2 bên đều biết đích xác tên của nhau khi Gửi/Nhận).
- Theo địa chỉ phi đối xứng (Asymmetric Sheme)
+ Send (P,Message) - Gửi thông điệp cho P
+ Receive (id, Message) - Nhận thông điệp đến từ tiến trình bất kỳ, Biến id chứa số hiệu tiến trình gửi.
Liên lạc gián tiếp (Indirect Communications)
- Qua các hộp thư (Mailboxes) hoặc cổng (Ports).
- Hộp thư là một thực thể qua đó thông điệp được gửi đến và lấy ra.
- Mỗi hộp thư có định dạng riêng.
- Hai tiến trình phải chung nhau một hộp thư nào đó.
- Hai loại hộp thư:
+ Hộp thư tiến trình (Process Mailbox) : Nằm trong vùng địa chỉ của một tiến trình nào đó.
+ Hôp thư hệ điều hành (OS Mailbox) : Nằm trong vùng địa chỉ của hệ điều hành.
Liên lạc trực tiếp (Direct Communications)
- Theo địa chỉ đối xứng (Symmetric Scheme)
+ Send (P,Message) - Gửi thông điệp cho P
+ Recieve (Q,Message) - Nhận thông điệp từ Q
+ Đặc điểm :
1. Liên kết được thiết lập tự động giữa mỗi cặp tiến trình.
2. Liên kết chỉ giữa 2 tiến trình.
3. Chỉ có 1 liên kết giữa mỗi cặp.
4. Tính đối xứng của liên lạc (2 bên đều biết đích xác tên của nhau khi Gửi/Nhận).
- Theo địa chỉ phi đối xứng (Asymmetric Sheme)
+ Send (P,Message) - Gửi thông điệp cho P
+ Receive (id, Message) - Nhận thông điệp đến từ tiến trình bất kỳ, Biến id chứa số hiệu tiến trình gửi.
Liên lạc gián tiếp (Indirect Communications)
- Qua các hộp thư (Mailboxes) hoặc cổng (Ports).
- Hộp thư là một thực thể qua đó thông điệp được gửi đến và lấy ra.
- Mỗi hộp thư có định dạng riêng.
- Hai tiến trình phải chung nhau một hộp thư nào đó.
- Hai loại hộp thư:
+ Hộp thư tiến trình (Process Mailbox) : Nằm trong vùng địa chỉ của một tiến trình nào đó.
+ Hôp thư hệ điều hành (OS Mailbox) : Nằm trong vùng địa chỉ của hệ điều hành.
TruongQuocTrung_I12A- Tổng số bài gửi : 18
Join date : 14/03/2012
Re: Thảo luận Bài 4
NguyenHongHaiI12C đã viết:Trong lập trình, Socket là một API (Application Programming Interface) cung cấp các phương thức để giao tiếp thông qua mạng. Trước khi bắt đầu tìm hiểu và viết một ví dụ đơn giản về socket, bạn có thể tham khảo bài viết “Networking – Một số khái niệm cơ bản“ để có cái nhìn sơ lược về những khái niệm cơ bản trong lập trình mạng.
Các lớp .Net cơ bản trong lập trình mạng
Các lớp này được cung cấp trong hai namespace System.Net và System.Net.Sockets. Hai namespace này chứa rất nhiều lớp dùng trong lập trình mạng, nhưng trong phạm vi bài viết ta chỉ quan tâm đến các lớp sau::
Class: IPAddress
Namespace: System.Net
Desciption: Provides an Internet Protocol (IP) address.
Class: IPEndPoint
Namespace: System.Net
Desciption:Represents a network endpoint as an IP address and a port number.
Class: TcpListener
Namespace: System.Net.Sockets
Desciption:Listens for connections from TCP network clients.
Class: Socket
Namespace: System.Net.Sockets
Desciption:Implements the Berkeley sockets interface.
Class: TcpClient
Namespace: System.Net.Sockets
Desciption:Provides client connections for TCP network services.
Class:NetworkStream
Namespace: System.Net.Sockets
Desciption: Provides the underlying stream of data for network access.
Kết nối Server-Client với TCP/IP
Khi được chạy, server cần được xác định rõ địa chỉ IP và sẽ “lắng nghe” trên một port cụ thể. Server sẽ nằm trong trạng thái này cho đến khi client gửi đến một yêu cầu kết nối. Sau khi được server chấp nhận, một connection sẽ hình thành cho phép server và client giao tiếp với nhau.
Cụ thể hơn, các bước tiến hành trên server và client mà ta cần thực hiện sử dụng giao thức TCP/IP trong C# (có thể chạy server và client trên cùng một máy):
Server:
Tạo một đối tượng System.Net.Sockets.TcpListener để bắt đầu “lắng nghe” trên một cổng cục bộ.
Đợi và chấp nhận kết nối từ client với phương thức AccepSocket(). Phương thức này trả về một đối tượng System.Net.Sockets.Socket dùng để gửi và nhận dữ liệu.
Thực hiện giao tiếp với client.
Đóng Socket.
Thông thường quy trình này sẽ được đặt trong một vòng lặp (lặp lại bước 2) để chấp nhận nhiều kết nối cùng lúc (sử dụng Thread) hoặc các kết nối lần lượt.
Client:
Tạo một đối tượng System.Net.Sockets.TcpClient
Kết nối đến server với địa chỉ và port xác định với phương thức TcpClient.Connect()
Lấy luồng (stream) giao tiếp bằng phương thức TcpClient.GetStream().
Thực hiện giao tiếp với server.
Đóng luồng và socket.
Quy trình này có thể được minh họa theo mô hình sau:
BẠN LÊN RESIZE LẠI CÁI HÌNH CHO NÓ NHỎ LẠI RỒI HÃY UP LÊN NHÉ, TO QUÁ BỊ CHE THẾ KIA THÌ CŨNG KHÓ CHO NGƯỜI XEM NHÉ .
THANKS BÀI VIẾT HAY
trinhvanminh_11h1010077- Tổng số bài gửi : 90
Join date : 15/02/2012
Age : 39
Đến từ : tphcm
Re: Thảo luận Bài 4
Admin đã viết:Thảo luận những vấn đề liên quan đến Bài 4
IPC: là cơ chế cho phép các tiến trình liên lạc và đồng bộ các hoạt động với nhau mà không cần dùng chung bộ nhớ. IPC cung cấp cho chúng ta 2 thao tác chính để thực hiện tiến trình: Gửi và nhận thông điệp!
* Nói về phần liên lạc: có 2 loại liên lạc
- Liên lac trực tiếp : là 2 tiến trình sẽ biết chính xác tên nhau và chỉ nhận thông điệp từ bên đối tác đối xứng, ngoài ra ko nhận bất kỳ thông điệp từ một bên thứ 3 nào khác ->liên kết trực tiếp.
VD: 2 bạn đang trò chuyện trực tiếp với nhau, mọi thông tin từ người này sẽ được truyền trực tiếp cho người mình đang đối diện.
- Liên lạc gián tiếp: một trong 2 tiến trình đang liên lạc có thể nhận được thông điệp từ bất kỳ một tiến trình nào khác, mọi thông điệp đều phải thông qua một nơi gọi là trung gian để tiếp tục vận chuyển tới bên cần -> liên kết gián tiếp.
VD: - Chương trình ca nhạc theo yêu cầu, một người A nào đó muốn gửi tặng 1 bài hát đến cho một người B nào đó sẽ gửi yêu cầu đến ban tổ chức để yêu cầu, sau khi nhận được thì ban tổ chức sẽ đáp ứng yêu cầu của người A một cách nhanh nhất.
* Đồng bộ hóa liên lạc:
- Gửi thông điệp(Blocking Sernt): khi gặp lệnh này thì A-> ngủ ngay sau khi gửi thông điệp cho B, A chỉ thức sau khi B báo lại cho A là đã nhận được thông điệp mà A gửi.
- Gửi thông điệp không chờ(Noblocking Sent): A gửi cho B, sau đó A sẽ tiếp tục thực hiện những lệnh tiếp theo sau mà không phải ngủ để chờ B Receive lại.
- Nhận thông điệp có chờ(Blocking Reveice): chờ cho đến khi A gửi thông điệp thì mới tiếp tục thực hiện những lệnh kế tiếp từ B.
- Nhận thông điệp không chờ(Noblocking Receive): vẫn tiếp tục thực hiện những lệnh sau mà ko cần phải đợi A có tiếp tục gửi thông điệp cho B nữa hay là không.
leminhtam13(I12A)- Tổng số bài gửi : 18
Join date : 16/02/2012
Age : 34
Đến từ : Bến Tre
Re: Thảo luận Bài 4
[quote="VoThiHongNhung(I12A)"]Thông dịch(Interpretion) là lần lượt thi hành từng lệnh 1 thông qua 1 chương trình gọi là Trình thông dịch(Interpretor). "Thường được viết ở ngôn ngữ cấp thấp được lưu thành file với đuôi mở rộng *.bat(batch)"
Biên dịch(Compilation) là dịch 1 lần toàn bộ chương trình thông qua 1 chương trình gọi là Trình biên dịch (Compiler)==> Tạo ra file thực thi *.exe (sẽ chạy 1 lần mà không cần phải thông dịch lại).
Trong thông dịch thì mã nguồn không được dịch trước thành ngôn ngữ máy mà mỗi lần cần chạy chương trình thì mã nguồn mới được dịch để thực thi từng dòng 1 (line by line). Tất cả các ngôn ngữ không biện dịch ra mã máy điều phải sử dụng trình thông dịch (PHP, WScripts, Perl, Linux Shell, Python....). Các ngôn ngữ theo trình thông dịch thường được gọi là script (kịch bản)
Như thầy đã nói nếu bộ ngoại giao của 2 nước gặp nhau trường hợp nào thì mình dùng thông dịch, trường hợp nào thì biên dịch.Mình hok hiểu vấn đề này. Mong các bạn trả lời dùm...Thank you..
Biên dịch(Compilation) là dịch 1 lần toàn bộ chương trình thông qua 1 chương trình gọi là Trình biên dịch (Compiler)==> Tạo ra file thực thi *.exe (sẽ chạy 1 lần mà không cần phải thông dịch lại).
Trong thông dịch thì mã nguồn không được dịch trước thành ngôn ngữ máy mà mỗi lần cần chạy chương trình thì mã nguồn mới được dịch để thực thi từng dòng 1 (line by line). Tất cả các ngôn ngữ không biện dịch ra mã máy điều phải sử dụng trình thông dịch (PHP, WScripts, Perl, Linux Shell, Python....). Các ngôn ngữ theo trình thông dịch thường được gọi là script (kịch bản)
Như thầy đã nói nếu bộ ngoại giao của 2 nước gặp nhau trường hợp nào thì mình dùng thông dịch, trường hợp nào thì biên dịch.Mình hok hiểu vấn đề này. Mong các bạn trả lời dùm...Thank you..
luthioanh-I12A- Tổng số bài gửi : 29
Join date : 17/02/2012
Age : 39
Re: Thảo luận Bài 4
Phân biệt các loại trình điều phối
Đ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.
Điều phối vừa (Medium-term scheduler) :
• Là Short-Term Scheduler được thêm chức năng rút các tiến trình khỏi bộ nhớ, dẫn đến làm giảm Độ đa chương, sau đó đưa lại chúng vào bộ nhớ vào thời điểm thích hợp để tiếp tục thực hiện từ vị trí bị tạm ngừng trước đó.
• Nhờ cách điều phối này, hỗn hợp các tiến trình trong Ready Queue có tính tối ưu hơn.
Ví dụ: Phòng thực hành nhỏ, nhưng nhiều bạn đi học thực hành (nhiều tiến trình). Thầy (HĐH) sẽ đẩy một số bạn ra khỏi lớp (rút tiến trình ra khỏi bộ nhớ). Sau khi nhóm trong phòng học xong Thầy sẽ đẩy các bạn bên ngoài vào phòng học (đưa tiến trình vào bộ nhớ vào thời điểm thích hợp).
Đ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.
Điều phối vừa (Medium-term scheduler) :
• Là Short-Term Scheduler được thêm chức năng rút các tiến trình khỏi bộ nhớ, dẫn đến làm giảm Độ đa chương, sau đó đưa lại chúng vào bộ nhớ vào thời điểm thích hợp để tiếp tục thực hiện từ vị trí bị tạm ngừng trước đó.
• Nhờ cách điều phối này, hỗn hợp các tiến trình trong Ready Queue có tính tối ưu hơn.
Ví dụ: Phòng thực hành nhỏ, nhưng nhiều bạn đi học thực hành (nhiều tiến trình). Thầy (HĐH) sẽ đẩy một số bạn ra khỏi lớp (rút tiến trình ra khỏi bộ nhớ). Sau khi nhóm trong phòng học xong Thầy sẽ đẩy các bạn bên ngoài vào phòng học (đưa tiến trình vào bộ nhớ vào thời điểm thích hợp).
TranMinhTuan143(I12A)- Tổng số bài gửi : 38
Join date : 22/02/2012
Re: Thảo luận Bài 4
Trình bày những lý do công tác giữa các tiến trình
• Chia sẻ thông tin (Information Sharing): Một tiến trình sử dụng thông tin do tiến trình khác cung cấp. Ví dụ: các bạn trong lớp chia nhóm học. Nhóm một nghiên cứu chương 1, nhóm hai nghiên cứu chương 2. Sau đó, hai nhóm trao đổi thông tin cho nhau. Kết quả hai nhóm mau chóng tìm hiểu hết hai chương.
• Tăng tốc tính toán (Computation Speedup): Các tiến trình cùng làm việc song song trên 1 hoặc nhiều máy để giải quyết bài toán chung.
• Đảm bảo tính đơn thể (Modularity): Chương trình được chia thành các đơn thể chức năng vận hành trong các tiến trình hoặc luồng khác nhau. Ví dụ: mỗi bạn học một bài, đảm bảo tính đơn thể.
• Đảm bảo tính tiện dụng (Convenience): Người dùng có nhu cầu làm nhiều việc một lúc: Soạn thảo, In ấn, Duyệt Web, Lấy file về, Biên dịch chương trình, Kiểm tra chính tả,...
• Chia sẻ thông tin (Information Sharing): Một tiến trình sử dụng thông tin do tiến trình khác cung cấp. Ví dụ: các bạn trong lớp chia nhóm học. Nhóm một nghiên cứu chương 1, nhóm hai nghiên cứu chương 2. Sau đó, hai nhóm trao đổi thông tin cho nhau. Kết quả hai nhóm mau chóng tìm hiểu hết hai chương.
• Tăng tốc tính toán (Computation Speedup): Các tiến trình cùng làm việc song song trên 1 hoặc nhiều máy để giải quyết bài toán chung.
• Đảm bảo tính đơn thể (Modularity): Chương trình được chia thành các đơn thể chức năng vận hành trong các tiến trình hoặc luồng khác nhau. Ví dụ: mỗi bạn học một bài, đảm bảo tính đơn thể.
• Đảm bảo tính tiện dụng (Convenience): Người dùng có nhu cầu làm nhiều việc một lúc: Soạn thảo, In ấn, Duyệt Web, Lấy file về, Biên dịch chương trình, Kiểm tra chính tả,...
TranMinhTuan143(I12A)- Tổng số bài gửi : 38
Join date : 22/02/2012
Re: Thảo luận Bài 4
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ờ
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ờ
TranMinhTuan143(I12A)- Tổng số bài gửi : 38
Join date : 22/02/2012
Re: Thảo luận Bài 4
Câu 6: Trình bày khái niệm IPC với cơ chế gởi nhận thông điệp gởi thông điệp giữa các tiến trình. Cho ví dụ minh họa.
Trả lời:
- Khái niệm IPC
cách mà các quá trình hợp tác có thể giao tiếp với nhau trong một môi trường chia sẻ bộ nhớ. Cơ chế yêu cầu các quá trình này chia sẻ nhóm vùng đệm chung và mã cho việc cài đặt vùng đệm được viết trực tiếp bởi người lập trình ứng dụng. Một cách khác đạt được cùng ảnh hưởng cho hệ điều hành là cung cấp phương tiện cho các quá trình hợp tác giao tiếp với nhau bằng một phương tiện giao tiếp liên quá trình (IPC).
IPC cung cấp một cơ chế cho phép một quá trình giao tiếp và đồng bộ các hoạt động
của chúng mà không chia sẻ cùng không gian địa chỉ. IPC đặc biệt có ích trong môi
trường phân tán nơi các quá trình giao tiếp có thể thường trú trên các máy tính khác
được nối kết qua mạng. Thí dụ chương trình chat được dùng trên World Wide Web.
IPC được cung cấp bởi hệ thống truyền thông điệp, và các hệ thống truyền
thông điệp có thể được định nghĩa trong nhiều cách.
- Hệ thống truyền thông điệp
Chức năng của hệ thống truyền thông điệp là cho phép các quá trình giao tiếp
với các quá trình khác mà không cần sắp xếp lại dữ liệu chia sẻ. Chúng ta xem truyền
thông điệp được dùng như một phương pháp giao tiếp trong vi nhân. Trong cơ chế
này, các dịch vụ được cung cấp như các quá trình người dùng thông thường. Nghĩa là,
các dịch vụ hoạt động bên ngoài nhân. Giao tiếp giữa các quá trình người dùng được
thực hiện thông qua truyền thông điệp. Một phương tiện IPC cung cấp ít nhất hai hoạt
động: send(message) và receive(message).
Các thông điệp được gởi bởi một quá trình có thể có kích thước cố định hoặc
biến đổi. Nếu chỉ các thông điệp có kích thước cố định được gởi, việc cài đặt cấp hệ
thống là đơn giản hơn. Tuy nhiên, hạn chế này làm cho tác vụ lập trình sẽ phức tạp
hơn. Ngoài ra, các thông điệp có kích thước thay đổi yêu cầu việc cài đặt mức hệ
thống phức tạp hơn nhưng tác vụ lập trình trở nên đơn giản hơn.
Nếu quá trình P và Q muốn giao tiếp, chúng phải gởi các thông điệp tới và
nhận thông điệp từ với nhau; một liên kết giao tiếp phải tồn tại giữa chúng. Liên kết
này có thể được cài đặt trong những cách khác nhau. Ở đây chúng ta quan tâm đến cài
đặt luận lý hơn là cài đặt vật lý. Có vài phương pháp cài đặt một liên kết và các hoạt
động send/receive:
• Giao tiếp trực tiếp hay gián tiếp
• Giao tiếp đối xứng hay bất đối xứng
• Gởi bằng bản sao hay tham chiếu
• Thông điệp có kích thước cố định hay thay đổi
? Phân biệt liên lạc trực tiếp và gián tiếp.
Các quá trình muốn giao tiếp phải có cách tham chiếu với nhau. Chúng có thể
dùng giao tiếp trực tiếp hay gián tiếp.
Giao tiếp trực tiếp:
Với giao tiếp trực tiếp, mỗi quá trình muốn giao tiếp phải đặt tên rõ ràng người
gởi và người nhận của giao tiếp. Trong cơ chế này, các hàm cơ sở send và receive
được định nghĩa như sau:
• Send(P, message): gởi một thông điệp tới quá trình P
• Receive(Q, message): nhận một thông điệp từ quá trình Q
Một liên kết giao tiếp trong cơ chế này có những thuộc tính sau:
• Một liên kết được thiết lập tự động giữa mỗi cặp quá trình muốn giao tiếp.
Các quá trình cần biết định danh của nhau khi giao tiếp.
• Một liên kết được nối kết với chính xác hai quá trình
• Chính xác một liên kết tồn tại giữa mỗi cặp quá trình.
Cơ chế này hiển thị tính đối xứng trong việc đánh địa chỉ: nghĩa là, cả hai quá
trình gởi và nhận phải biết tên nhau để giao tiếp. Một thay đổi trong cơ chế này thực
hiện tính bất đối xứng trong việc đánh địa chỉ. Chỉ người gởi biết tên của người nhận;
người nhận không yêu cầu tên của người gởi. Trong cơ chế này các hàm cơ sở được
định nghĩa như sau:
o Send(P, message): gởi một thông điệp tới quá trình P
o Receive(id, message): nhận một thông điệp từ bất kỳ quá trình
nào; id khác nhau được đặt tên của quá trình mà giao tiếp xảy ra.
Sự bất lợi trong cả hai cơ chế đối xứng và không đối xứng là tính điều chỉnh
của việc định nghĩa quá trình bị giới hạn. Thay đổi tên của một quá trình có thể cần
xem xét tất cả định nghĩa quá trình khác. Tất cả tham chiếu tới tên cũ phải được tìm
thấy để mà chúng có thể được thay đổi thành tên mới. Trường hợp này là không mong
muốn từ quan điểm biên dịch riêng.
Giao tiếp gián tiếp:
Với giao tiếp gián tiếp, một thông điệp được gởi tới và nhận từ các hộp thư
(mailboxes), hay cổng (ports). Một hộp thư có thể được hiển thị trừu tượng như một
đối tượng trong đó các thông điệp có thể được đặt bởi các quá trình và sau đó các
thông điệp này có thể được xóa đi. Mỗi hộp thư có một định danh duy nhất. Trong cơ
chế này, một quá trình có thể giao tiếp với một vài quá trình khác bằng một số hộp thư
khác nhau. Hai quá trình có thể giao tiếp chỉ nếu chúng chia sẻ cùng một hộp thư.
Hàm cơ sở send và receive được định nghĩa như sau:
• Send(A, message): gởi một thông điệp tới hộp thư A.
• Receive(A, message): nhận một thông điệp từ hộp thư A.
Trong cơ chế này, một liên kết giao tiếp có các thuộc tính sau:
• Một liên kết được thiết lập giữa một cặp quá trình chỉ nếu cả hai thành
viên của cặp có một hộp thư được chia sẻ.
• Một liên kết có thể được nối kết với nhiều hơn hai quá trình.
• Số các liên kết khác nhau có thể tồn tại giữa mỗi cặp quá trình giao tiếp
với mỗi liên kết tương ứng với một hộp thư
Giả sử các quá trình P1, P2 và P3 chia sẻ một hộp thư A. Quá trình P1 gởi một thông
điệp tới A trong khi P2 và P3 thực thi việc nhận từ A. Quá trình nào sẽ nhận thông
điệp được gởi bởi P1? Câu trả lời phụ thuộc cơ chế mà chúng ta chọn:
• Cho phép một liên kết được nối kết với nhiều nhất hai quá trình
• Cho phép nhiều nhất một quá trình tại một thời điểm thực thi thao tác
nhận.
• Cho phép hệ thống chọn bất kỳ quá trình nào sẽ nhận thông điệp (nghĩa là,
hoặc P1 hoặc P3 nhưng không phải cả hai sẽ nhận thông điệp). Hệ thống
này có thể xác định người nhận tới người gởi.
Một hộp thư có thể được sở hữu bởi một quá trình hay bởi hệ điều hành. Nếu hộp thư
được sở hữu bởi một quá trình (nghĩa là, hộp thư là một phần không gian địa chỉ của
quá trình), sau đó chúng ta phân biệt giữa người sở hữu (người chỉ nhận thông điệp
thông qua hộp thư này) và người dùng (người có thể chỉ gởi thông điệp tới hộp thư)
Vì mỗi hộp thư có một người sở hữu duy nhất nên không có sự lẫn lộn về người nhận
thông điệp được gởi tới hộp thư này. Khi một quá trình sở hữu một hộp thư kết thúc,
hộp thư biến mất. Sau đó, bất kỳ quá trình nào gởi thông điệp tới hộp thư này được
thông báo rằng hộp thư không còn tồn tại nữa.
Ngoài ra, một hộp thư được sở hữu bởi hệ điều hành độc lập và không được gán
tới bất kỳ quá trình xác định nào. Sau đó, hệ điều hành phải cung cấp một cơ chế cho
phép một quá trình thực hiện như sau:
• Tạo một hộp thư mới
• Gởi và nhận các thông điệp thông qua hộp thư
• Xóa hộp thư
Mặc định, quá trình tạo hộp thư mới là người sở hữu hộp thư đó. Ban đầu,
người sở hữu chỉ là một quá trình có thể nhận thông điệp thông qua hộp thư. Tuy
nhiên, việc sở hữu và quyền nhận thông điệp có thể được chuyển tới các quá trình
khác thông qua lời gọi hệ thống hợp lý. Dĩ nhiên, sự cung cấp này có thể dẫn đến
nhiều người nhận cho mỗi hộp thư.
Đồng bộ hóa liên lạc(Synchronization)
Giao tiếp giữa hai quá trình xảy ra bởi lời gọi hàm cơ sở send và receive. Có các tùy
chọn thiết kế khác nhau cho việc cài đặt mỗi hàm cơ sở. Truyền thông điệp có thể là
nghẽn (block) hay không nghẽn (nonblocking)-cũng được xem như đồng bộ và bất
đồng bộ.
• Hàm send nghẽn: quá trình gởi bị nghẽn cho đến khi thông điệp được
nhận bởi quá trình nhận hay bởi hộp thư.
• Hàm send không nghẽn: quá trình gởi gởi thông điệp và thực hiện tiếp
hoạt động
• Hàm receive nghẽn: người nhận nghẽn cho đến khi thông điệp sẳn dùng
• Hàm receive không nghẽn: người nhận nhận lại một thông điệp hợp lệ
hay rỗng
•
Sự kết hợp khác nhau giữa send và receive là có thể. Khi cả hai send và receive là
nghẽn chúng ta có sự thống nhất giữa người gởi và người nhận.
Trả lời:
- Khái niệm IPC
cách mà các quá trình hợp tác có thể giao tiếp với nhau trong một môi trường chia sẻ bộ nhớ. Cơ chế yêu cầu các quá trình này chia sẻ nhóm vùng đệm chung và mã cho việc cài đặt vùng đệm được viết trực tiếp bởi người lập trình ứng dụng. Một cách khác đạt được cùng ảnh hưởng cho hệ điều hành là cung cấp phương tiện cho các quá trình hợp tác giao tiếp với nhau bằng một phương tiện giao tiếp liên quá trình (IPC).
IPC cung cấp một cơ chế cho phép một quá trình giao tiếp và đồng bộ các hoạt động
của chúng mà không chia sẻ cùng không gian địa chỉ. IPC đặc biệt có ích trong môi
trường phân tán nơi các quá trình giao tiếp có thể thường trú trên các máy tính khác
được nối kết qua mạng. Thí dụ chương trình chat được dùng trên World Wide Web.
IPC được cung cấp bởi hệ thống truyền thông điệp, và các hệ thống truyền
thông điệp có thể được định nghĩa trong nhiều cách.
- Hệ thống truyền thông điệp
Chức năng của hệ thống truyền thông điệp là cho phép các quá trình giao tiếp
với các quá trình khác mà không cần sắp xếp lại dữ liệu chia sẻ. Chúng ta xem truyền
thông điệp được dùng như một phương pháp giao tiếp trong vi nhân. Trong cơ chế
này, các dịch vụ được cung cấp như các quá trình người dùng thông thường. Nghĩa là,
các dịch vụ hoạt động bên ngoài nhân. Giao tiếp giữa các quá trình người dùng được
thực hiện thông qua truyền thông điệp. Một phương tiện IPC cung cấp ít nhất hai hoạt
động: send(message) và receive(message).
Các thông điệp được gởi bởi một quá trình có thể có kích thước cố định hoặc
biến đổi. Nếu chỉ các thông điệp có kích thước cố định được gởi, việc cài đặt cấp hệ
thống là đơn giản hơn. Tuy nhiên, hạn chế này làm cho tác vụ lập trình sẽ phức tạp
hơn. Ngoài ra, các thông điệp có kích thước thay đổi yêu cầu việc cài đặt mức hệ
thống phức tạp hơn nhưng tác vụ lập trình trở nên đơn giản hơn.
Nếu quá trình P và Q muốn giao tiếp, chúng phải gởi các thông điệp tới và
nhận thông điệp từ với nhau; một liên kết giao tiếp phải tồn tại giữa chúng. Liên kết
này có thể được cài đặt trong những cách khác nhau. Ở đây chúng ta quan tâm đến cài
đặt luận lý hơn là cài đặt vật lý. Có vài phương pháp cài đặt một liên kết và các hoạt
động send/receive:
• Giao tiếp trực tiếp hay gián tiếp
• Giao tiếp đối xứng hay bất đối xứng
• Gởi bằng bản sao hay tham chiếu
• Thông điệp có kích thước cố định hay thay đổi
? Phân biệt liên lạc trực tiếp và gián tiếp.
Các quá trình muốn giao tiếp phải có cách tham chiếu với nhau. Chúng có thể
dùng giao tiếp trực tiếp hay gián tiếp.
Giao tiếp trực tiếp:
Với giao tiếp trực tiếp, mỗi quá trình muốn giao tiếp phải đặt tên rõ ràng người
gởi và người nhận của giao tiếp. Trong cơ chế này, các hàm cơ sở send và receive
được định nghĩa như sau:
• Send(P, message): gởi một thông điệp tới quá trình P
• Receive(Q, message): nhận một thông điệp từ quá trình Q
Một liên kết giao tiếp trong cơ chế này có những thuộc tính sau:
• Một liên kết được thiết lập tự động giữa mỗi cặp quá trình muốn giao tiếp.
Các quá trình cần biết định danh của nhau khi giao tiếp.
• Một liên kết được nối kết với chính xác hai quá trình
• Chính xác một liên kết tồn tại giữa mỗi cặp quá trình.
Cơ chế này hiển thị tính đối xứng trong việc đánh địa chỉ: nghĩa là, cả hai quá
trình gởi và nhận phải biết tên nhau để giao tiếp. Một thay đổi trong cơ chế này thực
hiện tính bất đối xứng trong việc đánh địa chỉ. Chỉ người gởi biết tên của người nhận;
người nhận không yêu cầu tên của người gởi. Trong cơ chế này các hàm cơ sở được
định nghĩa như sau:
o Send(P, message): gởi một thông điệp tới quá trình P
o Receive(id, message): nhận một thông điệp từ bất kỳ quá trình
nào; id khác nhau được đặt tên của quá trình mà giao tiếp xảy ra.
Sự bất lợi trong cả hai cơ chế đối xứng và không đối xứng là tính điều chỉnh
của việc định nghĩa quá trình bị giới hạn. Thay đổi tên của một quá trình có thể cần
xem xét tất cả định nghĩa quá trình khác. Tất cả tham chiếu tới tên cũ phải được tìm
thấy để mà chúng có thể được thay đổi thành tên mới. Trường hợp này là không mong
muốn từ quan điểm biên dịch riêng.
Giao tiếp gián tiếp:
Với giao tiếp gián tiếp, một thông điệp được gởi tới và nhận từ các hộp thư
(mailboxes), hay cổng (ports). Một hộp thư có thể được hiển thị trừu tượng như một
đối tượng trong đó các thông điệp có thể được đặt bởi các quá trình và sau đó các
thông điệp này có thể được xóa đi. Mỗi hộp thư có một định danh duy nhất. Trong cơ
chế này, một quá trình có thể giao tiếp với một vài quá trình khác bằng một số hộp thư
khác nhau. Hai quá trình có thể giao tiếp chỉ nếu chúng chia sẻ cùng một hộp thư.
Hàm cơ sở send và receive được định nghĩa như sau:
• Send(A, message): gởi một thông điệp tới hộp thư A.
• Receive(A, message): nhận một thông điệp từ hộp thư A.
Trong cơ chế này, một liên kết giao tiếp có các thuộc tính sau:
• Một liên kết được thiết lập giữa một cặp quá trình chỉ nếu cả hai thành
viên của cặp có một hộp thư được chia sẻ.
• Một liên kết có thể được nối kết với nhiều hơn hai quá trình.
• Số các liên kết khác nhau có thể tồn tại giữa mỗi cặp quá trình giao tiếp
với mỗi liên kết tương ứng với một hộp thư
Giả sử các quá trình P1, P2 và P3 chia sẻ một hộp thư A. Quá trình P1 gởi một thông
điệp tới A trong khi P2 và P3 thực thi việc nhận từ A. Quá trình nào sẽ nhận thông
điệp được gởi bởi P1? Câu trả lời phụ thuộc cơ chế mà chúng ta chọn:
• Cho phép một liên kết được nối kết với nhiều nhất hai quá trình
• Cho phép nhiều nhất một quá trình tại một thời điểm thực thi thao tác
nhận.
• Cho phép hệ thống chọn bất kỳ quá trình nào sẽ nhận thông điệp (nghĩa là,
hoặc P1 hoặc P3 nhưng không phải cả hai sẽ nhận thông điệp). Hệ thống
này có thể xác định người nhận tới người gởi.
Một hộp thư có thể được sở hữu bởi một quá trình hay bởi hệ điều hành. Nếu hộp thư
được sở hữu bởi một quá trình (nghĩa là, hộp thư là một phần không gian địa chỉ của
quá trình), sau đó chúng ta phân biệt giữa người sở hữu (người chỉ nhận thông điệp
thông qua hộp thư này) và người dùng (người có thể chỉ gởi thông điệp tới hộp thư)
Vì mỗi hộp thư có một người sở hữu duy nhất nên không có sự lẫn lộn về người nhận
thông điệp được gởi tới hộp thư này. Khi một quá trình sở hữu một hộp thư kết thúc,
hộp thư biến mất. Sau đó, bất kỳ quá trình nào gởi thông điệp tới hộp thư này được
thông báo rằng hộp thư không còn tồn tại nữa.
Ngoài ra, một hộp thư được sở hữu bởi hệ điều hành độc lập và không được gán
tới bất kỳ quá trình xác định nào. Sau đó, hệ điều hành phải cung cấp một cơ chế cho
phép một quá trình thực hiện như sau:
• Tạo một hộp thư mới
• Gởi và nhận các thông điệp thông qua hộp thư
• Xóa hộp thư
Mặc định, quá trình tạo hộp thư mới là người sở hữu hộp thư đó. Ban đầu,
người sở hữu chỉ là một quá trình có thể nhận thông điệp thông qua hộp thư. Tuy
nhiên, việc sở hữu và quyền nhận thông điệp có thể được chuyển tới các quá trình
khác thông qua lời gọi hệ thống hợp lý. Dĩ nhiên, sự cung cấp này có thể dẫn đến
nhiều người nhận cho mỗi hộp thư.
Đồng bộ hóa liên lạc(Synchronization)
Giao tiếp giữa hai quá trình xảy ra bởi lời gọi hàm cơ sở send và receive. Có các tùy
chọn thiết kế khác nhau cho việc cài đặt mỗi hàm cơ sở. Truyền thông điệp có thể là
nghẽn (block) hay không nghẽn (nonblocking)-cũng được xem như đồng bộ và bất
đồng bộ.
• Hàm send nghẽn: quá trình gởi bị nghẽn cho đến khi thông điệp được
nhận bởi quá trình nhận hay bởi hộp thư.
• Hàm send không nghẽn: quá trình gởi gởi thông điệp và thực hiện tiếp
hoạt động
• Hàm receive nghẽn: người nhận nghẽn cho đến khi thông điệp sẳn dùng
• Hàm receive không nghẽn: người nhận nhận lại một thông điệp hợp lệ
hay rỗng
•
Sự kết hợp khác nhau giữa send và receive là có thể. Khi cả hai send và receive là
nghẽn chúng ta có sự thống nhất giữa người gởi và người nhận.
lacongchinh_I12A- Tổng số bài gửi : 14
Join date : 24/02/2012
Re: Thảo luận Bài 4
Ví dụ về khối kiểm soát tiến trình(PCB)
Trong lớp học học sinh thứ nhất (P1) lên bảng để trình bày bài viết của mình, trình bày xong học sinh thứ hai(P2) cũng lên bảng trình bày bài viết của mình nên phải xóa bài viết của học sinh thứ nhất(P1), vì vậy bài của học sinh thứ nhất phải được ghi vào vở (PCB1). Nếu mà học sinh thứ nhất (P1) trở lên bảng lại thì phải xóa bài viết của học sinh thứ hai và trình bày lại bài viết của mình giống như lúc chưa xóa.
Trong lớp học học sinh thứ nhất (P1) lên bảng để trình bày bài viết của mình, trình bày xong học sinh thứ hai(P2) cũng lên bảng trình bày bài viết của mình nên phải xóa bài viết của học sinh thứ nhất(P1), vì vậy bài của học sinh thứ nhất phải được ghi vào vở (PCB1). Nếu mà học sinh thứ nhất (P1) trở lên bảng lại thì phải xóa bài viết của học sinh thứ hai và trình bày lại bài viết của mình giống như lúc chưa xóa.
nguyenvanhonglac_0066- Tổng số bài gửi : 15
Join date : 16/02/2012
Re: Thảo luận Bài 4
vothingocthuy87(I11C) đã viết: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".
Một khối điều khiển tiến trình (Process Control Block - PCB) là một cấu trúc dữ liệu trong nhân hệ điều hành chứa thông tin cần thiết để quản lý một tiến trình nhất định.
Tuỳ thuộc vào cài đặt nhưng nói chung PCB trực tiếp hoặc gián tiếp chứa những thông tin sau:
Định danh của tiến trình (process identifier hay PID)
Giá trị các thanh ghi của tiến trình, trong đó đáng chú ý là con trỏ chương trình và con trỏ stack
Không gian địa chỉ của tiến trình
Độ ưu tiên (trong đó tiến trình có giá trị cao hơn được ưu tiên trước, ví dụ nice trong các hệ điều hành Unix)
Thông tin kế toán tiến trình, ví dụ như thời điểm thực thi gần nhất, bao nhiêu thời gian CPU đã sử dụng...
Con trỏ tới PCB tiếp theo, nghĩa là con trỏ tới tiến trình tiếp theo được chạy
Thông tin V/R (ví dụ các thiết bị V/R được cấp phát cho tiến trình, danh sách các tệp đang mở...)
Khi chuyển ngữ cảnh, tiến trình đang thực hiện bị dừng lại và một tiến trình khác có cơ hội thực hiện. Nhân dừng việc thực hiện của tiến trình, sao chép các giá trị trong thanh ghi vào PCB và cập nhật thanh ghi với các giá trị của PCB của tiến trình mới.
[sửa] Vị trí của PCB
Vì PCB chứa những thông tin tối quan trọng đối với tiến trình, nó phải được giữ trong một vùng bộ nhớ được bảo vệ. Trong một số hệ điều hành,, PCB được đặt ở đầu của ngăn xếp nhân của tiến trình.
vominhhai_09H1012028- Tổng số bài gửi : 29
Join date : 16/09/2010
Re: Thảo luận Bài 4
TranThiNgocQuynh(I12C) đã viết:- Sockets được định nghĩa là một điểm cuối giao tiếp, được xác định bởi địa chỉ IP và số hiệu cổng.
- Là một phương pháp dùng để giao tiếp giữa các tiến trình khác nhau trong mạng máy tính hay là trên một máy đơn.
- Socket là một trong những phương thức giao tiếp giữa các quá trình (inter-process communication) như pipe , message queue .... Giả sử ta muốn thiết kế một hệ thống trao đổi file.
- Hệ thống này hoạt động như sau : Tất cả dữ liệu được lưu trữ trên một máy chủ mạnh để bảo đảm an toàn và dễ quản lý Giao tiếp socket giúp chúng ta hiện thực mô hình client / server dễ dàng hơn.
Ví dụ: A muốn đến nhà B thì trước tiên phải mở cửa đi ra ngoài. Sau đó A đi đến nhà B (đi bằng phương tiện nào để đến nhà B không quan tâm). Khi đến nhà B thì A phải bấm chuông để B ra mở cửa. Qúa trình kết nối giữa 2 ứng dụng trên mạng cũng giống như vậy. Client mở một Sockets “cái cửa” sau đó nó nhờ các lớp mạng tạo ra kết nối tới Server (không quan tâm là kết nối thế nào). Tiếp theo Server cũng tạo ra một sockets khác có địa chỉ "cái cửa thứ 2, nhưng có chuông, số nhà". Khi có kết nối đúng tới Server dựa vào thông tin trên sockets của server (giống như client tìm đúng số nhà, bấm chuông...) Thì server sẽ mở cổng ra và client/server sẽ bắt đầu trao đổi dữ liệu.
Các thuộc tính của socket:
- Domaine: định nghĩa dạng thức địa chỉ và các nghi thức sử dụng. Có nhiều domaines, ví dụ UNIX, INTERNET, XEROX_NS, ...
- Type: các đặc điểm liên lạc:+ Sự tin cậy
+ Sự bảo toàn thứ tự dữ liệu
+ Lặp lại dữ liệu
+ Chế độ nối kết
+ Bảo toàn giới hạn thông điệp
+ Khả năng gởi thông điệp khẩn
Để thực hiện liên lạc bằng socket, cần tiến hành các thao tác ::
- Tạo lập hay mở một socket
- Gắn kết một socket với một địa chỉ
- Liên lạc : có hai kiểu liên lạc tùy thuộc vào chế độ nối kết:
+ Liên lạc trong chế độ không liên kết
+ Liên lạc trong chế độ nối kết
- Hủy một socket
cảm ơn bạn nhiều
vominhhai_09H1012028- Tổng số bài gửi : 29
Join date : 16/09/2010
Mình bổ sung thêm
IPC (Interprocess Communocation):lacongchinh_I12A đã viết:Câu 6: Trình bày khái niệm IPC với cơ chế gởi nhận thông điệp gởi thông điệp giữa các tiến trình. Cho ví dụ minh họa.
Trả lời:
- Khái niệm IPC
cách mà các quá trình hợp tác có thể giao tiếp với nhau trong một môi trường chia sẻ bộ nhớ. Cơ chế yêu cầu các quá trình này chia sẻ nhóm vùng đệm chung và mã cho việc cài đặt vùng đệm được viết trực tiếp bởi người lập trình ứng dụng. Một cách khác đạt được cùng ảnh hưởng cho hệ điều hành là cung cấp phương tiện cho các quá trình hợp tác giao tiếp với nhau bằng một phương tiện giao tiếp liên quá trình (IPC).
IPC cung cấp một cơ chế cho phép một quá trình giao tiếp và đồng bộ các hoạt động
của chúng mà không chia sẻ cùng không gian địa chỉ. IPC đặc biệt có ích trong môi
trường phân tán nơi các quá trình giao tiếp có thể thường trú trên các máy tính khác
được nối kết qua mạng. Thí dụ chương trình chat được dùng trên World Wide Web.
IPC được cung cấp bởi hệ thống truyền thông điệp, và các hệ thống truyền
thông điệp có thể được định nghĩa trong nhiều cách.
- Hệ thống truyền thông điệp
Chức năng của hệ thống truyền thông điệp là cho phép các quá trình giao tiếp
với các quá trình khác mà không cần sắp xếp lại dữ liệu chia sẻ. Chúng ta xem truyền
thông điệp được dùng như một phương pháp giao tiếp trong vi nhân. Trong cơ chế
này, các dịch vụ được cung cấp như các quá trình người dùng thông thường. Nghĩa là,
các dịch vụ hoạt động bên ngoài nhân. Giao tiếp giữa các quá trình người dùng được
thực hiện thông qua truyền thông điệp. Một phương tiện IPC cung cấp ít nhất hai hoạt
động: send(message) và receive(message).
Các thông điệp được gởi bởi một quá trình có thể có kích thước cố định hoặc
biến đổi. Nếu chỉ các thông điệp có kích thước cố định được gởi, việc cài đặt cấp hệ
thống là đơn giản hơn. Tuy nhiên, hạn chế này làm cho tác vụ lập trình sẽ phức tạp
hơn. Ngoài ra, các thông điệp có kích thước thay đổi yêu cầu việc cài đặt mức hệ
thống phức tạp hơn nhưng tác vụ lập trình trở nên đơn giản hơn.
Nếu quá trình P và Q muốn giao tiếp, chúng phải gởi các thông điệp tới và
nhận thông điệp từ với nhau; một liên kết giao tiếp phải tồn tại giữa chúng. Liên kết
này có thể được cài đặt trong những cách khác nhau. Ở đây chúng ta quan tâm đến cài
đặt luận lý hơn là cài đặt vật lý. Có vài phương pháp cài đặt một liên kết và các hoạt
động send/receive:
• Giao tiếp trực tiếp hay gián tiếp
• Giao tiếp đối xứng hay bất đối xứng
• Gởi bằng bản sao hay tham chiếu
• Thông điệp có kích thước cố định hay thay đổi
? Phân biệt liên lạc trực tiếp và gián tiếp.
Các quá trình muốn giao tiếp phải có cách tham chiếu với nhau. Chúng có thể
dùng giao tiếp trực tiếp hay gián tiếp.
Giao tiếp trực tiếp:
Với giao tiếp trực tiếp, mỗi quá trình muốn giao tiếp phải đặt tên rõ ràng người
gởi và người nhận của giao tiếp. Trong cơ chế này, các hàm cơ sở send và receive
được định nghĩa như sau:
• Send(P, message): gởi một thông điệp tới quá trình P
• Receive(Q, message): nhận một thông điệp từ quá trình Q
Một liên kết giao tiếp trong cơ chế này có những thuộc tính sau:
• Một liên kết được thiết lập tự động giữa mỗi cặp quá trình muốn giao tiếp.
Các quá trình cần biết định danh của nhau khi giao tiếp.
• Một liên kết được nối kết với chính xác hai quá trình
• Chính xác một liên kết tồn tại giữa mỗi cặp quá trình.
Cơ chế này hiển thị tính đối xứng trong việc đánh địa chỉ: nghĩa là, cả hai quá
trình gởi và nhận phải biết tên nhau để giao tiếp. Một thay đổi trong cơ chế này thực
hiện tính bất đối xứng trong việc đánh địa chỉ. Chỉ người gởi biết tên của người nhận;
người nhận không yêu cầu tên của người gởi. Trong cơ chế này các hàm cơ sở được
định nghĩa như sau:
o Send(P, message): gởi một thông điệp tới quá trình P
o Receive(id, message): nhận một thông điệp từ bất kỳ quá trình
nào; id khác nhau được đặt tên của quá trình mà giao tiếp xảy ra.
Sự bất lợi trong cả hai cơ chế đối xứng và không đối xứng là tính điều chỉnh
của việc định nghĩa quá trình bị giới hạn. Thay đổi tên của một quá trình có thể cần
xem xét tất cả định nghĩa quá trình khác. Tất cả tham chiếu tới tên cũ phải được tìm
thấy để mà chúng có thể được thay đổi thành tên mới. Trường hợp này là không mong
muốn từ quan điểm biên dịch riêng.
Giao tiếp gián tiếp:
Với giao tiếp gián tiếp, một thông điệp được gởi tới và nhận từ các hộp thư
(mailboxes), hay cổng (ports). Một hộp thư có thể được hiển thị trừu tượng như một
đối tượng trong đó các thông điệp có thể được đặt bởi các quá trình và sau đó các
thông điệp này có thể được xóa đi. Mỗi hộp thư có một định danh duy nhất. Trong cơ
chế này, một quá trình có thể giao tiếp với một vài quá trình khác bằng một số hộp thư
khác nhau. Hai quá trình có thể giao tiếp chỉ nếu chúng chia sẻ cùng một hộp thư.
Hàm cơ sở send và receive được định nghĩa như sau:
• Send(A, message): gởi một thông điệp tới hộp thư A.
• Receive(A, message): nhận một thông điệp từ hộp thư A.
Trong cơ chế này, một liên kết giao tiếp có các thuộc tính sau:
• Một liên kết được thiết lập giữa một cặp quá trình chỉ nếu cả hai thành
viên của cặp có một hộp thư được chia sẻ.
• Một liên kết có thể được nối kết với nhiều hơn hai quá trình.
• Số các liên kết khác nhau có thể tồn tại giữa mỗi cặp quá trình giao tiếp
với mỗi liên kết tương ứng với một hộp thư
Giả sử các quá trình P1, P2 và P3 chia sẻ một hộp thư A. Quá trình P1 gởi một thông
điệp tới A trong khi P2 và P3 thực thi việc nhận từ A. Quá trình nào sẽ nhận thông
điệp được gởi bởi P1? Câu trả lời phụ thuộc cơ chế mà chúng ta chọn:
• Cho phép một liên kết được nối kết với nhiều nhất hai quá trình
• Cho phép nhiều nhất một quá trình tại một thời điểm thực thi thao tác
nhận.
• Cho phép hệ thống chọn bất kỳ quá trình nào sẽ nhận thông điệp (nghĩa là,
hoặc P1 hoặc P3 nhưng không phải cả hai sẽ nhận thông điệp). Hệ thống
này có thể xác định người nhận tới người gởi.
Một hộp thư có thể được sở hữu bởi một quá trình hay bởi hệ điều hành. Nếu hộp thư
được sở hữu bởi một quá trình (nghĩa là, hộp thư là một phần không gian địa chỉ của
quá trình), sau đó chúng ta phân biệt giữa người sở hữu (người chỉ nhận thông điệp
thông qua hộp thư này) và người dùng (người có thể chỉ gởi thông điệp tới hộp thư)
Vì mỗi hộp thư có một người sở hữu duy nhất nên không có sự lẫn lộn về người nhận
thông điệp được gởi tới hộp thư này. Khi một quá trình sở hữu một hộp thư kết thúc,
hộp thư biến mất. Sau đó, bất kỳ quá trình nào gởi thông điệp tới hộp thư này được
thông báo rằng hộp thư không còn tồn tại nữa.
Ngoài ra, một hộp thư được sở hữu bởi hệ điều hành độc lập và không được gán
tới bất kỳ quá trình xác định nào. Sau đó, hệ điều hành phải cung cấp một cơ chế cho
phép một quá trình thực hiện như sau:
• Tạo một hộp thư mới
• Gởi và nhận các thông điệp thông qua hộp thư
• Xóa hộp thư
Mặc định, quá trình tạo hộp thư mới là người sở hữu hộp thư đó. Ban đầu,
người sở hữu chỉ là một quá trình có thể nhận thông điệp thông qua hộp thư. Tuy
nhiên, việc sở hữu và quyền nhận thông điệp có thể được chuyển tới các quá trình
khác thông qua lời gọi hệ thống hợp lý. Dĩ nhiên, sự cung cấp này có thể dẫn đến
nhiều người nhận cho mỗi hộp thư.
Đồng bộ hóa liên lạc(Synchronization)
Giao tiếp giữa hai quá trình xảy ra bởi lời gọi hàm cơ sở send và receive. Có các tùy
chọn thiết kế khác nhau cho việc cài đặt mỗi hàm cơ sở. Truyền thông điệp có thể là
nghẽn (block) hay không nghẽn (nonblocking)-cũng được xem như đồng bộ và bất
đồng bộ.
• Hàm send nghẽn: quá trình gởi bị nghẽn cho đến khi thông điệp được
nhận bởi quá trình nhận hay bởi hộp thư.
• Hàm send không nghẽn: quá trình gởi gởi thông điệp và thực hiện tiếp
hoạt động
• Hàm receive nghẽn: người nhận nghẽn cho đến khi thông điệp sẳn dùng
• Hàm receive không nghẽn: người nhận nhận lại một thông điệp hợp lệ
hay rỗng
•
Sự kết hợp khác nhau giữa send và receive là có thể. Khi cả hai send và receive là
nghẽn chúng ta có sự thống nhất giữa người gởi và người nhận.
- Là cơ chế để các process giao tiếp và đồng bộ các hành động của chúng mà không phải dùng chung resourcese
- Khả năng IPC cung cấp 2 họat động:
send(message):- kích thước của message cố định hoặc biến đổi
receive(massage)
Nếu các quá trình P và Q muốn giao tiếp chúng cần phải:
thiết lập một liên kết giao tiếp (communication link) giữa chúng
trao đổi các message qua các họat động send/receive
Sự thực hiện của communication link
physical (vd shared memory, hardware bus)
logical (vd : logical properties)
Các quá trình phải xác định rõ tên của nhau:
Send(P,message):- gửi 1 message tới quá trình P.
Receiver(Q,message):- nhận 1 message từ quá trình Q
Các đặc tính của communication link:
Các liên kết được thiết lập tự động
Mối liên kết được gắn với duy nhất một cặp process giao tiếp với nhau.
Giữa mỗi cặp process tồn tại duy nhất 1 liên kết
Liên kết thường là 2 chiều (bi-directional) hoặc có thể có 2 liên kết một chiều (undirectional) P to Q, Q to P.
Các message được gửi và nhận từ các mailbox (còn được gọi là port)
Mỗi mailbox có duy nhất một id
Các process chỉ có thể giao tiếp nếu chúng chia sẻ một mailbox
Các đặc tính của communication link:
Các liên kết được thiết lập chỉ khi nào process chia sẻ một mailbox chung.
Một liên kết có thể được gắn với nhiều process
Mỗi cặp process có thể chia sẻ một số communication link.
Liên kết có thể là 2 chiều hoặc 1 chiều.
Các họat động
Tạo/xóa một mailbox
Send(A,message)- gửi 1 message tới mailbox A
Receiver(A,message)- nhận 1 message từ mailbox A
Vấn đề Mailbox sharing:
P1,P2 và P3 chia sẻ mailbox A.
P1 gửi P2 và P3 nhận
Process nào nhận đượ message?
Giải pháp:
1 liên kết được gắn tối đa 2 process
Cho phép tại 1 thời điểm chỉ 1 process thực hiện nhận message.
Cho phép hệ thống tùy chọn process nhận. Process gửi được thông báo process nào nhận message.
Các process khác nhận được 1 bản copy
VoTrongQuyet-I12A- Tổng số bài gửi : 24
Join date : 16/02/2012
Thảo luận bài 4 - Câu 7 : Trình bày các tiến trình liên lạc qua Sockets trong hệ thống khách chủ
Trong môi trường đa chương, một tiến trình không đơn độc trong hệ thống , mà có thể ảnh hưởng đến các tiến trình khác , hoặc bị các tiến trình khác tác động. Nói cách khác, các tiến trình là những thực thể độc lập , nhưng chúng vẫn có nhu cầu liên lạc với nhau để :
Chia sẻ thông tin: nhiều tiến trình có thể cùng quan tâm đến những dữ liệu nào đó, do vậy hệ điều hành cần cung cấp một môi trường cho phép sự truy cập đồng thời đến các dữ liệu chung.
Hợp tác hoàn thành tác vụ: đôi khi để đạt được một sự xử lý nhanh chóng, người ta phân chia một tác vụ thành các công việc nhỏ có thể tiến hành song song. Thường thì các công việc nhỏ này cần hợp tác với nhau để cùng hoàn thành tác vụ ban đầu, ví dụ dữ liệu kết xuất của tiến trình này lại là dữ liệu nhập cho tiến trình khác. Trong các trường hợp đó, hệ điều hành cần cung cấp cơ chế để các tiến trình có thể trao đổi thông tin với nhau.
Socket
- Sockets được định nghĩa là một điểm cuối giao tiếp, được xác định bởi địa chỉ IP và số hiệu cổng.
- Là một phương pháp dùng để giao tiếp giữa các tiến trình khác nhau trong mạng máy tính hay là trên một máy đơn.
- Socket là một trong những phương thức giao tiếp giữa các quá trình (inter-process communication) như pipe , message queue .... Giả sử ta muốn thiết kế một hệ thống trao đổi file.
- Hệ thống này hoạt động như sau : Tất cả dữ liệu được lưu trữ trên một máy chủ mạnh để bảo đảm an toàn và dễ quản lý Giao tiếp socket giúp chúng ta hiện thực mô hình client / server dễ dàng hơn.
VD:A muốn đến nhà B thì trước tiên phải mở cửa đi ra ngoài. Sau đó A đi bộ đến nhà B. Bằng cách nào để đến nhà B không quan tâm phải đi như thế nào.Khi đến nhà B thì A phải bấm chuông để B ra mở cửa. Qúa trình kết nối giữa 2 ứng dụng trên mạng cũng giống như vậy.Client mở một Sockets"Cái cửa' sau đó nó nhờ các lớp mạng tạo ra kết nối tới Server(không quan tâm là kết nối thế nào). Tiếp theo Server cũng tạo ra một sockets khác có địa chỉ "cái cửa thứ 2, nhưng có chuông, số nhà hẻn hoi". Khi có kết nối đúng tới Server dựa vào thông tin trên sockets của server(giống như client tìm đúng số nhà, bấm chuông...) Thì server sẽ mở cổng ra và client/server sẽ bắt đầu trao đổi dữ liệu.
Các thuộc tính của socket:
- Domaine: định nghĩa dạng thức địa chỉ và các nghi thức sử dụng. Có nhiều domaines, ví dụ UNIX, INTERNET, XEROX_NS, ...
- Type: định nghĩa các đặc điểm liên lạc:
a) Sự tin cậy
b) Sự bảo toàn thứ tự dữ liệu
c) Lặp lại dữ liệu
d) Chế độ nối kết
e) Bảo toàn giới hạn thông điệp
f) Khả năng gởi thông điệp khẩn
Để thực hiện liên lạc bằng socket, cần tiến hành các thao tác ::
- Tạo lập hay mở một socket
- Gắn kết một socket với một địa chỉ
- Liên lạc : có hai kiểu liên lạc tùy thuộc vào chế độ nối kết:
a) Liên lạc trong chế độ không liên kết : liên lạc theo hình thức hộp thư:
- hai tiến trình liên lạc với nhau không kết nối trực tiếp
- mỗi thông điệp phải kèm theo địa chỉ người nhận.
Hình thức liên lạc này có đặc điểm được :
- người gởi không chắc chắn thông điệp của học được gởi đến người nhận,
- một thông điệp có thể được gởi nhiều lần,
- hai thông điệp đượ gởi theo một thứ tự nào đó có thể đến tay người nhận theo một thứ tự khác.
Một tiến trình sau khi đã mở một socket có thể sử dụng nó để liên lạc với nhiều tiến trình khác nhau nhờ sử hai primitive send và receive.
b) Liên lạc trong chế độ nối kết:
Một liên kết được thành lập giữa hai tiến trình. Trước khi mối liên kết này được thiết lập, một trong hai tiến trình phải đợi có một tiến trình khác yêu cầu kết nối.Có thể sử dụng socket để liên lạc theo mô hình client-serveur. Trong mô hình này, server sử dụng lời gọi hệ thống listen và accept để nối kết với client, sau đó , client và server có thể trao đổi thông tin bằng cách sử dụng các primitive send và receive.
- Hủy một socket
Ví dụ :
Trong nghi thức truyền thông TCP, mỗi mối nối giữa hai máy tính được xác định bởi một port, khái niệm port ở đây không phải là một cổng giao tiếp trên thiết bị vật lý mà chỉ là một khái niệm logic trong cách nhìn của người lập trình, mỗi port được tương ứng với một số nguyên dương.
Cơ chế socket có thể sử dụng để chuẩn hoá mối liên lạc giữa các tiến trình vốn không liên hệ với nhau, và có thể hoạt động trong những hệ thống khác nhau.
Chia sẻ thông tin: nhiều tiến trình có thể cùng quan tâm đến những dữ liệu nào đó, do vậy hệ điều hành cần cung cấp một môi trường cho phép sự truy cập đồng thời đến các dữ liệu chung.
Hợp tác hoàn thành tác vụ: đôi khi để đạt được một sự xử lý nhanh chóng, người ta phân chia một tác vụ thành các công việc nhỏ có thể tiến hành song song. Thường thì các công việc nhỏ này cần hợp tác với nhau để cùng hoàn thành tác vụ ban đầu, ví dụ dữ liệu kết xuất của tiến trình này lại là dữ liệu nhập cho tiến trình khác. Trong các trường hợp đó, hệ điều hành cần cung cấp cơ chế để các tiến trình có thể trao đổi thông tin với nhau.
Socket
- Sockets được định nghĩa là một điểm cuối giao tiếp, được xác định bởi địa chỉ IP và số hiệu cổng.
- Là một phương pháp dùng để giao tiếp giữa các tiến trình khác nhau trong mạng máy tính hay là trên một máy đơn.
- Socket là một trong những phương thức giao tiếp giữa các quá trình (inter-process communication) như pipe , message queue .... Giả sử ta muốn thiết kế một hệ thống trao đổi file.
- Hệ thống này hoạt động như sau : Tất cả dữ liệu được lưu trữ trên một máy chủ mạnh để bảo đảm an toàn và dễ quản lý Giao tiếp socket giúp chúng ta hiện thực mô hình client / server dễ dàng hơn.
VD:A muốn đến nhà B thì trước tiên phải mở cửa đi ra ngoài. Sau đó A đi bộ đến nhà B. Bằng cách nào để đến nhà B không quan tâm phải đi như thế nào.Khi đến nhà B thì A phải bấm chuông để B ra mở cửa. Qúa trình kết nối giữa 2 ứng dụng trên mạng cũng giống như vậy.Client mở một Sockets"Cái cửa' sau đó nó nhờ các lớp mạng tạo ra kết nối tới Server(không quan tâm là kết nối thế nào). Tiếp theo Server cũng tạo ra một sockets khác có địa chỉ "cái cửa thứ 2, nhưng có chuông, số nhà hẻn hoi". Khi có kết nối đúng tới Server dựa vào thông tin trên sockets của server(giống như client tìm đúng số nhà, bấm chuông...) Thì server sẽ mở cổng ra và client/server sẽ bắt đầu trao đổi dữ liệu.
Các thuộc tính của socket:
- Domaine: định nghĩa dạng thức địa chỉ và các nghi thức sử dụng. Có nhiều domaines, ví dụ UNIX, INTERNET, XEROX_NS, ...
- Type: định nghĩa các đặc điểm liên lạc:
a) Sự tin cậy
b) Sự bảo toàn thứ tự dữ liệu
c) Lặp lại dữ liệu
d) Chế độ nối kết
e) Bảo toàn giới hạn thông điệp
f) Khả năng gởi thông điệp khẩn
Để thực hiện liên lạc bằng socket, cần tiến hành các thao tác ::
- Tạo lập hay mở một socket
- Gắn kết một socket với một địa chỉ
- Liên lạc : có hai kiểu liên lạc tùy thuộc vào chế độ nối kết:
a) Liên lạc trong chế độ không liên kết : liên lạc theo hình thức hộp thư:
- hai tiến trình liên lạc với nhau không kết nối trực tiếp
- mỗi thông điệp phải kèm theo địa chỉ người nhận.
Hình thức liên lạc này có đặc điểm được :
- người gởi không chắc chắn thông điệp của học được gởi đến người nhận,
- một thông điệp có thể được gởi nhiều lần,
- hai thông điệp đượ gởi theo một thứ tự nào đó có thể đến tay người nhận theo một thứ tự khác.
Một tiến trình sau khi đã mở một socket có thể sử dụng nó để liên lạc với nhiều tiến trình khác nhau nhờ sử hai primitive send và receive.
b) Liên lạc trong chế độ nối kết:
Một liên kết được thành lập giữa hai tiến trình. Trước khi mối liên kết này được thiết lập, một trong hai tiến trình phải đợi có một tiến trình khác yêu cầu kết nối.Có thể sử dụng socket để liên lạc theo mô hình client-serveur. Trong mô hình này, server sử dụng lời gọi hệ thống listen và accept để nối kết với client, sau đó , client và server có thể trao đổi thông tin bằng cách sử dụng các primitive send và receive.
- Hủy một socket
Ví dụ :
Trong nghi thức truyền thông TCP, mỗi mối nối giữa hai máy tính được xác định bởi một port, khái niệm port ở đây không phải là một cổng giao tiếp trên thiết bị vật lý mà chỉ là một khái niệm logic trong cách nhìn của người lập trình, mỗi port được tương ứng với một số nguyên dương.
Cơ chế socket có thể sử dụng để chuẩn hoá mối liên lạc giữa các tiến trình vốn không liên hệ với nhau, và có thể hoạt động trong những hệ thống khác nhau.
Nguyen Sy Hung I12A- Tổng số bài gửi : 28
Join date : 15/02/2012
Age : 35
Trang 11 trong tổng số 15 trang • 1 ... 7 ... 10, 11, 12, 13, 14, 15
Similar topics
» THAO LUAN MON HOC
» BAI 6: THAO LUAN BAI 6
» Các bạn tích cực và có đóng góp với lớp
» Thảo luận Đề thi Cuối kỳ
» Thảo luận Bài 4
» BAI 6: THAO LUAN BAI 6
» Các bạn tích cực và có đóng góp với lớp
» Thảo luận Đề thi Cuối kỳ
» Thảo luận Bài 4
Trang 11 trong tổng số 15 trang
Permissions in this forum:
Bạn không có quyền trả lời bài viết