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 6 trong tổng số 15 trang
Trang 6 trong tổng số 15 trang • 1 ... 5, 6, 7 ... 10 ... 15
Re: Thảo luận Bài 4
plminhhoangI12A đã viết:
- Chia sẻ thông tin(Information Sharing):Một tiến trình sử dụng thông tin do tiến trình khác cung cấp.
- Tăng tốc tính toán(Computation Speedup):Các tiến trình cùng làm việc song song trên 1 hoặc nhiều máy để giải quyết bài toán chung.
- Đảm bảo tính đơn thể(Modularity):Chương trình được chia thành các đơn thể chức năng vận hành trong các tiến trình hoặc luồng khác nhau.
- Đảm bảo tính tiện dụng(Convenience):Người dùng có nhu cầu làm nhiều việc một lúc:soạn thảo,in ấn,duyệt web,lấy file về,biên dịch chương trình,kiểm tra chính tả...
Bài viết rất hay. Thansk
ngothihanHC11TH2A- Tổng số bài gửi : 23
Join date : 16/02/2012
So sánh Job Queue và 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.
Có gì thiếu thì các bạn bổ sung dùm mình cho hoàn chỉnh hơn. Thanks
Ready Queue: là hàng chờ sẵn sàng, chứa các tiến trình chờ được cấp CPU.
Giống nhau:
- Đều là các hàng chờ chứa các tiến trình cần vận hành.
- Đều cần thuật giải điều phối để sắp xếp các tiến trình.
Khác nhau:
- Dùng giải thuật điều phối chậm(Long - term Scheduler) để đưa các tiến trình từ Job Queue vào Ready Queue.
- Dùng giải thuật điều phối nhanh(Short - term Scheduler) chọn các tiến trình trong Ready Queue để cấp CPU.
Job Queue : Có nhiều thời gian xử lý hơn.
Ready Queue : Có ít thời gian so với Job Queue.
Có gì thiếu thì các bạn bổ sung dùm mình cho hoàn chỉnh hơn. Thanks
nguyenthanhphongHC11TH2A- Tổng số bài gửi : 26
Join date : 16/02/2012
Khối điều khiển tiến trình
Một khối điều khiển tiến trình (Process Control Block - PCB) là một cấu trúc dữ liệu trong nhân hệ điều hành chứa thông tin cần thiết để quản lý một tiến trình nhất định.
Tuỳ thuộc vào cài đặt nhưng nói chung PCB trực tiếp hoặc gián tiếp chứa những thông tin sau:
Định danh của tiến trình (process identifier hay PID)
Giá trị các thanh ghi của tiến trình, trong đó đáng chú ý là con trỏ chương trình và con trỏ stack
Không gian địa chỉ của tiến trình
Độ ưu tiên (trong đó tiến trình có giá trị cao hơn được ưu tiên trước, ví dụ nice trong các hệ điều hành Unix)
Thông tin kế toán tiến trình, ví dụ như thời điểm thực thi gần nhất, bao nhiêu thời gian CPU đã sử dụng...
Con trỏ tới PCB tiếp theo, nghĩa là con trỏ tới tiến trình tiếp theo được chạy
Thông tin V/R (ví dụ các thiết bị V/R được cấp phát cho tiến trình, danh sách các tệp đang mở...)
Khi chuyển ngữ cảnh, tiến trình đang thực hiện bị dừng lại và một tiến trình khác có cơ hội thực hiện. Nhân dừng việc thực hiện của tiến trình, sao chép các giá trị trong thanh ghi vào PCB và cập nhật thanh ghi với các giá trị của PCB của tiến trình mới.
+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 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
LeQuocKhanh-11H1010059- Tổng số bài gửi : 59
Join date : 16/02/2012
Age : 36
Đến từ : HCM
Thaỏ luận bài 4 : Phân tích vai trò của khối kiểm soát tiến trình
Khối kiểm soát tiến trình (Process Control Block - PCB ) - Bảng thông tin về môi trường và trạng thái hoạt động của tiến trình:
Chứa các thông tin ứng với mỗi process. Process ID, parent process ID
• Credentials (user ID, group ID, effective ID,...)
• Trạng thái process : new, ready, running, waiting…
• Program counter: địa chỉ của lệnh kế tiếp sẽ thực thi
• Các thanh ghi CPU
• Thông tin dùng để định thời CPU: priority,...
• Thông tin bộ nhớ: base/limit register, page tables…
• Thông tin thống kê: CPU time, time limits…
• Thông tin trạng thái I/O: danh sách thiết bị I/O được cấp phát, danh sách các file đang mở,...
• Con trỏ (pointer) đến PCBs khác.
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.
Kết lại : PCB là một cấu trúc dữ liệu được hệ điều hành duy trì cho mỗi tiến trình dùng để chứa các thông tin cần thiết về tiến trình đó. PCB chứa "Bản sao công việc của tiến trình".
Nó lưu lại trạng thái của tiến trình tại thời điểm đang xét . Trạng thái này bao gồm (các địa chỉ liên kết của tiến trình & dữ liệu, số hiệu tiến trình, bộ đếm lệnh, nội dung các thanh ghi, giới hại bộ nhớ của tiến trình, danh sách các file đang mở, các thông tin về thời gian thống kê tiến trình hiện tại).
Vd: Dùng chung 1 bảng, bạn thứ 2 lên bảng sửa bài thì phải xóa bài của bạn thứ 1 đã viết>> Phải viết vào vở để nội dung không bị mất khi người khác xóa.
[i]
Chứa các thông tin ứng với mỗi process. Process ID, parent process ID
• Credentials (user ID, group ID, effective ID,...)
• Trạng thái process : new, ready, running, waiting…
• Program counter: địa chỉ của lệnh kế tiếp sẽ thực thi
• Các thanh ghi CPU
• Thông tin dùng để định thời CPU: priority,...
• Thông tin bộ nhớ: base/limit register, page tables…
• Thông tin thống kê: CPU time, time limits…
• Thông tin trạng thái I/O: danh sách thiết bị I/O được cấp phát, danh sách các file đang mở,...
• Con trỏ (pointer) đến PCBs khác.
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.
Kết lại : PCB là một cấu trúc dữ liệu được hệ điều hành duy trì cho mỗi tiến trình dùng để chứa các thông tin cần thiết về tiến trình đó. PCB chứa "Bản sao công việc của tiến trình".
Nó lưu lại trạng thái của tiến trình tại thời điểm đang xét . Trạng thái này bao gồm (các địa chỉ liên kết của tiến trình & dữ liệu, số hiệu tiến trình, bộ đếm lệnh, nội dung các thanh ghi, giới hại bộ nhớ của tiến trình, danh sách các file đang mở, các thông tin về thời gian thống kê tiến trình hiện tại).
Vd: Dùng chung 1 bảng, bạn thứ 2 lên bảng sửa bài thì phải xóa bài của bạn thứ 1 đã viết>> Phải viết vào vở để nội dung không bị mất khi người khác xóa.
[i]
Nguyen Sy Hung I12A- Tổng số bài gửi : 28
Join date : 15/02/2012
Age : 35
Trình bày những lý do công tác giữa các tiến trình
plminhhoangI12A đã viết:
- Chia sẻ thông tin(Information Sharing):Một tiến trình sử dụng thông tin do tiến trình khác cung cấp.
- Tăng tốc tính toán(Computation Speedup):Các tiến trình cùng làm việc song song trên 1 hoặc nhiều máy để giải quyết bài toán chung.
- Đảm bảo tính đơn thể(Modularity):Chương trình được chia thành các đơn thể chức năng vận hành trong các tiến trình hoặc luồng khác nhau.
- Đảm bảo tính tiện dụng(Convenience):Người dùng có nhu cầu làm nhiều việc một lúc:soạn thảo,in ấn,duyệt web,lấy file về,biên dịch chương trình,kiểm tra chính tả...
Cho mình bổ sung thêm VD
• Chia sẻ thông tin (Information Sharing): Một tiến trình sử dụng thông tin do tiến trình khác cung cấp. Ví dụ: các bạn trong lớp chia nhóm học.
VD: Nhóm một nghiên cứu chương 1, nhóm hai nghiên cứu chương 2. Sau đó, hai nhóm trao đổi thông tin cho nhau. Kết quả hai nhóm mau chóng tìm hiểu hết hai chương.
• Tăng tốc tính toán (Computation Speedup): Các tiến trình cùng làm việc song song trên 1 hoặc nhiều máy để giải quyết bài toán chung.
VD:Khi nghiên cứu để phát triển một hàng hóa mới thì nhóm thứ nhất có thể lo về vấn đề hàng hóa để đáp ứng thị trường, nhóm thứ 2 có thể thăm dò ý kiến người dùng, đối thủ cạnh tranh để giải quyết các vấn đề sao cho khi đưa mặt hàng mới ra thị trường có lợi nhuận
• Đảm bảo tính đơn thể (Modularity): Chương trình được chia thành các đơn thể chức năng vận hành trong các tiến trình hoặc luồng khác nhau.
Ví dụ: mỗi bạn học một bài, đảm bảo tính đơn thể.
• Đảm bảo tính tiện dụng (Convenience): Người dùng có nhu cầu làm nhiều việc một lúc: Soạn thảo, In ấn, Duyệt Web, Lấy file về, Biên dịch chương trình, Kiểm tra chính tả,...
lethanhsang_I12A- Tổng số bài gửi : 22
Join date : 15/02/2012
Age : 34
Đến từ : Đồng Nai
Re: Thảo luận Bài 4
Câu 1: Trình bày mô hình chuyển trạng thái tiến trình?
a. Sự khác nhau giữa tiến trình Chương trình
Giải:
- Tiến trình (Process) là chuơ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 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. Các trạng thái của tiến trình:
Có 5 trạng thái tiến trình:
1.Mới (new): Hệ điều hành sẽ quan sát tiến trình trong suốt thời gian nó trải qua các trạng thái của tiến trình
2. Đang chạy (Running): Các lệnh đang được thực hiện
3. Đang chờ(Waiting): Một tiến trình đang ở trạng thái ngủ đang chờ 1 tiến trình xảy ra. Khi tiến trình đó xảy ra hệ điều hành sẽ đánh thức tiến trình đó.
4. Sẵn sàng (Ready): Tiến trình đang ở trạng thái không còn chờ gì nữa
5. Kết thúc (Terminated): Tiến trình xong công việc, được hệ điều hành đưa ra khỏi bộ nhớ và hủy
Ta có thể ví dụ một cách dễ hiểu:
Trong nhà hàng:
-Tài nguyên hệ thống xem như bàn ghế thức ăn
- Tiến trình là bàn ăn theo yêu cầu phục vụ. Chẳng hạn như bạn đặt bàn ăn với 5 nguời
- Hệ điều hành: Tiếp viên phục vụ
- Tiến trình người dùng: khách hàng
? . Khái niệm chuyển ngữ cảnh (Bổ sung thêm)
Giải:
Chuyển ngữ cảnh (Context Switch)
- Là chức năng của Dispatcher(trình điều vận) khi cần chuyển CPU từ tiến trình P0 này sang tiến trình P1 khác:
- Nạp môi trường và trạng thái làm việc của tiến trình P1 từ PCB1. Thời gian chuyển ngữ cảnh khá lớn: Từ 1-1000 ms
- Trình điều vận có chức năng:
+ Sao chụp lại các vùng nhớ, thanh ghi và lưu lại thành bảng. Bảng đó gọi là PCB0
+ Khôi phục lại môi trường để tiến P1 từ PCB1. Vì PCB0 đã làm hỏng môi trường của PCB1
- Ghi môi trường và trạng thái làm việc của P0 vào PCB0
- Công nghệ Đa luồng (Bài 5) đượ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.
? . Giới thiệu các loại điều phối (scheduler)
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:
a. Hướng CPU (CPU-Bound): Tính toán nhiều, Ít I/O
b. 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.
?. Tại sao phải có Điều phối chậm, Điều phối nhanh và Điều phối vừa?
Giải:
q Long-term scheduler (or job scheduler)
Chọn process nào sẽ được đưa vào ready queue (từ New chuyển sang Ready)
q Short-term scheduler (or CPU scheduler)
Chọn process nào sẽ được chiếm CPU để xử lý (từ Ready chuyển sang Running)
q Medium-term scheduler
Chuyển process 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.
?. Lý do phải tổ chức cộng tác giữa các tiến trình
Giải:
- Chia sẻ thông tin (Information Sharing): Một tiến trình sử dụng thông tin do tiến trinh khác cung cấp.
- Tăng tốc tính toán (Computation Speedup): Các tiến trình cùng làm việc song song trên 1 hoặc nhiều máy để giải quyết bài toán chung.
- Đảm bảo tính đơn thể (Modularity): Chương trình được chia thành các đơn thể chức năng vận hành trong các tiến trình hoặc luồng khác nhau.
- Đảm bảo tính tiện dụng (Convenience): Người dùng có nhu cầu làm nhiều việc một lúc: Soạn thảo, In ấn, Duyệt Web, Lấy file về, Biên dịch chương trình, Kiểm tra chính tả,...
4.3. Chức năng và nội dung của Khối kiểm soát tiến trình.
Giải:
Chứa các thông tin ứng với mỗi process.
q Process ID, parent process ID
q Credentials (user ID, group ID, effective ID,...)
q Trạng thái process : new, ready, running, waiting…
q Program counter: địa chỉ của lệnh kế tiếp sẽ thực thi
q Các thanh ghi CPU
q Thông tin dùng để định thời CPU: priority,...
q Thông tin bộ nhớ: base/limit register, page tables…
q Thông tin thống kê: CPU time, time limits…
q Thông tin trạng thái I/O: danh sách thiết bị I/O được cấp phát, danh sách các file đang mở,...
q Con trỏ (pointer) đến PCBs khác.
a. Sự khác nhau giữa tiến trình Chương trình
Giải:
- Tiến trình (Process) là chuơ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 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. Các trạng thái của tiến trình:
Có 5 trạng thái tiến trình:
1.Mới (new): Hệ điều hành sẽ quan sát tiến trình trong suốt thời gian nó trải qua các trạng thái của tiến trình
2. Đang chạy (Running): Các lệnh đang được thực hiện
3. Đang chờ(Waiting): Một tiến trình đang ở trạng thái ngủ đang chờ 1 tiến trình xảy ra. Khi tiến trình đó xảy ra hệ điều hành sẽ đánh thức tiến trình đó.
4. Sẵn sàng (Ready): Tiến trình đang ở trạng thái không còn chờ gì nữa
5. Kết thúc (Terminated): Tiến trình xong công việc, được hệ điều hành đưa ra khỏi bộ nhớ và hủy
Ta có thể ví dụ một cách dễ hiểu:
Trong nhà hàng:
-Tài nguyên hệ thống xem như bàn ghế thức ăn
- Tiến trình là bàn ăn theo yêu cầu phục vụ. Chẳng hạn như bạn đặt bàn ăn với 5 nguời
- Hệ điều hành: Tiếp viên phục vụ
- Tiến trình người dùng: khách hàng
? . Khái niệm chuyển ngữ cảnh (Bổ sung thêm)
Giải:
Chuyển ngữ cảnh (Context Switch)
- Là chức năng của Dispatcher(trình điều vận) khi cần chuyển CPU từ tiến trình P0 này sang tiến trình P1 khác:
- Nạp môi trường và trạng thái làm việc của tiến trình P1 từ PCB1. Thời gian chuyển ngữ cảnh khá lớn: Từ 1-1000 ms
- Trình điều vận có chức năng:
+ Sao chụp lại các vùng nhớ, thanh ghi và lưu lại thành bảng. Bảng đó gọi là PCB0
+ Khôi phục lại môi trường để tiến P1 từ PCB1. Vì PCB0 đã làm hỏng môi trường của PCB1
- Ghi môi trường và trạng thái làm việc của P0 vào PCB0
- Công nghệ Đa luồng (Bài 5) đượ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.
? . Giới thiệu các loại điều phối (scheduler)
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:
a. Hướng CPU (CPU-Bound): Tính toán nhiều, Ít I/O
b. 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.
?. Tại sao phải có Điều phối chậm, Điều phối nhanh và Điều phối vừa?
Giải:
q Long-term scheduler (or job scheduler)
Chọn process nào sẽ được đưa vào ready queue (từ New chuyển sang Ready)
q Short-term scheduler (or CPU scheduler)
Chọn process nào sẽ được chiếm CPU để xử lý (từ Ready chuyển sang Running)
q Medium-term scheduler
Chuyển process 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.
?. Lý do phải tổ chức cộng tác giữa các tiến trình
Giải:
- Chia sẻ thông tin (Information Sharing): Một tiến trình sử dụng thông tin do tiến trinh khác cung cấp.
- Tăng tốc tính toán (Computation Speedup): Các tiến trình cùng làm việc song song trên 1 hoặc nhiều máy để giải quyết bài toán chung.
- Đảm bảo tính đơn thể (Modularity): Chương trình được chia thành các đơn thể chức năng vận hành trong các tiến trình hoặc luồng khác nhau.
- Đảm bảo tính tiện dụng (Convenience): Người dùng có nhu cầu làm nhiều việc một lúc: Soạn thảo, In ấn, Duyệt Web, Lấy file về, Biên dịch chương trình, Kiểm tra chính tả,...
4.3. Chức năng và nội dung của Khối kiểm soát tiến trình.
Giải:
Chứa các thông tin ứng với mỗi process.
q Process ID, parent process ID
q Credentials (user ID, group ID, effective ID,...)
q Trạng thái process : new, ready, running, waiting…
q Program counter: địa chỉ của lệnh kế tiếp sẽ thực thi
q Các thanh ghi CPU
q Thông tin dùng để định thời CPU: priority,...
q Thông tin bộ nhớ: base/limit register, page tables…
q Thông tin thống kê: CPU time, time limits…
q Thông tin trạng thái I/O: danh sách thiết bị I/O được cấp phát, danh sách các file đang mở,...
q Con trỏ (pointer) đến PCBs khác.
lacongchinh_I12A- Tổng số bài gửi : 14
Join date : 24/02/2012
Re: Thảo luận Bài 4
?. Hai phương thức liên lạc giữa các tiến trình.
Giải:
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:
× Liên kết được thiết lập tự động giữa mỗi cặp tiến trình.
× Liên kết chỉ giữa 2 tiến trình.
× Chỉ có 1 liên kết giữa mỗi cặp.
× Tính đối xứng của liên lạc (2 bên đều biết đích xác tên của nhau khi Gửi/Nhận).
§Theo địa chỉ phi đối xứng (Asymmetric Scheme)
Send (P, Message) - Gửi thông điệp cho P
Receive (id, Message) - Nhận thông điệp từ tiến trình bất kỳ, Biến id chứa số hiệu tiến trình gửi
Liên lạc gián tiếp (Indirect Communications)
§ Qua các Hộp thư (Mailboxes) hoặc Cổng (Ports).
§ Hộp thư là một thực thể qua đó thông điệp được gửi đến và lấy ra.
§ Mỗi hộp thư có định danh riêng.
§ Hai tiến trình phải chung nhau một hộp thư nào đó.
§ Hai loại hộp thư:
× Hộp thư tiến trình (Process Mailbox): Nằm trong vùng địa chỉ của một tiến trình nào đó.
× Hộp thư hệ điều hành (OS Mailbox): Nằm trong vùng địa chỉ của HĐH
?. Đồng bộ hoá liên lạc giữa các tiến trình.
Giải:
Đồng bộ hoá liên lạc (Synchronization)
× Gửi thông điệp có chờ (Blocking Send)
× Gửi thông điệp không chờ (Nonblocking Send)
× Nhận thông điệp có chờ (Blocking Receive)
× Nhận thông điệp không chờ (Nonblocking Receive)
?. Truyền thông điệp trong Windows .
Giải:
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ờ
?. Phân loại hốc liên lạc trong hệ thống Client-Server.
Giải:
§ 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.
Giải:
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:
× Liên kết được thiết lập tự động giữa mỗi cặp tiến trình.
× Liên kết chỉ giữa 2 tiến trình.
× Chỉ có 1 liên kết giữa mỗi cặp.
× Tính đối xứng của liên lạc (2 bên đều biết đích xác tên của nhau khi Gửi/Nhận).
§Theo địa chỉ phi đối xứng (Asymmetric Scheme)
Send (P, Message) - Gửi thông điệp cho P
Receive (id, Message) - Nhận thông điệp từ tiến trình bất kỳ, Biến id chứa số hiệu tiến trình gửi
Liên lạc gián tiếp (Indirect Communications)
§ Qua các Hộp thư (Mailboxes) hoặc Cổng (Ports).
§ Hộp thư là một thực thể qua đó thông điệp được gửi đến và lấy ra.
§ Mỗi hộp thư có định danh riêng.
§ Hai tiến trình phải chung nhau một hộp thư nào đó.
§ Hai loại hộp thư:
× Hộp thư tiến trình (Process Mailbox): Nằm trong vùng địa chỉ của một tiến trình nào đó.
× Hộp thư hệ điều hành (OS Mailbox): Nằm trong vùng địa chỉ của HĐH
?. Đồng bộ hoá liên lạc giữa các tiến trình.
Giải:
Đồng bộ hoá liên lạc (Synchronization)
× Gửi thông điệp có chờ (Blocking Send)
× Gửi thông điệp không chờ (Nonblocking Send)
× Nhận thông điệp có chờ (Blocking Receive)
× Nhận thông điệp không chờ (Nonblocking Receive)
?. Truyền thông điệp trong Windows .
Giải:
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ờ
?. Phân loại hốc liên lạc trong hệ thống Client-Server.
Giải:
§ 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.
lacongchinh_I12A- Tổng số bài gửi : 14
Join date : 24/02/2012
Tiến trình khởi động của Window
Đây là tiến trình khởi động của 1 hệ điều hành rất phổ biến là WinXp
Khi bắt đầu nhấn nút Power,video được khởi gọi,tiến trình tự kiểm tra của phần cứng được bắt đầu.BIOS thực hiện những cuộc kiểm tra,gọi là POSTS(power-on selftests). Bình thường việc kiểm tra bộ nhớ là dễ nhìn thấy nhất,tiến trình của nó có thể thấy dễ dàng trên mọi màn hình lúc khởi động.
Sau khi chạy xong POST,hệ thống sẽ khởi gọi các adapter(thiết bị tiếp hợp).Nếu trong các adapter đã có sẵn BIOS của chính chúng,BIOS của Adapter sẽ được gọi để thực thi sự khởi động của chúng.Đối với các thiết bị giao tiếp IDE(thường các máy tính có từ 2-4 giao tiếp IDE),mỗi ổ đĩa đã kết nối (thường có thể gắn đến 2 ổ đĩa cho mỗi giao tiếp IDE,do đó có thể cho phép gắn nhiều nhất lên đến 8 ổ đĩa) được truy vấn các đặc tính và các phương thức truy cập của chúng.1 vài thiết bị như các thiết bị giao tiếp SCSI trưng bày những thông tin trên màn hình và cho phép người sử dụng có thể tương tác với nó.Các Adapter không có tích hợp sẵn BIOS sẽ không được khởi tạo cho đến khi Win XP load các driver của chúng trong tiến trình khởi động.
Sau khi tất cả các adapter có BIOS đã được khởi tạo,hệ thống bắt đầu khởi động tiến trình load,đọc sector nằm ở vị trí bắt đầu của đĩa khởi động và thực hiện các câu lệnh(đoạn code) trong sector này.Sector này được gọi bởi sector khởi động hoặc MBR(Master Boot Record), nó được viết bởi hệ điều hành khi được cài đặt.
Đoạn code trong MBR load file NTLDR(File này không có đuôi mở rộng) Sau khi load,MBR chuyển điều khiển đến đoạn code trong NTLDR.
NTLDR sau đó chuyển vào mode 32 bit(Chú ý rằng 1 bộ xử lý của Intel luôn khởi động vào mode 16 bit).Sau đó nó load 1 bản sao đặc biệt của các file hệ thống I/O và đọc chúng trong file boot.ini.
File boot.ini có thông tin về mỗi hệ điều hành cần khởi động.Windows XP có khả năng hỗ trợ đa khởi động(Điều đó là bình thường để cài đặt Win XP có thể khởi động với Windows NT, Windows XP, Windows 95 or Windows 98).File NTLDR tiến hành xử lý file boot.ini, trưng bày các thông tin cho phép người sử dụng lựa chọn hệ điều hành nào sẽ được load.
Khi bạn chọn Win Xp để load,file NTLDR sẽ load file ntdetect.com. Đây là file thu thập các thông tin về phần cứng được cài đặt hiện hành và lưu giữ những thông tin này vào registry.Hầu hết các thông tin này được lưu giữ trong cây HKEY_LOCAL_MACHINE .
1 khi file NTDETECT đã kiểm tra xong phần cứng,điểu khiển được trả về lại cho file NTLDR và tiến trình khởi động lại được tiếp tục.Vào thời gian này Registry đã được cập nhật về cơ bản cấu hình các phần cứng trong máy tính ,thông tin cấu hình này được lưu trữ trong HKEY_LOCAL_MACHINEHardware.
Dấu nhắc lựa chọn cấu hình "Press spacebar now to invoke Hardware Profile/Last Known Good menu," cho phép Win XP sử dụng những cấu hình đặc biệt, được lưu trữ trong HKEY_LOCAL_MACHINE.
Theo sau sự kiểm tra của file NTDETECT,file NTLDR load và khởi tạo các nhân Windows NT,load các services, và bắt đầu Windows.
Khi các nhân đã được load xong, HAL(Hardware Abstraction Layer) cũng được load,nó được sử dụng để quản lý các thiết bị phần cứng.Kế đến các khóa trong registry HKEY_LOCAL_MACHINE_System cũng được load vào bộ nhớ. Windows XP sẽ quét registry để tìm tất cả các drivers bắt đầu với giá trị 0,bao gồm những drivers sẽ được load và khởi tạo vào lúc khởi động.
Sau đó các nhân sẽ được khởi tạo. Màn hình chào đón chuyển đến khung nền đen và bạn sẽ nhìn thấy thông tin về build number của Windows XP và number của bộ xử lý hệ thống.Tại đây ,hệ thống sẽ quét lại lần nữa registry và tìm tất cả các driver cần được load trong gia đoạn khởi động nhân.
Từ lúc này Windows XP bắt đầu nhiều thành phần của hệ thống và các thành phần do user cài đặt. Mỗi thành phần này đọc thông tin từ registry và thực thi nhiều công việc khác nhau.Trong giai đoạn cuối,chương trình quản lý user logon, WinLogon, bắt đầu. WinLogon cho phép người sử dụng log on và sử dụng Win Xp.
Vậy là bạn đã hiểu tại sao mỗi khi cài đặt 1 số phần mềm cũng như chỉnh sửa trong Registry đòi hỏi bạn phải khởi động lại máy rồi đó.
Khi bắt đầu nhấn nút Power,video được khởi gọi,tiến trình tự kiểm tra của phần cứng được bắt đầu.BIOS thực hiện những cuộc kiểm tra,gọi là POSTS(power-on selftests). Bình thường việc kiểm tra bộ nhớ là dễ nhìn thấy nhất,tiến trình của nó có thể thấy dễ dàng trên mọi màn hình lúc khởi động.
Sau khi chạy xong POST,hệ thống sẽ khởi gọi các adapter(thiết bị tiếp hợp).Nếu trong các adapter đã có sẵn BIOS của chính chúng,BIOS của Adapter sẽ được gọi để thực thi sự khởi động của chúng.Đối với các thiết bị giao tiếp IDE(thường các máy tính có từ 2-4 giao tiếp IDE),mỗi ổ đĩa đã kết nối (thường có thể gắn đến 2 ổ đĩa cho mỗi giao tiếp IDE,do đó có thể cho phép gắn nhiều nhất lên đến 8 ổ đĩa) được truy vấn các đặc tính và các phương thức truy cập của chúng.1 vài thiết bị như các thiết bị giao tiếp SCSI trưng bày những thông tin trên màn hình và cho phép người sử dụng có thể tương tác với nó.Các Adapter không có tích hợp sẵn BIOS sẽ không được khởi tạo cho đến khi Win XP load các driver của chúng trong tiến trình khởi động.
Sau khi tất cả các adapter có BIOS đã được khởi tạo,hệ thống bắt đầu khởi động tiến trình load,đọc sector nằm ở vị trí bắt đầu của đĩa khởi động và thực hiện các câu lệnh(đoạn code) trong sector này.Sector này được gọi bởi sector khởi động hoặc MBR(Master Boot Record), nó được viết bởi hệ điều hành khi được cài đặt.
Đoạn code trong MBR load file NTLDR(File này không có đuôi mở rộng) Sau khi load,MBR chuyển điều khiển đến đoạn code trong NTLDR.
NTLDR sau đó chuyển vào mode 32 bit(Chú ý rằng 1 bộ xử lý của Intel luôn khởi động vào mode 16 bit).Sau đó nó load 1 bản sao đặc biệt của các file hệ thống I/O và đọc chúng trong file boot.ini.
File boot.ini có thông tin về mỗi hệ điều hành cần khởi động.Windows XP có khả năng hỗ trợ đa khởi động(Điều đó là bình thường để cài đặt Win XP có thể khởi động với Windows NT, Windows XP, Windows 95 or Windows 98).File NTLDR tiến hành xử lý file boot.ini, trưng bày các thông tin cho phép người sử dụng lựa chọn hệ điều hành nào sẽ được load.
Khi bạn chọn Win Xp để load,file NTLDR sẽ load file ntdetect.com. Đây là file thu thập các thông tin về phần cứng được cài đặt hiện hành và lưu giữ những thông tin này vào registry.Hầu hết các thông tin này được lưu giữ trong cây HKEY_LOCAL_MACHINE .
1 khi file NTDETECT đã kiểm tra xong phần cứng,điểu khiển được trả về lại cho file NTLDR và tiến trình khởi động lại được tiếp tục.Vào thời gian này Registry đã được cập nhật về cơ bản cấu hình các phần cứng trong máy tính ,thông tin cấu hình này được lưu trữ trong HKEY_LOCAL_MACHINEHardware.
Dấu nhắc lựa chọn cấu hình "Press spacebar now to invoke Hardware Profile/Last Known Good menu," cho phép Win XP sử dụng những cấu hình đặc biệt, được lưu trữ trong HKEY_LOCAL_MACHINE.
Theo sau sự kiểm tra của file NTDETECT,file NTLDR load và khởi tạo các nhân Windows NT,load các services, và bắt đầu Windows.
Khi các nhân đã được load xong, HAL(Hardware Abstraction Layer) cũng được load,nó được sử dụng để quản lý các thiết bị phần cứng.Kế đến các khóa trong registry HKEY_LOCAL_MACHINE_System cũng được load vào bộ nhớ. Windows XP sẽ quét registry để tìm tất cả các drivers bắt đầu với giá trị 0,bao gồm những drivers sẽ được load và khởi tạo vào lúc khởi động.
Sau đó các nhân sẽ được khởi tạo. Màn hình chào đón chuyển đến khung nền đen và bạn sẽ nhìn thấy thông tin về build number của Windows XP và number của bộ xử lý hệ thống.Tại đây ,hệ thống sẽ quét lại lần nữa registry và tìm tất cả các driver cần được load trong gia đoạn khởi động nhân.
Từ lúc này Windows XP bắt đầu nhiều thành phần của hệ thống và các thành phần do user cài đặt. Mỗi thành phần này đọc thông tin từ registry và thực thi nhiều công việc khác nhau.Trong giai đoạn cuối,chương trình quản lý user logon, WinLogon, bắt đầu. WinLogon cho phép người sử dụng log on và sử dụng Win Xp.
Vậy là bạn đã hiểu tại sao mỗi khi cài đặt 1 số phần mềm cũng như chỉnh sửa trong Registry đòi hỏi bạn phải khởi động lại máy rồi đó.
nguyen_tuan_phat_I12A- Tổng số bài gửi : 15
Join date : 17/02/2012
Tìm hiều về bộ nhớ đệm cache
ếu như máy của bạn phải làm việc quá sức với Windows và các chương trình ứng dụng khác thì đây là các kiểu cache* phần cứng và cache phần mềm có thể giúp ít cho bạn. Với các ứng dụng manh mẽ và đòi hỏi nhiều bộ nhớ như hiện nay thì chắc chắn bạn phải lo tìm cách nào đó có thể giúp bạn làm việc nhanh hơn. Cơ hội thì có, nhưng để mua một chiếc PC mới thì có lẽ không phải là cách lựa chọn duy nhất. Làm thế nào để tăng tốc độ mà không phải chi thêm hàng nghìn đôla. Bộ nhớ cache có thể giúp bạn điều này mà không phải quan tâm nhiều đến đĩa cứng. Bất kể một máy PC nào đều tỏ ra rất hữu hiệu khi dùng cache. Bằng cách đọc nhiều dữ liệu hơn là trình ứng dụng đòi hỏi, dữ liệu cần thiết cho ứng dụng đó đã nằm sẵn sàng trong bộ nhớ cache. Do đọc dữ liệu từ cache nhanh hơn đọc từ đĩa cứng nên tốc độ của cả hệ thống cũng như của ứng dụng tăng đáng kể. Nhưng loại cache nào tốt hơn cả cho máy vi tính: cache phần cứng hay phần mềm. Bộ điều khiển đĩa cứng IDE dùng cache có thể cắm vào khe cắm mở rộng của PC có đáng được lưu tâm hay không? Hay cache phần mềm, rẻ tiền và dễ dàng cài đặt hơn như SuperPC-Kwik cũng làm tốt như vậy? Và cả tiện ích cache kèm theo Windows 3.1 và DOS 6.0 nữa. Sự tranh đua giữa cache phần cứng và cache phần mềm sẽ ngả về đâu?
Để đáp ứng được nhu cầu của mình, bạn phải biết rõ ba vấn đề quan trọng: giá cả, tốc độ và khả năng sử dụng. Giá cả tự nói lên tất cả. Mục đích của việc sử dụng các sản phẩm cache là để
có được hiệu quả lớn nhất với số tiền đầu tư càng ít thì càng tốt. Những sản phẩm thấp giá nhất là Cache86 của Aldridge Company và Hyperdisk của Hyperware chỉ với 50 USD. Microsoft có SmartDrive 4.0 kèm theo trong Windows 3.1. Bạn có thể có SmartDrive 4.1 từ DOS 6.0. Các sản phẩm cache phần mềm đắt hơn cả PCCache của CentralPoint (kèm với PC Tools) và NCache của Symantec. Cả hai đều có giá 179 USD, nhưng chúng cũng kèm theo với các tiện ích khác. Bạn có thể cân nhắc với giá cao hơn cho các sản phẩm cache phần cứng. Truớc nhất là 595 USD cho bộ điều khiển WinStore của Solution với khả năng cho phép 1 MB cache dữ liệu. Thấp hơn là 220 USD cho Ultra 15C của UltraStor với 512 KB cache.
Tìm cache nhanh hơn tất cả
Trong khi giá cả chênh lệch nhau đáng kể như vậy thì Trung tâm thẩm định của PC WORLD lại cho thấy sự khác nhau về tốc độ giữa cache phần cứng và cache phần mềm là tối thiểu. Tốc độ giữa cache phần mềm và cache phần cứng chỉ khác biệt 4%. Tại sao vậy? Cache phần mềm sử dụng RAM của hệ thống, trong khi đó cache phần cứng dùng RAM cắm vào khe cắm mở rộng, do đó thông tin phải đi qua hệ thống bus I/O, chậm hơn là truy cập trực tiếp vào RAM hệ thống. Sự khác nhau về tốc dộ giữa các sản phẩm cứng cũng không đáng kể, từ 5 đến 10%. Có nghĩa là không nhận thấy với công việc hàng ngày. Một điểm quan trọng đáng lưu ý là nếu bạn sử dụng các ứng dụng không phải của DOS vào Windows, ví dụ như: Novell Netware thì các cache phần mềm có thể sẽ không làm việc. Chẳng hạn trong tất cả các cache phần mềm đều làm việc trên các trạm khách hàng của Novell thì không có phần mềm nào sử dụng cho Novell Server. Nhưng nhiều cache phần cứng thực hiện điều này.
Những quyết định
Cần nhớ rằng tất cả cache đều sử dụng một số loại RAM. Cache phần cứng đưa ra các bộ nhớ RAM trên card cắm vào khe mở rộng, cache phần mềm chiếm dụng RAM của hệ thống. Nói chung bộ điều khiển IDE cache có giá từ 150 đến 300 USD cho mỗi card. Trừ khi máy của bạn là loại cũ hay yêu cầu RAM riêng còn thì các bộ điều khiển đĩa cache và máy đều sử dụng RAM loại SIMM (Single in-line Memory Modules). Vì vậy, bạn phải trả thêm từ 30-40 USD cho mỗi MB RAM. Điều quan trọng là phải quyết định bổ sung RAM vào đâu để được lợi nhất. Nếu hệ thống máy của bạn có 4 MB RAM và bạn là người dùng Windows chạy nhiều ứng dụng, thực hiện thường xuyên việc chuyển đổi tác vụ và xử lý nền thì nâng RAM của hệ thống lên 8 MB sẽ tăng tốc độ nhiều hơn là bổ sung 4 MB cho bộ điều khiển cache. Và bạn không phải chi thêm 200 USD cho card điều khiển. Tuy nhiên cần lưu ý rằng với các máy PC cũ, chạy chậm thì việc sử dụng cache phần cứng sẽ có hiệu quả hơn bởi hai lý do: thứ nhất do CPU chạy chậm, thứ hai là tổng số RAM hệ thống quá bị hạn chế cho việc dành chổ cho cache.
Khả năng sử dụng
Khả năng sử dụng là tính cốt yếu của mỗi sản phẩm. Trước tiên là bắt đầu từ việc cài đặt và thiết lập. Các đặt tính sử dụng hàng ngày càng quan trọng hơn. Nhiều phần mềm cache cho phép đưa ra các phím "nóng" kích hoạt và loại bỏ cache chỉ bằng một cú gõ, chuyển đổi chế độ ghi chậm mở-tắt hoặc ngưng cache để chắc chắn rằng dữ liệu đã được ghi lên đĩa trước khi tắt máy, đều này rất quan trọng nếu bạn sử dụng cache để làm chậm trể việc ghi. Việc cài đặt bộ điều khiển cache đòi hỏi một số thao tác. Trước hết, cần mở máy và cắm card vào khe cắm mở rộng trên bảng mạch chủ. Thông thường, bạn phải chạy chương trình Setup để loại bỏ liên kết IDE cài sẵn trong máy. Sau đó phải chọn đúng kiểu ổ đĩa tương ứng bộ điều khiển mới gắn. Nối cáp ổ đĩa, chỉnh lại một vài giác cắm (jumper) là xong mọi công việc. Điều này thực hiện không khó, nhưng là một trở ngại cho những người ít biết về kỹ thuật. Cài đặt phần mềm cache thì dễ dàng hơn, chỉ việc chạy chương trình cài đặt từ đĩa mềm. Thông thường, chương trình cho phép bạn chỉnh lại các file hệ thống CONFIG.SYS và AUTOEXEC.BAT. Tất cả các chương trình cache đều khuyến cáo nên giảm số buffer DOS trong file CONFIG.SYS- đến 10 hoặc nhỏ hơn. Nếu đã cài Windows , bạn đã có SmartDrive sẵn sàng.
Những điều cân nhắc
Như bạn đã thấy, mỗi loại cache đều có ưu và khuyết. Cache phần mềm nhanh, rẻ tiền và có thể sử dụng với nhiều loại ổ đĩa. Cache phần cứng nói chung là tốt hơn và hổ trợ cho nhiều ứng dụng cũng như các hệ điều hành. Hơn nữa, cache phần cứng lại không tiêu tốn bộ nhớ RAM qui ước. Phần lớn các loại cache phần mềm có thể áp dụng cho nhiều ổ đĩa, kể cả ESDI, IDE, MFM, RLL... và các ổ đĩa mềm cùng một số ổ đĩa đặc biệt như ổ đĩa quang-từ, CD-ROM. Cache phần mềm lưu trữ các chỉ thị và dữ liệu ở phần RAM mở rộng trên 1 MB nhưng thường yêu cầu RAM qui ước ở cấu hình mặc nhiên. Bạn cũng thể tải các phần điều khiển vào bộ nhớ trên (upper memory). Nhưng nếu bạn có các phần điều khiển network hay CD-ROM cùng làm việc thì có thể không đủ chổ trong bộ nhớ trên. Khi đó buộc phải sử dụng đến bộ nhớ qui ước. Điều này lại dẫn đến việc thiếu bộ nhớ cho các ứng dụng. Một điểm cần lưu ý là cache phần mềm không phải luôn luôn hòa hợp với các trình ứng dụng. Ngược lại điều này thì cache phần cứng ít có mâu thuẫn với các chương trình.
Lựa chọn cuối cùng
Đối với phần lớn người sử dụng máy PC thì cache phần mềm là cách lựa chọn tốt nhất, trước hết cho giá rẻ và dễ cài đặt. SmartDrive kèm theo với DOS và Windows có lẽ là quá đủ cho bạn. Tuy nhiên có một thiếu sót là các chương trình trên đều tự động cài đặt và không cho bạn các phương án lựa chọn. Bất kỳ cache phần cứng nào cũng thực hiện tốt không kém, đặt biệt khi bạn chạy các ứng dụng nhiều RAM và máy của bạn có quá nhiều các driver thiết bị. Trong trường hợp này cache phần mềm khó có thể đảm đương và cách lựa chọn duy nhất là cache phần cứng. * Cache: một hình thức nhớ đặc biệt có tốc độ truy xuất cực nhanh, một số người hay gọi là bộ nhớ tiềm ẩn.
Để đáp ứng được nhu cầu của mình, bạn phải biết rõ ba vấn đề quan trọng: giá cả, tốc độ và khả năng sử dụng. Giá cả tự nói lên tất cả. Mục đích của việc sử dụng các sản phẩm cache là để
có được hiệu quả lớn nhất với số tiền đầu tư càng ít thì càng tốt. Những sản phẩm thấp giá nhất là Cache86 của Aldridge Company và Hyperdisk của Hyperware chỉ với 50 USD. Microsoft có SmartDrive 4.0 kèm theo trong Windows 3.1. Bạn có thể có SmartDrive 4.1 từ DOS 6.0. Các sản phẩm cache phần mềm đắt hơn cả PCCache của CentralPoint (kèm với PC Tools) và NCache của Symantec. Cả hai đều có giá 179 USD, nhưng chúng cũng kèm theo với các tiện ích khác. Bạn có thể cân nhắc với giá cao hơn cho các sản phẩm cache phần cứng. Truớc nhất là 595 USD cho bộ điều khiển WinStore của Solution với khả năng cho phép 1 MB cache dữ liệu. Thấp hơn là 220 USD cho Ultra 15C của UltraStor với 512 KB cache.
Tìm cache nhanh hơn tất cả
Trong khi giá cả chênh lệch nhau đáng kể như vậy thì Trung tâm thẩm định của PC WORLD lại cho thấy sự khác nhau về tốc độ giữa cache phần cứng và cache phần mềm là tối thiểu. Tốc độ giữa cache phần mềm và cache phần cứng chỉ khác biệt 4%. Tại sao vậy? Cache phần mềm sử dụng RAM của hệ thống, trong khi đó cache phần cứng dùng RAM cắm vào khe cắm mở rộng, do đó thông tin phải đi qua hệ thống bus I/O, chậm hơn là truy cập trực tiếp vào RAM hệ thống. Sự khác nhau về tốc dộ giữa các sản phẩm cứng cũng không đáng kể, từ 5 đến 10%. Có nghĩa là không nhận thấy với công việc hàng ngày. Một điểm quan trọng đáng lưu ý là nếu bạn sử dụng các ứng dụng không phải của DOS vào Windows, ví dụ như: Novell Netware thì các cache phần mềm có thể sẽ không làm việc. Chẳng hạn trong tất cả các cache phần mềm đều làm việc trên các trạm khách hàng của Novell thì không có phần mềm nào sử dụng cho Novell Server. Nhưng nhiều cache phần cứng thực hiện điều này.
Những quyết định
Cần nhớ rằng tất cả cache đều sử dụng một số loại RAM. Cache phần cứng đưa ra các bộ nhớ RAM trên card cắm vào khe mở rộng, cache phần mềm chiếm dụng RAM của hệ thống. Nói chung bộ điều khiển IDE cache có giá từ 150 đến 300 USD cho mỗi card. Trừ khi máy của bạn là loại cũ hay yêu cầu RAM riêng còn thì các bộ điều khiển đĩa cache và máy đều sử dụng RAM loại SIMM (Single in-line Memory Modules). Vì vậy, bạn phải trả thêm từ 30-40 USD cho mỗi MB RAM. Điều quan trọng là phải quyết định bổ sung RAM vào đâu để được lợi nhất. Nếu hệ thống máy của bạn có 4 MB RAM và bạn là người dùng Windows chạy nhiều ứng dụng, thực hiện thường xuyên việc chuyển đổi tác vụ và xử lý nền thì nâng RAM của hệ thống lên 8 MB sẽ tăng tốc độ nhiều hơn là bổ sung 4 MB cho bộ điều khiển cache. Và bạn không phải chi thêm 200 USD cho card điều khiển. Tuy nhiên cần lưu ý rằng với các máy PC cũ, chạy chậm thì việc sử dụng cache phần cứng sẽ có hiệu quả hơn bởi hai lý do: thứ nhất do CPU chạy chậm, thứ hai là tổng số RAM hệ thống quá bị hạn chế cho việc dành chổ cho cache.
Khả năng sử dụng
Khả năng sử dụng là tính cốt yếu của mỗi sản phẩm. Trước tiên là bắt đầu từ việc cài đặt và thiết lập. Các đặt tính sử dụng hàng ngày càng quan trọng hơn. Nhiều phần mềm cache cho phép đưa ra các phím "nóng" kích hoạt và loại bỏ cache chỉ bằng một cú gõ, chuyển đổi chế độ ghi chậm mở-tắt hoặc ngưng cache để chắc chắn rằng dữ liệu đã được ghi lên đĩa trước khi tắt máy, đều này rất quan trọng nếu bạn sử dụng cache để làm chậm trể việc ghi. Việc cài đặt bộ điều khiển cache đòi hỏi một số thao tác. Trước hết, cần mở máy và cắm card vào khe cắm mở rộng trên bảng mạch chủ. Thông thường, bạn phải chạy chương trình Setup để loại bỏ liên kết IDE cài sẵn trong máy. Sau đó phải chọn đúng kiểu ổ đĩa tương ứng bộ điều khiển mới gắn. Nối cáp ổ đĩa, chỉnh lại một vài giác cắm (jumper) là xong mọi công việc. Điều này thực hiện không khó, nhưng là một trở ngại cho những người ít biết về kỹ thuật. Cài đặt phần mềm cache thì dễ dàng hơn, chỉ việc chạy chương trình cài đặt từ đĩa mềm. Thông thường, chương trình cho phép bạn chỉnh lại các file hệ thống CONFIG.SYS và AUTOEXEC.BAT. Tất cả các chương trình cache đều khuyến cáo nên giảm số buffer DOS trong file CONFIG.SYS- đến 10 hoặc nhỏ hơn. Nếu đã cài Windows , bạn đã có SmartDrive sẵn sàng.
Những điều cân nhắc
Như bạn đã thấy, mỗi loại cache đều có ưu và khuyết. Cache phần mềm nhanh, rẻ tiền và có thể sử dụng với nhiều loại ổ đĩa. Cache phần cứng nói chung là tốt hơn và hổ trợ cho nhiều ứng dụng cũng như các hệ điều hành. Hơn nữa, cache phần cứng lại không tiêu tốn bộ nhớ RAM qui ước. Phần lớn các loại cache phần mềm có thể áp dụng cho nhiều ổ đĩa, kể cả ESDI, IDE, MFM, RLL... và các ổ đĩa mềm cùng một số ổ đĩa đặc biệt như ổ đĩa quang-từ, CD-ROM. Cache phần mềm lưu trữ các chỉ thị và dữ liệu ở phần RAM mở rộng trên 1 MB nhưng thường yêu cầu RAM qui ước ở cấu hình mặc nhiên. Bạn cũng thể tải các phần điều khiển vào bộ nhớ trên (upper memory). Nhưng nếu bạn có các phần điều khiển network hay CD-ROM cùng làm việc thì có thể không đủ chổ trong bộ nhớ trên. Khi đó buộc phải sử dụng đến bộ nhớ qui ước. Điều này lại dẫn đến việc thiếu bộ nhớ cho các ứng dụng. Một điểm cần lưu ý là cache phần mềm không phải luôn luôn hòa hợp với các trình ứng dụng. Ngược lại điều này thì cache phần cứng ít có mâu thuẫn với các chương trình.
Lựa chọn cuối cùng
Đối với phần lớn người sử dụng máy PC thì cache phần mềm là cách lựa chọn tốt nhất, trước hết cho giá rẻ và dễ cài đặt. SmartDrive kèm theo với DOS và Windows có lẽ là quá đủ cho bạn. Tuy nhiên có một thiếu sót là các chương trình trên đều tự động cài đặt và không cho bạn các phương án lựa chọn. Bất kỳ cache phần cứng nào cũng thực hiện tốt không kém, đặt biệt khi bạn chạy các ứng dụng nhiều RAM và máy của bạn có quá nhiều các driver thiết bị. Trong trường hợp này cache phần mềm khó có thể đảm đương và cách lựa chọn duy nhất là cache phần cứng. * Cache: một hình thức nhớ đặc biệt có tốc độ truy xuất cực nhanh, một số người hay gọi là bộ nhớ tiềm ẩn.
nguyen_tuan_phat_I12A- Tổng số bài gửi : 15
Join date : 17/02/2012
Phát biểu bài toán sản xuất và tiêu thụ
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
}
luthioanh-I12A- Tổng số bài gửi : 29
Join date : 17/02/2012
Age : 39
Re: Thảo luận Bài 4
Chuyển ngữ cảnh là gì?
Chuyển ngữ cảnh (Context Switch)
§ Là chức năng của Dispatcher khi cần chuyển CPU từ tiến trình P0 này 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
- Nạp môi trường và trạng thái làm việc của tiến trình P1 từ PCB1
§ 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.
***Phân tích khái niệm Chuyển ngữ cảnh:
-chuyển môi trường làm việc cho tiến trình
-Dispatcher chuyển CPU từ tiến trình hiện hành P0 sang tiến trình P1 nào đó và tiến trình P1 sẽ được cấp CPU
-CPU sẽ lưu lại ngữ cảnh ( môi trường và trạng thái làm việc ) của tiến trình P0 vào trong RAM dành cho tiến trình P0 ( PCB0 )
++PCB ( Process control block) sao lưu ngữ cảnh và môi trường làm việc của tiến trình
-Dispatcher sẽ khôi phục lại ngữ cảnh và môi trường làm việc từ khối PCB cho P0.
Chuyển ngữ cảnh (Context Switch)
§ Là chức năng của Dispatcher khi cần chuyển CPU từ tiến trình P0 này 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
- Nạp môi trường và trạng thái làm việc của tiến trình P1 từ PCB1
§ 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.
***Phân tích khái niệm Chuyển ngữ cảnh:
-chuyển môi trường làm việc cho tiến trình
-Dispatcher chuyển CPU từ tiến trình hiện hành P0 sang tiến trình P1 nào đó và tiến trình P1 sẽ được cấp CPU
-CPU sẽ lưu lại ngữ cảnh ( môi trường và trạng thái làm việc ) của tiến trình P0 vào trong RAM dành cho tiến trình P0 ( PCB0 )
++PCB ( Process control block) sao lưu ngữ cảnh và môi trường làm việc của tiến trình
-Dispatcher sẽ khôi phục lại ngữ cảnh và môi trường làm việc từ khối PCB cho P0.
LacChiHao(I12A)- Tổng số bài gửi : 21
Join date : 17/02/2012
Re: Thảo luận Bài 4
1. Khái niệm tiến trình, tiểu trình
- Tiến trình (Process):
* 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ác tiế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ế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 sử dụng: được sinh ra khi thực thi các thị chỉ 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
- Tiểu trình (Threads):
* 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.
2. Các trạng thái của tiến trình
- Mới tạo: Tiến trình đang được tạo lập
- Running: Tiến trình đang được xử lý
- Blocked: Tiến trình bị chặn, không thể tiếp tục
- Ready: Tiến trình đang sẵn sang, chờ cấp CPU để xử lý
- Kết thúc: Tiến trình đã hoàn tất xử lý
3.Cấu trúc dữ liệu của khối quản lý tiến trình.
HĐH quản lý các tiến trình thông qua khối quản lý tiến trình (Process Control Block – PCB). Thành phần chủ yếu của PCB bao gồm:
- Định dạng của tiến trình: Phân biệt các 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 hoặc để phục vụ cho hoạt động hiện tại hoặc để làm cơ sở phục hồi hoạt động cho tiến trình, bao gồm các thông tin:
* 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:
* Tiến trình cha: Tiến trình tạo lập tiến trình này
* Tiến trình con: Các tiến trình do tiến trình này tạo lập
* Độ ưu tiên: Giúp bộ điều phối có thông tin để lựa chọn tiến trình được cấp CPU
- 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ờ… Các thông tin này sẽ đánh giá tình hình hệ thống và dự đoán các tình huống tương lai.
- Tiến trình (Process):
* 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ác tiế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ế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 sử dụng: được sinh ra khi thực thi các thị chỉ 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
- Tiểu trình (Threads):
* 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.
2. Các trạng thái của tiến trình
- Mới tạo: Tiến trình đang được tạo lập
- Running: Tiến trình đang được xử lý
- Blocked: Tiến trình bị chặn, không thể tiếp tục
- Ready: Tiến trình đang sẵn sang, chờ cấp CPU để xử lý
- Kết thúc: Tiến trình đã hoàn tất xử lý
3.Cấu trúc dữ liệu của khối quản lý tiến trình.
HĐH quản lý các tiến trình thông qua khối quản lý tiến trình (Process Control Block – PCB). Thành phần chủ yếu của PCB bao gồm:
- Định dạng của tiến trình: Phân biệt các 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 hoặc để phục vụ cho hoạt động hiện tại hoặc để làm cơ sở phục hồi hoạt động cho tiến trình, bao gồm các thông tin:
* 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:
* Tiến trình cha: Tiến trình tạo lập tiến trình này
* Tiến trình con: Các tiến trình do tiến trình này tạo lập
* Độ ưu tiên: Giúp bộ điều phối có thông tin để lựa chọn tiến trình được cấp CPU
- 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ờ… Các thông tin này sẽ đánh giá tình hình hệ thống và dự đoán các tình huống tương lai.
LacChiHao(I12A)- Tổng số bài gửi : 21
Join date : 17/02/2012
Re: Thảo luận Bài 4
Phân biệt các loại trình điều phối
Điều phối chậm (Long-term scheduler (or job scheduler)) :
• Chọn process nào sẽ được đưa vào ready queue (từ New chuyển sang Ready)
• Kiểm soát Độ đa chương
• Do có nhiều thời gian (tới vài phút), loại scheduler này có điều kiện để lựa chọn kỹ càng nhằm phối hợp cân đối 2 loại tiến trình
. Hướng CPU: tính toán nhiều, ít I/O.
Ví dụ: Công ty có một chiếc ô tô (CPU), nhiều nhân viên cần đi công tác (nhiều tiến trình) phải sử dụng ô tô. Do đó, ô tô (CPU) phải bận (phục vụ) cho nhiều người (nhiều tiến trình).
. Hướng I/O: tính toán ít, nhiều I/O
Ví dụ: Công ty có một chiếc ô tô (CPU), các nhân viên trong công ty chỉ ngồi nghiên cứu (I/O), không sử dụng đến ô tô. Vậy quá lãng phí ô tô (CPU)
• Mục đích cân bằng tải
Điều phối nhanh (Short-term scheduler (or CPU scheduler)) :
• Còn gọi là Điều phối CPU.
• Chọn tiến trình từ Ready Queue để cấp CPU.
• Có tần suất công việc cao. Thường cứ 100 ms lại tốn 10 ms để xác định tiến trình kế tiếp, như vậy 10/(100+10)=9% thời gian CPU được dùng để điều phối công việc.
Điều phối vừa (Medium-term scheduler) :
• Là Short-Term Scheduler được thêm chức năng rút các tiến trình khỏi bộ nhớ, dẫn đến làm giảm Độ đa chương, sau đó đưa lại chúng vào bộ nhớ vào thời điểm thích hợp để tiếp tục thực hiện từ vị trí bị tạm ngừng trước đó.
• Nhờ cách điều phối này, hỗn hợp các tiến trình trong Ready Queue có tính tối ưu hơn.
Ví dụ: Phòng thực hành nhỏ, nhưng nhiều bạn đi học thực hành (nhiều tiến trình). Thầy (HĐH) sẽ đẩy một số bạn ra khỏi lớp (rút tiến trình ra khỏi bộ nhớ). Sau khi nhóm trong phòng học xong Thầy sẽ đẩy các bạn bên ngoài vào phòng học (đưa tiến trình vào bộ nhớ vào thời điểm thích hợp).
Trình bày những lý do công tác giữa các tiến trình
• Chia sẻ thông tin (Information Sharing): Một tiến trình sử dụng thông tin do tiến trình khác cung cấp. Ví dụ: các bạn trong lớp chia nhóm học. Nhóm một nghiên cứu chương 1, nhóm hai nghiên cứu chương 2. Sau đó, hai nhóm trao đổi thông tin cho nhau. Kết quả hai nhóm mau chóng tìm hiểu hết hai chương.
• Tăng tốc tính toán (Computation Speedup): Các tiến trình cùng làm việc song song trên 1 hoặc nhiều máy để giải quyết bài toán chung.
• Đảm bảo tính đơn thể (Modularity): Chương trình được chia thành các đơn thể chức năng vận hành trong các tiến trình hoặc luồng khác nhau. Ví dụ: mỗi bạn học một bài, đảm bảo tính đơn thể.
• Đảm bảo tính tiện dụng (Convenience): Người dùng có nhu cầu làm nhiều việc một lúc: Soạn thảo, In ấn, Duyệt Web, Lấy file về, Biên dịch chương trình, Kiểm tra chính tả,...
Điều phối chậm (Long-term scheduler (or job scheduler)) :
• Chọn process nào sẽ được đưa vào ready queue (từ New chuyển sang Ready)
• Kiểm soát Độ đa chương
• Do có nhiều thời gian (tới vài phút), loại scheduler này có điều kiện để lựa chọn kỹ càng nhằm phối hợp cân đối 2 loại tiến trình
. Hướng CPU: tính toán nhiều, ít I/O.
Ví dụ: Công ty có một chiếc ô tô (CPU), nhiều nhân viên cần đi công tác (nhiều tiến trình) phải sử dụng ô tô. Do đó, ô tô (CPU) phải bận (phục vụ) cho nhiều người (nhiều tiến trình).
. Hướng I/O: tính toán ít, nhiều I/O
Ví dụ: Công ty có một chiếc ô tô (CPU), các nhân viên trong công ty chỉ ngồi nghiên cứu (I/O), không sử dụng đến ô tô. Vậy quá lãng phí ô tô (CPU)
• Mục đích cân bằng tải
Điều phối nhanh (Short-term scheduler (or CPU scheduler)) :
• Còn gọi là Điều phối CPU.
• Chọn tiến trình từ Ready Queue để cấp CPU.
• Có tần suất công việc cao. Thường cứ 100 ms lại tốn 10 ms để xác định tiến trình kế tiếp, như vậy 10/(100+10)=9% thời gian CPU được dùng để điều phối công việc.
Điều phối vừa (Medium-term scheduler) :
• Là Short-Term Scheduler được thêm chức năng rút các tiến trình khỏi bộ nhớ, dẫn đến làm giảm Độ đa chương, sau đó đưa lại chúng vào bộ nhớ vào thời điểm thích hợp để tiếp tục thực hiện từ vị trí bị tạm ngừng trước đó.
• Nhờ cách điều phối này, hỗn hợp các tiến trình trong Ready Queue có tính tối ưu hơn.
Ví dụ: Phòng thực hành nhỏ, nhưng nhiều bạn đi học thực hành (nhiều tiến trình). Thầy (HĐH) sẽ đẩy một số bạn ra khỏi lớp (rút tiến trình ra khỏi bộ nhớ). Sau khi nhóm trong phòng học xong Thầy sẽ đẩy các bạn bên ngoài vào phòng học (đưa tiến trình vào bộ nhớ vào thời điểm thích hợp).
Trình bày những lý do công tác giữa các tiến trình
• Chia sẻ thông tin (Information Sharing): Một tiến trình sử dụng thông tin do tiến trình khác cung cấp. Ví dụ: các bạn trong lớp chia nhóm học. Nhóm một nghiên cứu chương 1, nhóm hai nghiên cứu chương 2. Sau đó, hai nhóm trao đổi thông tin cho nhau. Kết quả hai nhóm mau chóng tìm hiểu hết hai chương.
• Tăng tốc tính toán (Computation Speedup): Các tiến trình cùng làm việc song song trên 1 hoặc nhiều máy để giải quyết bài toán chung.
• Đảm bảo tính đơn thể (Modularity): Chương trình được chia thành các đơn thể chức năng vận hành trong các tiến trình hoặc luồng khác nhau. Ví dụ: mỗi bạn học một bài, đảm bảo tính đơn thể.
• Đảm bảo tính tiện dụng (Convenience): Người dùng có nhu cầu làm nhiều việc một lúc: Soạn thảo, In ấn, Duyệt Web, Lấy file về, Biên dịch chương trình, Kiểm tra chính tả,...
LacChiHao(I12A)- Tổng số bài gửi : 21
Join date : 17/02/2012
Cấu trúc tiến trình
- Chúng ta hãy xem Hệ Điều Hành quản lý tiến trình như thế nào?
Nếu có hai người dùng: user1 và user2 cùng đăng nhập vào chạy chương trình grep đồng thời, thực tế, Hệ Điều Hành sẽ quản lý và nạp mã của chương trình grep vào hai vùng nhớ khác nhau và gọi mỗi phân vùng như vậy là tiến trình. Hình sau cho thấy cách phân chia chương trình grep thành hai tiến trình cho hai người khác nhau sử dụng
Trong hình này, user1 chạy chương trình grep tìm chuỗi abc trong tập tin file1.
$grep abc file1
user2 chạy chương trình grep và tìm chuỗi cde trong tập tin file2.
$grep cde file2
Chúng ta cần ta cần nhớ là hai người dùng user1 và user2 có thể ở hai máy tính khác nhau đăng nhập vào máy chủ Linux và gọi grep chạy đồng thời. Hình trên là hiện trạng không gian bộ nhớ Hệ Điều Hành Linux khi chương trình grep phục vụ người dùng.
- Nếu dùng lệnh ps, hệ thống sẽ liệt kê cho chúng ta thông tin về các tiến trình mà Hệ Điều Hành đang kiểm soát, Ví dụ: $ps –af
Mỗi tiến trình được gán cho một định danh để nhận dạng gọi là PID (process identify). PID thường là số nguyên dương có giá trị từ 2-32768. Khi một tiến trình mới yêu cầu khởi động, Hệ Điều Hành sẽ chọn lấy một số (chưa bị tiến trình nào đang chạy chiếm giữ) trong khoảng số nguyên trên và cấp phát cho tiến trình mới. Khi tiến trình chấm dứt, hệ thống sẽ thu hồi số PID để cấp phát cho tiến trình khác trong lần sau. PID bắt đầu từ giá trị 2 bởi vì giá trị 1 được dành cho tiến trình đầu tiên gọi là init. Tiến trình init được và chạy ngay khi chúng ta khởi động Hệ Điều Hành. init là tiến trình quản lý và tạo ra mọi tiến trình con khác. Ở ví dụ trên, chúng ta thấy lệnh ps –af sẽ hiển thị 2 tiến trình grep chạy bởi user1 và user2 với số PID lần lượt là 101 và 102.
- Mã lệnh thực thi của lệnh grep chứa trong tập tin chương trình nằm trên đĩa cứng được Hệ Điều Hành nạp vào vùng nhớ. Như chúng ta đã thấy ở lược đồ trên, mỗi tiến trình được Hệ Điều hành phân chia rõ ràng: vùng chứa mã lệnh (code) và vùng chứa dữ liệu (data). Mã lệnh thường là giống nhau và có thể sử dụng chung. Linux quản lý cho phép tiến trình của cùng một chương trình có thể sử dụng chung mã lệnh của nhau.
Thư viện cũng vậy. Trừ những thư viện đặc thù còn thì các thư viện chuẩn sẽ được Hệ Điều Hành cho phép chia sẻ và dùng chung bởi mọi tiến trình trong hệ thống. Bằng cách chia sẻ thư viện, kích thước chương trình giảm đi đáng kể. Mã lệnh của chương trình khi chạy trong hệ thống ở dạng tiến trình cũng sẽ đỡ tốn bộ nhớ hơn.
- Trừ mã lệnh và thư viện có thể chia sẻ, còn dữ liệu thì không thể chia sẻ bởi các tiến trình. Mỗi tiến trình sở hữu phân đoạn dữ liệu riêng. Ví dụ tiến trình grep do user1 nắm giữ lưu giữ biến s có giá trị là 'abc', trong khi grep do user2 nắm giữ lại có biến s với giá trị là 'cde'.
Mỗi tiến trình cũng được hệ thống dành riêng cho một bảng mô tả file (file description table). Bảng này chứa các số mô tả áp đặt cho các file đang được mở. Khi mỗi tiến trình khởi động, thường Hệ Điều Hành sẽ mở sẳn cho chúng ta 3 file : stdin (số mô tả 0), stdout (số mô tả 1), và stderr (số mô tả 2). Các file này tượng trưng cho các thiết bị nhập, xuất, và thông báo lỗi. Chúng ta có thể mở thêm các file khác. Ví dụ user1 mở file file1, và user2 mở file file2. Hệ Điều Hành cấp phát số mô tả file cho mỗi tiến trình và lưu riêng chúng trong bảng mô tả file của tiến trình đó.
- Ngoài ra, mỗi tiến trình có riêng ngăn xếp stack để lưu biến cục bộ và các giá trị trả về sau lời gọi hàm. Tiến trình cũng được dành cho khoảng không gian riêng để lưu các biến môi trường. Chúng ta sẽ dùng lệnh putenv và getenv để đặt riêng biến môi trường cho tiến trình.
a) Bảng thông tin tiến trình
- Hệ Điều Hành lưu giữ một cấu trúc danh sách bên trong hệ thống gọi là bảng tiến trình (process table). Bảng tiến trình quản lý tất cả PID của hệ thống cùng với thông tin chi tiết về các tiến trình đang chạy. Ví dụng khi chúng ta gọi lệnh ps, Linux thường đọc thông tin trong bảng tiến trình này và hiển thị những lệnh hay tên tiến trình được gọi: thời gian chiếm giữ CPU của tiến trình, tên người sử dụng tiến trình, …
b) Xem thông tin của tiến trình- Lệnh ps của Hệ Điều Hành dùng để hiển thị thông tin chi tiết về tiến trình. Tùy theo tham số, ps sẽ cho biết thông tin về tiến trình người dùng, tiến trình của hệ thống hoặc tất cả các tiến trình đang chạy. Ví dụ ps sẽ đưa ra chi tiết bằng tham số -af
- Trong các thông tin do ps trả về, UID là tên của người dùng đã gọi tiến trình, PID là số định danh mà hệ thống cấp cho tiến trình, PPID là số định danh của tiến trình cha (parent PID). Ở đây chúng ta sẽ gặp một số tiến trình có định danh PPID là 1, là định danh của tiến trình init, được gọi chạy khi hệ thống khởi động. Nếu chúng ta hủy tiến trình init thì Hệ Điều Hành sẽ chấm dứt phiên làm việc. STIME là thời điểm tiến trình được đưa vào sử dụng. TIME là thời gian chiếm dụng CPU của tiến trình. CMD là toàn bộ dòng lệnh khi tiến trình được triệu gọi. TTY là màn hình terminal ảo nơi gọi thực thi tiến trình. Như chúng ta đã biết, người dùng có thể đăng nhập vào hệ thống Linux từ rất nhiều terminal khác nhau để gọi tiến trình. Để liệt kê các tiến trình hệ thống, chúng ta sử dụng lệnh: $ps –ax
Nếu có hai người dùng: user1 và user2 cùng đăng nhập vào chạy chương trình grep đồng thời, thực tế, Hệ Điều Hành sẽ quản lý và nạp mã của chương trình grep vào hai vùng nhớ khác nhau và gọi mỗi phân vùng như vậy là tiến trình. Hình sau cho thấy cách phân chia chương trình grep thành hai tiến trình cho hai người khác nhau sử dụng
Trong hình này, user1 chạy chương trình grep tìm chuỗi abc trong tập tin file1.
$grep abc file1
user2 chạy chương trình grep và tìm chuỗi cde trong tập tin file2.
$grep cde file2
Chúng ta cần ta cần nhớ là hai người dùng user1 và user2 có thể ở hai máy tính khác nhau đăng nhập vào máy chủ Linux và gọi grep chạy đồng thời. Hình trên là hiện trạng không gian bộ nhớ Hệ Điều Hành Linux khi chương trình grep phục vụ người dùng.
- Nếu dùng lệnh ps, hệ thống sẽ liệt kê cho chúng ta thông tin về các tiến trình mà Hệ Điều Hành đang kiểm soát, Ví dụ: $ps –af
Mỗi tiến trình được gán cho một định danh để nhận dạng gọi là PID (process identify). PID thường là số nguyên dương có giá trị từ 2-32768. Khi một tiến trình mới yêu cầu khởi động, Hệ Điều Hành sẽ chọn lấy một số (chưa bị tiến trình nào đang chạy chiếm giữ) trong khoảng số nguyên trên và cấp phát cho tiến trình mới. Khi tiến trình chấm dứt, hệ thống sẽ thu hồi số PID để cấp phát cho tiến trình khác trong lần sau. PID bắt đầu từ giá trị 2 bởi vì giá trị 1 được dành cho tiến trình đầu tiên gọi là init. Tiến trình init được và chạy ngay khi chúng ta khởi động Hệ Điều Hành. init là tiến trình quản lý và tạo ra mọi tiến trình con khác. Ở ví dụ trên, chúng ta thấy lệnh ps –af sẽ hiển thị 2 tiến trình grep chạy bởi user1 và user2 với số PID lần lượt là 101 và 102.
- Mã lệnh thực thi của lệnh grep chứa trong tập tin chương trình nằm trên đĩa cứng được Hệ Điều Hành nạp vào vùng nhớ. Như chúng ta đã thấy ở lược đồ trên, mỗi tiến trình được Hệ Điều hành phân chia rõ ràng: vùng chứa mã lệnh (code) và vùng chứa dữ liệu (data). Mã lệnh thường là giống nhau và có thể sử dụng chung. Linux quản lý cho phép tiến trình của cùng một chương trình có thể sử dụng chung mã lệnh của nhau.
Thư viện cũng vậy. Trừ những thư viện đặc thù còn thì các thư viện chuẩn sẽ được Hệ Điều Hành cho phép chia sẻ và dùng chung bởi mọi tiến trình trong hệ thống. Bằng cách chia sẻ thư viện, kích thước chương trình giảm đi đáng kể. Mã lệnh của chương trình khi chạy trong hệ thống ở dạng tiến trình cũng sẽ đỡ tốn bộ nhớ hơn.
- Trừ mã lệnh và thư viện có thể chia sẻ, còn dữ liệu thì không thể chia sẻ bởi các tiến trình. Mỗi tiến trình sở hữu phân đoạn dữ liệu riêng. Ví dụ tiến trình grep do user1 nắm giữ lưu giữ biến s có giá trị là 'abc', trong khi grep do user2 nắm giữ lại có biến s với giá trị là 'cde'.
Mỗi tiến trình cũng được hệ thống dành riêng cho một bảng mô tả file (file description table). Bảng này chứa các số mô tả áp đặt cho các file đang được mở. Khi mỗi tiến trình khởi động, thường Hệ Điều Hành sẽ mở sẳn cho chúng ta 3 file : stdin (số mô tả 0), stdout (số mô tả 1), và stderr (số mô tả 2). Các file này tượng trưng cho các thiết bị nhập, xuất, và thông báo lỗi. Chúng ta có thể mở thêm các file khác. Ví dụ user1 mở file file1, và user2 mở file file2. Hệ Điều Hành cấp phát số mô tả file cho mỗi tiến trình và lưu riêng chúng trong bảng mô tả file của tiến trình đó.
- Ngoài ra, mỗi tiến trình có riêng ngăn xếp stack để lưu biến cục bộ và các giá trị trả về sau lời gọi hàm. Tiến trình cũng được dành cho khoảng không gian riêng để lưu các biến môi trường. Chúng ta sẽ dùng lệnh putenv và getenv để đặt riêng biến môi trường cho tiến trình.
a) Bảng thông tin tiến trình
- Hệ Điều Hành lưu giữ một cấu trúc danh sách bên trong hệ thống gọi là bảng tiến trình (process table). Bảng tiến trình quản lý tất cả PID của hệ thống cùng với thông tin chi tiết về các tiến trình đang chạy. Ví dụng khi chúng ta gọi lệnh ps, Linux thường đọc thông tin trong bảng tiến trình này và hiển thị những lệnh hay tên tiến trình được gọi: thời gian chiếm giữ CPU của tiến trình, tên người sử dụng tiến trình, …
b) Xem thông tin của tiến trình- Lệnh ps của Hệ Điều Hành dùng để hiển thị thông tin chi tiết về tiến trình. Tùy theo tham số, ps sẽ cho biết thông tin về tiến trình người dùng, tiến trình của hệ thống hoặc tất cả các tiến trình đang chạy. Ví dụ ps sẽ đưa ra chi tiết bằng tham số -af
- Trong các thông tin do ps trả về, UID là tên của người dùng đã gọi tiến trình, PID là số định danh mà hệ thống cấp cho tiến trình, PPID là số định danh của tiến trình cha (parent PID). Ở đây chúng ta sẽ gặp một số tiến trình có định danh PPID là 1, là định danh của tiến trình init, được gọi chạy khi hệ thống khởi động. Nếu chúng ta hủy tiến trình init thì Hệ Điều Hành sẽ chấm dứt phiên làm việc. STIME là thời điểm tiến trình được đưa vào sử dụng. TIME là thời gian chiếm dụng CPU của tiến trình. CMD là toàn bộ dòng lệnh khi tiến trình được triệu gọi. TTY là màn hình terminal ảo nơi gọi thực thi tiến trình. Như chúng ta đã biết, người dùng có thể đăng nhập vào hệ thống Linux từ rất nhiều terminal khác nhau để gọi tiến trình. Để liệt kê các tiến trình hệ thống, chúng ta sử dụng lệnh: $ps –ax
trantrungnam-HC11TH2A- Tổng số bài gửi : 68
Join date : 21/02/2012
Age : 34
Đến từ : binh phuoc
Phát biểu bài toán sản xuất và tiêu thụ
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
}
TranMinhTuan143(I12A)- Tổng số bài gửi : 38
Join date : 22/02/2012
Phân loại hốc liên lạc, phân biệt TCP và UDP.
* Phân loại hốc liên lạc:
- Có kết nối-TCP:Thiết lập sẵn mối liên kết trước khi truyền. Trao đổi dữ liệu an toàn giữa hai đầu, dữ liệu nào gửi trước tới trước đảm bảo tính trật tự.
VD: Khi đi qua sông phải nối sợi dây từ bờ bên này qua bờ bên kia, rồi men theo sợi dây để đi qua sông.
- Không kết nối - UDP: 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 cùng một lúc. không gắn hai đầu chặt chẽ với nhau, không theo trật tự gửi tin.
VD: KHi qua sông không theo sợi dây có sẵn mà tự do đi qua sông.
Tuy nhiên, TCP và UDP là như nhau, bình đẳng, không có cái nào hơn hẳn cái nào.
* Phân biệt TCP và 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 về kích thước (20 và 8 byte) nguyên nhân chủ yếu là do TCP 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
Tốc độ truyền cao.
Cho phép mất dữ liệu.
- Có kết nối-TCP:Thiết lập sẵn mối liên kết trước khi truyền. Trao đổi dữ liệu an toàn giữa hai đầu, dữ liệu nào gửi trước tới trước đảm bảo tính trật tự.
VD: Khi đi qua sông phải nối sợi dây từ bờ bên này qua bờ bên kia, rồi men theo sợi dây để đi qua sông.
- Không kết nối - UDP: 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 cùng một lúc. không gắn hai đầu chặt chẽ với nhau, không theo trật tự gửi tin.
VD: KHi qua sông không theo sợi dây có sẵn mà tự do đi qua sông.
Tuy nhiên, TCP và UDP là như nhau, bình đẳng, không có cái nào hơn hẳn cái nào.
* Phân biệt TCP và 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 về kích thước (20 và 8 byte) nguyên nhân chủ yếu là do TCP 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
Tốc độ truyền cao.
Cho phép mất dữ liệu.
TranTrungTinh(I12A)- Tổng số bài gửi : 19
Join date : 10/03/2012
Mô hình luân chuyển CPU giữa hai tiến trình.
Giả sử lúc 7h tiến trình P0 đang chạy, 7h05 ngắt xảy ra, lưu môi trường và trạng thái làm việc của P0 vào PCB0, nạp môi trường và trạng thái làm việc của P1 từ PCB1. Đến 7h10 P1 chạy, đến 7h20 ngắt xảy ra, tương tự như P0, lưu môi trường và trạng thái làm việc của P1 vào PCB1, nạp môi trường và trạng thái làm việc của P0 từ PCB0, tương tự như vậy thực hiện tiếp.
TranTrungTinh(I12A)- Tổng số bài gửi : 19
Join date : 10/03/2012
Cộng Tác Giữa Các Tiến Trình(Cooperatinh Processes)
Những Lý Do Cộng Tác(Cooperating Processes):
-Chia sẽ thông tin(Information Reasons): 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 cùng làm việc song song trên 1 hoặc nhiếu máy để giải quyeết bài toán chung.
-Đảm bảo tính đơn thể(Modularity): Chương trình được chia làm 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.
-Đảm bảo tính tiện dụng(Convenience): Người dùng có nhu cầu làm nhiều việc một lúc: Soạn thảo, in ấn, duyệt web, lấy file về, biên dịch chương trình, kiểm tra chính tả,.....
-Tốc độ tăng lên đáng kể, phục vụ khách hàng tốt hơn.
-Nâng tính đơn thể của hệ điều hành lên cao.
Ví dụ: Học nhóm
-Chia sẽ thông tin(Information Reasons): 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 cùng làm việc song song trên 1 hoặc nhiếu máy để giải quyeết bài toán chung.
-Đảm bảo tính đơn thể(Modularity): Chương trình được chia làm 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.
-Đảm bảo tính tiện dụng(Convenience): Người dùng có nhu cầu làm nhiều việc một lúc: Soạn thảo, in ấn, duyệt web, lấy file về, biên dịch chương trình, kiểm tra chính tả,.....
-Tốc độ tăng lên đáng kể, phục vụ khách hàng tốt hơn.
-Nâng tính đơn thể của hệ điều hành lên cao.
Ví dụ: Học nhóm
NguyenHaCamThu(I12A)- Tổng số bài gửi : 22
Join date : 02/03/2012
Hai phương thức liên lạc giữa các tiến trình
Liên lạc trực tiếp (Direct Communications)
+ Theo địa chỉ đối xứng (Symmetric Scheme)
Send (P, Message) - Gửi thông điệp cho P
Receive (Q, Message) - Nhận thông điệp từ Q
Đặc điểm:
+ Liên kết được thiết lập tự động giữa mỗi cặp tiến trình.
+ Liên kết chỉ giữa 2 tiến trình.
+ Chỉ có 1 liên kết giữa mỗi cặp.
+ Tính đối xứng của liên lạc (2 bên đều biết đích xác tên của nhau khi Gửi/Nhận).
+ Theo địa chỉ phi đối xứng (Asymmetric Scheme)
Send (P, Message) - Gửi thông điệp cho P
Receive (id, Message) - Nhận thông điệp từ tiến trình bất kỳ, Biến id chứa số hiệu tiến trình gửi
Liên lạc gián tiếp (Indirect Communications)
+ Qua các Hộp thư (Mailboxes) hoặc Cổng (Ports).
+ Hộp thư là một thực thể qua đó thông điệp được gửi đến và lấy ra.
+ Mỗi hộp thư có định danh riêng.
+ Hai tiến trình phải chung nhau một hộp thư nào đó.
+ Hai loại hộp thư:
+ Hộp thư tiến trình (Process Mailbox): Nằm trong vùng địa chỉ của một tiến trình nào đó.
+ Hộp thư hệ điều hành (OS Mailbox): Nằm trong vùng địa chỉ của HĐH
+ Theo địa chỉ đối xứng (Symmetric Scheme)
Send (P, Message) - Gửi thông điệp cho P
Receive (Q, Message) - Nhận thông điệp từ Q
Đặc điểm:
+ Liên kết được thiết lập tự động giữa mỗi cặp tiến trình.
+ Liên kết chỉ giữa 2 tiến trình.
+ Chỉ có 1 liên kết giữa mỗi cặp.
+ Tính đối xứng của liên lạc (2 bên đều biết đích xác tên của nhau khi Gửi/Nhận).
+ Theo địa chỉ phi đối xứng (Asymmetric Scheme)
Send (P, Message) - Gửi thông điệp cho P
Receive (id, Message) - Nhận thông điệp từ tiến trình bất kỳ, Biến id chứa số hiệu tiến trình gửi
Liên lạc gián tiếp (Indirect Communications)
+ Qua các Hộp thư (Mailboxes) hoặc Cổng (Ports).
+ Hộp thư là một thực thể qua đó thông điệp được gửi đến và lấy ra.
+ Mỗi hộp thư có định danh riêng.
+ Hai tiến trình phải chung nhau một hộp thư nào đó.
+ Hai loại hộp thư:
+ Hộp thư tiến trình (Process Mailbox): Nằm trong vùng địa chỉ của một tiến trình nào đó.
+ Hộp thư hệ điều hành (OS Mailbox): Nằm trong vùng địa chỉ của HĐH
NguyenHaCamThu(I12A)- Tổng số bài gửi : 22
Join date : 02/03/2012
Phân biệt giao thức TCP với UDP
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
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
NguyenHaCamThu(I12A)- Tổng số bài gửi : 22
Join date : 02/03/2012
Trình Điều Phối
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).
NguyenHaCamThu(I12A)- Tổng số bài gửi : 22
Join date : 02/03/2012
PCB(Process Control Block)
- Một khối điều khiển tiến trình (Process Control Block - PCB) là một cấu trúc dữ liệu trong nhân hệ điều hành chứa thông tin cần thiết để quản lý một tiến trình nhất định.
- Tuỳ thuộc vào cài đặt nhưng nói chung PCB trực tiếp hoặc gián tiếp chứa những thông tin sau:
Định danh của tiến trình (process identifier hay PID) :
+Giá trị các thanh ghi của tiến trình, trong đó đáng chú ý là con trỏ chương trình và con trỏ stack
Không gian địa chỉ của tiến trình
+Độ ưu tiên (trong đó tiến trình có giá trị cao hơn được ưu tiên trước, ví dụ nice trong các hệ điều hành Unix)
+Thông tin kế toán tiến trình, ví dụ như thời điểm thực thi gần nhất, bao nhiêu thời gian CPU đã sử dụng...
+Con trỏ tới PCB tiếp theo, nghĩa là con trỏ tới tiến trình tiếp theo được chạy
+Thông tin V/R (ví dụ các thiết bị V/R được cấp phát cho tiến trình, danh sách các tệp đang mở...)
Khi chuyển ngữ cảnh, tiến trình đang thực hiện bị dừng lại và một tiến trình khác có cơ hội thực hiện. Nhân dừng việc thực hiện của tiến trình, sao chép các giá trị trong thanh ghi vào PCB và cập nhật thanh ghi với các giá trị của PCB của tiến trình mới.
- 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 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ì 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.
phamduyI12A- Tổng số bài gửi : 20
Join date : 19/02/2012
Age : 34
Đến từ : TPHCM
bài toán Sản xuất-Tiêu thụ và trình bày Thuật giải với Bộ đệm thực thi bằng mảng xoay vòng.
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:
Producer:
item nextProduced;
while (1)
{
while(((in+1)%BUFFER_SIZE)==out); //quẩn tại đây khi buffer đầy.
buffer[in] = nextProduced;
in = (in+1)%BUFFER_SIZE;
}
Custumner:
item nextConsumed;
while (1)
{
while(in==out); //quẩn khi buffer rỗng
nextConsumed = buffer[out];
out = (out+1)%BUFFER_SIZE;
}
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:
Producer:
item nextProduced;
while (1)
{
while(((in+1)%BUFFER_SIZE)==out); //quẩn tại đây khi buffer đầy.
buffer[in] = nextProduced;
in = (in+1)%BUFFER_SIZE;
}
Custumner:
item nextConsumed;
while (1)
{
while(in==out); //quẩn khi buffer rỗng
nextConsumed = buffer[out];
out = (out+1)%BUFFER_SIZE;
}
LeQuocKhanh-11H1010059- Tổng số bài gửi : 59
Join date : 16/02/2012
Age : 36
Đến từ : HCM
Thảo luận bài 4 :Phân biệt các loại trình điều phối
Điều phối chậm (Long-term scheduler (or job scheduler)) :
• Chọn process nào sẽ được đưa vào ready queue (từ New chuyển sang Ready)
• Kiểm soát Độ đa chương
• Do có nhiều thời gian (tới vài phút), loại scheduler này có điều kiện để lựa chọn kỹ càng nhằm phối hợp cân đối 2 loại tiến trình
. Hướng CPU: tính toán nhiều, ít I/O.
Ví dụ: Công ty có một chiếc ô tô (CPU), nhiều nhân viên cần đi công tác (nhiều tiến trình) phải sử dụng ô tô. Do đó, ô tô (CPU) phải bận (phục vụ) cho nhiều người (nhiều tiến trình).
. Hướng I/O: tính toán ít, nhiều I/O
Ví dụ: Công ty có một chiếc ô tô (CPU), các nhân viên trong công ty chỉ ngồi nghiên cứu (I/O), không sử dụng đến ô tô. Vậy quá lãng phí ô tô (CPU)
• Mục đích cân bằng tải
Điều phối nhanh (Short-term scheduler (or CPU scheduler)) :
• Còn gọi là Điều phối CPU.
• Chọn tiến trình từ Ready Queue để cấp CPU.
• Có tần suất công việc cao. Thường cứ 100 ms lại tốn 10 ms để xác định tiến trình kế tiếp, như vậy 10/(100+10)=9% thời gian CPU được dùng để điều phối công việc.
Điều phối vừa (Medium-term scheduler) :
• Là Short-Term Scheduler được thêm chức năng rút các tiến trình khỏi bộ nhớ, dẫn đến làm giảm Độ đa chương, sau đó đưa lại chúng vào bộ nhớ vào thời điểm thích hợp để tiếp tục thực hiện từ vị trí bị tạm ngừng trước đó.
• Nhờ cách điều phối này, hỗn hợp các tiến trình trong Ready Queue có tính tối ưu hơn.
Ví dụ: Phòng thực hành nhỏ, nhưng nhiều bạn đi học thực hành (nhiều tiến trình). Thầy (HĐH) sẽ đẩy một số bạn ra khỏi lớp (rút tiến trình ra khỏi bộ nhớ). Sau khi nhóm trong phòng học xong Thầy sẽ đẩy các bạn bên ngoài vào phòng học (đưa tiến trình vào bộ nhớ vào thời điểm thích hợp)
• Chọn process nào sẽ được đưa vào ready queue (từ New chuyển sang Ready)
• Kiểm soát Độ đa chương
• Do có nhiều thời gian (tới vài phút), loại scheduler này có điều kiện để lựa chọn kỹ càng nhằm phối hợp cân đối 2 loại tiến trình
. Hướng CPU: tính toán nhiều, ít I/O.
Ví dụ: Công ty có một chiếc ô tô (CPU), nhiều nhân viên cần đi công tác (nhiều tiến trình) phải sử dụng ô tô. Do đó, ô tô (CPU) phải bận (phục vụ) cho nhiều người (nhiều tiến trình).
. Hướng I/O: tính toán ít, nhiều I/O
Ví dụ: Công ty có một chiếc ô tô (CPU), các nhân viên trong công ty chỉ ngồi nghiên cứu (I/O), không sử dụng đến ô tô. Vậy quá lãng phí ô tô (CPU)
• Mục đích cân bằng tải
Điều phối nhanh (Short-term scheduler (or CPU scheduler)) :
• Còn gọi là Điều phối CPU.
• Chọn tiến trình từ Ready Queue để cấp CPU.
• Có tần suất công việc cao. Thường cứ 100 ms lại tốn 10 ms để xác định tiến trình kế tiếp, như vậy 10/(100+10)=9% thời gian CPU được dùng để điều phối công việc.
Điều phối vừa (Medium-term scheduler) :
• Là Short-Term Scheduler được thêm chức năng rút các tiến trình khỏi bộ nhớ, dẫn đến làm giảm Độ đa chương, sau đó đưa lại chúng vào bộ nhớ vào thời điểm thích hợp để tiếp tục thực hiện từ vị trí bị tạm ngừng trước đó.
• Nhờ cách điều phối này, hỗn hợp các tiến trình trong Ready Queue có tính tối ưu hơn.
Ví dụ: Phòng thực hành nhỏ, nhưng nhiều bạn đi học thực hành (nhiều tiến trình). Thầy (HĐH) sẽ đẩy một số bạn ra khỏi lớp (rút tiến trình ra khỏi bộ nhớ). Sau khi nhóm trong phòng học xong Thầy sẽ đẩy các bạn bên ngoài vào phòng học (đưa tiến trình vào bộ nhớ vào thời điểm thích hợp)
Nguyen Sy Hung I12A- Tổng số bài gửi : 28
Join date : 15/02/2012
Age : 35
[Bổ sung] Tổng quan về API
Giao diện lập trình ứng dụng:
Một giao diện lập trình ứng dụng (tiếng anh Application Programming Interface hay API) là một giao diện mà một hệ thống máy tính hay ứng dụng cung cấp để cho phép các yêu cầu dịch vụ có thể được tạo ra từ các chương trình máy tính khác, và/hoặc cho phép dữ liệu có thể được trao đổi qua lại giữa chúng. Chẳng hạn, một chương trình máy tính có thể (và thường là phải) dùng các hàm API của hệ điều hành để xin cấp phát bộ nhớ và truy xuất tập tin. Nhiều loại hệ thống và ứng dụng hiện thực API, như các hệ thống đồ họa, cơ sở dữ liệu, mạng, dịch vụ web, và ngay cả một số trò chơi máy tính. Đây là phần mềm hệ thống cung cấp đầy đủ các chức năng và các tài nguyên mà các lập trình viên có thể rút ra từ đó để tạo nên các tính năng giao tiếp người- máy như: các trình đơn kéo xuống, tên lệnh, hộp hội thoại, lệnh bàn phím và các cửa sổ. Một trình ứng dụng có thể sử dụng nó để yêu cầu và thi hành các dịch vụ cấp thấp do hệ điều hành của máy tính thực hiện. Hệ giao tiếp lập trình ứng dụng giúp ích rất nhiều cho người sử dụng vì nó cho phép tiết kiệm được nhiều thời gian tìm hiểu các chương trình mới, do đó khích lệ mọi người dùng nhiều ứng dụng hơn.
Một trong các mục đích chính của một API là cung cấp khả năng truy xuất đến một tập các hàm hay dùng — ví dụ, hàm để vẽ các cửa sổ hay các icon trên màn hình. Các API, cũng như hầu hết các interfaces, là trừu tượng (abstract). Phần mềm mà muốn cung cấp truy xuất đến chính nó thông qua các API cho sẵn, phải hiện thực API đó. Trong nhiều tình huống, một API thường là một phần của bộ SDK, hay software development kit. Một bộ SDK có thể bao gồm một API cũng như các công cụ/phần cứng, vì thế hai thuật ngữ này không thay thế cho nhau được.
Có nhiều mô hình thiết kế khác nhau cho các APIs. Interfaces nhằm là cách thực thi nhanh nhất thường gồm các tập các hàm, thủ tục, biến và các cấu trúc dữ liệu. Tuy nhiên, các mô hình khác vẫn tồn tại, như bộ thông dịch dùng để ước giá biểu thức trong ECMAScript/JavaScript. Một API tốt thường cung cấp một "hộp đen" hay là một lớp trừu tượng (abstraction layer) bao bọc nó, nhằm đảm bảo là nhà lập trình không thể biết cách hiện thực cụ thể bên trong của mỗi hàm trong API. Điều này làm cho việc thiết kế lại hay cải tiến hàm của API đó trở nên dễ dàng hơn vì nó không làm đổ ỗ các đoạn mã khác mà có sử dụng các hàm đó.
Có hai dòng chính sách đối với việc công bố các APIs:
Một số công ty bảo vệ APIs của họ một cách mạnh mẽ. Ví dụ, Sony thường chỉ cung cấp API chính thức của PlayStation 2 cho các nhà phát triển PlayStation có đăng kí. Điều này là vì Sony muốn giới hạn những người có thể viết trò chơi trên PlayStation 2, và muốn thu lợi nhuận từ những người này càng nhiều càng tốt. Đây thường là chính sách đối với các công ty mà họ không thu lợi từ việc bán các hiện thực API của họ. Tuy nhiên, PlayStation 3 là công bố hoàn toàn APIs.
Một số công ty thì cung cấp miễn phí APIs. Ví dụ, Microsoft công bố hầu như hoàn toàn thông tin về các API, để cho các phần mềm có thể được viết chạy trên nền Windows. Việc bán của các phần mềm hãng thứ 3 đồng thời với việc phải mua Hệ điều hành Microsoft Windows. Đây thường là các công ty thu lợi nhuận từ việc bán các hiện thực API.
Một số APIs, chẳng hạn các API là chuẩn cho một hệ điều hành, được hiện thực dưới dạng các thư viện mã độc lập được phân phối kèm theo hệ điều hành. Một số khác thì đòi hỏi nhà sản xuất phần mềm phải tích hợp API trực tiếp vào trong chương trình. Microsoft Windows APIs đi kèm theo hệ điều hành cho phép mọi người có thể sử dụng chúng. Phần mềm cho các hệ thống nhúng như thiết bị chơi trò chơi thường thuộc vào loại tích hợp vào trong ứng dụng. Trong khi các tài liệu API chính thức của PlayStation là nên đọc, nhưng nó chẳng giúp ích gì nếu ta chẳng có các hiện thực của nó, dưới dạng một thư viện độc lập hay bộ phát triển phần mềm.
Một API mà cho phép truy xuất và sử dụng tự do được gọi là "mở." Các APIs được cung cấp bởi phần mềm mở (như mọi phần mềm được phân phối theo giấy phép đăng kí GNU), là mở theo đúng nghĩa, vì mọi người có thể xem mã nguồn của phần mềm và tìm ra API. Mặc dù việc tham khảo hiện thực vẫn tồn tại cho một API (như với Microsoft Windows cho Win32 API), thì việc tạo thêm các hiện thực bổ sung vẫn có thể diễn ra. Ví dụ, hầu hết các Win32 API có thể được cung cấp từ hệ thống UNIX dùng phần mềm tên là Wine.
Bổ sung thêm một vài hàm 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.
Một giao diện lập trình ứng dụng (tiếng anh Application Programming Interface hay API) là một giao diện mà một hệ thống máy tính hay ứng dụng cung cấp để cho phép các yêu cầu dịch vụ có thể được tạo ra từ các chương trình máy tính khác, và/hoặc cho phép dữ liệu có thể được trao đổi qua lại giữa chúng. Chẳng hạn, một chương trình máy tính có thể (và thường là phải) dùng các hàm API của hệ điều hành để xin cấp phát bộ nhớ và truy xuất tập tin. Nhiều loại hệ thống và ứng dụng hiện thực API, như các hệ thống đồ họa, cơ sở dữ liệu, mạng, dịch vụ web, và ngay cả một số trò chơi máy tính. Đây là phần mềm hệ thống cung cấp đầy đủ các chức năng và các tài nguyên mà các lập trình viên có thể rút ra từ đó để tạo nên các tính năng giao tiếp người- máy như: các trình đơn kéo xuống, tên lệnh, hộp hội thoại, lệnh bàn phím và các cửa sổ. Một trình ứng dụng có thể sử dụng nó để yêu cầu và thi hành các dịch vụ cấp thấp do hệ điều hành của máy tính thực hiện. Hệ giao tiếp lập trình ứng dụng giúp ích rất nhiều cho người sử dụng vì nó cho phép tiết kiệm được nhiều thời gian tìm hiểu các chương trình mới, do đó khích lệ mọi người dùng nhiều ứng dụng hơn.
Một trong các mục đích chính của một API là cung cấp khả năng truy xuất đến một tập các hàm hay dùng — ví dụ, hàm để vẽ các cửa sổ hay các icon trên màn hình. Các API, cũng như hầu hết các interfaces, là trừu tượng (abstract). Phần mềm mà muốn cung cấp truy xuất đến chính nó thông qua các API cho sẵn, phải hiện thực API đó. Trong nhiều tình huống, một API thường là một phần của bộ SDK, hay software development kit. Một bộ SDK có thể bao gồm một API cũng như các công cụ/phần cứng, vì thế hai thuật ngữ này không thay thế cho nhau được.
Có nhiều mô hình thiết kế khác nhau cho các APIs. Interfaces nhằm là cách thực thi nhanh nhất thường gồm các tập các hàm, thủ tục, biến và các cấu trúc dữ liệu. Tuy nhiên, các mô hình khác vẫn tồn tại, như bộ thông dịch dùng để ước giá biểu thức trong ECMAScript/JavaScript. Một API tốt thường cung cấp một "hộp đen" hay là một lớp trừu tượng (abstraction layer) bao bọc nó, nhằm đảm bảo là nhà lập trình không thể biết cách hiện thực cụ thể bên trong của mỗi hàm trong API. Điều này làm cho việc thiết kế lại hay cải tiến hàm của API đó trở nên dễ dàng hơn vì nó không làm đổ ỗ các đoạn mã khác mà có sử dụng các hàm đó.
Có hai dòng chính sách đối với việc công bố các APIs:
Một số công ty bảo vệ APIs của họ một cách mạnh mẽ. Ví dụ, Sony thường chỉ cung cấp API chính thức của PlayStation 2 cho các nhà phát triển PlayStation có đăng kí. Điều này là vì Sony muốn giới hạn những người có thể viết trò chơi trên PlayStation 2, và muốn thu lợi nhuận từ những người này càng nhiều càng tốt. Đây thường là chính sách đối với các công ty mà họ không thu lợi từ việc bán các hiện thực API của họ. Tuy nhiên, PlayStation 3 là công bố hoàn toàn APIs.
Một số công ty thì cung cấp miễn phí APIs. Ví dụ, Microsoft công bố hầu như hoàn toàn thông tin về các API, để cho các phần mềm có thể được viết chạy trên nền Windows. Việc bán của các phần mềm hãng thứ 3 đồng thời với việc phải mua Hệ điều hành Microsoft Windows. Đây thường là các công ty thu lợi nhuận từ việc bán các hiện thực API.
Một số APIs, chẳng hạn các API là chuẩn cho một hệ điều hành, được hiện thực dưới dạng các thư viện mã độc lập được phân phối kèm theo hệ điều hành. Một số khác thì đòi hỏi nhà sản xuất phần mềm phải tích hợp API trực tiếp vào trong chương trình. Microsoft Windows APIs đi kèm theo hệ điều hành cho phép mọi người có thể sử dụng chúng. Phần mềm cho các hệ thống nhúng như thiết bị chơi trò chơi thường thuộc vào loại tích hợp vào trong ứng dụng. Trong khi các tài liệu API chính thức của PlayStation là nên đọc, nhưng nó chẳng giúp ích gì nếu ta chẳng có các hiện thực của nó, dưới dạng một thư viện độc lập hay bộ phát triển phần mềm.
Một API mà cho phép truy xuất và sử dụng tự do được gọi là "mở." Các APIs được cung cấp bởi phần mềm mở (như mọi phần mềm được phân phối theo giấy phép đăng kí GNU), là mở theo đúng nghĩa, vì mọi người có thể xem mã nguồn của phần mềm và tìm ra API. Mặc dù việc tham khảo hiện thực vẫn tồn tại cho một API (như với Microsoft Windows cho Win32 API), thì việc tạo thêm các hiện thực bổ sung vẫn có thể diễn ra. Ví dụ, hầu hết các Win32 API có thể được cung cấp từ hệ thống UNIX dùng phần mềm tên là Wine.
Bổ sung thêm một vài hàm 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.
NguyenVanThang25 (I12A)- Tổng số bài gửi : 29
Join date : 15/02/2012
Age : 37
Trang 6 trong tổng số 15 trang • 1 ... 5, 6, 7 ... 10 ... 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 6 trong tổng số 15 trang
Permissions in this forum:
Bạn không có quyền trả lời bài viết