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 8 trong tổng số 15 trang
Trang 8 trong tổng số 15 trang • 1 ... 5 ... 7, 8, 9 ... 11 ... 15
Phân biệt Tiến trình với Tiểu trình
  * Tiến trình là chương trình đang thực hiện. Mỗi Tiến trình có một tài nguyên và môi trường riêng. CácTtiến trình hoàn toàn độc lập với nhau, có thể liên lạc với nhau thông qua cơ chế truyền tin giữa các Tiến trình.
  * Tiểu trình là một đơn vị cơ bản của hệ thống. Một Tiểu trình cũng có thể tạo lập một Tiến trình con. Một Tiến trình có thể sở hữu nhiều Tiểu trình. Các Tiểu trình trong cùng một Tiến trình có thể chia sẻ một không gian địa chỉ hoặc truy xuất đến một Stack cùng nhau.
  * Tiểu trình là một đơn vị cơ bản của hệ thống. Một Tiểu trình cũng có thể tạo lập một Tiến trình con. Một Tiến trình có thể sở hữu nhiều Tiểu trình. Các Tiểu trình trong cùng một Tiến trình có thể chia sẻ một không gian địa chỉ hoặc truy xuất đến một Stack cùng nhau.
Được sửa bởi VuNguyenQuynhLam_I12C ngày 14/3/2012, 00:22; sửa lần 1.
VuNguyenQuynhLam_I12C- Tổng số bài gửi : 14
Join date : 15/02/2012
Age : 36
Đến từ : Bình Thuận
Re: Trình bày mô hình chuyển trạng thái của tiến trình
Mình xin bổ sung một chút:NguyenVanBenI12C đã viết:-Định nghĩa tiến trình (Process Definition):Tiến trình là chương trình trong thời gian thực hiện - đặt dưới sự quản lý của HĐH .
-Trạng thái của tiến trình:có 5 trạng thái:
+ Mới (New )- Tiến trình vửa được tạo lập.
+ Đang chạy (Running )- Các lệnh thực thi .
+ Đang chờ ( waitting ) - Các lệnh đang chờ thực thi.
+ Sẵn sàng (ready ) - Tiến trình chờ để ấn dịnh sẵn trong CPU .
+ Kết thức ( Termnated )- Tiến trình vửa thực hiện xong .
Chú ý: cùng một lúc có thể có nhiều tiến trình ở trạng thái: New hoặc Waitting.
VD đời thường:
-Trong 1 siêu thị: quản lý là hệ điều hành,nhân viên trong siêu thị là tiến trình phục vụ hệ thống,còn khách hàng là người sử dụng tiến trình.
  Tiến trình gồm có: tiến trình hệ thống và tiến trình người dùng.
   - Tiến trình hệ thống: được sinh ra khi thực hiện các lời gọi hệ thống.
   - Tiến trình người dùng: được sinh ra khi thực thi các chỉ thị của người sử dụng.
  Tiến trình được chia làm 2 loại:
   - Tiến trình kế tiếp.
   - Tiến trình song song.
