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 3 trong tổng số 15 trang
Trang 3 trong tổng số 15 trang • 1, 2, 3, 4 ... 9 ... 15
Trình Điều Phối (Scheduler)
Trình điều phối gồm có:
Điều phối chậm (Long-term scheduler):
- Chọn tiến trình nào sẽ được đưa vào ready queue ( tức là 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
1. 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).
2. 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 thực hiện giao dịch tại chỗ (I/O), không sử dụng đến ô tô. Vậy quá lãng phí ô tô (CPU)
- Mục đích là cân bằng tải cho toàn hệ thống
Điều phối nhanh (Short-term scheduler (or CPU scheduler)) :
- Chọn tiến trình nào sẽ được chiếm CPU để xử lý (tức là từ Ready chuyển sang Running)
- Tần xuất công việc cao
Điều phối vừa (Medium-term scheduler) :
- Chuyển tiến trình từ bộ nhớ chính sang sang bộ nhớ thứ cấp (nhưng vẫn nằm trong không gian bộ nhớ ảo); khi nào cần thì nạp process từ bộ nhớ thứ cấp vào bộ nhớ chính.
Ví dụ: 1 Lớp học vi tính, nhưng quá nhiều bạn đi học (tức là có nhiều tiến trình). Thầy sẽ chỉ định một số bạn ra khỏi lớp (tức là rút tiến trình ra khỏi bộ nhớ). Sau khi nhóm trong lớp học xong Thầy gọi các bạn bên ngoài vào phòng học (tức là đư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):
- Chọn tiến trình nào sẽ được đưa vào ready queue ( tức là 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
1. 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).
2. 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 thực hiện giao dịch tại chỗ (I/O), không sử dụng đến ô tô. Vậy quá lãng phí ô tô (CPU)
- Mục đích là cân bằng tải cho toàn hệ thống
Điều phối nhanh (Short-term scheduler (or CPU scheduler)) :
- Chọn tiến trình nào sẽ được chiếm CPU để xử lý (tức là từ Ready chuyển sang Running)
- Tần xuất công việc cao
Điều phối vừa (Medium-term scheduler) :
- Chuyển tiến trình từ bộ nhớ chính sang sang bộ nhớ thứ cấp (nhưng vẫn nằm trong không gian bộ nhớ ảo); khi nào cần thì nạp process từ bộ nhớ thứ cấp vào bộ nhớ chính.
Ví dụ: 1 Lớp học vi tính, nhưng quá nhiều bạn đi học (tức là có nhiều tiến trình). Thầy sẽ chỉ định một số bạn ra khỏi lớp (tức là rút tiến trình ra khỏi bộ nhớ). Sau khi nhóm trong lớp học xong Thầy gọi các bạn bên ngoài vào phòng học (tức là đưa tiến trình vào bộ nhớ vào thời điểm thích hợp).
NguyenThiHongYen(I12A)- Tổng số bài gửi : 20
Join date : 20/02/2012
Tổ chức hoạt động CPU - Cách thức hoạt động
- Các process đang thường trú trong bộ nhớ chính ở trang thái sẵn sàng tiếp nhận CPU để hoạt động sẽ được đưa vào ready queue ( vd : các bạn học sinh sẵn sàng đợi kêu trả bài trước buổi học )
- Bộ điều phối sẽ chọn và cấp CPU cho 1 process trong ready queue.Process được cấp CPU sẽ thực hiện xử lý.( vd : thầy chọn bạn A lên trả bài và đưa ra câu hỏi cần trả lời )
- Trong thời gian này ,process co thể có yêu cầu tài nguyên mà hệ thống chưa đáp ứng được ( vd bạn A trả lời không đúng ý câu hỏi - cần sự giúp đỡ của bạn khác ) .Khi đó process được đưa vào waiting queue của tài nguyên tương ứng .Mặt khác ,process có thể bị buộc dừng xử lý (vd : bạn A không trả lời được câu hỏi - buộc dừng không trả bài tiếp). khi đó process được đưa trở lại ready queue.
- Quá trình xửa lý của 1 process trải qua nhiều lần chuyển đổi giữa ready queue và waiting queue cho đến khi hoàn thành nhiệm vụ thì được hệ thống giải phóng .(vd : sau khi hoàn tất việc trả bài bạn A có thể về chỗ )
- Bộ điều phối sẽ chọn và cấp CPU cho 1 process trong ready queue.Process được cấp CPU sẽ thực hiện xử lý.( vd : thầy chọn bạn A lên trả bài và đưa ra câu hỏi cần trả lời )
- Trong thời gian này ,process co thể có yêu cầu tài nguyên mà hệ thống chưa đáp ứng được ( vd bạn A trả lời không đúng ý câu hỏi - cần sự giúp đỡ của bạn khác ) .Khi đó process được đưa vào waiting queue của tài nguyên tương ứng .Mặt khác ,process có thể bị buộc dừng xử lý (vd : bạn A không trả lời được câu hỏi - buộc dừng không trả bài tiếp). khi đó process được đưa trở lại ready queue.
- Quá trình xửa lý của 1 process trải qua nhiều lần chuyển đổi giữa ready queue và waiting queue cho đến khi hoàn thành nhiệm vụ thì được hệ thống giải phóng .(vd : sau khi hoàn tất việc trả bài bạn A có thể về chỗ )
minhtam_I12C- Tổng số bài gửi : 14
Join date : 15/02/2012
Tạo lập tiến trình trong Windows
Các hàm API dùng tạo mới tiến trình và khởi động chương trình tương ứng:
CreateProcess, CreateProcessWithLogon
WinExec
ShellExecute, ShellExecuteEx
CreateProcess, CreateProcessWithLogon
WinExec
ShellExecute, ShellExecuteEx
quicly_I111c- Tổng số bài gửi : 20
Join date : 30/08/2011
Re: Thảo luận Bài 4
NgoPhuQuoc_I12C đã viết:Đại diện cho một process trong Hệ Điều hành(HĐH) là khối điều khiển tiến trình (PCB). PCB là một cấu trúc dữ liệu chứa những thông tin quan trọng về process và có thể khác nhau trong các hệ thống khác nhau, trong đó thường có:
trạng thái hiện tại của process
ID (identifier) duy nhất cho process
độ ưu tiên (priority) của process
thông tin về bộ nhớ
thông tin về các tài nguyên process đang sử dụng
vùng để cho các thanh ghi
PCB là đối tượng quan trọng, nhờ nó HĐH có thể có được toàn bộ thông tin cơ bản nhất về một process. Khi HĐH chuyển (switch) CPU từ đang phục vụ process này sang phục vụ process khác, nó dùng vùng cho các thanh ghi trong PCB lưu thông tin giá trị các thanh ghi của hệ thống để có thể tiếp tục thực hiện process mỗi khi process đến lượt được sử dụng CPU.
Tóm lại, PCB là đối tượng chính đại diện cho process đối với HĐH. Vì HĐH phải có khả năng thực hiện các thao tác với các PCB khác nhau một cách nhanh chóng, trong nhiều hệ thống có những thanh ghi đặc biệt luôn chỉ tới PCB của running process. Và cũng có những lệnh cài đặt ngay trong phần cứng để đảm bảo nhanh chóng ghi thông tin trạng thái vào PCB và tiếp theo là nhanh chóng đọc các thông tin đó.
VD: Một tiến trình đang chờ tín hiệu từ bàn phím người dùng, lúc đó nó không sử dụng CPU. Khi nó chờ, nó giống như "bị treo(suspended)". Khi người dùng gõ bàn phím, HĐH thay đổi trạng thái(status) của tiến trình đó. Khi trạng thái tiến trình thay đổi, ví dụ từ chờ đợi sang chủ động(Active) hoặc từ "treo"(suspended) sang running, thông tin trong PCB sẽ được dùng cho việc thực thi các nhiệm vụ chuyển đổi (Switch) của CPU.
VD: Một sinh viên lên bảng để trình bày bài viết của mình, trình bày xong một sinh viên khác lên xóa bảng và cũng trình bày bài viết của mình. Nếu sinh viên đầu tiên trở lên bảng lại thì phải xóa bài viết của sinh viên thứ 2 để trình bày lại bài viết của mình giống như lúc chưa xóa
tranvanthien27(I12C)- Tổng số bài gửi : 62
Join date : 15/02/2012
Age : 34
Đến từ : Tuy Hòa - Phú Yên
Các đặc điểm của process
1 ) Phân loại theo thời gian sử dụng CPU , có 2 loại
-I/O-bound process: ít sử dụng CPU chủ yếu thao tác nhập xuất .Hoạt động của các process loại này thường bao gồm nhiều lượt sử dụng CPU nhưng mỗi lượt sử dụng trong thời gian ngắn .
- CPU-bound process : sử dụng CPU chủ yếu .Hoạt động của các process loại này thường bao gồm ít lượt sử dụng CPU nhưng mỗi lượt sử dụng trong thời gian dai .
2 ) Phân loại theo thời gian sử dụng CPU mức độ độc quyền , có 2 loại :
- Non-preemptive process: khi các process nhận được CPU thì nó có quyền độc quyền chiếm CPU cho đến khi hoàn tất việc xử lý hoặc tự nguyện giải phóng CPU .Không thể lấy CPU khi process này đang chiếm giữ.
-Preemptive process:là loại process có thể lấy lại CPU khi nó đang chiếm giữ . Khi có được CPU ,process loại này có thể bị một process loại khác có mức độ ưu tiên cao hơn giành lấy CPU bất cứ lúc nào .
-I/O-bound process: ít sử dụng CPU chủ yếu thao tác nhập xuất .Hoạt động của các process loại này thường bao gồm nhiều lượt sử dụng CPU nhưng mỗi lượt sử dụng trong thời gian ngắn .
- CPU-bound process : sử dụng CPU chủ yếu .Hoạt động của các process loại này thường bao gồm ít lượt sử dụng CPU nhưng mỗi lượt sử dụng trong thời gian dai .
2 ) Phân loại theo thời gian sử dụng CPU mức độ độc quyền , có 2 loại :
- Non-preemptive process: khi các process nhận được CPU thì nó có quyền độc quyền chiếm CPU cho đến khi hoàn tất việc xử lý hoặc tự nguyện giải phóng CPU .Không thể lấy CPU khi process này đang chiếm giữ.
-Preemptive process:là loại process có thể lấy lại CPU khi nó đang chiếm giữ . Khi có được CPU ,process loại này có thể bị một process loại khác có mức độ ưu tiên cao hơn giành lấy CPU bất cứ lúc nào .
nguyenthanhnghi_I12C- Tổng số bài gửi : 14
Join date : 15/02/2012
câu hỏi sản xuất_tiêu thụ
câu 5:Phát biểu bài toán sản xuất_tiêu thụ để minh họa 1 hệ thống bao gồm nhiều tiến trình đồng hành, cộng tác cùng chia sẻ tài nguyên
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.
Thuật giải cho Producer:
CODE:
// Tạo ra sản phẩm mới
wait(semEmpty);
wait(mutex);
//Đưa sản phẩm vào bộ đệm Buffer
Buffer[in]=sp mới;//Xếp sản phẩm vào bộ đệm.
in=(in+1)%BUFFER_SIZE;
signal(semFull);
signal(mutex);
Thuật giải cho Consumer:
CODE:
wait(semFull);
wait(mutex);
// Lấy sản phẩm từ bộ đệm Buffer
p=Buffer[out];
out=(out+1)%BUFFER_SIZE;
// Tiêu thụ sản phẩm vừa lấy được
signal(semEmpty);
signal(mutex);
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.
Thuật giải cho Producer:
CODE:
// Tạo ra sản phẩm mới
wait(semEmpty);
wait(mutex);
//Đưa sản phẩm vào bộ đệm Buffer
Buffer[in]=sp mới;//Xếp sản phẩm vào bộ đệm.
in=(in+1)%BUFFER_SIZE;
signal(semFull);
signal(mutex);
Thuật giải cho Consumer:
CODE:
wait(semFull);
wait(mutex);
// Lấy sản phẩm từ bộ đệm Buffer
p=Buffer[out];
out=(out+1)%BUFFER_SIZE;
// Tiêu thụ sản phẩm vừa lấy được
signal(semEmpty);
signal(mutex);
PhamQuangHien_I12A- Tổng số bài gửi : 62
Join date : 22/02/2012
Age : 35
Đến từ : Quãng Ngãi
Mô hình luân chuyển CPU giữa hai tiến trình
Được sửa bởi quicly_I111c ngày 8/3/2012, 00:27; sửa lần 1.
quicly_I111c- Tổng số bài gửi : 20
Join date : 30/08/2011
Re: Thảo luận Bài 4
Lý do cộng tác giữa các tiến trình (Cooperation Reasons).
- 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.
- Tăng tốc tính toán (Computation Speedup): Các tiến trình làm việc song song trên cùng một hoặc nhiều máy tính để 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 riêng vận hành trong các tiến trình hoặc luồng khác nhau.
- Đảm bảo tính tiện dụng (Convenience): Người dùng có khả năng làm nhiều việc cùng một lúc: Soạn thảo, In ấn, Lấy file về,...
VD:Nhu cầu nối mạng internet .
- 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.
- Tăng tốc tính toán (Computation Speedup): Các tiến trình làm việc song song trên cùng một hoặc nhiều máy tính để 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 riêng vận hành trong các tiến trình hoặc luồng khác nhau.
- Đảm bảo tính tiện dụng (Convenience): Người dùng có khả năng làm nhiều việc cùng một lúc: Soạn thảo, In ấn, Lấy file về,...
VD:Nhu cầu nối mạng internet .
minhtam_I12C- Tổng số bài gửi : 14
Join date : 15/02/2012
SO Sánh Giữa Job Queue & Ready Queue
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.
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.
nguyenthanhnghi_I12C- Tổng số bài gửi : 14
Join date : 15/02/2012
Phương thức liên lạc giữa các tiến trình qua IPC (Interprocess communication)
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
Receive (Q, Message) - Nhận thông điệp từ Q
Đặc điểm:
o Liên kết được thiết lập tự động giữa mỗi cặp tiến trình.
o Liên kết chỉ giữa 2 tiến trình.
o Chỉ có 1 liên kết giữa mỗi cặp.
o 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 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ư:
o 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 đó.
o Hộp thư hệ điều hành (OS Mailbox): Nằm trong vùng địa chỉ của HĐH
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:
o Liên kết được thiết lập tự động giữa mỗi cặp tiến trình.
o Liên kết chỉ giữa 2 tiến trình.
o Chỉ có 1 liên kết giữa mỗi cặp.
o 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 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ư:
o 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 đó.
o Hộp thư hệ điều hành (OS Mailbox): Nằm trong vùng địa chỉ của HĐH
quicly_I111c- Tổng số bài gửi : 20
Join date : 30/08/2011
Sản xuất- Tiêu thụ (Producer - Consumer Problem)
- Sản xuất-Tiêu thụ (Producer-Consumer Problem) là một bài toán kinh điển dùng để minh họa sự cần thiết để đồng bộ hóa trong hệ thống có nhiều tiến trình đồng hành, cộng tác cùng chia sẻ tài nguyên.
- Trong vấn đề này, hai tiến trình Sản xuất và Tiêu thụ cùng chia sẻ một bộ nhớ đệm có kích thước cố định (fixed-size buffer).Bộ nhớ đệm gồm nhiều khoang (Items) để chứa sản phẩm.
- Tiến trình Producer sẽ sản xuất sản phẩm và đưa nó lần lượt vào các khoang trong buffer, còn tiến trình Consumer tiêu thụ sản phẩm lần lượt từ buffer này. Hai tiến trình này phải đồng bộ với nhau.
- Để đồng bộ hai tiến trình này thì tiến trình Producer phải bị ngăn không được đưa sản phẩm vào bộ nhớ đệm khi buffer đầy, tiến trình Consumer không được lấy sản phẩm ra khi buffer rỗng. Nếu buffer đầy thì tiến trình Producer phải chờ tiến trình Consumer tiêu thụ bớt sản phẩm trong buffer thì mới có thể tiếp tục đưa sản phẩm vào. Ngược lại, nếu buffer rỗng thì tiến trình Consumer phải chờ tiến trình Producer đưa sản phẩm vào buffer thì mới có thể tiếp tục lấy sản phẩm ra tiêu thụ. (Synchronization có chờ)
- Nếu buffer chưa bị đầy thì tiến trình Producer được phép tiếp tục đưa sản phẩm vào trong buffer và thông báo cho tiến trình Consumer biết rằng buffer không rỗng để tiến trình Consumer có thể tiếp tục lấy sản phẩm ra tiêu thụ. Ngược lại, nếu buffer chưa bị rỗng thì tiến trình Consumer được phép tiếp tục lấy sản phẩm ra ngoài tiêu thụ và thông báo cho tiến trình Producer biết rằng buffer chưa đầy để tiến trình Producer có thể tiếp tục đưa sản phẩm vào trong buffer.
Thuật giải:
Cấu trúc bộ nhớ đệm chung
#define BUFFER_SIZE 10
typedef struct {
. . . // Mô tả các thành phần của 1 khoang chứa
} item;
item buffer[BUFFER_SIZE]; // Bộ nhớ đệm
int in = 0; // Con trỏ tới vị trí trống kế tiếp
int out = 0; // Con trỏ tới vị trí lấy tiếp theo
Giải pháp duy trì (BUFFER_SIZE-1) sản phẩm cùng lúc trong bộ nhớ đệm
TIẾN TRÌNH SẢN XUẤT
item nextProduced;
while (1) {
/* Tạo một sản phẩm và gửi vào biến nextProduced */
while (((in + 1) % BUFFER_SIZE) == out)
; // Quẩn tại đây khi buffer đầy
buffer[in] = nextProduced;
in = (in + 1) % BUFFER_SIZE;
// Số dư phép chia nguyên
}
TIẾN TRÌNH TIÊU THỤ
item nextConsumed;
while (1) {
while (in == out); // Quẩn tại đây khi buffer rỗng
nextConsumed = buffer[out];
out = (out + 1) % BUFFER_SIZE;
// Tiêu thụ sản phẩm trong nextConsumed.
}
- Trong vấn đề này, hai tiến trình Sản xuất và Tiêu thụ cùng chia sẻ một bộ nhớ đệm có kích thước cố định (fixed-size buffer).Bộ nhớ đệm gồm nhiều khoang (Items) để chứa sản phẩm.
- Tiến trình Producer sẽ sản xuất sản phẩm và đưa nó lần lượt vào các khoang trong buffer, còn tiến trình Consumer tiêu thụ sản phẩm lần lượt từ buffer này. Hai tiến trình này phải đồng bộ với nhau.
- Để đồng bộ hai tiến trình này thì tiến trình Producer phải bị ngăn không được đưa sản phẩm vào bộ nhớ đệm khi buffer đầy, tiến trình Consumer không được lấy sản phẩm ra khi buffer rỗng. Nếu buffer đầy thì tiến trình Producer phải chờ tiến trình Consumer tiêu thụ bớt sản phẩm trong buffer thì mới có thể tiếp tục đưa sản phẩm vào. Ngược lại, nếu buffer rỗng thì tiến trình Consumer phải chờ tiến trình Producer đưa sản phẩm vào buffer thì mới có thể tiếp tục lấy sản phẩm ra tiêu thụ. (Synchronization có chờ)
- Nếu buffer chưa bị đầy thì tiến trình Producer được phép tiếp tục đưa sản phẩm vào trong buffer và thông báo cho tiến trình Consumer biết rằng buffer không rỗng để tiến trình Consumer có thể tiếp tục lấy sản phẩm ra tiêu thụ. Ngược lại, nếu buffer chưa bị rỗng thì tiến trình Consumer được phép tiếp tục lấy sản phẩm ra ngoài tiêu thụ và thông báo cho tiến trình Producer biết rằng buffer chưa đầy để tiến trình Producer có thể tiếp tục đưa sản phẩm vào trong buffer.
Thuật giải:
Cấu trúc bộ nhớ đệm chung
#define BUFFER_SIZE 10
typedef struct {
. . . // Mô tả các thành phần của 1 khoang chứa
} item;
item buffer[BUFFER_SIZE]; // Bộ nhớ đệm
int in = 0; // Con trỏ tới vị trí trống kế tiếp
int out = 0; // Con trỏ tới vị trí lấy tiếp theo
Giải pháp duy trì (BUFFER_SIZE-1) sản phẩm cùng lúc trong bộ nhớ đệm
TIẾN TRÌNH SẢN XUẤT
item nextProduced;
while (1) {
/* Tạo một sản phẩm và gửi vào biến nextProduced */
while (((in + 1) % BUFFER_SIZE) == out)
; // Quẩn tại đây khi buffer đầy
buffer[in] = nextProduced;
in = (in + 1) % BUFFER_SIZE;
// Số dư phép chia nguyên
}
TIẾN TRÌNH TIÊU THỤ
item nextConsumed;
while (1) {
while (in == out); // Quẩn tại đây khi buffer rỗng
nextConsumed = buffer[out];
out = (out + 1) % BUFFER_SIZE;
// Tiêu thụ sản phẩm trong nextConsumed.
}
nguyenhuutrang_11h1010135- Tổng số bài gửi : 19
Join date : 15/02/2012
Khối điều khiển quá trình (PCB)
Mỗi quá trình được hiện diện trong hệ điều hành bởi một khối điều khiển quá trình (Process Control Block-PCB) – cũng được gọi khối điều khiển tác vụ. Một PCB được hiển thị trong hình III-2. Nó chứa nhiều phần thông tin được gắn liền với một quá trình xác định, gồm:
Trạng thái quá trình (process state): trạng thái có thể là mới, sẳn sàng, đang chạy, chờ đợi, kết thúc, …
• Bộ đếm chương trình (program counter): bộ đếm hiển thị địa chỉ của chỉ thị kế tiếp được thực thi cho quá trình này.
• Các thanh ghi (registers) CPU: các thanh ghi khác nhau về số lượng và loại, phụ thuộc vào kiến trúc máy tính. Chúng gồm các bộ tổng (accumulators), các thanh ghi chỉ mục, các con trỏ ngăn xếp, và các thanh ghi đa năng (general-purpose registers), cùng với thông tin mã điều kiện (condition-code information). Cùng với bộ đếm chương trình, thông tin trạng thái này phải được lưu khi một ngắt xảy ra, cho phép quá trình được tiếp tục một cách phù hợp sau đó (Hình III.3).
• Thông tin lập thời biểu CPU (CPU-scheduling information): thông tin gồm độ ưu tiên của quá trình, các con trỏ chỉ tới các hàng đợi lập thời biểu, và bất kỳ tham số lập thời biểu khác.
• Thông tin quản lý bộ nhớ (Memory-management information): thông tin này có thể gồm những thông tin như giá trị của các thanh ghi nền và thanh ghi giới hạn, các bảng trang hay các bảng phân đoạn, phụ thuộc hệ thống bộ nhớ được dùng bởi hệ điều hành.
• Thông tin tính toán (accounting information): thông tin này gồm lượng CPU và thời gian thực được dùng, công việc hay số quá trình,…
• Thông tin trạng thái nhập/xuất (I/O status information): thông tin này gồm danh sách của thiết bị nhập/xuất được cấp phát quá trình này, một danh sách các tập tin đang mở,..
***PCB đơn giản phục vụ như kho chứa cho bất cứ thông tin khác nhau từ quá trình này tới quá trình khác.
Trạng thái quá trình (process state): trạng thái có thể là mới, sẳn sàng, đang chạy, chờ đợi, kết thúc, …
• Bộ đếm chương trình (program counter): bộ đếm hiển thị địa chỉ của chỉ thị kế tiếp được thực thi cho quá trình này.
• Các thanh ghi (registers) CPU: các thanh ghi khác nhau về số lượng và loại, phụ thuộc vào kiến trúc máy tính. Chúng gồm các bộ tổng (accumulators), các thanh ghi chỉ mục, các con trỏ ngăn xếp, và các thanh ghi đa năng (general-purpose registers), cùng với thông tin mã điều kiện (condition-code information). Cùng với bộ đếm chương trình, thông tin trạng thái này phải được lưu khi một ngắt xảy ra, cho phép quá trình được tiếp tục một cách phù hợp sau đó (Hình III.3).
• Thông tin lập thời biểu CPU (CPU-scheduling information): thông tin gồm độ ưu tiên của quá trình, các con trỏ chỉ tới các hàng đợi lập thời biểu, và bất kỳ tham số lập thời biểu khác.
• Thông tin quản lý bộ nhớ (Memory-management information): thông tin này có thể gồm những thông tin như giá trị của các thanh ghi nền và thanh ghi giới hạn, các bảng trang hay các bảng phân đoạn, phụ thuộc hệ thống bộ nhớ được dùng bởi hệ điều hành.
• Thông tin tính toán (accounting information): thông tin này gồm lượng CPU và thời gian thực được dùng, công việc hay số quá trình,…
• Thông tin trạng thái nhập/xuất (I/O status information): thông tin này gồm danh sách của thiết bị nhập/xuất được cấp phát quá trình này, một danh sách các tập tin đang mở,..
***PCB đơn giản phục vụ như kho chứa cho bất cứ thông tin khác nhau từ quá trình này tới quá trình khác.
NguyenHongHaiI12C- Tổng số bài gửi : 48
Join date : 18/02/2012
Phân tích khái niệm 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 1000 mili 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ể
NguyenHongHaiI12C- Tổng số bài gửi : 48
Join date : 18/02/2012
Lý do cộng tác giữa các tiến trình (Cooperation Reasons).
- 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.
- Tăng tốc tính toán (Computation Speedup): Các tiến trình làm việc song song trên cùng một hoặc nhiều máy tính để 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 riêng vận hành trong các tiến trình hoặc luồng khác nhau.
- Đảm bảo tính tiện dụng (Convenience): Người dùng có khả năng làm nhiều việc cùng một lúc: Soạn thảo, In ấn, Lấy file về,...
VD:Nhu cầu nối mạng internet của chúng ta.
- Tăng tốc tính toán (Computation Speedup): Các tiến trình làm việc song song trên cùng một hoặc nhiều máy tính để 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 riêng vận hành trong các tiến trình hoặc luồng khác nhau.
- Đảm bảo tính tiện dụng (Convenience): Người dùng có khả năng làm nhiều việc cùng một lúc: Soạn thảo, In ấn, Lấy file về,...
VD:Nhu cầu nối mạng internet của chúng ta.
TranMinhTuan143(I12A)- Tổng số bài gửi : 38
Join date : 22/02/2012
Tiến trình khác Chương trình như thế nào?
-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ĐH).Có sự phận biệt giữa tiến trình hệ thống(của HĐH) với tiến trình người dùng.
- Bản thân chương trình không là tiến trình vì là thực thể thụ động(Passive), trong khi tiến trình là thực thể hoạt động(Active) với nhiều thông tin về trạng thái trong đó có bộ đếm chương trình(Program Counter) cho biết vị trí lệnh hiện hành.
- Bản thân chương trình không là tiến trình vì là thực thể thụ động(Passive), trong khi tiến trình là thực thể hoạt động(Active) với nhiều thông tin về trạng thái trong đó có bộ đếm chương trình(Program Counter) cho biết vị trí lệnh hiện hành.
nguyenthimao_I12A- Tổng số bài gửi : 35
Join date : 16/02/2012
Hàm API
API là giao diện lập trình ứng dụng ( Application Programming Interface) Nó là 1 giao tiếp phần mềm được dùng bởi các ứng dụng khác nhau. Cũng giống như bàn phím là một thiết bị giao tiếp giữa người dùng và máy tính, API là 1 giao tiếp phần mếm chẳng hạn như giữa chương trình và hệ điều hành (HĐH). Bộ API của từng HĐH là khác nhau, làm cho các HĐH khác nhau và thường không tương thích với nhau. Ví dụ những phần mềm trên máy Macintosh không thể chạy được trên máy Windows bởi vì Macintosh và Windows có các API hòan tòan khác nhau.
Windows API quản lý mọi vấn đề làm ra Windows. Tuy nhiên nó đồng thời cũng cung cấp hầu hết các tính năng thông dụng (Open, Save As, Choose Font,…), các thiết lập HĐH, các sự kiện,… Các ứng dụng trên nền Windows dùng Windows API hầu như trong mỗi tác vụ. Thậm chí nếu bạn không dùng API trong khi lập trình thì ngôn ngữ lập trình cũng sẽ gọi các API trong chương trình được tạo ra để quản lý nhiều tác vụ khác nhau.
Hầu hết các hàm API được chứa trong các file DLL (Dynamic Link Library – thư viện liên kết động) chứa trong thư mục hệ thống của Windows. Các file DLL cho phép các chương trình bên ngòai dùng các hàm của chúng.
Bốn thư viện DLL chính của Windows :
KERNEL32 : Các hàm của HĐH
GDI32 : Các hàm giao tiếp thiết bị đồ họa
WINMM : Các hàm âm thanh, video
USER32 : Các hàm giao diện người dùng
Ví dụ:
GetWindowsDirectory -> KERNEL32.DLL
ShellExecute -> shell32.dll
ExitWindowsEx -> user32
GetModuleFileNameA -> kernel32.dll
ShowWindow -> user32
PlaySound -> winmm.dll
Các hàm API dùng tạo mới tiến trình và khởi động chương trình:
CreateProcess, CreateProcessWithLogon
WinExec
ShellExecute, ShellExecuteEx
CreateProcess, CreateProcessWithLogon
WinExec
ShellExecute, ShellExecuteEx
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
GetMessage: Nhận có chờ
PeekMessage: Nhận không chờ.
Windows API quản lý mọi vấn đề làm ra Windows. Tuy nhiên nó đồng thời cũng cung cấp hầu hết các tính năng thông dụng (Open, Save As, Choose Font,…), các thiết lập HĐH, các sự kiện,… Các ứng dụng trên nền Windows dùng Windows API hầu như trong mỗi tác vụ. Thậm chí nếu bạn không dùng API trong khi lập trình thì ngôn ngữ lập trình cũng sẽ gọi các API trong chương trình được tạo ra để quản lý nhiều tác vụ khác nhau.
Hầu hết các hàm API được chứa trong các file DLL (Dynamic Link Library – thư viện liên kết động) chứa trong thư mục hệ thống của Windows. Các file DLL cho phép các chương trình bên ngòai dùng các hàm của chúng.
Bốn thư viện DLL chính của Windows :
KERNEL32 : Các hàm của HĐH
GDI32 : Các hàm giao tiếp thiết bị đồ họa
WINMM : Các hàm âm thanh, video
USER32 : Các hàm giao diện người dùng
Ví dụ:
GetWindowsDirectory -> KERNEL32.DLL
ShellExecute -> shell32.dll
ExitWindowsEx -> user32
GetModuleFileNameA -> kernel32.dll
ShowWindow -> user32
PlaySound -> winmm.dll
Các hàm API dùng tạo mới tiến trình và khởi động chương trình:
CreateProcess, CreateProcessWithLogon
WinExec
ShellExecute, ShellExecuteEx
CreateProcess, CreateProcessWithLogon
WinExec
ShellExecute, ShellExecuteEx
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
GetMessage: Nhận có chờ
PeekMessage: Nhận không chờ.
nguyenthimao_I12A- Tổng số bài gửi : 35
Join date : 16/02/2012
Ví dụ thực tiễn về bài toán sản xuất tiêu thụ để minh họa hệ thống có nhiều tiến trình song song, đồng hành cùng chia sẽ tài nguyên
Ví dụ một lớp là một tiến trình và lớp khác cũng là một tiến trình có thực thể thay đổi trạng thái từ 6h-8h30.Mỗi bạn trong lớp học là một tiến trình có thể coi là một luồng đang tiến hành song song và cùng sử dụng chung một tài nguyên là bảng đen.
nguyenthimao_I12A- Tổng số bài gửi : 35
Join date : 16/02/2012
Khối quản lí 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 như 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.
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
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 như 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.
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
nguyenthaihiep (I11C)- Tổng số bài gửi : 34
Join date : 31/08/2011
Truyền thông điệp trong windows (Message-Passing in Windows)
Các hàm API dùng để Gửi/Nhận thông điệp
– SendMessage - Gửi có chờ
– PostMessage - Gửi không chờ
– SendMessageTimeout- Gửi có chờ nhưng với thời hạn
– WaitMessage - Chờ thông điệp đến
– GetMessage - Nhận có chờ
– PeekMessage - Nhận không chờ
– SendMessage - Gửi có chờ
– PostMessage - Gửi không chờ
– SendMessageTimeout- Gửi có chờ nhưng với thời hạn
– WaitMessage - Chờ thông điệp đến
– GetMessage - Nhận có chờ
– PeekMessage - Nhận không chờ
nguyenthimao_I12A- Tổng số bài gửi : 35
Join date : 16/02/2012
Phân biệt TCP với UDP
Giống nhau : đều là các giao thức mạng TCP/IP, đều có chức năng kết nối các máy lại với nhau, và có thể gửi dữ liệu cho nhau....
Khác nhau:
các header của TCP và UDP khác nhau ở kích thước (20 và 8 byte) nguyên nhân chủ yếu là do TCP phải hỗ trợ nhiều chức năng hữu ích hơn (như khả năng khôi phục lỗi). UDP dùng ít byte hơn cho phần header và yêu cầu xử lý từ host ít hơn.
TCP :
- Dùng cho mạng WAN
- Không cho phép mất gói tin
- Đảm bảo việc truyền dữ liệu
- Tốc độ truyền thấp hơn UDP
UDP:
- Dùng cho mạng LAN
- Cho phép mất dữ liệu
- Không đảm bảo.
- Tốc độ truyền cao, VolP truyền tốt qua UDP
Khác nhau:
các header của TCP và UDP khác nhau ở kích thước (20 và 8 byte) nguyên nhân chủ yếu là do TCP phải hỗ trợ nhiều chức năng hữu ích hơn (như khả năng khôi phục lỗi). UDP dùng ít byte hơn cho phần header và yêu cầu xử lý từ host ít hơn.
TCP :
- Dùng cho mạng WAN
- Không cho phép mất gói tin
- Đảm bảo việc truyền dữ liệu
- Tốc độ truyền thấp hơn UDP
UDP:
- Dùng cho mạng LAN
- Cho phép mất dữ liệu
- Không đảm bảo.
- Tốc độ truyền cao, VolP truyền tốt qua UDP
nguyenthaihiep (I11C)- Tổng số bài gửi : 34
Join date : 31/08/2011
Các hàm của Win32 API dùng để lập trình đa luồng.
- CreateThread: tạo một luồng để thực thi trong địa chỉ lời gọi tiến trình.
- ExitThread: dùng để kết thúc một luồng.
- GetCurrentThread: có chức năng trả về mục quản tạm cho luồng hiện tại.
- TerminateThread: có chức ngắt luồng.
- SetThreadPriority: có chức năng thiết lập giá trị ưu tiên cho một luồng.
- ExitThread: dùng để kết thúc một luồng.
- GetCurrentThread: có chức năng trả về mục quản tạm cho luồng hiện tại.
- TerminateThread: có chức ngắt luồng.
- SetThreadPriority: có chức năng thiết lập giá trị ưu tiên cho một luồng.
TranThiNgocQuynh(I12C)- Tổng số bài gửi : 14
Join date : 16/02/2012
Phân biệt điều phối chậm với điều phối nhanh
+ Điều phối chậm:
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 (vài phút), loại Scheduler này có điều kiện để lựa chọn kỹ cáctiến trình cần nhằm phối hợp cân đối 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:
Cân bằng tải cho nhiều hệ thống.
+ Điều phối nhanh:
Còn gọi là điều phối CPU.
Chọn tiến trình từ Ready Queue để cấp CPU.
Có tần suất công việc cao. Thường cứ 100ms lại tốn 10ms để 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 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 (vài phút), loại Scheduler này có điều kiện để lựa chọn kỹ cáctiến trình cần nhằm phối hợp cân đối 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:
Cân bằng tải cho nhiều hệ thống.
+ Điều phối nhanh:
Còn gọi là điều phối CPU.
Chọn tiến trình từ Ready Queue để cấp CPU.
Có tần suất công việc cao. Thường cứ 100ms lại tốn 10ms để 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.
Được sửa bởi nguyenthaihiep (I11C) ngày 8/3/2012, 08:50; sửa lần 1.
nguyenthaihiep (I11C)- Tổng số bài gửi : 34
Join date : 31/08/2011
Ví dụ về PCB
Mình có ví dụ về PCB có gì các bạn bổ sung thêm!
Trong giờ học thầy gọi một bạn A lên bảng giải bài tập trong lúc bạn A đang giải thầy lại gọi bạn B lên và bạn A xuống, khi bạn A xuống thì toàn bộ nội dung của bạn A đã được thầy ghi chép vào một vùng bộ nhớ của bạn A (ví dụ như ghi vào một trang giấy) gọi là vùng nhớ PCB. Bạn B ghi xong thầy lại lưu nội dung của bạn B vào vùng nhớ PCB của bạn B. Sau đó thầy muốn bạn A lên bảng lại thì thầy lại khôi phục lại nội dung của bạn A( dữ liệu của vùng nhớ PCB) được khôi phục lại.
Trong giờ học thầy gọi một bạn A lên bảng giải bài tập trong lúc bạn A đang giải thầy lại gọi bạn B lên và bạn A xuống, khi bạn A xuống thì toàn bộ nội dung của bạn A đã được thầy ghi chép vào một vùng bộ nhớ của bạn A (ví dụ như ghi vào một trang giấy) gọi là vùng nhớ PCB. Bạn B ghi xong thầy lại lưu nội dung của bạn B vào vùng nhớ PCB của bạn B. Sau đó thầy muốn bạn A lên bảng lại thì thầy lại khôi phục lại nội dung của bạn A( dữ liệu của vùng nhớ PCB) được khôi phục lại.
nguyenthimao_I12A- Tổng số bài gửi : 35
Join date : 16/02/2012
Trình bày mô hình chuyển trạng thái của tiến trình trạng thái
Quá trình là một chương trình đang thực thi. Khi một quá trình thực thi, nó thay đổi trạng thái. Trạng thái của một quá trình được định nghĩa bởi một hoạt động hiện tại của quá trình đó. Mỗi quá trình có thể ở một trong những trạng thái sau: mới (new), sẳn sàng (ready), đang chạy (running), chờ (waiting), hay kết thúc (terminated). Mỗi quá trình được biểu diễn trong hệ điều hành bởi khối điều khiển quá trình của chính nó (PCB).
Một quá trình khi không thưc thi, được đặt vào hàng đợi. Hai cấp chủ yếu của hàng đợi trong hệ điều hành là hàng đợi yêu cầu nhập/xuất và hàng đợi sẳn sàng. Hàng đợi sẳn sàng chứa tất cả quá trình sẳn sàng để thực thi và đang chờ CPU. Mỗi quá trình được biểu diễn bởi một PCB và các PCB có thể được liên kết với nhau để hình thành một hàng đợi sẳn sàng. Định thời biểu dài (long-term scheduling) (hay định thời biểu công việc) là chọn các quá trình được phép cạnh tranh CPU. Thông thường, định thời biểu dài bị ảnh hưởng nặng nề bởi việc xem xét cấp phát tài nguyên, đặc biệt quản lý bộ nhớ. Định thời ngắn (short-term scheduling) là sự chọn lựa một quá trình từ các hàng đợi sẳn sàng.
Các quá trình trong hệ thống có thể thực thi đồng hành. Có nhiều lý do các thực thi đồng hành: chia sẻ thông tin, tăng tốc độ tính toán, hiệu chỉnh và tiện dụng. Thực thi đồng hành yêu cầu cơ chế cho việc tạo và xóa quá trình.
https://2img.net/h/i1229.photobucket.com/albums/ee479/bravemanvvn/Hinh%20hoc%20hanh/mohinh5trangthaiprocess.jpg
Quá trình thực thi trong hệ điều hành có thể là các quá trình độc lập hay các quá trình hợp tác. Các quá trình hợp tác phải có phương tiện giao tiếp với nhau. Chủ yếu, có hai cơ chế giao tiếp bổ sung cho nhau cùng tồn tại: chia sẻ bộ nhớ và hệ thống truyền thông điệp. Phương pháp chia sẻ bộ nhớ yêu cầu các quá trình giao tiếp chia sẻ một số biến. Các quá trình được mong đợi trao đổi thông tin thông qua việc sử dụng các biến dùng chung này. Trong hệ thống bộ nhớ được chia sẻ, nhiệm vụ cho việc cung cấp giao tiếp tách rời với người lập trình ứng dụng; chỉ hệ điều hành cung cấp hệ thống bộ nhớ được chia sẻ. Phương pháp truyền thông điệp cho phép các quá trình trong đổi thông điệp. Nhiệm vụ cung cấp giao tiếp có thể tách rời với hệ điều hành. Hai cơ chế này không loại trừ hỗ tương và có thể được dùng cùng một lúc trong phạm vi một hệ điều hành.
Một quá trình khi không thưc thi, được đặt vào hàng đợi. Hai cấp chủ yếu của hàng đợi trong hệ điều hành là hàng đợi yêu cầu nhập/xuất và hàng đợi sẳn sàng. Hàng đợi sẳn sàng chứa tất cả quá trình sẳn sàng để thực thi và đang chờ CPU. Mỗi quá trình được biểu diễn bởi một PCB và các PCB có thể được liên kết với nhau để hình thành một hàng đợi sẳn sàng. Định thời biểu dài (long-term scheduling) (hay định thời biểu công việc) là chọn các quá trình được phép cạnh tranh CPU. Thông thường, định thời biểu dài bị ảnh hưởng nặng nề bởi việc xem xét cấp phát tài nguyên, đặc biệt quản lý bộ nhớ. Định thời ngắn (short-term scheduling) là sự chọn lựa một quá trình từ các hàng đợi sẳn sàng.
Các quá trình trong hệ thống có thể thực thi đồng hành. Có nhiều lý do các thực thi đồng hành: chia sẻ thông tin, tăng tốc độ tính toán, hiệu chỉnh và tiện dụng. Thực thi đồng hành yêu cầu cơ chế cho việc tạo và xóa quá trình.
https://2img.net/h/i1229.photobucket.com/albums/ee479/bravemanvvn/Hinh%20hoc%20hanh/mohinh5trangthaiprocess.jpg
Quá trình thực thi trong hệ điều hành có thể là các quá trình độc lập hay các quá trình hợp tác. Các quá trình hợp tác phải có phương tiện giao tiếp với nhau. Chủ yếu, có hai cơ chế giao tiếp bổ sung cho nhau cùng tồn tại: chia sẻ bộ nhớ và hệ thống truyền thông điệp. Phương pháp chia sẻ bộ nhớ yêu cầu các quá trình giao tiếp chia sẻ một số biến. Các quá trình được mong đợi trao đổi thông tin thông qua việc sử dụng các biến dùng chung này. Trong hệ thống bộ nhớ được chia sẻ, nhiệm vụ cho việc cung cấp giao tiếp tách rời với người lập trình ứng dụng; chỉ hệ điều hành cung cấp hệ thống bộ nhớ được chia sẻ. Phương pháp truyền thông điệp cho phép các quá trình trong đổi thông điệp. Nhiệm vụ cung cấp giao tiếp có thể tách rời với hệ điều hành. Hai cơ chế này không loại trừ hỗ tương và có thể được dùng cùng một lúc trong phạm vi một hệ điều hành.
NguyenHongHaiI12C- Tổng số bài gửi : 48
Join date : 18/02/2012
Ví dụ về điều phối
* Điều phối chậm (Long-term scheduler or job scheduler) : hỗn hợp 2 loại hướng CPU và hướng I/O để đảm bảo cân bằng tải do đó CPU sẽ được xử lý hữu hiệu hơn.
+ 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).
* Điều phối vừa (Medium-termscheduler) :
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).
+ 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).
* Điều phối vừa (Medium-termscheduler) :
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).
nguyenthimao_I12A- Tổng số bài gửi : 35
Join date : 16/02/2012
Trang 3 trong tổng số 15 trang • 1, 2, 3, 4 ... 9 ... 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 3 trong tổng số 15 trang
Permissions in this forum:
Bạn không có quyền trả lời bài viết