Thảo luận Bài 4
+105
TranQuyThanh (I11C)
HoangThanhChuong (I11C)
Truc_Phuong(I111C)
PhamDuyPhuong87(I11C)
TranVuThuyVan_(I11C)
nguyenhoangthinh (I11C)
NguyenTienPhong083 (I11C)
HuynhVanNhut (I11C)
nguyenthanhphuong(I11C)
NguyenVietThuan11
minhgiangbc
nguyenduc_gia.18(I11c)
chipphonui
quicly_I111c
nguyen huynh nhu (102C)
LeMInhTien(I11C)
nguyenquoctruong (I11C)
LeThiThuyDuong (I11C)
NguyenXuanTri28
HuynhPhuong (I11C)
tranleanhngoc88(i11c)
AnhDuong
HuynhThiThanhHien25(I11C)
thanhnam06511c
nguyenthingocloan (I11C)
nguyenvanlinheban (I11C)
vohongcong(I111C)
hoangquocduy.i11c
TranMinh (I11C)
NguyenThiThanhThuy(I11C)
lequocthinh (I11C)
TangHuynhThanhThanh I11C
NguyenCongVinh(102C)
NguyenDoTu (I11C)
HoangNgocQuynh(I11C)
NGUYENDINHNGHIA-I11C
PhamHuyHoang (I11C)
BuiHoangTuan.131.I11C
lengocthuthao89 (i11c)
NguyenNgocMyTien(I11C)
dongocthien (I11C)
ngocquynh2091(i11C)
chauchanduong (I11C)
NgoThiCamNhung47 (I11C)
TranCamThu(I11C)
nguyenthithutrang (I11C)
DuongTrungTinh(I11C)
TranTrungKien (I11C)
08H1010052
caotanthanh(i11c)
dangminhthinh2107
NguyenThiMinhHuong(I11C)
LeMinhDuc (I11C)
NguyenTrongHuy(I11C)
TranVanDucHieu I11c
nguyenminhlai.(I11C)
PhamAnhKhoa(I11C)
VOTHANHTRUNG(I11C)
HoangThiVe (I11C)
tranvanhai_21(I11c)
NguyenMinhNhut.(I11c)
Nguyenminhduc (I11C)
PhanThiThanhNguyen_72I11C
DuongKimLong(I111C)
buithithudung24 (i11c)
DoThiNgocNuong (I11C)
luuphuvinh1985
LaVanKhuong (I11C)
NguyThiGai (I11C)
nguyenvulinh_i11c
BuiHuuThanhLuan(I11C)
TranThanhHoang(I91C)
namzhou(I11C)
TruongThiThuyPhi(I11C)
VanTanVu(I11c)
lakhaiphat-i11c
phamdieptuan (I11C)
LeTanDat (I11C)
DoThuyTien16 (I11C)
nguyenthithuylinh (I11C)
Tranvancanh(I11C)
nguyenthaihiep (I11C)
Duongthithanhhuynh (I11C)
TranTrungTinh(I11C)
XuanThai_I11C
DaoQuangSieu (I11C)
hongthuanphong (I11C)
NguyenDongGiang
HoiHoangHongVu I11C
tranphanhieu36_i11c
NguyenHuuHung(I11C)
lamhuubinh(I91C)
TranHaDucHuy (I11c)
BuiVanHoc(I11C)
NgoDucTuan (I11C)
DaoVanHoang (I11C)
TranThiMyTien18(i11c)
VoMinhHoang (I11C)
ToThiThuyTrang (I11C)
NguyenThanhTam (I11C)
tranvantoan83(I11c)
NgoLeYen48(I11C)
tannamthanh(I11C)
TruongHanhPhuc (I11C)
Admin
109 posters
Trang 2 trong tổng số 13 trang
Trang 2 trong tổng số 13 trang • 1, 2, 3, ... 11, 12, 13
Một số hàm API liên quan đến việc truy xuất Registry trong VISUAL BASIC
-RegCloseKey: Đóng một Registry key mà trước đó đã được mở bởi hàm API. Bạn phải đóng Registry key khi chấm dứt làm việc với nó.
Khai báo:
Declare Function RegCloseKey Lib "advapi32.dll" Alias "RegCloseKey" (ByVal hKey As Long) As Long
-RegConnectRegistry: Cho phép bạn truy cập vào một phần của Registry trên máy mạng
Khai báo:
Declare Function RegConnectRegistry Lib "advapi32.dll" Alias "RegConnectRegistryA" (ByVal lpMachineName As String, ByVal hKey As Long, phkResult As Long) As Long
-RegCreateKey: Cho phép bạn tạo một từ khóa mới trong Registry. Nếu từ khóa với cùng các thuộc tính có sẵn đã được mở.
Khai báo:
Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
-RegCreateKeyEx: Hàm này cho phép bạn thêm vào thông tin bảo mật mà có thể được đặt trên thực thể Registry.
Khai báo:
Declare Function RegCreateKeyEx Lib "advapi32.dll" Alias "RegCreateKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal lpClass As String, ByVal dwOptions As Long, ByVal samDesired As Long, lpSecurityAttributes As SECURITY_ATTRIBUTES, phkResult As Long, lpdwDisposition As Long) As Long
-RegDeleteKey: Xóa một Registry key và giá trị kết hợp của nó
Khai báo:
Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long
-RegDeleteValue: Xóa giá trị của một Registry key
Khai báo:
Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long
-RegEnumKey / RegEnumKeyEx: Cho phép bạn truy xuất mỗi tên từng bước một của một subkey được định vị dưới một từ khóa cụ thể.
Khai báo:
Declare Function RegEnumKey Lib "advapi32.dll" Alias "RegEnumKeyA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpName As String, ByVal cbName As Long) As Long
Declare Function RegEnumKeyEx Lib "advapi32.dll" Alias "RegEnumKeyExA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpName As String, lpcbName As Long, lpReserved As Long, ByVal lpClass As String, lpcbClass As Long, lpftLastWriteTime As FILETIME) As Long
-
RegEnumValue: Cho phép bạn truy xuất mỗi tên từng bước một của một subkey được định vị dưới một từ khóa cụ thể.
Khai báo:
Declare Function RegEnumValue Lib "advapi32.dll" Alias "RegEnumValueA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpValueName As String, lpcbValueName As Long, lpReserved As Long, lpType As Long, lpData As Byte, lpcbData As Long) As Long
-RegFlushKey: Ghi thông tin vào Registry ngay lập tức.
Khai báo:
Declare Function RegFlushKey Lib "advapi32.dll" Alias "RegFlushKey" (ByVal hKey As Long) As Long
-RegLoadKey: Nạp thông tin Registry từ một tập tin đã được tạo trước đó bởi RegSaveKey.
Khai báo:
Declare Function RegLoadKey Lib "advapi32.dll" Alias "RegLoadKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal lpFile As String) As Long
-RegNotifyChangeKeyValue: Cho phép ứng dụng của bạn quan sát việc đăng ký từ khóa và nhận được thông báo khi từ khóa bị thay đổi.
Khai báo:
Declare Function RegNotifyChangeKeyValue Lib "advapi32.dll" Alias "RegNotifyChangeKeyValue" (ByVal hKey As Long, ByVal bWatchSubtree As Long, ByVal dwNotifyFilter As Long, ByVal hEvent As Long, ByVal fAsynchronus As Long) As Long
-RegOpenKey/ RegOpenKeyEx: Mở một từ khóa được chỉ định. RegOpenKeyEx cũng mở một từ khóa nhưng thêm vào các tham số bảo mật.
Khai báo:
Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long
-RegQueryInfoKey : Cho phép ứng dụng của bạn lấy được thông tin về từ khóa.
Khai báo:
Declare Function RegQueryInfoKey Lib "advapi32.dll" Alias "RegQueryInfoKeyA" (ByVal hKey As Long, ByVal lpClass As String, lpcbClass As Long, lpReserved As Long, lpcSubKeys As Long, lpcbMaxSubKeyLen As Long, lpcbMaxClassLen As Long, lpcValues As Long, lpcbMaxValueNameLen As Long, lpcbMaxValueLen As Long, lpcbSecurityDescriptor As Long, lpftLastWriteTime As FILETIME) As Long
-RegQueryValue/ RegQueryValueEx: Lấy giá trị mặc định cho từ khóa. RegQueryValueEx lấy thông tin bảo mật của từ khóa.
Khai báo:
Declare Function RegQueryValue Lib "advapi32.dll" Alias "RegQueryValueA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal lpValue As String, lpcbValue As Long) As Long
Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
-
RegReplaceKey: Thay đổi thông tin Registry của một File và tạo File Backup của thông tin đã thay đổi.
Khai báo:
Declare Function RegReplaceKey Lib "advapi32.dll" Alias "RegReplaceKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal lpNewFile As String, ByVal lpOldFile As String) As Long
-RegRestoreKey: Khôi phục thông tin từ một tập tin mà đã được tạo bởi hàm RegReplaceKey.
Khai báo:
Declare Function RegRestoreKey Lib "advapi32.dll" Alias "RegRestoreKeyA" (ByVal hKey As Long, ByVal lpFile As String, ByVal dwFlags As Long) As Long
-RegSaveKey: Lưu một Registry key cũng như tất cả các subkey của nó lên một File trên đĩa. Tập tin này có thể được sử dụng sau đó bởi hàm RegLoadKey.
Khai báo:
Declare Function RegSaveKey Lib "advapi32.dll" Alias "RegSaveKeyA" (ByVal hKey As Long, ByVal lpFile As String, lpSecurityAttributes As SECURITY_ATTRIBUTES) As Long
-RegSetValue/ RegSetValueEx: Thay đổi giá trị của một từ khóa cụ thể.
Khai báo:
Declare Function RegSetValue Lib "advapi32.dll" Alias "RegSetValueA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal dwType As Long, ByVal lpData As String, ByVal cbData As Long) As Long
Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
-RegUnloadKey: Đóng và loại bỏ khỏi bộ nhớ một từ khóa đã được mở trước đó bởi hàm RegLoadKey.
Khai báo:
Declare Function RegUnLoadKey Lib "advapi32.dll" Alias "RegUnLoadKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long
Khai báo:
Declare Function RegCloseKey Lib "advapi32.dll" Alias "RegCloseKey" (ByVal hKey As Long) As Long
-RegConnectRegistry: Cho phép bạn truy cập vào một phần của Registry trên máy mạng
Khai báo:
Declare Function RegConnectRegistry Lib "advapi32.dll" Alias "RegConnectRegistryA" (ByVal lpMachineName As String, ByVal hKey As Long, phkResult As Long) As Long
-RegCreateKey: Cho phép bạn tạo một từ khóa mới trong Registry. Nếu từ khóa với cùng các thuộc tính có sẵn đã được mở.
Khai báo:
Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
-RegCreateKeyEx: Hàm này cho phép bạn thêm vào thông tin bảo mật mà có thể được đặt trên thực thể Registry.
Khai báo:
Declare Function RegCreateKeyEx Lib "advapi32.dll" Alias "RegCreateKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal lpClass As String, ByVal dwOptions As Long, ByVal samDesired As Long, lpSecurityAttributes As SECURITY_ATTRIBUTES, phkResult As Long, lpdwDisposition As Long) As Long
-RegDeleteKey: Xóa một Registry key và giá trị kết hợp của nó
Khai báo:
Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long
-RegDeleteValue: Xóa giá trị của một Registry key
Khai báo:
Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long
-RegEnumKey / RegEnumKeyEx: Cho phép bạn truy xuất mỗi tên từng bước một của một subkey được định vị dưới một từ khóa cụ thể.
Khai báo:
Declare Function RegEnumKey Lib "advapi32.dll" Alias "RegEnumKeyA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpName As String, ByVal cbName As Long) As Long
Declare Function RegEnumKeyEx Lib "advapi32.dll" Alias "RegEnumKeyExA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpName As String, lpcbName As Long, lpReserved As Long, ByVal lpClass As String, lpcbClass As Long, lpftLastWriteTime As FILETIME) As Long
-
RegEnumValue: Cho phép bạn truy xuất mỗi tên từng bước một của một subkey được định vị dưới một từ khóa cụ thể.
Khai báo:
Declare Function RegEnumValue Lib "advapi32.dll" Alias "RegEnumValueA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpValueName As String, lpcbValueName As Long, lpReserved As Long, lpType As Long, lpData As Byte, lpcbData As Long) As Long
-RegFlushKey: Ghi thông tin vào Registry ngay lập tức.
Khai báo:
Declare Function RegFlushKey Lib "advapi32.dll" Alias "RegFlushKey" (ByVal hKey As Long) As Long
-RegLoadKey: Nạp thông tin Registry từ một tập tin đã được tạo trước đó bởi RegSaveKey.
Khai báo:
Declare Function RegLoadKey Lib "advapi32.dll" Alias "RegLoadKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal lpFile As String) As Long
-RegNotifyChangeKeyValue: Cho phép ứng dụng của bạn quan sát việc đăng ký từ khóa và nhận được thông báo khi từ khóa bị thay đổi.
Khai báo:
Declare Function RegNotifyChangeKeyValue Lib "advapi32.dll" Alias "RegNotifyChangeKeyValue" (ByVal hKey As Long, ByVal bWatchSubtree As Long, ByVal dwNotifyFilter As Long, ByVal hEvent As Long, ByVal fAsynchronus As Long) As Long
-RegOpenKey/ RegOpenKeyEx: Mở một từ khóa được chỉ định. RegOpenKeyEx cũng mở một từ khóa nhưng thêm vào các tham số bảo mật.
Khai báo:
Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long
-RegQueryInfoKey : Cho phép ứng dụng của bạn lấy được thông tin về từ khóa.
Khai báo:
Declare Function RegQueryInfoKey Lib "advapi32.dll" Alias "RegQueryInfoKeyA" (ByVal hKey As Long, ByVal lpClass As String, lpcbClass As Long, lpReserved As Long, lpcSubKeys As Long, lpcbMaxSubKeyLen As Long, lpcbMaxClassLen As Long, lpcValues As Long, lpcbMaxValueNameLen As Long, lpcbMaxValueLen As Long, lpcbSecurityDescriptor As Long, lpftLastWriteTime As FILETIME) As Long
-RegQueryValue/ RegQueryValueEx: Lấy giá trị mặc định cho từ khóa. RegQueryValueEx lấy thông tin bảo mật của từ khóa.
Khai báo:
Declare Function RegQueryValue Lib "advapi32.dll" Alias "RegQueryValueA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal lpValue As String, lpcbValue As Long) As Long
Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
-
RegReplaceKey: Thay đổi thông tin Registry của một File và tạo File Backup của thông tin đã thay đổi.
Khai báo:
Declare Function RegReplaceKey Lib "advapi32.dll" Alias "RegReplaceKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal lpNewFile As String, ByVal lpOldFile As String) As Long
-RegRestoreKey: Khôi phục thông tin từ một tập tin mà đã được tạo bởi hàm RegReplaceKey.
Khai báo:
Declare Function RegRestoreKey Lib "advapi32.dll" Alias "RegRestoreKeyA" (ByVal hKey As Long, ByVal lpFile As String, ByVal dwFlags As Long) As Long
-RegSaveKey: Lưu một Registry key cũng như tất cả các subkey của nó lên một File trên đĩa. Tập tin này có thể được sử dụng sau đó bởi hàm RegLoadKey.
Khai báo:
Declare Function RegSaveKey Lib "advapi32.dll" Alias "RegSaveKeyA" (ByVal hKey As Long, ByVal lpFile As String, lpSecurityAttributes As SECURITY_ATTRIBUTES) As Long
-RegSetValue/ RegSetValueEx: Thay đổi giá trị của một từ khóa cụ thể.
Khai báo:
Declare Function RegSetValue Lib "advapi32.dll" Alias "RegSetValueA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal dwType As Long, ByVal lpData As String, ByVal cbData As Long) As Long
Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
-RegUnloadKey: Đóng và loại bỏ khỏi bộ nhớ một từ khóa đã được mở trước đó bởi hàm RegLoadKey.
Khai báo:
Declare Function RegUnLoadKey Lib "advapi32.dll" Alias "RegUnLoadKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long
lamhuubinh(I91C)- Tổng số bài gửi : 34
Join date : 28/08/2011
Trình bày lí do cộng tác giữa các tiến trình
Giữa các tiến trình cần sự cộng tác với nhau để đảm bảo các tiến trình được xử lí hoạt động đạt hiệu quả tối đa.
- Chia sẻ thông tin (Information Sharing): Một tiến trình sử dụng thông tin do tiến trình khác cung cấp.
+ Ví dụ thực tế: Trong một nhóm kỹ sư xe máy tham gia nghiên cứu một dự án cải tiến mẫu xe máy mới. Nhóm kỹ thuật viên này chia tài liệu về dự án mới cho mỗi thành viên trong nhóm. Thành viên thứ nhất nghiên cứu về cách thay đổi mẫu mã của xe, thành viên thứ hai nghiên cứu về cách tiết kiệm xăng cho xe. Sau đó các thành viên này tập hợp những thông tin mình nghiên cứu được để hoàn thiện một chiếc xe máy mới.
- Tăng tốc tính toán (Computation Speedup): Các tiến trình cùng làm việc song song trên 1 hoặc nhiều máy để giải quyết bài toán chung.
+ Ví dụ thực tế: Mỗi người kỹ sư sẽ áp dụng những nghiên cứu của mình trên mỗi xe riêng để kiểm thử kết quả nghiên cứu.
- Đảm bảo tính đơn thể (Modularity): Chương trình được chia thành các đơn thể chức năng vận hành trong các tiến trình hoặc luồng khác nhau.
+ Ví dụ thực tế: Trong một dây chuyền lắp ráp một chiếc xe máy, mỗi người kỹ sư sẽ lắp ráp bộ phận do mình phụ trách. Điều này đảm bảo được tính đơn thể của sự cộng tác tiến trình.
- Đảm bảo tính tiện dụng (Convenience): Đảm bảo tính tiện dụng cho người dùng, người dùng sẽ được sử dụng nhiều tính năng mới.
+ Ví dụ thực tế: Sau khi chiếc xe cải tiến, người sử dụng sẽ được hưởng nhiều tính năng mới như: Mẫu mã đẹp, ít hao xăng, xe chạy khỏe hơn, ....
- Chia sẻ thông tin (Information Sharing): Một tiến trình sử dụng thông tin do tiến trình khác cung cấp.
+ Ví dụ thực tế: Trong một nhóm kỹ sư xe máy tham gia nghiên cứu một dự án cải tiến mẫu xe máy mới. Nhóm kỹ thuật viên này chia tài liệu về dự án mới cho mỗi thành viên trong nhóm. Thành viên thứ nhất nghiên cứu về cách thay đổi mẫu mã của xe, thành viên thứ hai nghiên cứu về cách tiết kiệm xăng cho xe. Sau đó các thành viên này tập hợp những thông tin mình nghiên cứu được để hoàn thiện một chiếc xe máy mới.
- Tăng tốc tính toán (Computation Speedup): Các tiến trình cùng làm việc song song trên 1 hoặc nhiều máy để giải quyết bài toán chung.
+ Ví dụ thực tế: Mỗi người kỹ sư sẽ áp dụng những nghiên cứu của mình trên mỗi xe riêng để kiểm thử kết quả nghiên cứu.
- Đảm bảo tính đơn thể (Modularity): Chương trình được chia thành các đơn thể chức năng vận hành trong các tiến trình hoặc luồng khác nhau.
+ Ví dụ thực tế: Trong một dây chuyền lắp ráp một chiếc xe máy, mỗi người kỹ sư sẽ lắp ráp bộ phận do mình phụ trách. Điều này đảm bảo được tính đơn thể của sự cộng tác tiến trình.
- Đảm bảo tính tiện dụng (Convenience): Đảm bảo tính tiện dụng cho người dùng, người dùng sẽ được sử dụng nhiều tính năng mới.
+ Ví dụ thực tế: Sau khi chiếc xe cải tiến, người sử dụng sẽ được hưởng nhiều tính năng mới như: Mẫu mã đẹp, ít hao xăng, xe chạy khỏe hơn, ....
NguyenHuuHung(I11C)- Tổng số bài gửi : 16
Join date : 27/08/2011
Age : 39
Ví dụ thực tiễn về bài toán sản xuất tiêu thụ để minh họa hệ thống có nhiều tiến trình song song, đồng hành cùng chia sẽ tài nguyên
Ta lấy ví dụ một người bán trà đá:
Người bán trà đá sẽ đóng vai trò là người sản xuất.
Người mua trà đá và uống sẽ là người tiêu thụ.
Những ly trà đá sẽ đóng vai trò là sản phẩm.
Hệ thống tiến trình như sau:
Người bán trà đá sẽ pha trà và rót ra từng ly để bán. Các vị khách (người mua trà đá) sẽ mua từng ly trà và lần lượt hoặc cùng nhau uống trà. Như vậy, cứ người mua uống hết ly trà thứ nhất người bán trà lạ rót trà vào ly bừa hết. Người khách thứ 2 uống ly trà thứ 2 xong, người bán lại rót trà vào ly thứ 2 để tiếp tục bán. Tiến trình này cứ xảy ra song song như vậy giữa các ly trà, người mua và người bán.
Người bán trà đá sẽ đóng vai trò là người sản xuất.
Người mua trà đá và uống sẽ là người tiêu thụ.
Những ly trà đá sẽ đóng vai trò là sản phẩm.
Hệ thống tiến trình như sau:
Người bán trà đá sẽ pha trà và rót ra từng ly để bán. Các vị khách (người mua trà đá) sẽ mua từng ly trà và lần lượt hoặc cùng nhau uống trà. Như vậy, cứ người mua uống hết ly trà thứ nhất người bán trà lạ rót trà vào ly bừa hết. Người khách thứ 2 uống ly trà thứ 2 xong, người bán lại rót trà vào ly thứ 2 để tiếp tục bán. Tiến trình này cứ xảy ra song song như vậy giữa các ly trà, người mua và người bán.
NguyenHuuHung(I11C)- Tổng số bài gửi : 16
Join date : 27/08/2011
Age : 39
Tìm hiểu rõ thêm về các trạng thái của process
Mình xin bổ sung thêm một số các mô hình trạng thái của process mà mình tham khảo thêm được ở một số tài liệu khác cho rõ hơn, bạn nào có thông tin nào cần bổ sung thêm thì đóng góp nha :
Có 2 mô hình các trạng thái cơ bản của Process ngoài mô hình 5 trạng thái thầy trình bày trên lớp còn có mô hình đơn giản hơn nữa là mô hình 3 trạng thái :
+ Mô hình 3 trạng thái
Các trạng thái Của mô hình 3 trạng thái
Running - Thực thi
Tiến trình đang thực thi, đang sử dụng CPU
Chỉ có 1 Running Process tại 1 thời điểm trên hệ thống đa chương
Ready- Sẵn sàng
Là tiến trình đã sẵn sàng để thực thi, đang tạm dừng để chờ CPU
Có nhiều Ready Process ( Ở trên hàng đợi )
Các Ready Process được quản lý bằng Ready Queue ( Thầy đã giảng trên lớp )
Blocked - Bị chặn
Đang chờ biến cố xảy ra (I/O...), không thể thực thi cho đến khi biến cố xảy
Có thể có nhiều Block Process
Các Blocked Process được quản lý bằng Blocked Queue
Sự chuyển trạng thái
-Running -> Blocked (1) Process nào đang thực thi mà cần thực hiện biến cố rồi mới thực thi tiếp thì sẽ chuyển từ trạng thái Running sang Blocked. Và sẽ ở Queue cho đến khi biến cố xảy ra
-Running -> Ready (2) Process đang thực hiện chưa xong nhưng hết thời gian thì sẽ được Hệ Điều Hành chuyển sang Ready Queue
-Ready -> Running (3) Process tới lượt thực thi thì sẽ từ hàng đợi Ready Queue sang CPU và được thực thi
-Blocked -> Ready (4) Process đang ở trong Blocked Queue chờ biến cố xảy ra và khi biến cố đã xảy ra thì process này được trở lại hàng đợi Ready Queue
Việc chuyển trạng thái này do bộ điều phối của Hệ Điều Hành thực hiện (scheduler)
Các thời điểm chuyển trạng thái
+Ngắt quãng thời gian - Clock Interrup : Dùng để kiểm soát thời gian của process đang thực thi trong CPU. Khi process đang thực hiện chưa xong nhưng hết thời gian rồi thì sẽ bị ngắt
+Ngắt quãng thiết bị - I/O Interrup : Khi process đang thực thi mà cần công việc của các thiết bị I/O và phải chờ thiết bị I/O thực hiện thì process sẽ bị ngắt
+Lệnh gọi hệ thống, lỗi : System call, trap :
-Khi hệ điều hành yêu cầu ngắt bằng System call, hay khi có lỗi xảy ra
-Lỗi truy xuất bộ nhớ ( Memory Fault)
-Bẫy (trap)
+ Mô hình 5 trạng thái
-New: Khối thông tin quản lý process đã được tạo. Process vẫn chưa được nạp vào bộ nhớ chính.
-Exit: Process đã kết thúc, khối thông tin quản lý process vẫn được lưu trữ -> cho phép rút trích.
-Chuyển trạng thái:
+NULL -> New
+New -> Ready : Khi số process nạp chưa vượt quá giới hạn của hàng đợi (Ready Queue đó)
+Running -> Exit : Process kết thúc xảy ra tương ứng với các tình huống chủ động
Các trạng thái trì hoãn ( suspend )
-Tiến trình không được thực thi được chuyển tạm ra bộ nhớ ngoài => đình hoãn
-Dành bộ nhớ để nạp các tiến trình thực thi khác.
Có 2 mô hình các trạng thái cơ bản của Process ngoài mô hình 5 trạng thái thầy trình bày trên lớp còn có mô hình đơn giản hơn nữa là mô hình 3 trạng thái :
+ Mô hình 3 trạng thái
Các trạng thái Của mô hình 3 trạng thái
Running - Thực thi
Tiến trình đang thực thi, đang sử dụng CPU
Chỉ có 1 Running Process tại 1 thời điểm trên hệ thống đa chương
Ready- Sẵn sàng
Là tiến trình đã sẵn sàng để thực thi, đang tạm dừng để chờ CPU
Có nhiều Ready Process ( Ở trên hàng đợi )
Các Ready Process được quản lý bằng Ready Queue ( Thầy đã giảng trên lớp )
Blocked - Bị chặn
Đang chờ biến cố xảy ra (I/O...), không thể thực thi cho đến khi biến cố xảy
Có thể có nhiều Block Process
Các Blocked Process được quản lý bằng Blocked Queue
Sự chuyển trạng thái
-Running -> Blocked (1) Process nào đang thực thi mà cần thực hiện biến cố rồi mới thực thi tiếp thì sẽ chuyển từ trạng thái Running sang Blocked. Và sẽ ở Queue cho đến khi biến cố xảy ra
-Running -> Ready (2) Process đang thực hiện chưa xong nhưng hết thời gian thì sẽ được Hệ Điều Hành chuyển sang Ready Queue
-Ready -> Running (3) Process tới lượt thực thi thì sẽ từ hàng đợi Ready Queue sang CPU và được thực thi
-Blocked -> Ready (4) Process đang ở trong Blocked Queue chờ biến cố xảy ra và khi biến cố đã xảy ra thì process này được trở lại hàng đợi Ready Queue
Việc chuyển trạng thái này do bộ điều phối của Hệ Điều Hành thực hiện (scheduler)
Các thời điểm chuyển trạng thái
+Ngắt quãng thời gian - Clock Interrup : Dùng để kiểm soát thời gian của process đang thực thi trong CPU. Khi process đang thực hiện chưa xong nhưng hết thời gian rồi thì sẽ bị ngắt
+Ngắt quãng thiết bị - I/O Interrup : Khi process đang thực thi mà cần công việc của các thiết bị I/O và phải chờ thiết bị I/O thực hiện thì process sẽ bị ngắt
+Lệnh gọi hệ thống, lỗi : System call, trap :
-Khi hệ điều hành yêu cầu ngắt bằng System call, hay khi có lỗi xảy ra
-Lỗi truy xuất bộ nhớ ( Memory Fault)
-Bẫy (trap)
+ Mô hình 5 trạng thái
-New: Khối thông tin quản lý process đã được tạo. Process vẫn chưa được nạp vào bộ nhớ chính.
-Exit: Process đã kết thúc, khối thông tin quản lý process vẫn được lưu trữ -> cho phép rút trích.
-Chuyển trạng thái:
+NULL -> New
+New -> Ready : Khi số process nạp chưa vượt quá giới hạn của hàng đợi (Ready Queue đó)
+Running -> Exit : Process kết thúc xảy ra tương ứng với các tình huống chủ động
Các trạng thái trì hoãn ( suspend )
-Tiến trình không được thực thi được chuyển tạm ra bộ nhớ ngoài => đình hoãn
-Dành bộ nhớ để nạp các tiến trình thực thi khác.
tranphanhieu36_i11c- Tổng số bài gửi : 31
Join date : 25/08/2011
Re: Thảo luận Bài 4
Bài rất hay bạn ơi. Mình đọc thấy có đôi chút hiểu rùi. cám ơn bạntranphanhieu36_i11c đã viết:Mình xin bổ sung thêm một số các mô hình trạng thái của process mà mình tham khảo thêm được ở một số tài liệu khác cho rõ hơn, bạn nào có thông tin nào cần bổ sung thêm thì đóng góp nha :
Có 2 mô hình các trạng thái cơ bản của Process ngoài mô hình 5 trạng thái thầy trình bày trên lớp còn có mô hình đơn giản hơn nữa là mô hình 3 trạng thái :
+ Mô hình 3 trạng thái
Các trạng thái Của mô hình 3 trạng thái
Running - Thực thi
Tiến trình đang thực thi, đang sử dụng CPU
Chỉ có 1 Running Process tại 1 thời điểm trên hệ thống đa chương
Ready- Sẵn sàng
Là tiến trình đã sẵn sàng để thực thi, đang tạm dừng để chờ CPU
Có nhiều Ready Process ( Ở trên hàng đợi )
Các Ready Process được quản lý bằng Ready Queue ( Thầy đã giảng trên lớp )
Blocked - Bị chặn
Đang chờ biến cố xảy ra (I/O...), không thể thực thi cho đến khi biến cố xảy
Có thể có nhiều Block Process
Các Blocked Process được quản lý bằng Blocked Queue
Sự chuyển trạng thái
-Running -> Blocked (1) Process nào đang thực thi mà cần thực hiện biến cố rồi mới thực thi tiếp thì sẽ chuyển từ trạng thái Running sang Blocked. Và sẽ ở Queue cho đến khi biến cố xảy ra
-Running -> Ready (2) Process đang thực hiện chưa xong nhưng hết thời gian thì sẽ được Hệ Điều Hành chuyển sang Ready Queue
-Ready -> Running (3) Process tới lượt thực thi thì sẽ từ hàng đợi Ready Queue sang CPU và được thực thi
-Blocked -> Ready (4) Process đang ở trong Blocked Queue chờ biến cố xảy ra và khi biến cố đã xảy ra thì process này được trở lại hàng đợi Ready Queue
Việc chuyển trạng thái này do bộ điều phối của Hệ Điều Hành thực hiện (scheduler)
Các thời điểm chuyển trạng thái
+Ngắt quãng thời gian - Clock Interrup : Dùng để kiểm soát thời gian của process đang thực thi trong CPU. Khi process đang thực hiện chưa xong nhưng hết thời gian rồi thì sẽ bị ngắt
+Ngắt quãng thiết bị - I/O Interrup : Khi process đang thực thi mà cần công việc của các thiết bị I/O và phải chờ thiết bị I/O thực hiện thì process sẽ bị ngắt
+Lệnh gọi hệ thống, lỗi : System call, trap :
-Khi hệ điều hành yêu cầu ngắt bằng System call, hay khi có lỗi xảy ra
-Lỗi truy xuất bộ nhớ ( Memory Fault)
-Bẫy (trap)
+ Mô hình 5 trạng thái
-New: Khối thông tin quản lý process đã được tạo. Process vẫn chưa được nạp vào bộ nhớ chính.
-Exit: Process đã kết thúc, khối thông tin quản lý process vẫn được lưu trữ -> cho phép rút trích.
-Chuyển trạng thái:
+NULL -> New
+New -> Ready : Khi số process nạp chưa vượt quá giới hạn của hàng đợi (Ready Queue đó)
+Running -> Exit : Process kết thúc xảy ra tương ứng với các tình huống chủ động
Các trạng thái trì hoãn ( suspend )
-Tiến trình không được thực thi được chuyển tạm ra bộ nhớ ngoài => đình hoãn
-Dành bộ nhớ để nạp các tiến trình thực thi khác.
HoiHoangHongVu I11C- Tổng số bài gửi : 37
Join date : 26/08/2011
Đến từ : Biên Hòa - Đồng Nai
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
hongthuanphong (I11C)- Tổng số bài gửi : 18
Join date : 26/08/2011
Thêm một ví dụ nữa về bài toán sản xuất và tiêu thụ !!!
Ví dụ như một lớp sử dụng chung 1 cái bảng:NguyenHuuHung(I11C) đã viết:Ta lấy ví dụ một người bán trà đá:
Người bán trà đá sẽ đóng vai trò là người sản xuất.
Người mua trà đá và uống sẽ là người tiêu thụ.
Những ly trà đá sẽ đóng vai trò là sản phẩm.
Hệ thống tiến trình như sau:
Người bán trà đá sẽ pha trà và rót ra từng ly để bán. Các vị khách (người mua trà đá) sẽ mua từng ly trà và lần lượt hoặc cùng nhau uống trà. Như vậy, cứ người mua uống hết ly trà thứ nhất người bán trà lạ rót trà vào ly bừa hết. Người khách thứ 2 uống ly trà thứ 2 xong, người bán lại rót trà vào ly thứ 2 để tiếp tục bán. Tiến trình này cứ xảy ra song song như vậy giữa các ly trà, người mua và người bán.
- Mỗi sinh viên là một tiến trình
- Những sinh viên nào lên bảng viết hoặc trình bày quan điểm của mình về một vấn đề nào đó thì ta gọi đó là một tiến trình sản xuất.
- Những sinh viên phía dưới tập trung lắng nghe, đọc thông tin hoặc chụp hình, sao lưu thì ta gọi đó là một tiến trình tiêu thụ.
* Trong cuộc sống, hai tiến trình luôn xảy ra song song với nhau.Có tiêu thụ thì có sản xuất và ngược lại sản xuất ra thì cần phải có thứ để tiêu thụ.
DaoQuangSieu (I11C)- Tổng số bài gửi : 29
Join date : 26/08/2011
tac dung cua khoi kiem soat tien trinh
NgoDucTuan (I11C) đã viết:PCB là một cấu trúc dữ liệu được hệ điều hành duy trì cho mỗi tiến trình dùng để chứa các thông tin cần thiết về tiến trình đó. PCB chứa "Bản sao công việc của tiến trình".
Bạn nào có ý kiến xin góp ý nhé. thanks !!!
Theo cách hiểu của mình là nó có tác dụng lưu lại trạng thái của tiến trình tại thời điểm đang xét(thường xảy ra khi luân chuyển CPU) . Trạng thái của tiến trình này bao gồm : Các địa chỉ liên kết của tiến trình và dữ liệu, số hiệu tiến trình, bộ đếm lệnh, nội dung các thanh ghi, giới hạn 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ê về tiến trình hiện tại.
XuanThai_I11C- Tổng số bài gửi : 20
Join date : 10/09/2011
Age : 38
Trình bày mô hình luân chuyển CPU của hai tiến trình P0 và P1?
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.
Được sửa bởi TranTrungTinh(I11C) ngày 16/9/2011, 09:23; sửa lần 1.
TranTrungTinh(I11C)- Tổng số bài gửi : 28
Join date : 30/08/2011
Re: Thảo luận Bài 4
Chơi game đâu chỉ hướng I/O đâu bạn. Chơi game cực kỳ ngốn CPU để xử lý game, hành động, logic và có khi là cả đồ họa nữa. Bạn cứ thử bật Task Manager khi chơi game và theo dõi CPU ngốn như thế nào sẽ rõ. Xem phim cũng rất ngốn CPU. Bạn cứ thử mở 1 phim Full HD là có thể thấy CPU ngốn như thế nào. Với các máy dòng CPU 1 nhân như Pentium 4 hoặc thậm chí 2 nhân đời đầu như Pentium D925 cũng không đủ sức để chạy phim Full HD nữa. Nên xem phim chưa hẳn là hướng I/O đâu bạn ơi.VoMinhHoang (I11C) đã viết:Hướng CPU: scan virus, scan registry, defragment hardisk....
( đại khái là những công việc đòi hỏi CPU phải tính toán nhiều, sử dụng nhiều bộ nhớ ( RAM ), và khi nó làm việc thì ta ít chú ý đến nó - vì nó " im hơi lặng tiếng" quá mà
Hướng I/O:Nghe nhạc, xem phim, chơi game....
Cái bạn đưa ra ví dụ đó là "chương trình" chứ không phải là "tiến trình" đâu.
Ví dụ việc in ấn bao gồm 2 việc. CPU xử lý văn bản là hướng CPU, sau đó chuyển cho máy in thì đây mới là hướng I/O
TruongHanhPhuc (I11C)- Tổng số bài gửi : 22
Join date : 25/08/2011
Re: Thảo luận Bài 4
Mình bổ sung thêm ý mà thầy nhấn mạnh trong phần này là:tannamthanh(I11C) đã viết:_ Điều phối chậm(long –term queue) chọn 1 tiến trình từ job queue đưa sang qua Ready queue(chuyển từ New sang Ready). Scheduler lựa chọn kỹ các tiến trình nhằm phối hợp cân bằng giữa hai loại tiến trình
+ hướng CPU(CPU-BOUND) tính toán nhiều , ít I/O.
+ hướng I/O(I/O BOUND) tính toán ít , nhiều I/O.
Mục đích nhằm cân bằng tải giữa hai tiến trình..
VD: Trong cuộc thi Vietnam Idol, các thi sinh ngồi đợi bên ngoài đang trong Job Queue ( đều phối chậm),
sau đó giám khảo sẽ gọi 3 bạn vào Ready Queue rồi sẽ gọi liên tục 1 trong 3 bạn lên trình bày (điều phối nhanh)
_ Điều phối nhanh (Short-term scheduler): Chọn tiến trình sẽ chiếm CPU để xử lý (chuyển từ trạng thái Ready sang trạng thái Runing).
VD: Các thí sinh đã được gọi lên trình diễn thì đã biết mình phải làm gì
Trong thực tế không phải các process ở trạng thái new cũng được chuyển tất cả sang trạng thái ready mà phải được "sơ tuyển".Và tại sao phải "sơ tuyển"? là để có 1 hỗn hợp tối ưu hai loại process khác nhau: hướng CPU và hướng I/O.
Duongthithanhhuynh (I11C)- Tổng số bài gửi : 26
Join date : 26/08/2011
Age : 35
Đến từ : Tiền Giang
Phát biểu 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.
Phát biểu bài toán:
+ Giả sử có Bộ nhớ đệm (Buffer) bao gồm nhiều khoang (Items) được tiến trình Producer lần lượt đưa các sản phẩm S1, S2,... vào.
+ Tiến trình Consumer lần lượt lấy sản phẩm ra theo đúng thứ tự.
+ Công việc của Producer phải đồng bộ với Consumer: Không được đưa sản phẩm vào khi Buffer đầy, Không được lấy ra khi chưa có.
Trình bày giải thuật:
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;
}
-----------------------------------------------------------------------------------------------------------------------------------------
CONSUMER
item nextConsumed;
while (1)
{
while(in==out); //quẩn khi buffer rỗng
nextConsumed = buffer[out];
out = (out+1)%BUFFER_SIZE;
}
+ 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;
}
-----------------------------------------------------------------------------------------------------------------------------------------
CONSUMER
item nextConsumed;
while (1)
{
while(in==out); //quẩn khi buffer rỗng
nextConsumed = buffer[out];
out = (out+1)%BUFFER_SIZE;
}
hongthuanphong (I11C)- Tổng số bài gửi : 18
Join date : 26/08/2011
Re: Thảo luận Bài 4
Hai bạn đưa ra ví dụ thật hay. Tại bữa mình không nhớ rõ phần này nên còn lơ mơ nhờ hai ví dụ này mà mình hiểu ra vấn đề, thank hai bạn nhiêu nha.DaoQuangSieu (I11C) đã viết:Ví dụ như một lớp sử dụng chung 1 cái bảng:NguyenHuuHung(I11C) đã viết:Ta lấy ví dụ một người bán trà đá:
Người bán trà đá sẽ đóng vai trò là người sản xuất.
Người mua trà đá và uống sẽ là người tiêu thụ.
Những ly trà đá sẽ đóng vai trò là sản phẩm.
Hệ thống tiến trình như sau:
Người bán trà đá sẽ pha trà và rót ra từng ly để bán. Các vị khách (người mua trà đá) sẽ mua từng ly trà và lần lượt hoặc cùng nhau uống trà. Như vậy, cứ người mua uống hết ly trà thứ nhất người bán trà lạ rót trà vào ly bừa hết. Người khách thứ 2 uống ly trà thứ 2 xong, người bán lại rót trà vào ly thứ 2 để tiếp tục bán. Tiến trình này cứ xảy ra song song như vậy giữa các ly trà, người mua và người bán.
- Mỗi sinh viên là một tiến trình
- Những sinh viên nào lên bảng viết hoặc trình bày quan điểm của mình về một vấn đề nào đó thì ta gọi đó là một tiến trình sản xuất.
- Những sinh viên phía dưới tập trung lắng nghe, đọc thông tin hoặc chụp hình, sao lưu thì ta gọi đó là một tiến trình tiêu thụ.
* Trong cuộc sống, hai tiến trình luôn xảy ra song song với nhau.Có tiêu thụ thì có sản xuất và ngược lại sản xuất ra thì cần phải có thứ để tiêu thụ.
Duongthithanhhuynh (I11C)- Tổng số bài gửi : 26
Join date : 26/08/2011
Age : 35
Đến từ : Tiền Giang
Điều phối chậm và điều phối nhanh.
*Điều phối chậm(Long-Term Scheduler) là chọn tiến trình từ Job Queue để đưa vào Ready Queue.Scheduler này sẽ lựa chọn kỹ các tiến trình nhằm phối hợp cân bằng giữa các tiến trình(2 tiến trình).
+Hướng CPU (CPU-Bound): Tính toán nhiều,ít I/O.
+Hướng I/O(I/O-Bound) : Tính toán ít, nhiều I/O.
Chức năng của Long-Term Scheduler là sơ tuyển.
Mục đích là để cân bằng cho toàn hệ thống.
ví dụ:Trong các chương trình game show thì các thí sinh trước khi thi thì phải đăng ký,phải trài qua nhiều vòng sơ tuyển để chuyển sang chơi các vòng sau.
*Điều phối nhanh (Short-Term Scheduler) là chọn các tiến trình sẽ chiếm giữ CPU(nghĩa là chuyển từ trạng thái ready sang trạng thái running).
Chức năng của Short-Term Scheduler là tuyển.
ví dụ: Các thí sinh ki được trúng tuyển vòng sơ tuyển thì sẽ được thi trực tiếp với MC,Ban Giám Khảo,Khán Giả,...
**Tại sao chúng ta phải sơ tuyển ?
-Sơ tuyển là để có được một hỗn hợp tối ưu cho hai loại tiến trình khác nhau: hướng CPU và hướng nhập xuất .
+ Nếu hướng CPU không thì các tiến trình sẽ chờ lẫn nhau và làm cho CPU chậm.
+ Nếu hướng I/O không thì chỉ có tiến trình nhập xuất và lúc đó CPU rất rãnh.
-Cả hai loại(hướng) bổ sung cho nhau.
-Sơ tuyển là phải lâu để có chất lượng.Thì khi đó quá trình tuyển sẽ nhanh hơn vì chỉ xét trong sơ tuyển.
+Hướng CPU (CPU-Bound): Tính toán nhiều,ít I/O.
+Hướng I/O(I/O-Bound) : Tính toán ít, nhiều I/O.
Chức năng của Long-Term Scheduler là sơ tuyển.
Mục đích là để cân bằng cho toàn hệ thống.
ví dụ:Trong các chương trình game show thì các thí sinh trước khi thi thì phải đăng ký,phải trài qua nhiều vòng sơ tuyển để chuyển sang chơi các vòng sau.
*Điều phối nhanh (Short-Term Scheduler) là chọn các tiến trình sẽ chiếm giữ CPU(nghĩa là chuyển từ trạng thái ready sang trạng thái running).
Chức năng của Short-Term Scheduler là tuyển.
ví dụ: Các thí sinh ki được trúng tuyển vòng sơ tuyển thì sẽ được thi trực tiếp với MC,Ban Giám Khảo,Khán Giả,...
**Tại sao chúng ta phải sơ tuyển ?
-Sơ tuyển là để có được một hỗn hợp tối ưu cho hai loại tiến trình khác nhau: hướng CPU và hướng nhập xuất .
+ Nếu hướng CPU không thì các tiến trình sẽ chờ lẫn nhau và làm cho CPU chậm.
+ Nếu hướng I/O không thì chỉ có tiến trình nhập xuất và lúc đó CPU rất rãnh.
-Cả hai loại(hướng) bổ sung cho nhau.
-Sơ tuyển là phải lâu để có chất lượng.Thì khi đó quá trình tuyển sẽ nhanh hơn vì chỉ xét trong sơ tuyển.
DaoQuangSieu (I11C)- Tổng số bài gửi : 29
Join date : 26/08/2011
Phân tích vai trò của khối kiểm soát tiến trình trong công việc quản lý tiến trình của hệ điều hành?
Khối kiểm soát tiến trình(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ề vấn đề đó. PCB chứa "bản sao công việc của các 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 và dữ liệu, số hiệu tiến trình, bộ đếm lệnh, nội dung các thanh ghi, giới hạn bộ nhớ của tiến trình....).
VD: Trong lớp học học sinh thứ nhất (P1) lên bảng để trình bày bài viết của mình, trình bày xong học sinh thứ hai(P2) cũng lên bảng trình bày bài viết của mình nên phải xóa bài viết của học sinh thứ nhất(P1), vì vậy bài của học sinh thứ nhất phải được ghi vào vở (PCB1). Nếu mà học sinh thứ nhất (P1) trở lên bảng lại thì phải xóa bài viết của học sinh thứ hai và trình bày lại bài viết của mình giống như lúc chưa xóa.
VD: Trong lớp học học sinh thứ nhất (P1) lên bảng để trình bày bài viết của mình, trình bày xong học sinh thứ hai(P2) cũng lên bảng trình bày bài viết của mình nên phải xóa bài viết của học sinh thứ nhất(P1), vì vậy bài của học sinh thứ nhất phải được ghi vào vở (PCB1). Nếu mà học sinh thứ nhất (P1) trở lên bảng lại thì phải xóa bài viết của học sinh thứ hai và trình bày lại bài viết của mình giống như lúc chưa xóa.
TranTrungTinh(I11C)- Tổng số bài gửi : 28
Join date : 30/08/2011
Tác dụng của khối PCB ( Khối kiểm soát tiến trình)
"- Nó có tác dụng lưu lại trạng thái của tiến trình tại thời điểm đang xét (thường xảy ra khi luân chuyển CPU) - Trạng thái của tiến trình này bao gồm : Các địa chỉ liên kết của tiến trình và dữ liệu, số hiệu tiến trình, bộ đếm lệnh, nội dung các thanh ghi, giới hạn 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ê về tiến trình hiện tại..."
Ngoài ra còn gì nữa không?
Ngoài ra còn gì nữa không?
Được sửa bởi nguyenthaihiep (I11C) ngày 16/9/2011, 10:04; sửa lần 1.
nguyenthaihiep (I11C)- Tổng số bài gửi : 34
Join date : 31/08/2011
Re: Thảo luận Bài 4
Câu trả lời ngắn gọn nhưng xúc tích thanks bạn nhéDaoVanHoang (I11C) đã viết:Tiến trình hệ thống là các tiến trình phục vụ hệ thống.
Còn tiến trình người dùng là các tiến trình phục vụ các chương trình của người sử dụng.
Câu trả lời của mình nghe có vẻ đơn giản quá nhỉ . Các bạn góp ý thêm cho mình với
Tranvancanh(I11C)- Tổng số bài gửi : 39
Join date : 16/09/2011
Mô hình luân chuyển CPU giữa 2 tiến tình Po,P1.
Trên mô hình trên sẽ có 3 tuyến thời gian làm việc:
- Tuyến bên trái thời gian làm việc của Po.
- Tuyến bên phải thời gian làm việc của p1.
- Tuyến ở giữa thời gian làm việc của HĐH.
Các bạn vào gop ý thêm mình nghe thầy giải thích nhanh quá nên chỉ hiểu và nhớ lại bao nhiêu. Các bạn góp ý thêm nhé
Tranvancanh(I11C)- Tổng số bài gửi : 39
Join date : 16/09/2011
Re: Thảo luận Bài 4
ToThiThuyTrang (I11C) đã viết: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
}
Một cách khác trong bài toán sản xuất và tiêu thụ với thuật giải phù hợp
* Phát biểu bài toán Sản xuất-Tiêu thụ.
- Giả sử có bộ nhớ đệm (buffer) bao gồm nhiều khoang chứa (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ó sản phẩm.
Tiến trình sản xuất (PRODUCER):
item nextProduced;
while (1)
{
while(((in+1)%BUFFER_SIZE)==out);
buffer[in] = nextProduced;
in = (in+1)%BUFFER_SIZE;
}
Tiến trình tiêu thụ (CONSUMER):
item nextConsumed;
while (1)
{
while(in==out); // khi buffer rỗng
nextConsumed = buffer[out];
out = (out+1)%BUFFER_SIZE;
}
nguyenthithuylinh (I11C)- Tổng số bài gửi : 23
Join date : 26/08/2011
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
nguyenthithuylinh (I11C)- Tổng số bài gửi : 23
Join date : 26/08/2011
Re: Thảo luận Bài 4
lamhuubinh(I91C) đã viết: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
Mình cũng có một ví dụ như là : chúng ta cùng có nhu cầu nối mạng Internet
nguyenthithuylinh (I11C)- Tổng số bài gửi : 23
Join date : 26/08/2011
Hiểu thêm về các chiến lược điều phối trong Hệ điều hành.
Ngoài những điều phối như:
- Điều phối chậm (Long-Term Scheduler): chọn 1 tiến trình từ job queue đưa sang qua Ready queue(chuyển từ New sang Ready). Mục đích: Cân bằng tải cho toàn hệ thống.
- Điều phối nhanh (Short-term scheduler):Chọn tiến trình sẽ chiếm CPU để xử lý( chuyển từ trạng thái Ready sang trạng thái Runing). Mục đích: giúp cho tiến trình công việc từ trạng thái Ready sang Running.
- Điều phối vừa (Medium-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 đó. Mục đích :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.
Hệ điều hành có thêm các điều phối khác:
- Điều phối FiFo: CPU được cấp phát cho tiến trình đầu tiên trong danh sách sẵn sàng có yêu cầu, là tiến trình được đưa vào hệ thống sớm nhất. Đây là thuật toán điều phối theo nguyên tắc độc quyền. Một khi CPU được cấp phát cho tiến trình, CPU chỉ được tiến trình tự nguyện giải phóng khi kết thúc xử lý hay khi có một yêu cầu nhập/xuất.
- Điều phối xoay vòng: Danh sách sẵn sàng được xử lý như một danh sách vòng, bộ điều phối lần lượt cấp phát cho từng tiến trình trong danh sách một khoảng thời gian sử dụng CPU gọi là quantum. Đây là một giải thuật điều phối không độc quyền : khi một tiến trình sử dụng CPU đến hết thời gian quantum dành cho nó, hệ điều hành thu hồi CPU và cấp cho tiến trình kế tiếp trong danh sách. Nếu tiến trình bị khóa hay kết thúc trước khi sử dụng hết thời gian quantum, hệ điều hành cũng lập tức cấp phát CPU cho tiến trình khác. Khi tiến trình tiêu thụ hết thời gian CPU dành cho nó mà chưa hoàn tất, tiến trình được đưa trở lại vào cuối danh sách sẵn sàng để đợi được cấp CPU trong lượt kế tiếp.
- Điều phối độ ưu tiên: Mỗi tiến trình được gán cho một độ ưu tiên tương ứng, tiến trình có độ ưu tiên cao nhất sẽ được chọn để cấp phát CPU đầu tiên. Độ ưu tiên có thể được định nghĩa nội tại hay nhờ vào các yếu tố bên ngoài. Độ ưu tiên nội tại sử dụng các đại lượng có thể đo lường để tính toán độ ưu tiên của tiến trình, ví dụ các giới hạn thời gian, nhu cầu bộ nhớ…Độ ưu tiên cũng có thể được gán từ bên ngoài dựa vào các tiêu chuẩn do hệđiều hành như tầm quan trọng của tiến trình, loại người sử dụng sỡ hữu tiến trình… Giải thuật điều phối với độ ưu tiên có thể theo nguyên tắc độc quyền hay không độc quyền. Khi một tiến trình được đưa vào danh sách các tiến trình sẵn sàng, độ ưu tiên của nó được so sánh với độ ưu tiên của tiến trình hiện hành đang xử lý. Giải thuật điều phốivới độ ưu tiên và không độc quyền sẽ thu hồi CPU từ tiến trình hiện hành để cấp phát cho tiến trình mới nếu độ ưu tiên của tiến trình này cao hơn tiến trình hiện hành. Một giải thuật độc quyền sẽ chỉ đơn giản chèn tiến trình mới vào danh sách sẵn sàng, và tiến trình hiện hành vẫn tiếp tục xử lý hết thời gian dành cho nó.
- Điều phối công việc ngắn nhất (Shortest-job-first SJF) : Khi CPU được tự do, nó sẽ được cấp phát cho tiến trình yêu cầu ít thời gian nhất để kết thúc- tiến trình ngắn nhất. Giải thuật này cũng có thể độc quyền hay không độc quyền. Sự chọn lựa xảy ra khi có một tiến trình mới được đưa vào danh sách sẵn sàng trong khi một tiến trình khác đang xử lý. Tiến trình mới có thể sỡ hữu một yêu cầu thời gian sử dụng CPU cho lần tiếp theo (CPU-burst) ngắn hơn thời gian còn lại mà tiến trình hiện hành cần xử lý. Giải thuật SJF không độc quyền sẽ dừng hoạt động của tiến trình hiện hành, trong khi giải thuật độc quyền sẽ cho phép tiến trình hiện hành tiếp tục xử lý.
Các bạn có ý kiến vào góp ý nhé, thanks các bạn đã đọc tin.
- Điều phối chậm (Long-Term Scheduler): chọn 1 tiến trình từ job queue đưa sang qua Ready queue(chuyển từ New sang Ready). Mục đích: Cân bằng tải cho toàn hệ thống.
- Điều phối nhanh (Short-term scheduler):Chọn tiến trình sẽ chiếm CPU để xử lý( chuyển từ trạng thái Ready sang trạng thái Runing). Mục đích: giúp cho tiến trình công việc từ trạng thái Ready sang Running.
- Điều phối vừa (Medium-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 đó. Mục đích :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.
Hệ điều hành có thêm các điều phối khác:
- Điều phối FiFo: CPU được cấp phát cho tiến trình đầu tiên trong danh sách sẵn sàng có yêu cầu, là tiến trình được đưa vào hệ thống sớm nhất. Đây là thuật toán điều phối theo nguyên tắc độc quyền. Một khi CPU được cấp phát cho tiến trình, CPU chỉ được tiến trình tự nguyện giải phóng khi kết thúc xử lý hay khi có một yêu cầu nhập/xuất.
- Điều phối xoay vòng: Danh sách sẵn sàng được xử lý như một danh sách vòng, bộ điều phối lần lượt cấp phát cho từng tiến trình trong danh sách một khoảng thời gian sử dụng CPU gọi là quantum. Đây là một giải thuật điều phối không độc quyền : khi một tiến trình sử dụng CPU đến hết thời gian quantum dành cho nó, hệ điều hành thu hồi CPU và cấp cho tiến trình kế tiếp trong danh sách. Nếu tiến trình bị khóa hay kết thúc trước khi sử dụng hết thời gian quantum, hệ điều hành cũng lập tức cấp phát CPU cho tiến trình khác. Khi tiến trình tiêu thụ hết thời gian CPU dành cho nó mà chưa hoàn tất, tiến trình được đưa trở lại vào cuối danh sách sẵn sàng để đợi được cấp CPU trong lượt kế tiếp.
- Điều phối độ ưu tiên: Mỗi tiến trình được gán cho một độ ưu tiên tương ứng, tiến trình có độ ưu tiên cao nhất sẽ được chọn để cấp phát CPU đầu tiên. Độ ưu tiên có thể được định nghĩa nội tại hay nhờ vào các yếu tố bên ngoài. Độ ưu tiên nội tại sử dụng các đại lượng có thể đo lường để tính toán độ ưu tiên của tiến trình, ví dụ các giới hạn thời gian, nhu cầu bộ nhớ…Độ ưu tiên cũng có thể được gán từ bên ngoài dựa vào các tiêu chuẩn do hệđiều hành như tầm quan trọng của tiến trình, loại người sử dụng sỡ hữu tiến trình… Giải thuật điều phối với độ ưu tiên có thể theo nguyên tắc độc quyền hay không độc quyền. Khi một tiến trình được đưa vào danh sách các tiến trình sẵn sàng, độ ưu tiên của nó được so sánh với độ ưu tiên của tiến trình hiện hành đang xử lý. Giải thuật điều phốivới độ ưu tiên và không độc quyền sẽ thu hồi CPU từ tiến trình hiện hành để cấp phát cho tiến trình mới nếu độ ưu tiên của tiến trình này cao hơn tiến trình hiện hành. Một giải thuật độc quyền sẽ chỉ đơn giản chèn tiến trình mới vào danh sách sẵn sàng, và tiến trình hiện hành vẫn tiếp tục xử lý hết thời gian dành cho nó.
- Điều phối công việc ngắn nhất (Shortest-job-first SJF) : Khi CPU được tự do, nó sẽ được cấp phát cho tiến trình yêu cầu ít thời gian nhất để kết thúc- tiến trình ngắn nhất. Giải thuật này cũng có thể độc quyền hay không độc quyền. Sự chọn lựa xảy ra khi có một tiến trình mới được đưa vào danh sách sẵn sàng trong khi một tiến trình khác đang xử lý. Tiến trình mới có thể sỡ hữu một yêu cầu thời gian sử dụng CPU cho lần tiếp theo (CPU-burst) ngắn hơn thời gian còn lại mà tiến trình hiện hành cần xử lý. Giải thuật SJF không độc quyền sẽ dừng hoạt động của tiến trình hiện hành, trong khi giải thuật độc quyền sẽ cho phép tiến trình hiện hành tiếp tục xử lý.
Các bạn có ý kiến vào góp ý nhé, thanks các bạn đã đọc tin.
Tranvancanh(I11C)- Tổng số bài gửi : 39
Join date : 16/09/2011
CHUYỂN NGỮ CẢNH
Định nghĩa chuyển ngữ cảnh
1. Khái niệm:
• Một chuyển ngữ cảnh (cũng đôi khi được gọi là một quá trình chuyển đổi hoặc chuyển đổi một nhiệm vụ) là chuyển đổi của CPU (đơn vị xử lý trung tâm) từ một quá trình hoặc sợi khác.
• Một quá trình (đôi khi được gọi là một nhiệm vụ) là một (tức là chạy) thực hiện thể hiện của một chương trình . Trong Linux , chủ đề là các quá trình nhẹ có thể chạy song song và chia sẻ một không gian địa chỉ (ví dụ, một loạt các địa điểm bộ nhớ ) và các nguồn lực khác với các quá trình cha mẹ của họ (tức là, các quy trình đã tạo ra chúng).
• Bối cảnh là nội dung của một CPU đăng ký và truy cập chương trình tại bất kỳ điểm nào trong thời gian. Đăng ký là một lượng nhỏ bộ nhớ rất nhanh bên trong của một CPU (như trái ngược với bộ nhớ RAM chậm hơn chính bên ngoài của CPU) được sử dụng để tăng tốc độ thực hiện các chương trình máy tính bằng cách cung cấp truy cập nhanh vào các giá trị thường được sử dụng, nói chung những người trong giữa phép tính. Một chương trình truy cập là một đăng ký chuyên ngành cho biết vị trí của CPU trong trình tự hướng dẫn của nó và nắm giữ một trong hai địa chỉ của người hướng dẫn đang được thực hiện hoặc địa chỉ của lệnh tiếp theo được thực hiện, tùy thuộc vào hệ thống cụ thể.
• Bối cảnh chuyển đổi có thể được mô tả chi tiết hơn một chút như hạt nhân (tức là cốt lõi của hệ điều hành) thực hiện các hoạt động sau đây đối với các quá trình (bao gồm cả chủ đề) trên CPU: (1) đình chỉ sự tiến triển của một quá trình và lưu trữ các CPU của nhà nước (tức là, bối cảnh) cho rằng quá trình một nơi nào đó trong bộ nhớ, (2) lấy bối cảnh quá trình tiếp theo từ bộ nhớ và khôi phục lại nó trong sổ đăng ký của CPU và (3) trở lại vị trí chỉ định bởi các truy cập chương trình (tức là, trở về các dòng mã mà tại đó quá trình này bị gián đoạn) để tiếp tục quá trình.
• Một chuyển ngữ cảnh đôi khi được mô tả như là hạt nhân đình chỉ thực hiện một quá trình CPU và nối lại thực hiện một số quá trình khác mà trước đây bị đình chỉ. Mặc dù từ ngữ này có thể giúp làm rõ các khái niệm, nó có thể gây nhầm lẫn trong chính nó, bởi vì một quá trình, theo định nghĩa, một ví dụ thực hiện của một chương trình. Vì vậy, các từ ngữ đình chỉ tiến triển của một quá trình có thể thích hợp hơn.
2. Bối cảnh bị chuyển mạch và chuyển mạch chế độ
• Chuyển mạch bối cảnh chỉ có thể xảy ra trong chế độ hạt nhân . Chế độ hạt nhân là một chế độ đặc quyền của CPU, trong đó chỉ có hạt nhân chạy và cung cấp truy cập vào tất cả các vị trí bộ nhớ và tất cả các tài nguyên hệ thống khác. Các chương trình khác, bao gồm các ứng dụng, ban đầu hoạt động trong chế độ người dùng , nhưng chúng có thể chạy các phần của mã hạt nhân thông qua các cuộc gọi hệ thống . Một cuộc gọi hệ thống là một yêu cầu trong hệ điều hành Unix như một quá trình hoạt động (ví dụ, một quá trình đang tiến triển trong CPU) cho một dịch vụ được thực hiện bởi hạt nhân, chẳng hạn như đầu vào / đầu ra (I / O) hoặc quá trình tạo ra ( tức là, tạo ra của một quá trình mới). I / O có thể được định nghĩa là bất kỳ chuyển động thông tin cho hay từ sự kết hợp giữa các CPU và bộ nhớ chính (tức là RAM), tức là thông tin liên lạc giữa này kết hợp và máy tính của người sử dụng (ví dụ như, thông qua bàn phím hoặc chuột), của nó lưu trữ thiết bị (ví dụ, ổ đĩa hoặc băng ổ đĩa), hoặc các máy tính khác.
• Sự tồn tại của hai chế độ này trong hệ điều hành Unix có nghĩa là một hoạt động tương tự, nhưng đơn giản là cần thiết khi một cuộc gọi hệ thống làm cho CPU để chuyển sang chế độ hạt nhân. Điều này được gọi là một chuyển đổi chế độ chứ không phải là một chuyển đổi bối cảnh, bởi vì nó không thay đổi quá trình hiện tại.
• Bối cảnh chuyển đổi là một tính năng cần thiết của hệ thống điều hành đa nhiệm . Một hệ thống điều hành đa nhiệm là một trong nhiều quy trình thực hiện trên một CPU duy nhất dường như đồng thời và không can thiệp với nhau. Ảo tưởng của đồng thời đạt được bằng các phương tiện thiết bị chuyển mạch bối cảnh đang xảy ra trong kế nhanh chóng (hàng chục hoặc hàng trăm lần mỗi giây). Các thiết bị chuyển mạch bối cảnh xảy ra như là kết quả của các quá trình tự nguyện từ bỏ thời gian của họ trong CPU hoặc là một kết quả của việc lên lịch thực hiện chuyển đổi khi một quá trình đã được sử dụng lát thời gian CPU của nó.
• Một chuyển ngữ cảnh cũng có thể xảy ra như là kết quả của một ngắt phần cứng, mà là một tín hiệu từ một thiết bị phần cứng (chẳng hạn như một chiếc đồng hồ bàn phím, chuột, modem hoặc hệ thống) để hạt nhân là một sự kiện (ví dụ, một phím bấm, di chuyển chuột hoặc xuất hiện của dữ liệu từ một mạng lưới kết nối) đã xảy ra .
• Intel 80386 và CPU cao hơn có hỗ trợ phần cứng cho các thiết bị chuyển mạch ngữ cảnh. Tuy nhiên, hầu hết các hệ điều hành hiện đại thực hiện chuyển đổi bối cảnh phần mềm, có thể được sử dụng trên bất kỳ CPU, chứ không phải là bối cảnh chuyển đổi phần cứng trong một nỗ lực để có được hiệu suất được cải thiện. Phần mềm chuyển đổi bối cảnh lần đầu tiên được thực hiện trong Linux cho các bộ vi xử lý Intel tương thích với các hạt nhân 2.4.
• Một lợi thế lớn tuyên bố cho chuyển đổi phần mềm bối cảnh đó, trong khi cơ chế phần cứng tiết kiệm gần như tất cả các nhà nước CPU, phần mềm có thể được chọn lọc hơn và tiết kiệm chỉ là phần nội dung đó thực sự cần phải được lưu và nạp lại. Tuy nhiên, có một số câu hỏi quan trọng này thực sự là nâng cao hiệu quả của bối cảnh chuyển đổi. Ủng hộ của nó cũng cho rằng bối cảnh chuyển đổi phần mềm cho phép khả năng cải thiện mã chuyển đổi, do đó tăng cường hơn nữa hiệu quả, và nó cho phép kiểm soát tốt hơn tính hợp lệ của dữ liệu đang được nạp.
3. Chi phí chuyển mạch ngữ cảnh
• Bối cảnh chuyển đổi tính toán chuyên sâu. Đó là, nó đòi hỏi thời gian xử lý đáng kể, có thể được về trình tự của nano giây cho mỗi của hàng chục hoặc hàng trăm các thiết bị chuyển mạch trong một giây. Như vậy, bối cảnh chuyển đổi đại diện cho một chi phí đáng kể cho hệ thống về thời gian của CPU và có thể, trên thực tế, hoạt động tốn kém nhất trên một hệ điều hành.
• Do đó, tập trung chủ yếu trong thiết kế của hệ điều hành đã được để tránh bối cảnh không cần thiết chuyển đến mức có thể. Tuy nhiên, điều này đã không được dễ dàng để thực hiện trong thực tế. Trong thực tế, mặc dù chi phí trong bối cảnh chuyển đổi đã được giảm khi được đo về số lượng tuyệt đối thời gian của CPU tiêu thụ, điều này dường như là do chủ yếu là để tăng tốc độ đồng hồ CPU hơn là cải tiến trong hiệu quả của bối cảnh chuyển đổi bản thân.
• Một trong những lợi thế nhiều tuyên bố cho Linux so với các hệ thống điều hành khác, bao gồm một số các hệ thống khác như Unix, là chi phí của nó rất thấp trong bối cảnh chuyển đổi và chuyển đổi chế độ.
1. Khái niệm:
• Một chuyển ngữ cảnh (cũng đôi khi được gọi là một quá trình chuyển đổi hoặc chuyển đổi một nhiệm vụ) là chuyển đổi của CPU (đơn vị xử lý trung tâm) từ một quá trình hoặc sợi khác.
• Một quá trình (đôi khi được gọi là một nhiệm vụ) là một (tức là chạy) thực hiện thể hiện của một chương trình . Trong Linux , chủ đề là các quá trình nhẹ có thể chạy song song và chia sẻ một không gian địa chỉ (ví dụ, một loạt các địa điểm bộ nhớ ) và các nguồn lực khác với các quá trình cha mẹ của họ (tức là, các quy trình đã tạo ra chúng).
• Bối cảnh là nội dung của một CPU đăng ký và truy cập chương trình tại bất kỳ điểm nào trong thời gian. Đăng ký là một lượng nhỏ bộ nhớ rất nhanh bên trong của một CPU (như trái ngược với bộ nhớ RAM chậm hơn chính bên ngoài của CPU) được sử dụng để tăng tốc độ thực hiện các chương trình máy tính bằng cách cung cấp truy cập nhanh vào các giá trị thường được sử dụng, nói chung những người trong giữa phép tính. Một chương trình truy cập là một đăng ký chuyên ngành cho biết vị trí của CPU trong trình tự hướng dẫn của nó và nắm giữ một trong hai địa chỉ của người hướng dẫn đang được thực hiện hoặc địa chỉ của lệnh tiếp theo được thực hiện, tùy thuộc vào hệ thống cụ thể.
• Bối cảnh chuyển đổi có thể được mô tả chi tiết hơn một chút như hạt nhân (tức là cốt lõi của hệ điều hành) thực hiện các hoạt động sau đây đối với các quá trình (bao gồm cả chủ đề) trên CPU: (1) đình chỉ sự tiến triển của một quá trình và lưu trữ các CPU của nhà nước (tức là, bối cảnh) cho rằng quá trình một nơi nào đó trong bộ nhớ, (2) lấy bối cảnh quá trình tiếp theo từ bộ nhớ và khôi phục lại nó trong sổ đăng ký của CPU và (3) trở lại vị trí chỉ định bởi các truy cập chương trình (tức là, trở về các dòng mã mà tại đó quá trình này bị gián đoạn) để tiếp tục quá trình.
• Một chuyển ngữ cảnh đôi khi được mô tả như là hạt nhân đình chỉ thực hiện một quá trình CPU và nối lại thực hiện một số quá trình khác mà trước đây bị đình chỉ. Mặc dù từ ngữ này có thể giúp làm rõ các khái niệm, nó có thể gây nhầm lẫn trong chính nó, bởi vì một quá trình, theo định nghĩa, một ví dụ thực hiện của một chương trình. Vì vậy, các từ ngữ đình chỉ tiến triển của một quá trình có thể thích hợp hơn.
2. Bối cảnh bị chuyển mạch và chuyển mạch chế độ
• Chuyển mạch bối cảnh chỉ có thể xảy ra trong chế độ hạt nhân . Chế độ hạt nhân là một chế độ đặc quyền của CPU, trong đó chỉ có hạt nhân chạy và cung cấp truy cập vào tất cả các vị trí bộ nhớ và tất cả các tài nguyên hệ thống khác. Các chương trình khác, bao gồm các ứng dụng, ban đầu hoạt động trong chế độ người dùng , nhưng chúng có thể chạy các phần của mã hạt nhân thông qua các cuộc gọi hệ thống . Một cuộc gọi hệ thống là một yêu cầu trong hệ điều hành Unix như một quá trình hoạt động (ví dụ, một quá trình đang tiến triển trong CPU) cho một dịch vụ được thực hiện bởi hạt nhân, chẳng hạn như đầu vào / đầu ra (I / O) hoặc quá trình tạo ra ( tức là, tạo ra của một quá trình mới). I / O có thể được định nghĩa là bất kỳ chuyển động thông tin cho hay từ sự kết hợp giữa các CPU và bộ nhớ chính (tức là RAM), tức là thông tin liên lạc giữa này kết hợp và máy tính của người sử dụng (ví dụ như, thông qua bàn phím hoặc chuột), của nó lưu trữ thiết bị (ví dụ, ổ đĩa hoặc băng ổ đĩa), hoặc các máy tính khác.
• Sự tồn tại của hai chế độ này trong hệ điều hành Unix có nghĩa là một hoạt động tương tự, nhưng đơn giản là cần thiết khi một cuộc gọi hệ thống làm cho CPU để chuyển sang chế độ hạt nhân. Điều này được gọi là một chuyển đổi chế độ chứ không phải là một chuyển đổi bối cảnh, bởi vì nó không thay đổi quá trình hiện tại.
• Bối cảnh chuyển đổi là một tính năng cần thiết của hệ thống điều hành đa nhiệm . Một hệ thống điều hành đa nhiệm là một trong nhiều quy trình thực hiện trên một CPU duy nhất dường như đồng thời và không can thiệp với nhau. Ảo tưởng của đồng thời đạt được bằng các phương tiện thiết bị chuyển mạch bối cảnh đang xảy ra trong kế nhanh chóng (hàng chục hoặc hàng trăm lần mỗi giây). Các thiết bị chuyển mạch bối cảnh xảy ra như là kết quả của các quá trình tự nguyện từ bỏ thời gian của họ trong CPU hoặc là một kết quả của việc lên lịch thực hiện chuyển đổi khi một quá trình đã được sử dụng lát thời gian CPU của nó.
• Một chuyển ngữ cảnh cũng có thể xảy ra như là kết quả của một ngắt phần cứng, mà là một tín hiệu từ một thiết bị phần cứng (chẳng hạn như một chiếc đồng hồ bàn phím, chuột, modem hoặc hệ thống) để hạt nhân là một sự kiện (ví dụ, một phím bấm, di chuyển chuột hoặc xuất hiện của dữ liệu từ một mạng lưới kết nối) đã xảy ra .
• Intel 80386 và CPU cao hơn có hỗ trợ phần cứng cho các thiết bị chuyển mạch ngữ cảnh. Tuy nhiên, hầu hết các hệ điều hành hiện đại thực hiện chuyển đổi bối cảnh phần mềm, có thể được sử dụng trên bất kỳ CPU, chứ không phải là bối cảnh chuyển đổi phần cứng trong một nỗ lực để có được hiệu suất được cải thiện. Phần mềm chuyển đổi bối cảnh lần đầu tiên được thực hiện trong Linux cho các bộ vi xử lý Intel tương thích với các hạt nhân 2.4.
• Một lợi thế lớn tuyên bố cho chuyển đổi phần mềm bối cảnh đó, trong khi cơ chế phần cứng tiết kiệm gần như tất cả các nhà nước CPU, phần mềm có thể được chọn lọc hơn và tiết kiệm chỉ là phần nội dung đó thực sự cần phải được lưu và nạp lại. Tuy nhiên, có một số câu hỏi quan trọng này thực sự là nâng cao hiệu quả của bối cảnh chuyển đổi. Ủng hộ của nó cũng cho rằng bối cảnh chuyển đổi phần mềm cho phép khả năng cải thiện mã chuyển đổi, do đó tăng cường hơn nữa hiệu quả, và nó cho phép kiểm soát tốt hơn tính hợp lệ của dữ liệu đang được nạp.
3. Chi phí chuyển mạch ngữ cảnh
• Bối cảnh chuyển đổi tính toán chuyên sâu. Đó là, nó đòi hỏi thời gian xử lý đáng kể, có thể được về trình tự của nano giây cho mỗi của hàng chục hoặc hàng trăm các thiết bị chuyển mạch trong một giây. Như vậy, bối cảnh chuyển đổi đại diện cho một chi phí đáng kể cho hệ thống về thời gian của CPU và có thể, trên thực tế, hoạt động tốn kém nhất trên một hệ điều hành.
• Do đó, tập trung chủ yếu trong thiết kế của hệ điều hành đã được để tránh bối cảnh không cần thiết chuyển đến mức có thể. Tuy nhiên, điều này đã không được dễ dàng để thực hiện trong thực tế. Trong thực tế, mặc dù chi phí trong bối cảnh chuyển đổi đã được giảm khi được đo về số lượng tuyệt đối thời gian của CPU tiêu thụ, điều này dường như là do chủ yếu là để tăng tốc độ đồng hồ CPU hơn là cải tiến trong hiệu quả của bối cảnh chuyển đổi bản thân.
• Một trong những lợi thế nhiều tuyên bố cho Linux so với các hệ thống điều hành khác, bao gồm một số các hệ thống khác như Unix, là chi phí của nó rất thấp trong bối cảnh chuyển đổi và chuyển đổi chế độ.
DoThuyTien16 (I11C)- Tổng số bài gửi : 15
Join date : 26/08/2011
Age : 36
Đến từ : Lâm Đồng
Trình bày mô hình chuyển trạng thái của tiến trình?
Tiến trình P1 vào hàng đợi Job-Queue ở trạng thái New, đợi một khoảng thời gian của quá trình điều phối chậm (Scheduler Long Term) của HĐH để chọn tiến trình, sau khi được O.S chọn, P1 chuyển sang hàng đợi Ready Queue và ở trạng thái Ready. Lúc này P1 chỉ đợi cấp CPU và Running.
Sau một khoảng thời gian Running, tiến trình P2 xuất hiện. Lúc này, HĐH sẽ ghi lại thông tin của P1 vào thanh PCB1 bao gồm những thông tin: con trỏ, trạng thái của P1, số hiệu của tiến trình P1, nội dung của P1...Và chuyển P1 sang hàng đợi Waiting và chuyển trạng thái Ready. Lúc này, P2 sẽ được cấp CPU và Running. Và sau một khoảng thời gian Running, P2 cũng sẽ chuyển sang hàng đợi Waiting và chuyển trạng thái Ready, lúc này HĐH cũng ghi lại thông tin vào thanh ghi PCB2 như đã làm ở P1. Sau đó, HĐH sẽ load lại thông tin của PCB1 và P1 tiếp tục Running. Quá trình này cũng sẽ lập lại cho P2. Đến khi P1 và P2 kết thúc.
Tại một thời điểm, chỉ có một tiến trình có thể nhận trạng thái running trên một bộ xử lý bất kỳ. Trong khi đó, nhiều tiến trình có thể ở trạng thái Blocked hay ready. Các cung chuyển tiếp trong sơ đồ chuyển trạng thái biểu diễn sáu sự chuyển trạng thái có thể xảy ra trong các điều kiện sau:
- Tiến trình mới tạo lập được đưa vào hệ thống.
- Bộ điều phối cấp phát cho tiến trình một khoảng thời gian sử dụng CPU.
- Tiến trình kết thúc.
- Tiến trình yêu cầu một tài nguyên nhưng chưa được đáp ứng vì tài nguyên chưa sẵn sàng để cấp phát tại thời điểm đó, hoặc tiến trình phải chờ một sự kiện hay thao tác nhập xuất.
- Bộ điều phối chọn một tiến trình khác để cho xử lý .
- Tài nguyên mà tiến trình yêu cầu đã sẵn sàng để cấp phát, hay sự kiện hoặc thao tác nhập/xuất tiến trình đang đợi hoàn tất.
LeTanDat (I11C)- Tổng số bài gửi : 24
Join date : 30/08/2011
Trang 2 trong tổng số 13 trang • 1, 2, 3, ... 11, 12, 13
Trang 2 trong tổng số 13 trang
Permissions in this forum:
Bạn không có quyền trả lời bài viết