VuNguyenQuynhLam_I12C- Tổng số bài gửi : 14
Join date : 15/02/2012
Age : 36
Đến từ : Bình Thuận
Phân biệt điều phối chậm với điều phối nhanh.
*Điều phối chậm (Long-term scheduler (or job scheduler)):
- Chọn process nào sẽ được đưa vào ready queue (từ New chuyển sang Ready)
- Kiểm soát Độ đa chương
- Do có nhiều thời gian (tới vài phút), loại scheduler này có điều kiện để lựa chọn kỹ càng nhằm phối hợp cân đối 2 loại tiến trình
+ Hướng CPU: tính toán nhiều, ít I/O.
Ví dụ: Công ty có một chiếc ô tô (CPU), có 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) 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 ko cần sử dụng đến ô tô (I/O). Vậy quá lãng phí ô tô (CPU)
- Mục đích cân bằng tải.
*Điều phối nhanh (Short-term scheduler (or CPU scheduler)):
- Còn gọi là Điều phối CPU.
- Chọn tiến trình từ Ready Queue để cấp CPU.
- Có tần suất công việc cao. Thường cứ 100 ms lại tốn 10 ms để xác định tiến trình kế tiếp, như vậy 10/(100+10)=9% thời gian CPU được dùng để điều phối công việc.
- Chọn process nào sẽ được đưa vào ready queue (từ New chuyển sang Ready)
- Kiểm soát Độ đa chương
- Do có nhiều thời gian (tới vài phút), loại scheduler này có điều kiện để lựa chọn kỹ càng nhằm phối hợp cân đối 2 loại tiến trình
+ Hướng CPU: tính toán nhiều, ít I/O.
Ví dụ: Công ty có một chiếc ô tô (CPU), có 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) 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 ko cần sử dụng đến ô tô (I/O). 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.
lymydung_I12A- Tổng số bài gửi : 21
Join date : 15/02/2012
Trình bày những 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, ....
- 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, ....
lymydung_I12A- Tổng số bài gửi : 21
Join date : 15/02/2012
Phân tích khái niệm chuyển ngữ cảnh (Context Switch).
Là chức năng của Dispatcher khi chuyển CPU từ tiến trình Po sang tiến trình P1 khác: Ghi môi trường và trạng thái làm việc của P0 vào PCB0. Sau đó khôi phục môi trường và trạng thái làm việc của tiến trình P1 từ PCB1.Sau khi khôi phục thì tiến trình P1 mới chạy bình thường.
Chức năng PCB là một vùng nhớ lưu trữ các thông tin mô tả cho tiến trình, với các thành phần chủ yếu bao gồm:
- Định danh của tiến trình : xác định hoạt động hiện hành của tiến trình.
- Trạng thái tiến trình : xác định hoạt động hiện hành của tiến trình.
- Ngữ cảnh của tiến trình : mô tả các tài nguyên tiến trình đang trong quá trình như : trạng thái CPU, bộ xử lí, bộ nhớ chính, tài nguyên sử dụng, tài nguyên tạo lập.
- Thông tin giao tiếp : phản ánh các thông tin về quan hệ của tiến trình với các tiến trình khác trong hệ thống như : tiến trình cha, tiến trình con, độ ưu tiên.
- Thông tin thống kê : là những thông tin thống kê về hoạt động của tiến trình, như thời gian đã sử dụng CPU, thời gian chờ.
Thời gian chuyển ngữ cảnh khá lớn: Từ 1-1000 ms.
Công nghệ Đa luồng được dùng để giảm thời gian chuyển ngữ cảnh.
Hệ máy Sun UltraSPARC có nhiều bộ thanh ghi được dùng để hỗ trợ Context Switch bằng phần cứng: Chuyển ngữ cảnh đơn thuần chỉ là thay đổi con trỏ từ Bộ thanh ghi này sang Bộ thanh ghi khác.
Chức năng PCB là một vùng nhớ lưu trữ các thông tin mô tả cho tiến trình, với các thành phần chủ yếu bao gồm:
- Định danh của tiến trình : xác định hoạt động hiện hành của tiến trình.
- Trạng thái tiến trình : xác định hoạt động hiện hành của tiến trình.
- Ngữ cảnh của tiến trình : mô tả các tài nguyên tiến trình đang trong quá trình như : trạng thái CPU, bộ xử lí, bộ nhớ chính, tài nguyên sử dụng, tài nguyên tạo lập.
- Thông tin giao tiếp : phản ánh các thông tin về quan hệ của tiến trình với các tiến trình khác trong hệ thống như : tiến trình cha, tiến trình con, độ ưu tiên.
- Thông tin thống kê : là những thông tin thống kê về hoạt động của tiến trình, như thời gian đã sử dụng CPU, thời gian chờ.
Thời gian chuyển ngữ cảnh khá lớn: Từ 1-1000 ms.
Công nghệ Đa luồng được dùng để giảm thời gian chuyển ngữ cảnh.
Hệ máy Sun UltraSPARC có nhiều bộ thanh ghi được dùng để hỗ trợ Context Switch bằng phần cứng: Chuyển ngữ cảnh đơn thuần chỉ là thay đổi con trỏ từ Bộ thanh ghi này sang Bộ thanh ghi khác.
lymydung_I12A- Tổng số bài gửi : 21
Join date : 15/02/2012
Quote
Producer()
{
// chờ trong khi bộ đệm đầy
waitforsingle (SemFull, INITE)
// sản xuất sản phẩm
Releave (SemEmty)
// bộ đệm đã có sản phẩm
}
bạn có thể giải thích rõ đọan chương trình trên.
{
// chờ trong khi bộ đệm đầy
waitforsingle (SemFull, INITE)
// sản xuất sản phẩm
Releave (SemEmty)
// bộ đệm đã có sản phẩm
}
bạn có thể giải thích rõ đọan chương trình trên.
Truc_Phuong(I111C) đã viết:Bài toán sản xuất và tiêu thụ được phát biểu chung như sau:
Có 1 bộ nhớ đệm (Buffer và 2 tiến trình sản xuất Producer và tiến trình tiêu thụ Comsumer. Tiến trình Producer lần lượt sản xuất các sản phẩm S1, S2 vào khoang của bộ đệm Buffer.
Tiến trình tiêu thụ lần lượt lấy các sản phẩm ra khỏi bộ đêm. Công việc của Producer và Consumer cần được đồng bộ hóa: tiến trình Consumer không thể lấy sản phẩm khi Buffer trống và tiến trình Producer không thể sản xuất khi bộ đêm đầy.
Đồng bộ hóa dùng 2 đèn hiệu Semfull và SemEmty
Producer()
{
// chờ trong khi bộ đệm đầy
waitforsingle (SemFull, INITE)
// sản xuất sản phẩm
Releave (SemEmty)
// bộ đệm đã có sản phẩm
}
Admin
Code viết sai quá ! Cần đi học đều !
lequanghanh(102c)- Tổng số bài gửi : 61
Join date : 18/02/2011
Age : 38
Đến từ : Phương Đông - Trà Đông - Bắc Trà My - Quảng Nam
Câu 15.Phân loại hốc liên lạc trong hệ thống Client-Server
Mới bắt net nên tranh thủ post bài,mong các chiến hữu ủng hộ.
+ Có kết nối - Connection-Oriented (TCP - Transmission Control Protocol): Thiết lập sẵn mối liên kết giữa 2 máy trước khi truyền.
+ Không kết nối - Connectionless (UDP - User Datagram Protocol): Không phải thiết lập sẵn mối liên kết trước khi truyền, do đó dễ dàng liên lạc với nhiều máy một lúc, nhưng không đảm bảo bằng TCP.
+ Có kết nối - Connection-Oriented (TCP - Transmission Control Protocol): Thiết lập sẵn mối liên kết giữa 2 máy trước khi truyền.
+ Không kết nối - Connectionless (UDP - User Datagram Protocol): Không phải thiết lập sẵn mối liên kết trước khi truyền, do đó dễ dàng liên lạc với nhiều máy một lúc, nhưng không đảm bảo bằng TCP.
Được sửa bởi NguyenThanhCang(I12A) ngày 14/3/2012, 10:11; sửa lần 1.
NguyenThanhCang(I12A)- Tổng số bài gửi : 24
Join date : 23/02/2012
Age : 35
Đến từ : Vũng Tàu
Thảo luận bài 4 : Phát biểu bài toán Tiêu thụ - sản xuất với thuật giải phù hợp
Phát biểu bài toán:
• Giả sử có Bộ nhớ đệm (Buffer) bao gồm nhiều khoang (Items) được tiến trình Producer lần lượt đưa các sản phẩm S1, S2,... vào.
• Tiến trình Consumer lần lượt lấy sản phẩm ra theo đúng thứ tự.
• Công việc của Producer phải đồng bộ với Consumer: Không được đưa sản phẩm vào khi Buffer đầy, Không được lấy ra khi chưa có.
Trình bày giải thuật:
• Giả sử có Bộ nhớ đệm (Buffer) bao gồm nhiều khoang (Items) được tiến trình Producer lần lượt đưa các sản phẩm S1, S2,... vào.
• Tiến trình Consumer lần lượt lấy sản phẩm ra theo đúng thứ tự.
• Công việc của Producer phải đồng bộ với Consumer: Không được đưa sản phẩm vào khi Buffer đầy, Không được lấy ra khi chưa có.
Trình bày giải thuật:
Nguyen Sy Hung I12A- Tổng số bài gửi : 28
Join date : 15/02/2012
Age : 35
Re: Thảo luận Bài 4
Chuyển ngữ cảnh là chức năng của Dispatcher khi cần chuyển CPU từ tiến trình P.0 này sang tiến trình P.1 khác:
cụ thể: Ghi môi trường và trạng thái làm việc của P.0 vào PCB.0, nạp môi trường và trạng thái làm việc của tiến trình P.1 từ PCB.1
- Thời gian chuyển ngữ cảnh tương đối lớn: 1 đến 1000 micro s
- Hệ máy SunUltralSPARC có nhiều bộ thanh ghi, được dùng để hỗ trợ Context Swith bằng phần cứng
- Công nghệ đa luồng dùng để giảm thời gian chuyển ngữ cảnh
cụ thể: Ghi môi trường và trạng thái làm việc của P.0 vào PCB.0, nạp môi trường và trạng thái làm việc của tiến trình P.1 từ PCB.1
- Thời gian chuyển ngữ cảnh tương đối lớn: 1 đến 1000 micro s
- Hệ máy SunUltralSPARC có nhiều bộ thanh ghi, được dùng để hỗ trợ Context Swith bằng phần cứng
- Công nghệ đa luồng dùng để giảm thời gian chuyển ngữ cảnh
TranHuyCuong17 (I12A)- Tổng số bài gửi : 37
Join date : 16/02/2012
Age : 37
Đến từ : DLY™
Câu 13:Truyền thông điệp trong Windows
Các hàm API dùng để Gửi/Nhận thông điệp
+ SendMessage: Gửi có chờ
+ PostMessage: Gửi không chờ
+ SendMessageTimeout: Gửi có chờ nhưng với thời hạn
+ WaitMessage: Chờ thông điệp đến
+ GetMessage: Nhận có chờ
+ PeekMessage: Nhận không chờ
+ SendMessage: Gửi có chờ
+ PostMessage: Gửi không chờ
+ SendMessageTimeout: Gửi có chờ nhưng với thời hạn
+ WaitMessage: Chờ thông điệp đến
+ GetMessage: Nhận có chờ
+ PeekMessage: Nhận không chờ
NguyenThanhCang(I12A)- Tổng số bài gửi : 24
Join date : 23/02/2012
Age : 35
Đến từ : Vũng Tàu
Cộng tác giữa các tiến trình
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 để hỗ trợ đả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ế: Một đội ngũ kĩ sư tham gia viết một dự án phần mềm cho cho một cty.Để công việc tiến hành một cách nhất quán và hiệu quả,nhóm kĩ sư này chia nhỏ dự án ra thành nhiều công đoạn,mỗi công đoạn sẽ do mỗi nhóm nhỏ phụ trách.Nhóm thứ nhất viết Phần giao diện ứng dụng vơí người dùng,nhóm thứ hai viết Code xử lí chương trình,nhóm thứ 3 thiết kế cơ sở dữ liệu..
Sau đó 3 nhóm tổng hợp lại từng kết quả của mình và hoàn thiện phần mềm.
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 từng phần mềm riêng để kiểm thử kết quả nghiên cứu đánh giá.
Đả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 quá trình thiết kế phần mềm, mỗi người kỹ sư sẽ thiết kế một phần chương trình được phân công. Đ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 phần mềm được hoàn thiện nguời dùng có thể tận hưởng được công nghệ mới,như chương trình tiện dụng hơn,sử lí thông minh hơn,giao diện đẹp...Tất cả là do sự cộng tác của từng giai đoạn,mỗi giai đoạn sử dụng tinh hoa cuả từng cá nhân từng nhóm riêng biệt....
Giữa các tiến trình cần sự cộng tác với nhau để hỗ trợ đả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ế: Một đội ngũ kĩ sư tham gia viết một dự án phần mềm cho cho một cty.Để công việc tiến hành một cách nhất quán và hiệu quả,nhóm kĩ sư này chia nhỏ dự án ra thành nhiều công đoạn,mỗi công đoạn sẽ do mỗi nhóm nhỏ phụ trách.Nhóm thứ nhất viết Phần giao diện ứng dụng vơí người dùng,nhóm thứ hai viết Code xử lí chương trình,nhóm thứ 3 thiết kế cơ sở dữ liệu..
Sau đó 3 nhóm tổng hợp lại từng kết quả của mình và hoàn thiện phần mềm.
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 từng phần mềm riêng để kiểm thử kết quả nghiên cứu đánh giá.
Đả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 quá trình thiết kế phần mềm, mỗi người kỹ sư sẽ thiết kế một phần chương trình được phân công. Đ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 phần mềm được hoàn thiện nguời dùng có thể tận hưởng được công nghệ mới,như chương trình tiện dụng hơn,sử lí thông minh hơn,giao diện đẹp...Tất cả là do sự cộng tác của từng giai đoạn,mỗi giai đoạn sử dụng tinh hoa cuả từng cá nhân từng nhóm riêng biệt....
Được sửa bởi NguyenThanhCang(I12A) ngày 14/3/2012, 11:01; sửa lần 1.
NguyenThanhCang(I12A)- Tổng số bài gửi : 24
Join date : 23/02/2012
Age : 35
Đến từ : Vũng Tàu
CÁC LOẠI ĐIỀU PHỐI VÀ VÍ DỤ MINH HỌA
Đ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ụ: Một gia đình có 1 chiếc tivi Snony siêu phằng màn hình đẹp 100' (CPU), các thành viên trong gia đình có sở thích khác nhau,nên cần phải xem chương trình của mình (nhiều tiến trình) . Do đó, Tivi (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ụ: Gia đình có một chiếc tivi (CPU), các thành viên trong gia đinh chỉ biết ngồi đọc sách (I/O), không sử dụng đến tivi. Vậy quá lãng phí tivi(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 học 107 Ngô Tất Tố "nhỏ" , nhưng vào một ngày đẹp trời bỗng nhiên sinh viên sợ rớt môn HĐH nên đi học thật nhiều(nhiều tiến trình). Thầy Giáo sẽ chia ca đưa 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 thứ nhất học xong Thầy Giáo sẽ thêm 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).
• 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ụ: Một gia đình có 1 chiếc tivi Snony siêu phằng màn hình đẹp 100' (CPU), các thành viên trong gia đình có sở thích khác nhau,nên cần phải xem chương trình của mình (nhiều tiến trình) . Do đó, Tivi (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ụ: Gia đình có một chiếc tivi (CPU), các thành viên trong gia đinh chỉ biết ngồi đọc sách (I/O), không sử dụng đến tivi. Vậy quá lãng phí tivi(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 học 107 Ngô Tất Tố "nhỏ" , nhưng vào một ngày đẹp trời bỗng nhiên sinh viên sợ rớt môn HĐH nên đi học thật nhiều(nhiều tiến trình). Thầy Giáo sẽ chia ca đưa 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 thứ nhất học xong Thầy Giáo sẽ thêm 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).
NguyenThanhCang(I12A)- Tổng số bài gửi : 24
Join date : 23/02/2012
Age : 35
Đến từ : Vũng Tàu
Bai toan tieu thu san xuat
Phát biểu:
Bài toán sản xuất tiêu thụ được phát biểu chung như sau:
Có một bộ đệm(Buffer) và 2 tiến trình sản xuất Producer và tiến trình tiêu thụ Consumer.Tiến trình Producer lần lượt sản xuất các sản phẩm S1, S2 vào khoang của bộ đệm Buffer.Tiến trình tieu thụ lần lượt lấy các sản phẩm ra khỏi bộ đệm.Công việc của Producer và Consumer cần được đồng bộ hóa tiến trình Consumer không thể lấy sản phẩm ra khi bộ đệm trống, và tiến trình Producer không thể sản xuất khi bộ đệm đầy.
Đồng bộ hóa bằng 2 đèn hiệu semFull và semEmpty.
CODE:
Producer()
{
//Chờ trong khi bộ đệm đầy
WaitForSingleObject(semFull, INFINITE);
// Sản xuất sản phẩm và đưa vào Buffer
ReleaseSemaphore(semEmpty);
//Bộ đệm đã có sản phẩm
}
CODE:
Consumer()
{
//Chờ đến khi có sản phẩm
WaitForSingleObject(semEmpty, INFINITE);
// Tiêu thụ sản phẩm
ReleaseSemaphore(semFull);
//Bộ đệm đã có chỗ trống
}
Bài toán sản xuất tiêu thụ được phát biểu chung như sau:
Có một bộ đệm(Buffer) và 2 tiến trình sản xuất Producer và tiến trình tiêu thụ Consumer.Tiến trình Producer lần lượt sản xuất các sản phẩm S1, S2 vào khoang của bộ đệm Buffer.Tiến trình tieu thụ lần lượt lấy các sản phẩm ra khỏi bộ đệm.Công việc của Producer và Consumer cần được đồng bộ hóa tiến trình Consumer không thể lấy sản phẩm ra khi bộ đệm trống, và tiến trình Producer không thể sản xuất khi bộ đệm đầy.
Đồng bộ hóa bằng 2 đèn hiệu semFull và semEmpty.
CODE:
Producer()
{
//Chờ trong khi bộ đệm đầy
WaitForSingleObject(semFull, INFINITE);
// Sản xuất sản phẩm và đưa vào Buffer
ReleaseSemaphore(semEmpty);
//Bộ đệm đã có sản phẩm
}
CODE:
Consumer()
{
//Chờ đến khi có sản phẩm
WaitForSingleObject(semEmpty, INFINITE);
// Tiêu thụ sản phẩm
ReleaseSemaphore(semFull);
//Bộ đệm đã có chỗ trống
}
HUYNHMINHHAI(I12A)- Tổng số bài gửi : 18
Join date : 22/02/2012
Re: Thảo luận Bài 4
huynhvanhung(I12A) đã viết:
...
VD:Nhu cầu nối mạng internet của chúng ta.
vd này chưa rõ lắm, bạn có thể nêu rõ hơn không?
Lợi ích của Công nghệ đa luồng
Đọc mấy cái slide của thầy thấy công nghê đa luồn khác hay nên mình đã lượm lặt được một số lợi ích của nó, các bạn cùng tham khảo nhé :
+ Đảm bảo được khả năng đáp ứng của tiến trình tốt hơn, khi lập trình đa luồng thì một khi 1 luồng có sự cố thì luồng khác vẫn làm việc, vẫn phản hồi ,trong trường hợp lập trình đơn luồng khi gặp sự cố thì luồng đó sẽ chậm và làm chậm luôn cả tiến trình, đa luồng một ứng dụng giao tiếp cho phép một chương trình tiếp tục chạy thậm chí nếu một phần của nó bị khóa hay đang thực hiện một thao tác dài, do đó gai tăng sự đáp ứng đối với người dùng, Ví dụ : một trình duyệt web vẫn có thể đáp ứng người dùng bằng một luồng trong khi vẫn nạp bằng một luồng khác.
Ví dụ : Các cô ở tổng đài 108 là các luồng , khi khách hàng điện thoại hỏi 108, thì một trong các cô (người thứ nhất) sẽ trả lời, nếu trong thời điểm đó khách hàng thứ hai gọi 108,thì một trong các cô (cô thứ 2) còn lại sẽ trả lời
+ Theo mặc định các luồng có thể dùng chung bộ nhớ và tai nguyên của luồng cha. Thuận lợi của việc chia sẻ mã là nó cho phép một ứng dụng có nhiều hoạt động của các luồng khác nằm trong cùng không gian, địa chỉ,vài luồng cùng vận hành trong một vùng địa chỉ dễ dùng chung tài nguyên hơn so với trường hợp đa tiến trình.
Ví dụ : trong nhà có kệ sách, xe máy, máy vi tính … mọi người có thể dùng chung và sử dụng chung kệ sách, xe máy, máy vi tính. Trong khi không thể dùng chung những đồ dùng trên với nhà khác được
Trong lớp chúng ta có thể dùng bảng củ lớp mình, chúng ta có thể chia sẻ các thông tin cần thiết cho tất cả các thành viên ở trong lớp biết,trong khi chúng ta khong thể dùng chung bảng của lớp khác để chia sẻ thông tin cho lớp mình được.
+ Tiết kiệm (Economy) : Cấp phát bộ nhớ và tài nguyên cho tiến trình là công việc rất tốn kém. Do luồng có thể dùng chung tài nguyên với luồng cha và các luồng khác, việc tạo lập ngữ cảnh cũng nhanh hơn (Solaris2, tạo tiến trình chậm hơn 30 lần, chuyển ngữ cảnh chậm hơn 5 lần
Ví dụ : Các bạn trong lớp là các luồng đang dùng chung một cái bảng của lớp, ai cần ghi thì ghi, ai cần thì chụp hình về xem
Có thể bố trí một chỗ ngồi ở trong lớp cho một bạn đến sau dễ dàng hơn việc làm một chiếc ghế khác cho bạn đó.
+ Chuyển ngữ cảnh từ luồng này sang luồng khác thì nhanh hơn chuyển ngữ cảnh từ tiến trình này sang tiến trình khác.
+ Tận dụng được ưu thế kiến trúc đa xử lý (nhiều CPU). Khi đa luồng thì 1 luồng dùng CPU này và 1 luồng dùng CPU khác sẽ nhanh hơn và các luồng có thể làm việc song song , mỗi luồng có thể chạy bởi CPU riêng. Tiến trình đa luồng sẽ làm việc nhanh hơn tiến trình đơn luồng.
+ Lập trình đa luồng dễ dàng hơn lập trình đa tiến trình.
+ Đảm bảo được khả năng đáp ứng của tiến trình tốt hơn, khi lập trình đa luồng thì một khi 1 luồng có sự cố thì luồng khác vẫn làm việc, vẫn phản hồi ,trong trường hợp lập trình đơn luồng khi gặp sự cố thì luồng đó sẽ chậm và làm chậm luôn cả tiến trình, đa luồng một ứng dụng giao tiếp cho phép một chương trình tiếp tục chạy thậm chí nếu một phần của nó bị khóa hay đang thực hiện một thao tác dài, do đó gai tăng sự đáp ứng đối với người dùng, Ví dụ : một trình duyệt web vẫn có thể đáp ứng người dùng bằng một luồng trong khi vẫn nạp bằng một luồng khác.
Ví dụ : Các cô ở tổng đài 108 là các luồng , khi khách hàng điện thoại hỏi 108, thì một trong các cô (người thứ nhất) sẽ trả lời, nếu trong thời điểm đó khách hàng thứ hai gọi 108,thì một trong các cô (cô thứ 2) còn lại sẽ trả lời
+ Theo mặc định các luồng có thể dùng chung bộ nhớ và tai nguyên của luồng cha. Thuận lợi của việc chia sẻ mã là nó cho phép một ứng dụng có nhiều hoạt động của các luồng khác nằm trong cùng không gian, địa chỉ,vài luồng cùng vận hành trong một vùng địa chỉ dễ dùng chung tài nguyên hơn so với trường hợp đa tiến trình.
Ví dụ : trong nhà có kệ sách, xe máy, máy vi tính … mọi người có thể dùng chung và sử dụng chung kệ sách, xe máy, máy vi tính. Trong khi không thể dùng chung những đồ dùng trên với nhà khác được
Trong lớp chúng ta có thể dùng bảng củ lớp mình, chúng ta có thể chia sẻ các thông tin cần thiết cho tất cả các thành viên ở trong lớp biết,trong khi chúng ta khong thể dùng chung bảng của lớp khác để chia sẻ thông tin cho lớp mình được.
+ Tiết kiệm (Economy) : Cấp phát bộ nhớ và tài nguyên cho tiến trình là công việc rất tốn kém. Do luồng có thể dùng chung tài nguyên với luồng cha và các luồng khác, việc tạo lập ngữ cảnh cũng nhanh hơn (Solaris2, tạo tiến trình chậm hơn 30 lần, chuyển ngữ cảnh chậm hơn 5 lần
Ví dụ : Các bạn trong lớp là các luồng đang dùng chung một cái bảng của lớp, ai cần ghi thì ghi, ai cần thì chụp hình về xem
Có thể bố trí một chỗ ngồi ở trong lớp cho một bạn đến sau dễ dàng hơn việc làm một chiếc ghế khác cho bạn đó.
+ Chuyển ngữ cảnh từ luồng này sang luồng khác thì nhanh hơn chuyển ngữ cảnh từ tiến trình này sang tiến trình khác.
+ Tận dụng được ưu thế kiến trúc đa xử lý (nhiều CPU). Khi đa luồng thì 1 luồng dùng CPU này và 1 luồng dùng CPU khác sẽ nhanh hơn và các luồng có thể làm việc song song , mỗi luồng có thể chạy bởi CPU riêng. Tiến trình đa luồng sẽ làm việc nhanh hơn tiến trình đơn luồng.
+ Lập trình đa luồng dễ dàng hơn lập trình đa tiến trình.
phamduyI12A- Tổng số bài gửi : 20
Join date : 19/02/2012
Age : 34
Đến từ : TPHCM
Phân loại hốc liên lạc (Two types of Sockets)
Phân loại hốc liên lạc (Two types of Sockets)
° Có kết nối - Connection-Oriented (TCP - Transmission Control Protocol): Thiết lập sẵn mối liên kết giữa 2 máy trước khi truyền.
° Không kết nối - Connectionless (UDP - User Datagram Protocol): Không phải thiết lập sẵn mối liên kết trước khi truyền, do đó dễ dàng liên lạc với nhiều máy một lúc, nhưng không đảm bảo bằng TCP.
Sử dụng Microsoft WinSock Control
° “Chat” giữa 2 máy
1. Dùng giao thức TCP Server @ @ Client
2. Dùng giao thức UDP PeerA @ @ PeerB
° Truyền file từ Server về Client: PC World VN, số 9, 2003, tr.147
° Có kết nối - Connection-Oriented (TCP - Transmission Control Protocol): Thiết lập sẵn mối liên kết giữa 2 máy trước khi truyền.
° Không kết nối - Connectionless (UDP - User Datagram Protocol): Không phải thiết lập sẵn mối liên kết trước khi truyền, do đó dễ dàng liên lạc với nhiều máy một lúc, nhưng không đảm bảo bằng TCP.
Sử dụng Microsoft WinSock Control
° “Chat” giữa 2 máy
1. Dùng giao thức TCP Server @ @ Client
2. Dùng giao thức UDP PeerA @ @ PeerB
° Truyền file từ Server về Client: PC World VN, số 9, 2003, tr.147
Được sửa bởi LuongGiaDuc(I12A) ngày 14/3/2012, 14:16; sửa lần 1.
LuongGiaDuc(I12A)- Tổng số bài gửi : 29
Join date : 10/03/2012
Age : 34
Đến từ : TPHCM
Giới thiệu các loại trình điều phối
1. Điều phối chậm (Long-Term Scheduler):
– Chọn tiến trình từ Job Queue để đưa vào Ready Queue .
– Kiểm soát Độ đa chương (số tiến trình trong bộ nhớ).
– 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 (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: Cân bằng tải cho toàn hệ thống
2. Điều phối nhanh (Short-Term 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.
3. Đ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.
– Chọn tiến trình từ Job Queue để đưa vào Ready Queue .
– Kiểm soát Độ đa chương (số tiến trình trong bộ nhớ).
– 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 (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: Cân bằng tải cho toàn hệ thống
2. Điều phối nhanh (Short-Term 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.
3. Đ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.
huynhtamhaoI12A- Tổng số bài gửi : 24
Join date : 17/02/2012
Age : 34
mô hình chuyển trạng thái của tiến trình
New : 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 blocked hay 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.
Tiến trình P1: vào hàng đợi Job-Queue ở trạng thái New, sẽ đợi 1 khoảng thời gian của quá trình điều
ph ối chậm (Scheduler Long Term) của hệ điều hành(HĐH) để chọn tiến trình, sau khi được O.S chọn, P1
chuyển sang hàng đợi reday quueue và ở trạng thái Ready. Lúc này P1 chỉ đợi cấp CPU và running.
Sau một khỏang thời gian running, tiến trình P2 xuất hiện. Lúc này, hệ điều hành sẽ ghi lại thông tin của
P1 vào thanh PCB1 bao gồm những thông tin: con trỏ, trạng thái của P1, số hiệu của tiến trình P1, Bộ
đếm P1, nội dung của P1…Và chuyển P1 sang hàng đợi Waiting và chuyển trạng thái Ready. Lúc này, P2
sẽ được cấp CPU và running. Và sau một khỏang thời gian running, P2 cũng sẽ chuyển sang hàng đợi
waiting và chuyển trạng thái ready, lúc này HĐH cũng ghi lại thông tin vào thanh ghi PCB2 như ở P1. Sau đó, HĐH sẽ load lại thông tin của PCB1 và P1 sẽ tiếp t ục running. Quá trình này cũng sẽ lập
lại cho P2. Đển khi P1 và P2 kết thúc.
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 blocked hay 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.
Tiến trình P1: vào hàng đợi Job-Queue ở trạng thái New, sẽ đợi 1 khoảng thời gian của quá trình điều
ph ối chậm (Scheduler Long Term) của hệ điều hành(HĐH) để chọn tiến trình, sau khi được O.S chọn, P1
chuyển sang hàng đợi reday quueue và ở trạng thái Ready. Lúc này P1 chỉ đợi cấp CPU và running.
Sau một khỏang thời gian running, tiến trình P2 xuất hiện. Lúc này, hệ điều hành sẽ ghi lại thông tin của
P1 vào thanh PCB1 bao gồm những thông tin: con trỏ, trạng thái của P1, số hiệu của tiến trình P1, Bộ
đếm P1, nội dung của P1…Và chuyển P1 sang hàng đợi Waiting và chuyển trạng thái Ready. Lúc này, P2
sẽ được cấp CPU và running. Và sau một khỏang thời gian running, P2 cũng sẽ chuyển sang hàng đợi
waiting và chuyển trạng thái ready, lúc này HĐH cũng ghi lại thông tin vào thanh ghi PCB2 như ở P1. Sau đó, HĐH sẽ load lại thông tin của PCB1 và P1 sẽ tiếp t ục running. Quá trình này cũng sẽ lập
lại cho P2. Đển khi P1 và P2 kết thúc.
LeMinhDuc (I11C)- Tổng số bài gửi : 39
Join date : 26/08/2011
Ví dụ từ đời thường của Đồng bộ hóa liên lạc (Synchronization)
Ví dụ từ đời thường của việc gửi thông điệp có chờ ( Blocking Send) và gửi thông điệp không chờ ( Nonblocking Send) :
- Gửi thông điệp có chờ ( Blocking Send) : bạn A gửi một thông điệp cho bạn B và chờ khi nào bạn B trả lời mới làm việc khác. Nếu bạn B không trả lời thì bạn A vẫn chờ cho đến khi nào bạn B trả lời và không làm việc gì khác cả.
- Gửi thông điệp không chờ ( Nonblocking Send) : bạn A gửi thông điệp cho bạn B rồi vào nhà xem phim không chờ bạn B trả lời. Dù bạn B có trả lời hay không thì A vẫn đi làm việc khác.
Ta có thể lấy ví dụ tương tự cho nhận thông điệp có chờ ( Blocking Receive) và nhận thông điệp không chờ ( Nonblocking Receive)
- Gửi thông điệp có chờ ( Blocking Send) : bạn A gửi một thông điệp cho bạn B và chờ khi nào bạn B trả lời mới làm việc khác. Nếu bạn B không trả lời thì bạn A vẫn chờ cho đến khi nào bạn B trả lời và không làm việc gì khác cả.
- Gửi thông điệp không chờ ( Nonblocking Send) : bạn A gửi thông điệp cho bạn B rồi vào nhà xem phim không chờ bạn B trả lời. Dù bạn B có trả lời hay không thì A vẫn đi làm việc khác.
Ta có thể lấy ví dụ tương tự cho nhận thông điệp có chờ ( Blocking Receive) và nhận thông điệp không chờ ( Nonblocking Receive)
quynhnhi.nguyen_I12A- Tổng số bài gửi : 17
Join date : 07/03/2012
Ví dụ từ đời thường của Đồng bộ hóa liên lạc (Synchronization)
Ví dụ từ đời thường của việc gửi thông điệp có chờ ( Blocking Send) và gửi thông điệp không chờ ( Nonblocking Send) :
- Gửi thông điệp có chờ ( Blocking Send) : bạn A gửi một thông điệp cho bạn B và chờ khi nào bạn B trả lời mới làm việc khác. Nếu bạn B không trả lời thì bạn A vẫn chờ cho đến khi nào bạn B trả lời và không làm việc gì khác cả.
- Gửi thông điệp không chờ ( Nonblocking Send) : bạn A gửi thông điệp cho bạn B rồi vào nhà xem phim không chờ bạn B trả lời. Dù bạn B có trả lời hay không thì A vẫn đi làm việc khác.
Ta có thể lấy ví dụ tương tự cho nhận thông điệp có chờ ( Blocking Receive) và nhận thông điệp không chờ ( Nonblocking Receive)
- Gửi thông điệp có chờ ( Blocking Send) : bạn A gửi một thông điệp cho bạn B và chờ khi nào bạn B trả lời mới làm việc khác. Nếu bạn B không trả lời thì bạn A vẫn chờ cho đến khi nào bạn B trả lời và không làm việc gì khác cả.
- Gửi thông điệp không chờ ( Nonblocking Send) : bạn A gửi thông điệp cho bạn B rồi vào nhà xem phim không chờ bạn B trả lời. Dù bạn B có trả lời hay không thì A vẫn đi làm việc khác.
Ta có thể lấy ví dụ tương tự cho nhận thông điệp có chờ ( Blocking Receive) và nhận thông điệp không chờ ( Nonblocking Receive)
quynhnhi.nguyen_I12A- Tổng số bài gửi : 17
Join date : 07/03/2012
Tắt các dịch vụ, tiến trình chạy ẩn trong Windows giúp máy tính chạy nhanh hơn
Trong bài giới thiệu dưới đây Hiệp đã áp dụng với máy tính như tắt các dịch vụ khi khởi động giúp máy tính chạy nhanh hơn, tắt chế độ chạy autorun khi cắm USB, bỏ đĩa CD virus khó hoạt động hơn.
Trong phần đầu tiên của loạt bài viết về các tiến trình trong Windows chúng ta sẽ cùng tìm hiểu về tiến trình Svchost.exe, tiến trình thường thấy nhất trong Windows.
Svchost.exe là gì ?
Theo Microsoft, svchost.exe là một tiến trình dành cho các dịch vụ (service) của Windows được chạy từ các thư viện liên kết động (file có đuôi .dll). Do 1 file đuôi dll không thể thực thi trực tiếp trên Windows mà phải được nạp từ một file đuôi .exe nên tiến trình svchost.exe đã được ra đời. Một số loại virus thường giả dạng file này với tên gần giống(ví dụ như svch0st.exe) hoặc có cùng tên nhưng nằm trong thư mục khác với thư mục Windows\system32 chứa file hệ thống.
Vì sao lại cần nhiều hơn 1 tiến trình Svchost.exe ?
Trong quá trình hoạt động Windows yêu cầu rất nhiều dịch vụ khác nhau như dịch vụ về âm thanh, internet, in ấn v.v... nên nếu tất cả chúng đều được chạy từ 1 tiến trình svchost.exe duy nhất thì khi có lỗi xảy ra với tiến trình này, nó sẽ kéo theo tất cả các dịch vụ gặp lỗi theo và khiến Windows không hoạt động được. Vì lý do đó mà các dịch vụ được chia ra làm nhiều nhóm và mỗi nhóm sẽ được khởi động từ một tiến trình svchost.exe độc lập.
Kiểm tra các dịch vụ trong svchost.exe
Nếu mở Task Manager lên bạn có thể thấy có nhiều tiến trình svchost.exe được chạy đồng thời, tuy nhiên công cụ này lại không cho phép bạn xem trong từng svchost.exe bao gồm những dịch vụ gì.
Để xem được cụ thể các tiến trình bạn có thể dùng lệnh tasklist /SVC bên trong cửa sổ lệnh cmd (Start -> Run -> gõ cmd).
Tuy nhiên cách này hơi phức tạp đối với những ai không quen sử dụng các lệnh điều khiển nên bạn có thể sử dụng công cụ Process Explorer, nó rất hữu hiệu trong việc theo dõi hoạt động các tiến trình trong Windows. Chỉ cần di chuột vào một tiến trình svchost.exe là các dịch vụ trong đó sẽ được liệt kê đầy đủ.
Bạn còn có thể dừng một dịch vụ thuộc tiến trình svchost.exe bằng cách click đúp vào tiến trình đó để mở cửa sổ Properties, danh sách các dich vụ sẽ hiển thị trong thẻ Services và muốn ngưng dịch vụ nào bạn chỉ cần chọn và nhấn Stop. Ở phần cửa sổ phía dưới có chỉ dẫn đầy đủ về nhiệm vụ của từng dịch vụ nên bạn cần đọc kỹ trước khi tắt một dịch vụ nào đó.
Tắt các dịch vụ khi khởi động
Trong thực tế có nhiều dịch vụ bạn ít hoặc không sử dụng đến nhưng vẫn được Windows load khi khởi động làm chậm máy và tốn bộ nhớ. Nếu bạn đã biết chắc dịch vụ nào là không cần thiết thì có thể ngăn không cho dịch vụ đó khởi động khi vào Windows bằng cách vào Control Panel > Administrative Tools > Services (hoặc gõ services.msc trong Search Menu hoặc Run).
Tìm dịch vụ mà bạn muốn tắt, và click chuột phải rồi chọn Properties.
Thay đổi dòng Startup Type thành Disabled và sau đó click Stop để dừng dịch vụ.
Tắt chế độ Autorun: vào Start --> run --> gpedit.msc
Cửa sổ Group Policy hiện ra chọn Administrative Templates -> System -> Turn off Autoplay
Trong tab Setting -> chọn Enable -> lựa chọn All drives -> OK
Trong phần đầu tiên của loạt bài viết về các tiến trình trong Windows chúng ta sẽ cùng tìm hiểu về tiến trình Svchost.exe, tiến trình thường thấy nhất trong Windows.
Svchost.exe là gì ?
Theo Microsoft, svchost.exe là một tiến trình dành cho các dịch vụ (service) của Windows được chạy từ các thư viện liên kết động (file có đuôi .dll). Do 1 file đuôi dll không thể thực thi trực tiếp trên Windows mà phải được nạp từ một file đuôi .exe nên tiến trình svchost.exe đã được ra đời. Một số loại virus thường giả dạng file này với tên gần giống(ví dụ như svch0st.exe) hoặc có cùng tên nhưng nằm trong thư mục khác với thư mục Windows\system32 chứa file hệ thống.
Vì sao lại cần nhiều hơn 1 tiến trình Svchost.exe ?
Trong quá trình hoạt động Windows yêu cầu rất nhiều dịch vụ khác nhau như dịch vụ về âm thanh, internet, in ấn v.v... nên nếu tất cả chúng đều được chạy từ 1 tiến trình svchost.exe duy nhất thì khi có lỗi xảy ra với tiến trình này, nó sẽ kéo theo tất cả các dịch vụ gặp lỗi theo và khiến Windows không hoạt động được. Vì lý do đó mà các dịch vụ được chia ra làm nhiều nhóm và mỗi nhóm sẽ được khởi động từ một tiến trình svchost.exe độc lập.
Kiểm tra các dịch vụ trong svchost.exe
Nếu mở Task Manager lên bạn có thể thấy có nhiều tiến trình svchost.exe được chạy đồng thời, tuy nhiên công cụ này lại không cho phép bạn xem trong từng svchost.exe bao gồm những dịch vụ gì.
Để xem được cụ thể các tiến trình bạn có thể dùng lệnh tasklist /SVC bên trong cửa sổ lệnh cmd (Start -> Run -> gõ cmd).
Tuy nhiên cách này hơi phức tạp đối với những ai không quen sử dụng các lệnh điều khiển nên bạn có thể sử dụng công cụ Process Explorer, nó rất hữu hiệu trong việc theo dõi hoạt động các tiến trình trong Windows. Chỉ cần di chuột vào một tiến trình svchost.exe là các dịch vụ trong đó sẽ được liệt kê đầy đủ.
Bạn còn có thể dừng một dịch vụ thuộc tiến trình svchost.exe bằng cách click đúp vào tiến trình đó để mở cửa sổ Properties, danh sách các dich vụ sẽ hiển thị trong thẻ Services và muốn ngưng dịch vụ nào bạn chỉ cần chọn và nhấn Stop. Ở phần cửa sổ phía dưới có chỉ dẫn đầy đủ về nhiệm vụ của từng dịch vụ nên bạn cần đọc kỹ trước khi tắt một dịch vụ nào đó.
Tắt các dịch vụ khi khởi động
Trong thực tế có nhiều dịch vụ bạn ít hoặc không sử dụng đến nhưng vẫn được Windows load khi khởi động làm chậm máy và tốn bộ nhớ. Nếu bạn đã biết chắc dịch vụ nào là không cần thiết thì có thể ngăn không cho dịch vụ đó khởi động khi vào Windows bằng cách vào Control Panel > Administrative Tools > Services (hoặc gõ services.msc trong Search Menu hoặc Run).
Tìm dịch vụ mà bạn muốn tắt, và click chuột phải rồi chọn Properties.
Thay đổi dòng Startup Type thành Disabled và sau đó click Stop để dừng dịch vụ.
Tắt chế độ Autorun: vào Start --> run --> gpedit.msc
Cửa sổ Group Policy hiện ra chọn Administrative Templates -> System -> Turn off Autoplay
Trong tab Setting -> chọn Enable -> lựa chọn All drives -> OK
Chuyển ngữ cảnh (context switch)
Chuyển CPU tới một quá trình khác yêu cầu lưu trạng thái của quá trình cũ và nạp trạng thái được lưu cho quá trình mới. Tác vụ này được xem như chuyển ngữ cảnh (context switch). Ngữ cảnh của quá trình được hiện diện trong PCB của quá trình; Nó chứa giá trị các thanh ghi, trạng thái quá trình và thông tin quản lý bộ nhớ. Khi chuyển ngữ cảnh ngữ cảnh xảy ra, nhân lưu ngữ cảnh của quá trình cũ trong PCB của nó và nạp ngữ cảnh được lưu của quá trình mới được định thời để chạy. Thời gian chuyển ngữ cảnh là chi phí thuần vì hệ thống không thực hiện công việc có ích trong khi chuyển. Tốc độ của nó khác từ máy này tới máy khác phụ thuộc vào tốc độ bộ nhớ, số lượng thanh ghi phải được chép và sự tồn tại của các chỉ thị đặc biệt (như chỉ thị để nạp và lưu tất cả thanh ghi). Điển hình dãy tốc độ từ 1 tới 1000mili giây.
Những lần chuyển đổi ngữ cảnh phụ thuộc nhiều vào hỗ trợ phần cứng. Thí dụ, vài bộ xử lý (như Sun UltraSPARC) cung cấp nhiều tập thanh ghi. Một chuyển ngữ cảnh đơn giản chứa chuyển đổi con trỏ tới tập thanh ghi hiện hành. Dĩ nhiên, nếu quá trình hoạt động vượt quá tập thanh ghi thì hệ thống sắp xếp lại dữ liệu thanh ghi tới và từ bộ nhớ. Cũng vì thế mà hệ điều hành phức tạp hơn và nhiều công việc được làm hơn trong khi chuyển ngữ cảnh. Kỹ thuật quản lý bộ nhớ nâng cao có thể yêu cầu dữ liệu bổ sung để được chuyển với mỗi ngữ cảnh. Thí dụ, không gian địa chỉ của quá
trình hiện hành phải được lưu khi không gian của tác vụ kế tiếp được chuẩn bị dùng.
Không gian địa chỉ được lưu như thế nào và lượng công việc được yêu cầu để lưu nó phụ thuộc vào phương pháp quản lý bộ nhớ của hệ điều hành. Chuyển ngữ cảnh có thể dẫn đến thắt cổ chai năng lực thực hiện vì thế các lập trình viên đang sử dụng các cấu trúc mới để tránh nó bất cứ khi nào có thể.
Những lần chuyển đổi ngữ cảnh phụ thuộc nhiều vào hỗ trợ phần cứng. Thí dụ, vài bộ xử lý (như Sun UltraSPARC) cung cấp nhiều tập thanh ghi. Một chuyển ngữ cảnh đơn giản chứa chuyển đổi con trỏ tới tập thanh ghi hiện hành. Dĩ nhiên, nếu quá trình hoạt động vượt quá tập thanh ghi thì hệ thống sắp xếp lại dữ liệu thanh ghi tới và từ bộ nhớ. Cũng vì thế mà hệ điều hành phức tạp hơn và nhiều công việc được làm hơn trong khi chuyển ngữ cảnh. Kỹ thuật quản lý bộ nhớ nâng cao có thể yêu cầu dữ liệu bổ sung để được chuyển với mỗi ngữ cảnh. Thí dụ, không gian địa chỉ của quá
trình hiện hành phải được lưu khi không gian của tác vụ kế tiếp được chuẩn bị dùng.
Không gian địa chỉ được lưu như thế nào và lượng công việc được yêu cầu để lưu nó phụ thuộc vào phương pháp quản lý bộ nhớ của hệ điều hành. Chuyển ngữ cảnh có thể dẫn đến thắt cổ chai năng lực thực hiện vì thế các lập trình viên đang sử dụng các cấu trúc mới để tránh nó bất cứ khi nào có thể.
HuynhNguyenTrungHau_I12C- Tổng số bài gửi : 32
Join date : 15/02/2012
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 (số tiến trình trong bộ nhớ).
• 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. -> Rất cần thiết
Ví dụ: Trong lớp học (I12A), thầy giáo sử dụng máy chiếu để giảng bài cho các bạn sinh viên, các bạn sinh viên cần máy chiếu để thầy giáo phát bài giảng lên . Vì vậy, sử dụng máy chiếu (CPU) để phục vụ cho nhiều người cùng một lúc (nhiều tiến trình).
. Hướng I/O: tính toán ít, nhiều I/O
Ví dụ: Thầy giáo giảng bài trên giảng đường (CPU), sinh viên ngồi dưới nói chuyện,ngủ (I/O), không tập trung nghe giảng. Vậy quá lãng phí công sức của Thây giáo(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ụ:
Một phòng khám bệnh có số lượng bác sĩ tuơng đối.Khi có nhiều bệnh nhân tới khám bệnh(nhiều tiến trình),bác sĩ liền chia bệnh nhân thành nhóm nhỏ,và khám cho nhóm đó.Sau khi khám xong bác sĩ đưa nhóm bệnh nhân này ra ngoài(rút tiến trình ra khỏi bộ nhớ).Và đưa nhóm khác vào để tiếp tục khám bệnh(đưa tiến trình vào bộ nhớ vào thời điểm thích hợp)
• 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 (số tiến trình trong bộ nhớ).
• 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. -> Rất cần thiết
Ví dụ: Trong lớp học (I12A), thầy giáo sử dụng máy chiếu để giảng bài cho các bạn sinh viên, các bạn sinh viên cần máy chiếu để thầy giáo phát bài giảng lên . Vì vậy, sử dụng máy chiếu (CPU) để phục vụ cho nhiều người cùng một lúc (nhiều tiến trình).
. Hướng I/O: tính toán ít, nhiều I/O
Ví dụ: Thầy giáo giảng bài trên giảng đường (CPU), sinh viên ngồi dưới nói chuyện,ngủ (I/O), không tập trung nghe giảng. Vậy quá lãng phí công sức của Thây giáo(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ụ:
Một phòng khám bệnh có số lượng bác sĩ tuơng đối.Khi có nhiều bệnh nhân tới khám bệnh(nhiều tiến trình),bác sĩ liền chia bệnh nhân thành nhóm nhỏ,và khám cho nhóm đó.Sau khi khám xong bác sĩ đưa nhóm bệnh nhân này ra ngoài(rút tiến trình ra khỏi bộ nhớ).Và đưa nhóm khác vào để tiếp tục khám bệnh(đưa tiến trình vào bộ nhớ vào thời điểm thích hợp)
ngophicamI12A- Tổng số bài gửi : 24
Join date : 23/02/2012
Age : 34
Đến từ : BRVT
ĐỊNH NGHĨA TIẾN TRÌNH - SỰ KHÁC NHAU GIỮA TIẾN TRÌNH VỚI CHƯƠNG TRÌNH !
Tiến trình (process) : là chương trình trong thời gian thực hiện(đặt dưới sự quản lý của hệ điều hành) .
Ví dụ:
+ Nhân viên: tiến trình hệ thống.
+ Bàn ghế, dụng cụ, thức ăn ... -> Tài nguyên
+ Quản lý: HĐH
So sánh tiến trình với chương trình:
Bản than tiến trình không là chương trình vì là thực thể thụ động , trong khi tiến trình là thực thể hoạt động với nhiều thôn g tin về trạng thái trong đó có bộ đếm chương trình cho biết vị trí lệnh hiện hành .
- Nhiều tiến trình có thể liên quan đến một chương trình và là các thực thể khác nhau khi vận hành .
- Mỗi tiến trình có thể sinh ra nhiều tiến trình con khác khi vận hành.
- Tiến trình cần các tài nguyên ( CPU , Memory,tâp tin, thiết bị I/O) để hoàn thành công việc .
- Tài nguyên cấp cho tiến trinh ngay từ đầu (khi tiến trình được tạo lập) hoặc trong thời gian vận hành và được thu hồi hết khi tiến trình kết thúc .
- Tiến trình là thực thể hoạt động , chương trình là thực thể thụ động , tiến trình có thông tin
* Điểm khác nhau giữa tiến trình và chương trình : tiến trình có thông tin trạng thái để phản ánh tiến trình đang ở trạng thái nào .
Ví dụ:
+ Nhân viên: tiến trình hệ thống.
+ Bàn ghế, dụng cụ, thức ăn ... -> Tài nguyên
+ Quản lý: HĐH
So sánh tiến trình với chương trình:
Bản than tiến trình không là chương trình vì là thực thể thụ động , trong khi tiến trình là thực thể hoạt động với nhiều thôn g tin về trạng thái trong đó có bộ đếm chương trình cho biết vị trí lệnh hiện hành .
- Nhiều tiến trình có thể liên quan đến một chương trình và là các thực thể khác nhau khi vận hành .
- Mỗi tiến trình có thể sinh ra nhiều tiến trình con khác khi vận hành.
- Tiến trình cần các tài nguyên ( CPU , Memory,tâp tin, thiết bị I/O) để hoàn thành công việc .
- Tài nguyên cấp cho tiến trinh ngay từ đầu (khi tiến trình được tạo lập) hoặc trong thời gian vận hành và được thu hồi hết khi tiến trình kết thúc .
- Tiến trình là thực thể hoạt động , chương trình là thực thể thụ động , tiến trình có thông tin
* Điểm khác nhau giữa tiến trình và chương trình : tiến trình có thông tin trạng thái để phản ánh tiến trình đang ở trạng thái nào .
ngophicamI12A- Tổng số bài gửi : 24
Join date : 23/02/2012
Age : 34
Đến từ : BRVT
Tổ chức điều phối
Các danh sách sử dụng trong quá trình điều phối.
Hệ điều hành sử dụng hai loại danh sách để thực hiện điều phối các tiến trình là danh sách sẵn sàng (ready list) và danh sách chờ đợi(waiting list).
Khi một tiến trình bắt đầu đi vào hệ thống, nó được chèn vào danh sách các tác vụ (job list). Danh sách này bao gồm tất cả các tiến trình của hệ thống. Nhưng chỉ các tiến trình đang thường trú trong bộ nhớ chính và ở trạng thái sẵn sàng tiếp nhận CPU để hoạt động mới được đưa vào danh sách sẵn sàng.
Bộ điều phối sẽ chọn một tiến trình trong danh sách sẵn sàng và cấp CPU cho tiến trình đó. Tiến trình được cấp CPU sẽ thực hiện xử lý, và có thể chuyển sang trạng thái chờ khi xảy ra các sự kiện như đợi một thao tác nhập/xuất hoàn tất, yêu cầu tài nguyên chưa được thỏa mãn, được yêu cầu tạm dừng ...Khi đó tiến trình sẽ được chuyển sang một danh sách chờ đợi.
Hệ điều hành chỉ sử dụng một danh sách sẵn sàng cho toàn hệ thống, nhưng mỗi một tài nguyên ( thiết bị ngoại vi ) có một danh sách chờ đợi riêng bao gồm các tiến trình đang chờ được cấp phát tài nguyên đó.
Quá trình xử lý của một tiến trình trải qua những chu kỳ chuyển đổi qua lại giữa danh sách sẵn sàng và danh sách chờ đợi.
Thoạt đầu tiến trình mới được đặt trong danh sách các tiến trình sẵn sàng (ready list), nó sẽ đợi trong danh sách này cho đến khi được chọn để cấp phát CPU và bắt đầu xử lí. Sau đó có thể xảy ra một trong các tình huống sau :
Tiến trình phát sinh một yêu cầu một tài nguyên mà hệ thống chưa thể đáp ứng, khi đó tiến trình sẽ được chuyển sang danh sách các tiến trình đang chờ tài nguyên tương ứng.
Tiến trình có thể bị bắt buộc tạm dừng xử lý do một ngắt xảy ra, khi đó tiến trình được đưa trở lại vào danh sách sẵn sàng để chờ được cấp CPU cho lượt tiếp theo.
Trong trường hợp đầu tiên, tiến trình cuối cùng sẽ chuyển từ trạng thái blocked sang trạng thái ready và lại được đưa trở vào danh sách sẵn sàng. Tiến trình lặp lại chu kỳ này cho đến khi hoàn tất tác vụ thì được hệ thống hủy bỏ khỏi mọi danh sách điều phối.
Các cấp độ điều phối
Thực ra công việc điều phối được hệ điều hành thực hiện ở hai mức độ : điều phối tác vụ (job scheduling) và điều phối tiến trình ( process scheduling).
a) Điều phối tác vụ
Quyết định lựa chọn tác vụ nào được đưa vào hệ thống, và nạp những tiến trình của tác vụ đó vào bộ nhớ chính để thực hiện. Chức năng điều phối tác vụ quyết định mức độ đa chương của hệ thống ( số lượng tiến trình trong bộ nhớ chính). Khi hệ thống tạo lập một tiến trình, hay có một tiến trình kết thúc xử lý thì chức năng điều phối tác vụ mới được kích hoạt. Vì mức độ đa chương tương đối ổn định nên chức năng điều phối tác vụ có tần suất hoạt động thấp .
Để hệ thống hoạt động tốt, bộ điều phối tác vụ cần biệt tính chất của tiến trình là hướng nhập xuất (I/O bounded) hay hướng xử lý ( CPU bounded). Một tiến trình được gọi là hướng nhập xuất nếu nó chủ yếu nó chỉ sử dụng CPU để thực hiện các thao tác nhập xuất. Ngược lại một tiến trình được gọi là hướng xử lý nếu nó chủ yếu nó chỉ sử dụng CPU để thực hiện các thao tác tính toán. Để cần bằng hoạt động của CPU và các thiết bị ngoại vi, bộ điều phối tác vụ nên lựa chọn các tiến trình để nạp vào bộ nhớ sao cho hệ thống là sự pha trộn hợp lý giữa các tiến trình hướng nhập xuất và các tiến trình hướng xử lý
b) Điều phối tiến trình
Chọn một tiến trình ở trạng thái sẵn sàng ( đã được nạp vào bộ nhớ chính, và có đủ tài nguyên để hoạt động ) và cấp phát CPU cho tiến trình đó thực hiện. Bộ điều phối tiến trình có tần suất hoạt động cao, sau mỗi lần xảy ra ngắt ( do đồng hồ báo giờ, do các thiết bị ngoại vi...), thường là 1 lần trong khoảng 100ms. Do vậy để nâng cao hiệu suất của hệ thống, cần phải tăng tốc độ xử lí của bộ điều phối tiến trình. Chức năng điều phối tiến trình là một trong chức năng cơ bản, quan trọng nhất của hệ điều hành.
Trong nhiều hệ điều hành, có thể không có bộ điều phối tác vụ hoặc tách biệt rất ít đối với bộ điều phối tiến trình. Một vài hệ điều hành lại đưa ra một cấp độ điều phối trung gian kết hợp cả hai cấp độ điều phối tác vụ và tiến trình
Hệ điều hành sử dụng hai loại danh sách để thực hiện điều phối các tiến trình là danh sách sẵn sàng (ready list) và danh sách chờ đợi(waiting list).
Khi một tiến trình bắt đầu đi vào hệ thống, nó được chèn vào danh sách các tác vụ (job list). Danh sách này bao gồm tất cả các tiến trình của hệ thống. Nhưng chỉ các tiến trình đang thường trú trong bộ nhớ chính và ở trạng thái sẵn sàng tiếp nhận CPU để hoạt động mới được đưa vào danh sách sẵn sàng.
Bộ điều phối sẽ chọn một tiến trình trong danh sách sẵn sàng và cấp CPU cho tiến trình đó. Tiến trình được cấp CPU sẽ thực hiện xử lý, và có thể chuyển sang trạng thái chờ khi xảy ra các sự kiện như đợi một thao tác nhập/xuất hoàn tất, yêu cầu tài nguyên chưa được thỏa mãn, được yêu cầu tạm dừng ...Khi đó tiến trình sẽ được chuyển sang một danh sách chờ đợi.
Hệ điều hành chỉ sử dụng một danh sách sẵn sàng cho toàn hệ thống, nhưng mỗi một tài nguyên ( thiết bị ngoại vi ) có một danh sách chờ đợi riêng bao gồm các tiến trình đang chờ được cấp phát tài nguyên đó.
Quá trình xử lý của một tiến trình trải qua những chu kỳ chuyển đổi qua lại giữa danh sách sẵn sàng và danh sách chờ đợi.
Thoạt đầu tiến trình mới được đặt trong danh sách các tiến trình sẵn sàng (ready list), nó sẽ đợi trong danh sách này cho đến khi được chọn để cấp phát CPU và bắt đầu xử lí. Sau đó có thể xảy ra một trong các tình huống sau :
Tiến trình phát sinh một yêu cầu một tài nguyên mà hệ thống chưa thể đáp ứng, khi đó tiến trình sẽ được chuyển sang danh sách các tiến trình đang chờ tài nguyên tương ứng.
Tiến trình có thể bị bắt buộc tạm dừng xử lý do một ngắt xảy ra, khi đó tiến trình được đưa trở lại vào danh sách sẵn sàng để chờ được cấp CPU cho lượt tiếp theo.
Trong trường hợp đầu tiên, tiến trình cuối cùng sẽ chuyển từ trạng thái blocked sang trạng thái ready và lại được đưa trở vào danh sách sẵn sàng. Tiến trình lặp lại chu kỳ này cho đến khi hoàn tất tác vụ thì được hệ thống hủy bỏ khỏi mọi danh sách điều phối.
Các cấp độ điều phối
Thực ra công việc điều phối được hệ điều hành thực hiện ở hai mức độ : điều phối tác vụ (job scheduling) và điều phối tiến trình ( process scheduling).
a) Điều phối tác vụ
Quyết định lựa chọn tác vụ nào được đưa vào hệ thống, và nạp những tiến trình của tác vụ đó vào bộ nhớ chính để thực hiện. Chức năng điều phối tác vụ quyết định mức độ đa chương của hệ thống ( số lượng tiến trình trong bộ nhớ chính). Khi hệ thống tạo lập một tiến trình, hay có một tiến trình kết thúc xử lý thì chức năng điều phối tác vụ mới được kích hoạt. Vì mức độ đa chương tương đối ổn định nên chức năng điều phối tác vụ có tần suất hoạt động thấp .
Để hệ thống hoạt động tốt, bộ điều phối tác vụ cần biệt tính chất của tiến trình là hướng nhập xuất (I/O bounded) hay hướng xử lý ( CPU bounded). Một tiến trình được gọi là hướng nhập xuất nếu nó chủ yếu nó chỉ sử dụng CPU để thực hiện các thao tác nhập xuất. Ngược lại một tiến trình được gọi là hướng xử lý nếu nó chủ yếu nó chỉ sử dụng CPU để thực hiện các thao tác tính toán. Để cần bằng hoạt động của CPU và các thiết bị ngoại vi, bộ điều phối tác vụ nên lựa chọn các tiến trình để nạp vào bộ nhớ sao cho hệ thống là sự pha trộn hợp lý giữa các tiến trình hướng nhập xuất và các tiến trình hướng xử lý
b) Điều phối tiến trình
Chọn một tiến trình ở trạng thái sẵn sàng ( đã được nạp vào bộ nhớ chính, và có đủ tài nguyên để hoạt động ) và cấp phát CPU cho tiến trình đó thực hiện. Bộ điều phối tiến trình có tần suất hoạt động cao, sau mỗi lần xảy ra ngắt ( do đồng hồ báo giờ, do các thiết bị ngoại vi...), thường là 1 lần trong khoảng 100ms. Do vậy để nâng cao hiệu suất của hệ thống, cần phải tăng tốc độ xử lí của bộ điều phối tiến trình. Chức năng điều phối tiến trình là một trong chức năng cơ bản, quan trọng nhất của hệ điều hành.
Trong nhiều hệ điều hành, có thể không có bộ điều phối tác vụ hoặc tách biệt rất ít đối với bộ điều phối tiến trình. Một vài hệ điều hành lại đưa ra một cấp độ điều phối trung gian kết hợp cả hai cấp độ điều phối tác vụ và tiến trình
NguyenXuanTri28- Tổng số bài gửi : 39
Join date : 05/09/2011
Trang 8 trong tổng số 15 trang • 1 ... 5 ... 7, 8, 9 ... 11 ... 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 8 trong tổng số 15 trang
Permissions in this forum:
Bạn không có quyền trả lời bài viết