HAI MÔ HÌNH LIÊN LẠC GIỮA CÁC TIẾN TRÌNH?
3 posters
Trang 1 trong tổng số 1 trang
HAI MÔ HÌNH LIÊN LẠC GIỮA CÁC TIẾN TRÌNH?
Các bạn nào hiểu rõ về hai mô hình liên lạc giữa các tiến trình thì post lên cùng nhau trao đổi học nhé!
mình không hiểu rõ lắm phần này.
mình không hiểu rõ lắm phần này.
BuiQuocDung14 (102c)- Tổng số bài gửi : 27
Join date : 17/02/2011
LIÊN LẠC GIỮA CÁC TIẾN TRÌNH
1. Nhu cầu liên lạc giữa các tiến trình
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.
2. Các vấn đề nảy sinh trong việc liên lạc giữa các tiến trình
Do mỗi tiến trình sỡ hữu một không gian địa chỉ riêng biệt, nên các tiến trình không thể liên lạc trực tiếp dễ dàng mà phải nhờ vào các cơ chế do hệ điều hành cung cấp. Khi cung cấp cơ chế liên lạc cho các tiến trình, hệ điều hành thường phải tìm giải pháp cho các vấn đề chính yếu sau :
Liên kết tường minh hay tiềm ẩn (explicit naming/implicit naming) : tiến trình có cần phải biết tiến trình nào đang trao đổi hay chia sẻ thông tin với nó ? Mối liên kết được gọi là tường minh khi được thiết lập rõ ràng , trực tiếp giữa các tiến trình, và là tiềm ẩn khi các tiến trình liên lạc với nhau thông qua một qui ước ngầm nào đó.
Liên lạc theo chế độ đồng bộ hay không đồng bộ (blocking / non-blocking): khi một tiến trình trao đổi thông tin với một tiến trình khác, các tiến trình có cần phải đợi cho thao tác liên lạc hoàn tất rồi mới tiếp tục các xử lý khác ? Các tiến trình liên lạc theo cơ chế đồng bộ sẽ chờ nhau hoàn tất việc liên lạc, còn các tiến trình liên lạc theo cơ chế nonblocking thì không.
Liên lạc giữa các tiến trình trong hệ thống tập trung và hệ thống phân tán: cơ chế liên lạc giữa các tiến trình trong cùng một máy tính có sự khác biệt với việc liên lạc giữa các tiến trình giữa những máy tính khác nhau?
Hầu hết các hệ điều hành đưa ra nhiều cơ chế liên lạc khác nhau, mỗi cơ chế có những đặc tính riêng, và thích hợp trong một hoàn cảnh chuyên biệt.
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.
2. Các vấn đề nảy sinh trong việc liên lạc giữa các tiến trình
Do mỗi tiến trình sỡ hữu một không gian địa chỉ riêng biệt, nên các tiến trình không thể liên lạc trực tiếp dễ dàng mà phải nhờ vào các cơ chế do hệ điều hành cung cấp. Khi cung cấp cơ chế liên lạc cho các tiến trình, hệ điều hành thường phải tìm giải pháp cho các vấn đề chính yếu sau :
Liên kết tường minh hay tiềm ẩn (explicit naming/implicit naming) : tiến trình có cần phải biết tiến trình nào đang trao đổi hay chia sẻ thông tin với nó ? Mối liên kết được gọi là tường minh khi được thiết lập rõ ràng , trực tiếp giữa các tiến trình, và là tiềm ẩn khi các tiến trình liên lạc với nhau thông qua một qui ước ngầm nào đó.
Liên lạc theo chế độ đồng bộ hay không đồng bộ (blocking / non-blocking): khi một tiến trình trao đổi thông tin với một tiến trình khác, các tiến trình có cần phải đợi cho thao tác liên lạc hoàn tất rồi mới tiếp tục các xử lý khác ? Các tiến trình liên lạc theo cơ chế đồng bộ sẽ chờ nhau hoàn tất việc liên lạc, còn các tiến trình liên lạc theo cơ chế nonblocking thì không.
Liên lạc giữa các tiến trình trong hệ thống tập trung và hệ thống phân tán: cơ chế liên lạc giữa các tiến trình trong cùng một máy tính có sự khác biệt với việc liên lạc giữa các tiến trình giữa những máy tính khác nhau?
Hầu hết các hệ điều hành đưa ra nhiều cơ chế liên lạc khác nhau, mỗi cơ chế có những đặc tính riêng, và thích hợp trong một hoàn cảnh chuyên biệt.
khanh.nd_08H1010044- Tổng số bài gửi : 38
Join date : 08/04/2009
Age : 41
Đến từ : TP. Hồ Chí Minh
Quản lý tiến trình trong linux
Quản lý tiến trình trong linux
Phân loại tiến trình: 3 loại
Interactive process (tiến trình đối thoại)
Là tiến trình khởi động và quản lý bởi shell, kể cả các tiến trình foreground hoặc background.
Batch process
Tiến trình không gắn liền với terminal (tty) và được nằm trong hàng đợi để lần lượt thực hiện.
Daemon process (Disk And Execution MONitor)
Là tiến trình chạy ở chế độ ngầm và được khởi động từ đầu. Các daemon thường được hệ thống phát sinh tự động và có thể hoạt động liên tục hay phát sinh định kỳ.
Hầu hết các dịch vụ mạng là các tiến trình daemon, tên tiến trình kết thúc bằng ký tự “d” như: inetd, named, httpd…
Hiển thị thông tin tiến trình – lệnh ps
Để biết thông tin các tiến trình hiện hành ta sử dụng:
ps [option]
1. -e: hiển thị thông tin về mỗi tiến trình.
-l: hiển thị thông tin đầy đủ tiến trình.
-f: hiển thị thông tin về tiến trình cha.
-a: hiển thị tất cả các tiến trình.
Lưu ý: dòng lệnh ps –aux: liệt kê danh sách các tiến trình đang chạy cùng các thông tin của nó như:
Chủ nhân của tiến trình (owner), mã số nhận diện tiến trình (PID), thời gian hiện sử dụng CPU (%CPU), mức chiếm dụng bộ nhớ của tiến trình (%MEM), trạng thái tiến trình (STAT) và các thông tin khác.
Một số trạng thái của tiến trình thường gặp: R-đang thi hành, S-đang bị đóng, Z-ngừng thi hành, W-không đủ bộ nhớ…
Hiển thị thông tin sử dụng tài nguyên – lệnh top
Hiển thị một danh sách các tiến trình hệ thống theo thời gian thực. Nó thống kê số lượng các tiến trình cùng trạng thái của chúng, tình trạng sử dụng CPU, bộ nhớ …
top [option]
1. -d time: chỉ ra khoảng thời gian trễ time giữa 2 lần cập nhật thông tin trạng thái (mặc định là 5 giây)
-p [pid]: chỉ theo dõi các tiến trình có mã pid
-c: hiển thị đầy đủ dòng lệnh thay vì hiển thị tên lệnh tạo tiến trình.
-a: hiển thị tất cả các tiến trình.
Một điểm khác biệt giữa top và ps là nó cho phép ta thi hành các lệnh của bản thân nó trong quá trình nó đang hiển thị thông tin.
Dừng một tiến trình – lệnh kill
Lệnh kill thường được sử dụng để ngừng thi hành một tiến trình.
kill [signal] <PID>
1. signal: là một số hay tên của tín hiệu được gởi tới tiến trình.
PID: mã số nhận diện tiến trình muốn dừng.
Lệnh kill có thể gởi bất kỳ tín hiệu signal nào tới một tiến trình, nhưng theo mặc định nó gởi tín hiệu 15, TERM (là tín hiệu kết thúc chương trình).
Lệnh kill -9 PID: ngừng thi hành tiến trình mà không bị các tiến trình khác can thiệp (tín hiệu 9, KILL).
Super-user mới có quyền dừng tất cả các tiến trình, còn người sử dụng chỉ được dừng các tiến trình của mình.
Các signal thường dùng lệnh kill bao gồm:
Tên Giá trị Tác động
SIGHUP 1 - Hangup (gọi lại tiến trình)
SIGINT 2 - Ngắt từ bàn phím (Ctrl+C)
SIGKILL 9 - Hủy tiến trình
SIGTERM 15 - Kết thúc tiến trình
SIGSTOP 17,19,23: - Dừng tiến trình.
Khi kết thúc một tiến trình hay một chuỗi các tiến trình, thông thường nên tiến hành thử với tín hiệu ít gây nguy hiểm nhất, SIGTERM, nếu không được mới sử dụng các tín hiệu INT hay KILL.
Hiển thị các tiến trình ngầm, thay đổi chế độ cho các tiến trình
Lệnh jobs: Hiển thị các tiến trình ngầm (background)
Ký hiệu + chỉ ra tác vụ đang được xử lý
Ký hiệu – chỉ ra tác vụ sẽ được xử lý kế tiếp
fg: chuyển các tiến trình background -> foreground
$ fg %3 (mã số tác vụ của tiến trình ngầm)
bg: chuyển các tiến trình foreground -> background.
Lưu ý: phải tạm dừng bằng cách nhấn tổ hợp phím (ctrl+z), và sau đó mới chuyển nó sang chế độ ngầm bằng lệnh bg
$ cat vd.txt > abcdef
ctrl + z
$ bg
(lệnh cat sẽ nạp chuỗi abcdef vào file vd.txt, có nhiều cách kết thúc quá trình nạp chuỗi này, nhưng muốn dùng lệnh bg thì phải kết thúc bằng tổ hợp phím ctrl+z)
Một số lệnh xem về hệ thống : free, ps, w, vmstat, iostat, ifstat, netstat v.v
Phân loại tiến trình: 3 loại
Interactive process (tiến trình đối thoại)
Là tiến trình khởi động và quản lý bởi shell, kể cả các tiến trình foreground hoặc background.
Batch process
Tiến trình không gắn liền với terminal (tty) và được nằm trong hàng đợi để lần lượt thực hiện.
Daemon process (Disk And Execution MONitor)
Là tiến trình chạy ở chế độ ngầm và được khởi động từ đầu. Các daemon thường được hệ thống phát sinh tự động và có thể hoạt động liên tục hay phát sinh định kỳ.
Hầu hết các dịch vụ mạng là các tiến trình daemon, tên tiến trình kết thúc bằng ký tự “d” như: inetd, named, httpd…
Hiển thị thông tin tiến trình – lệnh ps
Để biết thông tin các tiến trình hiện hành ta sử dụng:
ps [option]
1. -e: hiển thị thông tin về mỗi tiến trình.
-l: hiển thị thông tin đầy đủ tiến trình.
-f: hiển thị thông tin về tiến trình cha.
-a: hiển thị tất cả các tiến trình.
Lưu ý: dòng lệnh ps –aux: liệt kê danh sách các tiến trình đang chạy cùng các thông tin của nó như:
Chủ nhân của tiến trình (owner), mã số nhận diện tiến trình (PID), thời gian hiện sử dụng CPU (%CPU), mức chiếm dụng bộ nhớ của tiến trình (%MEM), trạng thái tiến trình (STAT) và các thông tin khác.
Một số trạng thái của tiến trình thường gặp: R-đang thi hành, S-đang bị đóng, Z-ngừng thi hành, W-không đủ bộ nhớ…
Hiển thị thông tin sử dụng tài nguyên – lệnh top
Hiển thị một danh sách các tiến trình hệ thống theo thời gian thực. Nó thống kê số lượng các tiến trình cùng trạng thái của chúng, tình trạng sử dụng CPU, bộ nhớ …
top [option]
1. -d time: chỉ ra khoảng thời gian trễ time giữa 2 lần cập nhật thông tin trạng thái (mặc định là 5 giây)
-p [pid]: chỉ theo dõi các tiến trình có mã pid
-c: hiển thị đầy đủ dòng lệnh thay vì hiển thị tên lệnh tạo tiến trình.
-a: hiển thị tất cả các tiến trình.
Một điểm khác biệt giữa top và ps là nó cho phép ta thi hành các lệnh của bản thân nó trong quá trình nó đang hiển thị thông tin.
Dừng một tiến trình – lệnh kill
Lệnh kill thường được sử dụng để ngừng thi hành một tiến trình.
kill [signal] <PID>
1. signal: là một số hay tên của tín hiệu được gởi tới tiến trình.
PID: mã số nhận diện tiến trình muốn dừng.
Lệnh kill có thể gởi bất kỳ tín hiệu signal nào tới một tiến trình, nhưng theo mặc định nó gởi tín hiệu 15, TERM (là tín hiệu kết thúc chương trình).
Lệnh kill -9 PID: ngừng thi hành tiến trình mà không bị các tiến trình khác can thiệp (tín hiệu 9, KILL).
Super-user mới có quyền dừng tất cả các tiến trình, còn người sử dụng chỉ được dừng các tiến trình của mình.
Các signal thường dùng lệnh kill bao gồm:
Tên Giá trị Tác động
SIGHUP 1 - Hangup (gọi lại tiến trình)
SIGINT 2 - Ngắt từ bàn phím (Ctrl+C)
SIGKILL 9 - Hủy tiến trình
SIGTERM 15 - Kết thúc tiến trình
SIGSTOP 17,19,23: - Dừng tiến trình.
Khi kết thúc một tiến trình hay một chuỗi các tiến trình, thông thường nên tiến hành thử với tín hiệu ít gây nguy hiểm nhất, SIGTERM, nếu không được mới sử dụng các tín hiệu INT hay KILL.
Hiển thị các tiến trình ngầm, thay đổi chế độ cho các tiến trình
Lệnh jobs: Hiển thị các tiến trình ngầm (background)
Ký hiệu + chỉ ra tác vụ đang được xử lý
Ký hiệu – chỉ ra tác vụ sẽ được xử lý kế tiếp
fg: chuyển các tiến trình background -> foreground
$ fg %3 (mã số tác vụ của tiến trình ngầm)
bg: chuyển các tiến trình foreground -> background.
Lưu ý: phải tạm dừng bằng cách nhấn tổ hợp phím (ctrl+z), và sau đó mới chuyển nó sang chế độ ngầm bằng lệnh bg
$ cat vd.txt > abcdef
ctrl + z
$ bg
(lệnh cat sẽ nạp chuỗi abcdef vào file vd.txt, có nhiều cách kết thúc quá trình nạp chuỗi này, nhưng muốn dùng lệnh bg thì phải kết thúc bằng tổ hợp phím ctrl+z)
Một số lệnh xem về hệ thống : free, ps, w, vmstat, iostat, ifstat, netstat v.v
khanh.nd_08H1010044- Tổng số bài gửi : 38
Join date : 08/04/2009
Age : 41
Đến từ : TP. Hồ Chí Minh
Re: HAI MÔ HÌNH LIÊN LẠC GIỮA CÁC TIẾN TRÌNH?
Liên lạc giữa các tiến trình (Interprocess Communication):
Mỗi máy tính trong mạng có Host Name và (hoặc) IP Address.Các tên này được HĐH chuyển đổi thành một số nguyên HostID.
Mỗi tiến trình có ProcessName và ProcessID.
Cặp số (HostID, ProcessID) xác định duy nhất tiến trình trong mạng và được dùng để Mở / Đóng kết nối với tiến trình đó.
Có các lòi gọi hệ thống kiểu Open, Close, Read, Write, Wait để thao tác với tiến trình.
Mỗi máy tính trong mạng có Host Name và (hoặc) IP Address.Các tên này được HĐH chuyển đổi thành một số nguyên HostID.
Mỗi tiến trình có ProcessName và ProcessID.
Cặp số (HostID, ProcessID) xác định duy nhất tiến trình trong mạng và được dùng để Mở / Đóng kết nối với tiến trình đó.
Có các lòi gọi hệ thống kiểu Open, Close, Read, Write, Wait để thao tác với tiến trình.
lamutdan-i92c- Tổng số bài gửi : 63
Join date : 19/10/2010
Age : 38
Similar topics
» Thảo luận Bài 3
» Thảo luận Bài 3
» Hai mô hình liên lạc giữa các tiến trình
» Thảo luận Bài 3
» Thảo luận Bài 3
» Thảo luận Bài 3
» Hai mô hình liên lạc giữa các tiến trình
» Thảo luận Bài 3
» Thảo luận Bài 3
Trang 1 trong tổng số 1 trang
Permissions in this forum:
Bạn không có quyền trả lời bài viết