Thảo luận Bài 4

Trang 3 trong tổng số 9 trang Previous  1, 2, 3, 4, 5, 6, 7, 8, 9  Next

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down

Tắc nghẽn (Deadlock)

Bài gửi  NguyenThiThom(I22A) on 17/3/2013, 02:08

Tắc nghẽn (Deadlock) là 1 tập hợp các tiến trình được định nghĩa ở trong tình trạng tắc nghẽn khi mỗi tiến trình trong tập hợp đều chờ đợi một sự kiện mà chỉ có một tiến trình khác trong tập hợp mới có thể phát sinh được.

Nói cách khác, mỗi tiến trình trong tập hợp đều chờ được cấp phát một tài nguyên hiện đang bị một tiến trình khác cũng ở trạng thái blocked chiếm giữ. Như vậy không có tiến trình nào có thể tiếp tục xử lý , cũng như giải phóng tài nguyên cho tiến trình khác sử dụng, tất cả các tiến trình trong tập hợp đều bị khóa vĩnh viễn !

Ví dụ:
Vấn đề Bữa ăn tối của các triết gia : 5 nhà triết học cùng ngồi ăn tối với món spaghetti nổi tiếng. Mỗi nhà triết học cần dùng 2 cái nĩa để có thể ăn spaghetti . Nhưng trên bàn chỉ có tổng cộng 5 cái nĩa để xen kẽ với 5 cái đĩa. Mỗi nhà triết học sẽ suy ngẫm các triết lý của mình đến khi cảm thấy đói thì dự định lần lượt cầm 1 cái nĩa bên trái và 1 cái nĩa bên phải để ăn. Nếu cả 5 nhà triết học đều cầm cái nĩa bên trái cùng lúc, thì sẽ không có ai có được cái nĩa bên phải để có thể bắt đầu thưởng thức spaghetti . Đây chính là tình trạng tắc nghẽn.

NguyenThiThom(I22A)

Tổng số bài gửi : 28
Join date : 11/03/2013

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Thảo luận Bài 4

Bài gửi  NguyenHoangKimVu (I11C) on 17/3/2013, 09:37

DoThiHaDuc(I22B) đã viết:Cộng tác giữa các tiến trình gồm 4 lý do chính sau:
- Chia sẻ thông tin (Information Sharing): một tiến trình sử dụng thông tin do tiến trình đó cung cấp.
- Tăng tốc tính toán (Computation Seepdup): 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ể (Modurality): 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 1 lúc như: 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ả, …
Ví dụ : Học nhóm – Học riêng lẻ.
Theo mình thấy thì nhu cầu nối mạng internet của chúng ta hiện này cũng là một dạng cộng tác.

NguyenHoangKimVu (I11C)

Tổng số bài gửi : 62
Join date : 25/08/2011

Xem lý lịch thành viên

Về Đầu Trang Go down

CÂU 1:khái niệm tiến trình,trạng thái tiến trình,sơ đồ chuyển trạng thái tiến trình.

Bài gửi  vivanbieu(I22B) on 17/3/2013, 09:50

Tiến trình:
-Quá trình (process) là trạng thái tức thời của một chương trình đang chạy trên máy tính. Nó bao gồm bộ nhớ cần thiết để chạy chương trình (không gian địa chỉ của quá trình) và khả năng kiểm soát hiện trạng của bộ xử lý trong quá trình thực thi chương trình (tiến trình điều khiển của quá trình). Luồng (thread) tương tự như quá trình nhưng chỉ bao gồm tiến trình điều khiển. Nhiều luồng sử dụng không gian địa chỉ của một quá trình.
Quá trình và luồng có chung một mục đích: buộc máy tính phải làm nhiều việc hơn tại một thời điểm. Để làm điều đó, bộ xử lý (hay các bộ xử lý) phải chuyển đổi một cách trơn tru giữa các tác vụ, điều này đòi hỏi chương trình ứng dụng phải được thiết kế để chia sẻ tài nguyên máy tính.
Đó là lý do tại sao lập trình viên cần chia những gì chương trình phải làm thành quá trình và luồng.

Các trạng thái tiến trình
Từ khi được đưa vào hệ thống cho đến khi kết thúc tiến trình tồn tại ở các trạng thái khác nhau. Trạng thái của tiến trình tại một thời điểm được xác định bởi hoạt động hiện thời của tiến trình tại thời điểm đó. Tiến trình hai trạng thái: Một số ít hệ điều hành chỉ cho phép tiến trình tồn tại ở một trong hai trạng thái: Not Running và Running. Khi hệ điều hành tạo ra một tiến trình mới, hệ điều hành đưa tiến trình đó vào hệ thống ở trạng thái Not Running, tiến trình ở trạng thái này để chờ được chuyển sang trạng thái Running. Vì một lý do nào đó, tiến trình đang thực hiện bị ngắt thì bộ điều phối tiến trình của hệ điều hành sẽ thu hồi lại processor của tiến trình này và chọn một tiến trình ở trạng thái Not running để cấp processor cho nó và chuyển nó sang trạng thái Running. Tiến trình bị thu hồi processor sẽ được chuyển về lại trạng thái Not running.

Tại một thời điểm xác định chỉ có duy nhất một tiến trình ở trạng thái Runnig, nhưng có thể có nhiều tiến trình ở trạng thái Not running, các tiến trình ở trạng thái Not running được chứa trong một hàng đợi (Queue). Tiến trình đang ở trạng thái Running bị chuyển sang trạng thái Not running sẽ được đưa vào hàng đợi. Hình vẽ sau đây mô tả việc chuyển trạng thái tiến trình trong các hệ điều hành sử dụng 2 trạng thái tiến trình.
Tiến trình ba trạng thái: Đa số hệ điều hành đều cho phép tiến trình tồn tại ở một trong ba trạng thái, đó là: ready, running, blocked:
• Trạng thái Ready (sẵn sàng): Ngay sau khi khởi tạo tiến trình, đưa
tiến trình vào hệ thống và cấp phát đầy đủ tài nguyên (trừ processor) cho tiến trình,
hệ điều hành đưa tiến trình vào trạng thái ready. Hay nói cách khác, trạng thái
ready là trạng thái của một tiến trình trong hệ thống đang chờ được cấp processor
để bắt đầu thực hiện.
• Trạng thái Running (thực hiện): Là trạng thái mà tiến trình đang được sở hữu processor để hoạt động, hay nói cách khác là các chỉ thị của tiến trình đang được thực hiện/ xử lý bởi processor.
• Trạng thái Blocked (khoá): Là trạng thái mà tiến trình đang chờ để được cấp phát thêm tài nguyên, để một sự kiện nào đó xảy ra, hay một quá trình vào/ra kết thúc.

vivanbieu(I22B)

Tổng số bài gửi : 27
Join date : 09/03/2013

Xem lý lịch thành viên

Về Đầu Trang Go down

CÂU 4: TRÌNH BÀY NHỮNG LÝ DO CỘNG TÁC GIỮA CÁC TIẾN TRÌNH?

Bài gửi  vivanbieu(I22B) on 17/3/2013, 10:01

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ụ: 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ụ: 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ụ : 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ụ : 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

vivanbieu(I22B)

Tổng số bài gửi : 27
Join date : 09/03/2013

Xem lý lịch thành viên

Về Đầu Trang Go down

Tiến trình khác Chương trình như thế nào?

Bài gửi  vivanbieu(I22B) on 17/3/2013, 10:19

- 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.

vivanbieu(I22B)

Tổng số bài gửi : 27
Join date : 09/03/2013

Xem lý lịch thành viên

Về Đầu Trang Go down

Tại sao phải có Điều phối chậm, Điều phối nhanh và Điều phối vừa?

Bài gửi  vivanbieu(I22B) on 17/3/2013, 10:22

+ Long-term scheduler (or job scheduler)
Chọn process nào sẽ được đưa vào ready queue (từ New chuyển sang Ready)
+Short-term scheduler (or CPU scheduler)
Chọn process nào sẽ được chiếm CPU để xử lý (từ Ready chuyển sang Running)
+ 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.


thấy mấy câu hỏi giúp mình hiểu thêm xíu xíu về bài này nên up lên,có gì các bạn thêm bớt giùm nha

vivanbieu(I22B)

Tổng số bài gửi : 27
Join date : 09/03/2013

Xem lý lịch thành viên

Về Đầu Trang Go down

Hai phương thức liên lạc giữa các tiến trình.

Bài gửi  vivanbieu(I22B) on 17/3/2013, 10:26

. 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
[b]

vivanbieu(I22B)

Tổng số bài gửi : 27
Join date : 09/03/2013

Xem lý lịch thành viên

Về Đầu Trang Go down

Tiến trình trong hệ điều hành

Bài gửi  LeVanVan (I22B) on 17/3/2013, 10:39

1/ Khái niệm tiến trình
Trong hệ thống đa chương có thể thể thực hiện nhiều tác vụ đồng thời.
+Việc thực hiện đồng thời này được hiện bằng cách chuyển đổi CPU qua lại giữa các chương trình. Điều này tạo cảm giác có nhiều chương trình thực hiện đồng thời.
+Trong hệ thống như vậy tất cả phần mềm được tổ chức thành một số tiến trình.
+Một tiến trình là một chương trình đang được xử lý, sở hữu con trỏ lệnh , tập các thanh ghi, biến và để hoàn thành nhiệm vụ của mình một tiến trình phải sử dụng các tài nguyên máy tính như CPU, bộ nhớ chính, các tập tin và thiết bị nhập xuất.
+ Ý tưởng là có thể xem như mỗi tiến trình sở hữu một CPU ảo cho riêng mình, nhưng trong thực tế chỉ có một bộ xử lý thật sự được chuyển đổi qua lại giữa các tiến trình.
+Hệ điều hành chịu trách nhiệm sử dụng một thuật toán điều phối để quyết định thời điểm cần dừng một tiến trình để thực hiện một tiến trình khác
2/ Các trạng thái của tiến trình
+Trạng thái của một tiến trình tại một thời điểm được xác định bằng hoạt động hiện thời của tiến trính đó.
+Tại một thời điểm một tiến trình có thể nhận một trong các trạng thái sau đây:
- Mới tạo: Tiến trình đang được tạo lập.
- Running: các chỉ thị của tiến trình đang được xử lý.
- Blocked: Tiến trình chờ được cấp phát một tài nguyên hay chờ một sự kiện nào đó xảy ra.
- Ready: Tiến trình chờ cấp phát CPU để xử lý.
- Kết thúc : Tiến trình hoàn tất xử lý.
+Mô hình chuyển đổi giữa các trạng thái:

Mô hình
1) Tiến trình mới tạo được đưa vào hệ thống.
2) Bộ lập lịch cấp phát cho tiến trình một khoảng thời gian sử dụng CPU
3) Tiến trình kết thúc
4)Tiến trình yêu cầu một tài nguyên nhưng chưa được đáp ứng hoặc phải chờ thao tác nhập xuất.
5) Bộ lập lịch thu hồi CPU và cấp phát cho tiến trình khác
(6) Tài nguyên mà tiến trình yêu cầu đã được cấp phát hay thao tác nhập xuất đã hoàn tất.
[center]

LeVanVan (I22B)

Tổng số bài gửi : 12
Join date : 10/03/2013

Xem lý lịch thành viên

Về Đầu Trang Go down

Ưu điểm của điều phối chậm

Bài gửi  VoDucDiDaiXuan(I22A) on 17/3/2013, 11:03

Điều phối chậm có 2 hướng:CPU và I/O
Nếu ta chọn toàn hướng CPU:chọn không đúng,nhiều tiến trình sai->CPU nóng,ảnh hưởng đến các tiến trình khác
Nếu ta chọn toàn hướng I/O:thời gian trống nhiều,CPU rãnh->lãng phí và tốn kém khi mua CPU tốt
VD:Nấu cháo chỉ bằng 1 loại gạo nếp OR gạo tẻ thì cháo sẽ không ngon(lúc này ta sẽ tốn ít thời gian cho việc chọn gạo).Nhưng nếu ta nấu cháo bằng cả 2 loại theo 1 tỉ lệ nhât định thì nồi cháo sẽ ngon(lúc này ta sẽ tốn nhìu thời gian cho việc chọn gạo hơn)
Vậy Điều phối chậm tuy lúc đầu sẽ mất khá nhiều thời gian,nhưng về lâu dài sẽ cho nhiều lợi ích

VoDucDiDaiXuan(I22A)

Tổng số bài gửi : 15
Join date : 12/03/2013

Xem lý lịch thành viên

Về Đầu Trang Go down

Phân biệt các loại trình điều phối

Bài gửi  MaiXuanSon (I22B) on 17/3/2013, 11:05

NguyenHoangThien(I22B) đã viế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ó 1 chiếc ô tô (CPU). Trong công ty có nhiều nhân viên cần đi công tác (nhiều process). Ô tô (CPU) phải phục vụ những nhân viên (process) đó --> Ô tô (CPU) luôn trong trạng thái bận
. Hướng I/O: tính toán ít, nhiều I/O
Ví dụ: Công ty có 1 chiếc ô tô (CPU), các nhân viên trong công ty chỉ ngồi nghiên cứu (nhiều I/O). Ô tô luôn để trong ga ra không có người sử dụng. Do đó 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ụ: Công ty có 1 ô tô (CPU). Trong công ty có nhiều nhân viên có nhu cầu đi công tác hơn là ngồi nghiên cứu và ngược lại. Do đó ban lãnh đạo công ty điều phối bằng cách cho nhân viên có nhu cầu công tác cao hơn sử dụng ô tô trong khi những nhân viên có nhu cầu nghiên cứu ở lại. Sau đó sẽ luân chuyển cho những nhân viên nghiên cứu đi công tác và những nhân viên đã đi công tác trở về trạng thái chờ hoặc về nghiên cứu.

Câu này chỉ cần nêu 2 trình điều phối " Long Term Scheduler và Short Term Schedule" thôi.

MaiXuanSon (I22B)

Tổng số bài gửi : 49
Join date : 11/03/2013
Age : 30

Xem lý lịch thành viên

Về Đầu Trang Go down

Câu 5:Bài toán tiêu thụ

Bài gửi  VoDucDiDaiXuan(I22A) on 17/3/2013, 13:35

VD:Giả sử các Khoa của OU là nhà sản xuất(Producer),sinh viên ở các khoa là sản phẩm(product),các công ty tuyển dụng là nhà tiêu thụ(Consumer).Vào thời gian tuyển dụng,các Khoa sẽ xếp sv vào 1 phòng (BUFFER).Rồi nhà tiêu thụ sẽ đến đấy và lấy các sinh viên
Cấu trúc bộ nhớ đệm:
#define BUFFER_SIZE 10
typedef struct
{
…//Mô tả các thành phần của 1 khoang chứa
}item;
item Buffer[BUFFER_SIZE];//Bộ nhớ đệm
int in=0; //Con trỏ tới vị trí trống kế tiếp
int out=0; //Con trỏ tới vị trí lấy tiếp theo
Tiến trình sản xuất
item nextProduced;
while(1) {
//Tạo 1 sản phẩm & gửi vào biến nextProduced
while(((in+1) % BUFFER_SIZE)== out)
//Quản lí tại đây khi Buffer đầy
buffer[in]= nextProduced;
in=(in+1) % BUFFER_SIZE ;// Kiểm tra mảng xoay vòng
//Số dư phép chia nguyên
}
Tiến trình tiêu thụ:
item nextConsumed;
while (1)
{
while(in == out) ; //Quản lý tại đây khi Buffer rỗng
nextConsumed=buffer[out];
out=(out+1) % BUFFER_SIZE;
//tiêu thụ sản phẩm trong nextConsumed
}

VoDucDiDaiXuan(I22A)

Tổng số bài gửi : 15
Join date : 12/03/2013

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Thảo luận Bài 4

Bài gửi  NguyenManhHuy(I22B) on 17/3/2013, 13:43

vivanbieu(I22B) đã viết:- 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.
Trên lý thuyết bạn nói như vậy đã đúng rồi nhưng theo mình lại có 1 ý khác đó là tiến trình là quá trình hoạt động của một hoặc nhiều chương trình cùng hoạt động trong 1 khoảng thời gian nhất định, còn chương trình chỉ mang tính chất là 1 ứng dụng để giúp tiến trình hoạt động.
không biết như vậy có đúng ko...hi

NguyenManhHuy(I22B)

Tổng số bài gửi : 30
Join date : 09/03/2013
Age : 28
Đến từ : 12H1010047

Xem lý lịch thành viên

Về Đầu Trang Go down

SO SÁNH ĐA LUỒNG VỚI ĐA TIẾN TRÌNH

Bài gửi  TranVanDucHieu(I22B) on 17/3/2013, 14:34

ĐẦU TIÊN XIN NÓI VỀ
  • CÔNG NGHỆ ĐA LUỒNG


- Đảm bảo được khả năng đáp ứng của tiến trình tốt hơn, khi lập trình đa luồng thì một khi 1 luồng có sự cố thì luồng khác vẫn làm việc, vẫn phản hồi ,trong trường hợp lập trình đơn luồng khi gặp sự cố thì luồng đó sẽ chậm và làm chậm luôn cả tiến trình, đa luồng một ứng dụng giao tiếp cho phép một chương trình tiếp tục chạy thậm chí nếu một phần của nó bị khóa hay đang thực hiện một thao tác dài, do đó gai tăng sự đáp ứng đối với người dùng, Ví dụ : một trình duyệt web vẫn có thể đáp ứng người dùng bằng một luồng trong khi vẫn nạp bằng một luồng khác.
Ví dụ : Các cô ở tổng đài 108 là các luồng , khi khách hàng điện thoại hỏi 108, thì một trong các cô (người thứ nhất) sẽ trả lời, nếu trong thời điểm đó khách hàng thứ hai gọi 108,thì một trong các cô (cô thứ 2) còn lại sẽ trả lời
- Theo mặc định các luồng có thể dùng chung bộ nhớ và tai nguyên của luồng cha. Thuận lợi của việc chia sẻ mã là nó cho phép một ứng dụng có nhiều hoạt động của các luồng khác nằm trong cùng không gian, địa chỉ,vài luồng cùng vận hành trong một vùng địa chỉ dễ dùng chung tài nguyên hơn so với trường hợp đa tiến trình.
Ví dụ : trong nhà có kệ sách, xe máy, máy vi tính … mọi người có thể dùng chung và sử dụng chung kệ sách, xe máy, máy vi tính. Trong khi không thể dùng chung những đồ dùng trên với nhà khác được
Trong lớp chúng ta có thể dùng bảng củ lớp mình, chúng ta có thể chia sẻ các thông tin cần thiết cho tất cả các thành viên ở trong lớp biết,trong khi chúng ta khong thể dùng chung bảng của lớp khác để chia sẻ thông tin cho lớp mình được.
- Tiết kiệm (Economy) : Cấp phát bộ nhớ và tài nguyên cho tiến trình là công việc rất tốn kém. Do luồng có thể dùng chung tài nguyên với luồng cha và các luồng khác, việc tạo lập ngữ cảnh cũng nhanh hơn (Solaris2, tạo tiến trình chậm hơn 30 lần, chuyển ngữ cảnh chậm hơn 5 lần
Ví dụ : Các bạn trong lớp là các luồng đang dùng chung một cái bảng của lớp, ai cần ghi thì ghi, ai cần thì chụp hình về xem
Có thể bố trí một chỗ ngồi ở trong lớp cho một bạn đến sau dễ dàng hơn việc làm một chiếc ghế khác cho bạn đó.
- Chuyển ngữ cảnh từ luồng này sang luồng khác thì nhanh hơn chuyển ngữ cảnh từ tiến trình này sang tiến trình khác.
- Tận dụng được ưu thế kiến trúc đa xử lý (nhiều CPU). Khi đa luồng thì 1 luồng dùng CPU này và 1 luồng dùng CPU khác sẽ nhanh hơn và các luồng có thể làm việc song song , mỗi luồng có thể chạy bởi CPU riêng. Tiến trình đa luồng sẽ làm việc nhanh hơn tiến trình đơn luồng.
- Lập trình đa luồng dễ dàng hơn lập trình đa tiến trình
  • ĐA TIẾN TRÌNH

- tất cả các phần mềm trong hệ thống được tổ chức thành một số những tiến trình (process). Tiến trình là một chương trình đang xử lý, sỡ hữu một con trỏ lệnh, tập các thanh ghi và các biến. Để hoàn thành tác vụ của mình, một tiến trình có thể cần đến một số tài nguyên – như CPU, bộ nhớ chính, các tập tin và thiết bị nhập/xuất.

- Cần phân biệt hai khái niệm chương trình và tiến trình. Một chương trình là một thực thể thụ động, chứa đựng các chỉ thị điều khiển máy tính để tiến hành một tác vụ nào đó ; khi cho thực hiện các chỉ thị này, chương trình chuyển thành tiến trình, là một thực thể hoạt động, với con trỏ lệnh xác định chỉ thị kế tiếp sẽ thi hành, kèm theo tập các tài nguyên phục vụ cho hoạt động của tiến trình.

- Về mặt ý niệm, có thể xem như mỗi tiến trình sỡ hữu một bộ xử lý ảo cho riêng nó, nhưng trong thực tế, chỉ có một bộ xử lý thật sự được chuyển đổi qua lại giữa các tiến trình. Sự chuyển đổi nhanh chóng này được gọi là sự đa chương(multiprogramming) . Hệ điều hành chịu trách nhiệm sử dụng một thuật toán điều phối để quyết định thời điểm cần dừng hoạt động của tiến trình đang xử lý để phục vụ một tiến trình khác, và lựa chọn tiến trình tiếp theo sẽ được phục vụ. Bộ phận thực hiện chức năng này của hệ điều hành được gọi là bộ điều phối (scheduler).

ĐA LUỒNG VỚI ĐA TIẾN TRÌNH

1. Giống nhau:

- Điều có thông tin trạng thái

- Luồng còn được gọi là tiến trình nhẹ.

- Nhiều luồng hoặc nhiều tiến trình có thể liên quan đến 1 chương trình.

- Dùng chung tài nguyên từ tiến trình(hoạc luồng) cha.

- Cùng có chức năng xử lý song song.

- Chia sẻ tài nguyên cho nhau.

- Tăng tốc tính toán.

- Đảm bảo tính đơn thể.

2. Khác nhau:

- Các luồng cùng vận hành trong cùng 1 địa chỉ vì vậy dễ dùng chung tài nguyên hơn đa tiến trình

- Các luồng chung tài nguyên với cha và các luồng khác nên việc tạo lập và chuyển ngữ cảnh cũng nhanh hơn và ít chiếm tài nguyên hơn tiến trình.

- Cấp phát bộ nhớ và tài nguyên cho tiến trình thì tốn kém hơn luồng.

- Lập trình đa luồng thì dễ hơn lập trình đa tiến trình. Bởi vì trao đổi dữ liệu của lập trình đa luồng dễ hơn việc trao dữ liệu của lập trình đa tiến trình

- Đa tiến trình tốn resources hơn đa luồng.

TranVanDucHieu(I22B)

Tổng số bài gửi : 9
Join date : 13/03/2013

Xem lý lịch thành viên

Về Đầu Trang Go down

VD VỀ PCB

Bài gửi  NguyenVanLanh (I22A) on 17/3/2013, 14:58

Trong buổi làm bài tập lớp học, thầy gọi các bạn lên bảng làm bài tập. Cái bảng đóng vai trò là trung tâm lưu trử dữ liệu. Khi thầy gọi bạn A,B và C lên bảng làm bài tập. Sau một lúc thầy gọi bạn A về chổ và thầy lấy máy chụp hình chụp lại những gì A làm rồi lưu vào trong PCB của bạn A cụ thể là Trang giấy A. Lần lượt thầy gọi bạn D lên bảng làm bài tập, thấy hết chổ D tự xóa dữ liệu của A đã ghi trên bảng dể tiếp tục làm bài tập. Cứ như vậy đến lần lượt các bạn khác. Ngày sau thầy gọi bạn A lên bảng làm bài tập phần còn lại thì A chỉ việc lấy bài tập đã lưu trong PCB ghi lên bảng thôi và tiếp tục làm tiếp phần bài tập tiếp theo.

NguyenVanLanh (I22A)

Tổng số bài gửi : 21
Join date : 08/03/2013

Xem lý lịch thành viên

Về Đầu Trang Go down

Lí do cộng tác giữa các tiến trình

Bài gửi  LeVanVan (I22B) on 17/3/2013, 15:33

Nhu cầu liên lạc giữa các tiến trình
Trong môi trường đa chương, một tiến trình không đơn độc trong hệ thống , mà có thể ảnh hưởng đến các tiến trình khác , hoặc bị các tiến trình khác tác động. Nói cách khác, các tiến trình là những thực thể độc lập , nhưng chúng vẫn có nhu cầu liên lạc với nhau để :
1/ Chia sẻ thông tin: nhiều tiến trình có thể cùng quan tâm đến những dữ liệu nào đó, do vậy hệ điều hành cần cung cấp một môi trường cho phép sự truy cập đồng thời đến các dữ liệu chung.
2/ Hợp tác hoàn thành tác vụ: đôi khi để đạt được một sự xử lý nhanh chóng, người ta phân chia một tác vụ thành các công việc nhỏ có thể tiến hành song song. Thường thì các công việc nhỏ này cần hợp tác với nhau để cùng hoàn thành tác vụ ban đầu, ví dụ dữ liệu kết xuất của tiến trình này lại là dữ liệu nhập cho tiến trình khác …Trong các trường hợp đó, hệ điều hành cần cung cấp cơ chế để các tiến trình có thể trao đổi thông tin với nhau.

LeVanVan (I22B)

Tổng số bài gửi : 12
Join date : 10/03/2013

Xem lý lịch thành viên

Về Đầu Trang Go down

Cùng giải quyết câu hỏi của bạn

Bài gửi  PhanPhamDanPhuong(I22B) on 17/3/2013, 16:00

DangQuangBinh(I22B) đã viết:Hôm qua,thầy có nói về vấn đề tại sao không lấy hết các tiến trình từ trạng thái new sang trạng thái ready,em chưa rõ lắm thầy giải thích lại giúp em với.....

Như Thầy đã nói thì ở New cũng có hàng đợi như ở Ready và Waiting. Như vậy khi các tiến trình vừa được tạo (tức là đang ở New) cũng sẽ xếp hàng tuần tự. Ready: ở đây tiến trình chờ để được ấn định CPU. Vậy theo mình nghĩ tiến trình lấy từ new sang ready cũng phải đi theo tuần tự của hàng đợi và bản thân tiến trình đã sẵn sàng để chờ đợi CPU cấp phát để được xử lý.
Mình hiểu như thế, không biết còn sai sót gì ko? mong Thầy và các bạn giải thích và làm rõ thêm. Laughing

PhanPhamDanPhuong(I22B)

Tổng số bài gửi : 7
Join date : 09/03/2013
Age : 26

Xem lý lịch thành viên

Về Đầu Trang Go down

Tổ chức quản lý tiến trình

Bài gửi  NguyenThanhTung(I22B) on 17/3/2013, 16:25

Các trạng thái của tiến trình

Trạng thái của tiến trình tại một thời điểm được xác định bởi hoạt động hiện thời của tiến trình tại thời điểm đó. Trong quá trình sống, một tiến trình thay đổi trạng thái do nhiều nguyên nhân như : phải chờ một sự kiện nào đó xảy ra, hay đợi một thao tác nhập/xuất hoàn tất, buộc phải dừng hoạt động do đã hết thời gian xử lý …

Tại một thời điểm, một tiến trình có thể nhận trong một các trạng thái sau đây :

Mới tạo : tiến trình đang được tạo lập.

Running : các chỉ thị của tiến trình đang được xử lý.

Blocked : tiến trình chờ được cấp phát một tài nguyên, hay chờ mộtsự kiện xảy ra .

Ready : tiến trình chờ được cấp phát CPU để xử lý.

Kết thúc : tiến trình hoàn tất xử lý.


Hình 2.2 Sơ đồ chuyển trạng thái giữa các tiến trình

Tại một thời điểm, chỉ có một tiến trình có thể nhận trạng thái running trên một bộ xử lý bất kỳ. Trong khi đó, nhiều tiến trình có thể ở trạng thái blocked hay ready.

Các cung chuyển tiếp trong sơ đồ trạng thái biễu diễn sáu sự chuyển trạng thái có thể xảy ra trong các điều kiện sau :

Tiến trình mới tạo được đưa vào hệ thống

Bộ điều phối cấp phát cho tiến trình một khoảng thời gian sử dụng CPU

Tiến trình kết thúc

Tiến trình yêu cầu một tài nguyên nhưng chưa được đáp ứng vì tài nguyên chưa sẵn sàng để cấp phát tại thời điểm đó ; hoặc tiến trình phải chờ một sự kiện hay thao tác nhập/xuất.

Bộ điều phối chọn một tiến trình khác để cho xử lý .

Tài nguyên mà tiến trình yêu cầu trở nên sẵn sàng để cấp phát ; hay sự kiện hoặc thao tác nhập/xuất tiến trình đang đợi hoàn tất.
Chế độ xử lý của tiến trình

Để đảm bảo hệ thống hoạt động đúng đắn, hệ điều hành cần phải được bảo vệ khỏi sự xâm phạm của các tiến trình. Bản thân các tiến trình và dữ liệu cũng cần được bảo vệ để tránh các ảnh hưởng sai lạc lẫn nhau. Một cách tiếp cận để giải quyết vấn đề là phân biệt hai chế độ xử lý cho các tiến trình : chế độ không đặc quyền và chế độ đặc quyền nhờ vào sự trợ giúp của cơ chế phần cứng. Tập lệnh của CPU được phân chia thành các lệnh đặc quyền và lệnh không đặc quyền. Cơ chế phần cứng chỉ cho phép các lệnh đặc quyền được thực hiện trong chế độ đặc quyền. Thông thường chỉ có hệ điều hành hoạt động trong chế độ đặc quyền, các tiến trình của người dùng hoạt động trong chế độ không đặc quyền, không thực hiện được các lệnh đặc quyền có nguy cơ ảnh hưởng đến hệ thống. Như vậy hệ điều hành được bảo vệ. Khi một tiến trình người dùng gọi đến một lời gọi hệ thống, tiến trình của hệ điều hành xử lý lời gọi này sẽ hoạt động trong chế độ đặc quyền, sau khi hoàn tất thì trả quyền điều khiển về cho tiến trình người dùng trong chế độ không đặc quyền.


Hình vẽ 2.3 Hai chế độ xử lý
Cấu trúc dữ liệu khối quản lý tiến trình

Hệ điều hành quản lý các tiến trình trong hệ thống thông qua khối quản lý tiến trình (process control block -PCB). PCB là một vùng nhớ lưu trữ các thông tin mô tả cho tiến trình, với các thành phần chủ yếu bao gồm :

Định danh của tiến trình (1) : giúp phân biệt các tiến trình

Trạng thái tiến trình (2): 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 (3): 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 về:

Trạng thái CPU: bao gồm nội dung các thanh ghi, quan trọng nhất là con trỏ lệnh IP lưu trữ địa chỉ câu lệnh kế tiếp tiến trình sẽ xử lý. Các thông tin này cần được lưu trữ khi xảy ra một ngắt, nhằm có thể cho phép phục hồi hoạt động của tiến trình đúng như trước khi bị ngắt.

Bộ xử lý: dùng cho máy có cấu hình nhiều CPU, xác định số hiệu CPU mà tiến trình đang sử dụng.

Bộ nhớ chính: danh sách các khối nhớ được cấp cho tiến trình.

Tài nguyên sử dụng: danh sách các tài mguyên hệ thống mà tiến trình đang sử dụng.

Tài nguyên tạo lập: danh sách các tài nguyên được tiến trình tạo lập.

Thông tin giao tiếp (4): 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ê (5): đây 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 có thể có ích cho công việc đánh giá tình hình hệ thống và dự đoán các tình huống tương lai.


Hình vẽ 2.4 Khối mô tả tiến trình
Thao tác trên tiến trình

Hệ điều hành cung cấp các thao tác chủ yếu sau đây trên một tiến trình :

tạo lập tiến trình (create)

kết thúc tiến trình (destroy)

tạm dừng tiến trình (suspend)

tái kích hoạt tiến trình (resume)

thay đổi độ ưu tiên tiến trình
Tạo lập tiến trình

Trong quá trình xử lý, một tiến trình có thể tạo lập nhiều tiến trình mới bằng cách sử dụng một lời gọi hệ thống tương ứng. Tiến trình gọi lời gọi hệ thống để tạo tiến trình mới sẽ được gọi là tiến trình cha, tiến trình được tạo gọi là tiến trình con. Mỗi tiến trình con đến lượt nó lại có thể tạo các tiến trình mới…quá trình này tiếp tục sẽ tạo ra một cây tiến trình.


Hình vẽ2.5 Một cây tiến trình trong hệ thống UNIX

Các công việc hệ điều hành cần thực hiện khi tạo lập tiến trình bao gồm :

định danh cho tiến trình mới phát sinh

đưa tiến trình vào danh sách quản lý của hệ thống

xác định độ ưu tiên cho tiến trình

tạo PCB cho tiến trình

cấp phát các tài nguyên ban đầu cho tiến trình

Khi một tiến trình tạo lập một tiến trình con, tiến trình con có thể sẽ được hệ điều hành trực tiếp cấp phát tài nguyên hoặc được tiến trình cha cho thừa hưởng một số tài nguyên ban đầu.

Khi một tiến trình tạo tiến trình mới, tiến trình ban đầu có thể xử lý theo một trong hai khả năng sau :

Tiến trình cha tiếp tục xử lý đồng hành với tiến trình con.

Tiến trình cha chờ đến khi một tiến trình con nào đó, hoặc tất cả các tiến trình con kết thúc xử lý.

Các hệ điều hành khác nhau có thể chọn lựa các cài đặt khác nhau để thực hiện thao tác tạo lập một tiến trình.
Kết thúc tiến trình

Một tiến trình kết thúc xử lý khi nó hoàn tất chỉ thị cuối cùng và sử dụng một lời gọi hệ thống để yêu cầu hệ điều hành hủy bỏ nó. Đôi khi một tiến trình có thể yêu cầu hệ điều hành kết thúc xử lý của một tiến trình khác. Khi một tiến trình kết thúc, hệ điều hành thực hiện các công việc :

thu hồi các tài nguyên hệ thống đã cấp phát cho tiến trình

hủy tiến trình khỏi tất cả các danh sách quản lý của hệ thống

hủy bỏ PCB của tiến trình

Hầu hết các hệ điều hành không cho phép các tiến trình con tiếp tục tồn tại nếu tiến trình cha đã kết thúc. Trong những hệ thống như thế, hệ điều hành sẽ tự động phát sinh một loạt các thao tác kết thúc tiến trình con.
Cấp phát tài nguyên cho tiến trình

Khi có nhiều người sử dụng đồng thời làm việc trong hệ thống, hệ điều hành cần phải cấp phát các tài nguyên theo yêu cầu cho mỗi người sử dụng. Do tài nguyên hệ thống thường rất giới hạn và có khi không thể chia sẻ, nên hiếm khi tất cả các yêu cầu tài nguyên đồng thời đều được thỏa mãn. Vì thế cần phải nghiên cứu một phương pháp để chia sẻ một số tài nguyên hữu hạn giữa nhiều tiến trình người dùng đồng thời. Hệ điều hành quản lý nhiều loại tài nguyên khác nhau (CPU, bộ nhớ chính, các thiết bị ngoại vi …), với mỗi loại cần có một cơ chế cấp phát và các chiến lược cấp phát hiệu qủa. Mỗi tài nguyên được biễu diễn thông qua một cấu trúc dữ liệu, khác nhau về chi tiết cho từng loại tài nguyên, nhưng cơ bản chứa đựng các thông tin sau :
Định danh tài nguyên

Trạng thái tài nguyên : đây là các thông tin mô tả chi tiết trạng thái tài nguyên : phần nào của tài nguyên đã cấp phát cho tiến trình, phần nào còn có thể sử dụng ?

Hàng đợi trên một tài nguyên : danh sách các tiến trình đang chờ được cấp phát tài nguyên tương ứng.

Bộ cấp phát : là đoạn code đảm nhiệm việc cấp phát một tài nguyên đặc thù. Một số tài nguyên đòi hỏi các giải thuật đặc biệt (như CPU, bộ nhớ chính, hệ thống tập tin), trong khi những tài nguyên khác (như các thiết bị nhập/xuất) có thể cần các giải thuật cấp phát và giải phóng tổng quát hơn.


Hình 2.6 Khối quản lý tài nguyên

Các mục tiêu của kỹ thuật cấp phát :

Bảo đảm một số lượng hợp lệ các tiến trình truy xuất đồng thời đến các tài nguyên không chia sẻ được.

Cấp phát tài nguyên cho tiến trình có yêu cầu trong một khoảng thời gian trì hoãn có thể chấp nhận được.

Tối ưu hóa sự sử dụng tài nguyên.

Để có thể thõa mãn các mục tiêu kể trên, cần phải giải quyết các vấn đề nảy sinh khi có nhiều tiến trình đồng thời yêu cầu một tài nguyên không thể chia sẻ.

NguyenThanhTung(I22B)

Tổng số bài gửi : 21
Join date : 13/03/2013

Xem lý lịch thành viên

Về Đầu Trang Go down

độ ưu tiên của một tiến trình

Bài gửi  nguyenvankhoa59(122B) on 17/3/2013, 16:30

- Là 1 giá trị giúp phân định tầm quan trọng của 1 tiến trình nó có thể được phát sinh tự động bởi hệ thống hoặc gán trực tiếp bởi người dùng.
có 2 loại độ ưu tiên:
1. Độ ưu tiên tĩnh: Là độ gán sẵn cho tiến trình và không thay đổi bất kể sự biến động của môi trường. Cơ chế độ ưu tiên tĩnh dễ thực hiện nhưng đôi khi không hợp lí vì môi trường thay đổi có thể ảnh hưởng đến tầm quan trọng của tiến trình.
2. Độ ưu tiên động: Là độ ưu tiên thay đổi theo thời gian và môi trường xử lí của tiến trình, tiến trình được khởi động với mật 1 thời gian ngắn. Sau đó, hệ thống sẽ sữa đổi giá trị độ ưu tiên trong từng giai đoạn thực hiện của tiến trình cho phù hợp với tình hình hệ thống.

nguyenvankhoa59(122B)

Tổng số bài gửi : 20
Join date : 08/03/2013

Xem lý lịch thành viên http://nguyênvănkhoa.vn

Về Đầu Trang Go down

Re: Thảo luận Bài 4

Bài gửi  PhanPhamDanPhuong(I22B) on 17/3/2013, 16:50

NguyenManhHuy(I22B) đã viết:
vivanbieu(I22B) đã viết:- 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.
Trên lý thuyết bạn nói như vậy đã đúng rồi nhưng theo mình lại có 1 ý khác đó là tiến trình là quá trình hoạt động của một hoặc nhiều chương trình cùng hoạt động trong 1 khoảng thời gian nhất định, còn chương trình chỉ mang tính chất là 1 ứng dụng để giúp tiến trình hoạt động.
không biết như vậy có đúng ko...hi

Cả 2 bạn đều nói đúng... phần của Huy là bổ sung mang tính chất làm rõ cho phần lý thuyết bên trên. Tiến trình (Process) là chương trình trong thời gian thực hiện (đặt dưới sự quản lý của HĐH). Nói đơn giản theo mình hiểu thì tiến trình là quá trình làm việc của 1 hoặc tập hợp các chương trình trong thời gian nó được thực thi. Bản thân tiến trình gồm nhiều chương trình. Nhưng chương trình ko thể gọi là tiến trình . ^^

PhanPhamDanPhuong(I22B)

Tổng số bài gửi : 7
Join date : 09/03/2013
Age : 26

Xem lý lịch thành viên

Về Đầu Trang Go down

trả lời thắc mắc của bạn truongminhtriet

Bài gửi  nguyenvankhoa59(122B) on 17/3/2013, 17:18

TruongMinhTriet(I22B) đã viết:Thầy và các bạn cho mình hỏi tại sao code:
Tiến trình Sản Xuất tăng giá trị của in bằng lệnh in = (in + 1) % BUFFER_SIZE mà không phải là bằng in = in + 1
Tiến trình Tiêu Thụ tăng giá trị của out bằng lệnh out = (out + 1) % BUFFER_SIZE mà không phải là bằng out = out + 1
?

Cảm ơn thầy và các bạn.
vì BUFFER_SIZE là một vùng nhớ có giới hạn
mặt khác khi tiến trình sản xuất đưa sp vào thì tiến trình tiêu thụ cũng lấy sp ra theo thứ tự và sp sẽ được đưa vào BUFFER_SIZE theo hình thức quay vòng
vd: BUFFER_SIZE có dung lượng là 10 ô và mỗi sp được đưa vào từng ô một từ 0->9 (ô bắt đầu=0) và sp được đưa thứ tự vào từng ô và nếu ta dùng lệnh " in=in+1 " thì giá trị ô nhớ sẽ vượt mức cho phép vì vậy ở đây ta phải dùng lệnh " in = (in + 1) % BUFFER_SIZE " ở đây kết quả của in lấy phần dư của phép chia (dễ thấy nếu in=9 thì giá trị của in kế tiếp=(9+1)%10 dư 0 vậy in=0) tương tự đối với lệnh out cũng vậy bạn ak
mong thầy và mọi người cho ý kiến về câu trả lời của mình

nguyenvankhoa59(122B)

Tổng số bài gửi : 20
Join date : 08/03/2013

Xem lý lịch thành viên http://nguyênvănkhoa.vn

Về Đầu Trang Go down

Re: Thảo luận Bài 4

Bài gửi  nguyenthithutrang (I11C) on 17/3/2013, 21:03

dangmonghai(I12A) đã viết:

Mô hình chuyển trạng thái của các tiến trình
Mới (New): tiến trình đang được tạo lập.
Đang chạy (Runing): các chỉ thị của tiến trình đang được xử lý.
Đang chờ (Waiting): tiến trình chờ được cấp phát 1 tài nguyên, hay chờ 1 sự kiện xảy ra.
Sẵn sàng (Ready): tiến trình chờ được cấp phát CPU.
Kết thúc (Terminated): tiến trình hoàn tất xủ lý.

Tại 1 thời điểm chỉ có 1 tiến trình có thể nhận trạng thái running trên bộ xử lý bất kỳ. Trong khi đó nhiều tiến trình có thể ở trạng thái blocked hay ready.
Các cung chuyển tiếp trong sơ đồ trạng thái biễu diễn sáu sự chuyển trạng thái có thể xảy ra trong các điều kiện sau:
Tiến trình mới tạo được đưa vào hệ thống.
Bộ điều phối cho tiến trình 1 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 1 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ờ 1 sự kiện hay thao tác nhâp/xuất.
Bộ điều phối chọn 1 tiến trình khác để cho xử lý.
Tài nguyên mà tiền trình yêu cầu trở nên sẵn sàng để cấp phát hay sự kiện hoặc thao tác nhập/xuất tiến trình đang đợi hoàn tất.
Tiến trình P1: vào hàng đợi Job-Queue ở trạng thái New, sẽ đợi 1 khoảng thời gian của quá trình điều phối chậm (Scheduler Long Term) của hệ điều hành(HĐH) để chọn tiến trình, sau khi được O.S chọn, P1 chuyển sang hàng đợi reday quueue và ở trạng thái Ready. Lúc này P1 chỉ đợi cấp CPU và running.

Sau một khoảng thời gian running, tiến trình P2 xuất hiện. Lúc này, hệ điều hành sẽ ghi lại thông tin của P1 vào thanh PCB1 bao gồm những thông tin: con trỏ, trạng thái của P1, số hiệu của tiến trình P1, bộ đếm P1, nội dung của P1…Và chuyển P1 sang hàng đợi Waiting và chuyển trạng thái Ready. Lúc này, P2 sẽ được cấp CPU và running. Và sau một khỏang thời gian running, P2 cũng sẽ chuyển sang hàng đợi waiting và chuyển trạng thái ready, lúc này hệ điều hành cũng ghi lại thông tin vào thanh ghi PCB2 như đã làm ở P1. Sau đó, hệ điều hành sẽ "load" lại thông tin của PCB1 và P1 sẽ tiếp tục "running". Quá trình này cũng sẽ lập lại cho P2 đến khi P1 và P2 kết thúc.


Một số mô hình trạng thái khác minh tham khảo được, các bạn đóng góp ý kiến nhé:
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.

nguyenthithutrang (I11C)

Tổng số bài gửi : 33
Join date : 26/08/2011
Age : 28
Đến từ : Lâm Đồng

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Thảo luận Bài 4

Bài gửi  nguyenthithutrang (I11C) on 17/3/2013, 21:23

Truyền thông điệp trong Windows


Các hàm API dùng để Gửi/Nhận thông điệp

- SendMessage: Gửi có chờ

- PostMessage: Gửi không chờ

- SendMessageTimeout: Gửi có chờ nhưng với thời hạn

- WaitMessage: Chờ thông điệp đến

- GetMessage: Nhận có chờ

- PeekMessage: Nhận không chờ

nguyenthithutrang (I11C)

Tổng số bài gửi : 33
Join date : 26/08/2011
Age : 28
Đến từ : Lâm Đồng

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Thảo luận Bài 4

Bài gửi  nguyenthithutrang (I11C) on 17/3/2013, 21:28

NguyenThanhTung(I22B) đã viết:Các trạng thái của tiến trình

Trạng thái của tiến trình tại một thời điểm được xác định bởi hoạt động hiện thời của tiến trình tại thời điểm đó. Trong quá trình sống, một tiến trình thay đổi trạng thái do nhiều nguyên nhân như : phải chờ một sự kiện nào đó xảy ra, hay đợi một thao tác nhập/xuất hoàn tất, buộc phải dừng hoạt động do đã hết thời gian xử lý …

Tại một thời điểm, một tiến trình có thể nhận trong một các trạng thái sau đây :

Mới tạo : tiến trình đang được tạo lập.

Running : các chỉ thị của tiến trình đang được xử lý.

Blocked : tiến trình chờ được cấp phát một tài nguyên, hay chờ mộtsự kiện xảy ra .

Ready : tiến trình chờ được cấp phát CPU để xử lý.

Kết thúc : tiến trình hoàn tất xử lý.


Hình 2.2 Sơ đồ chuyển trạng thái giữa các tiến trình

Tại một thời điểm, chỉ có một tiến trình có thể nhận trạng thái running trên một bộ xử lý bất kỳ. Trong khi đó, nhiều tiến trình có thể ở trạng thái blocked hay ready.

Các cung chuyển tiếp trong sơ đồ trạng thái biễu diễn sáu sự chuyển trạng thái có thể xảy ra trong các điều kiện sau :

Tiến trình mới tạo được đưa vào hệ thống

Bộ điều phối cấp phát cho tiến trình một khoảng thời gian sử dụng CPU

Tiến trình kết thúc

Tiến trình yêu cầu một tài nguyên nhưng chưa được đáp ứng vì tài nguyên chưa sẵn sàng để cấp phát tại thời điểm đó ; hoặc tiến trình phải chờ một sự kiện hay thao tác nhập/xuất.

Bộ điều phối chọn một tiến trình khác để cho xử lý .

Tài nguyên mà tiến trình yêu cầu trở nên sẵn sàng để cấp phát ; hay sự kiện hoặc thao tác nhập/xuất tiến trình đang đợi hoàn tất.
Chế độ xử lý của tiến trình

Để đảm bảo hệ thống hoạt động đúng đắn, hệ điều hành cần phải được bảo vệ khỏi sự xâm phạm của các tiến trình. Bản thân các tiến trình và dữ liệu cũng cần được bảo vệ để tránh các ảnh hưởng sai lạc lẫn nhau. Một cách tiếp cận để giải quyết vấn đề là phân biệt hai chế độ xử lý cho các tiến trình : chế độ không đặc quyền và chế độ đặc quyền nhờ vào sự trợ giúp của cơ chế phần cứng. Tập lệnh của CPU được phân chia thành các lệnh đặc quyền và lệnh không đặc quyền. Cơ chế phần cứng chỉ cho phép các lệnh đặc quyền được thực hiện trong chế độ đặc quyền. Thông thường chỉ có hệ điều hành hoạt động trong chế độ đặc quyền, các tiến trình của người dùng hoạt động trong chế độ không đặc quyền, không thực hiện được các lệnh đặc quyền có nguy cơ ảnh hưởng đến hệ thống. Như vậy hệ điều hành được bảo vệ. Khi một tiến trình người dùng gọi đến một lời gọi hệ thống, tiến trình của hệ điều hành xử lý lời gọi này sẽ hoạt động trong chế độ đặc quyền, sau khi hoàn tất thì trả quyền điều khiển về cho tiến trình người dùng trong chế độ không đặc quyền.


Hình vẽ 2.3 Hai chế độ xử lý
Cấu trúc dữ liệu khối quản lý tiến trình

Hệ điều hành quản lý các tiến trình trong hệ thống thông qua khối quản lý tiến trình (process control block -PCB). PCB là một vùng nhớ lưu trữ các thông tin mô tả cho tiến trình, với các thành phần chủ yếu bao gồm :

Định danh của tiến trình (1) : giúp phân biệt các tiến trình

Trạng thái tiến trình (2): 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 (3): 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 về:

Trạng thái CPU: bao gồm nội dung các thanh ghi, quan trọng nhất là con trỏ lệnh IP lưu trữ địa chỉ câu lệnh kế tiếp tiến trình sẽ xử lý. Các thông tin này cần được lưu trữ khi xảy ra một ngắt, nhằm có thể cho phép phục hồi hoạt động của tiến trình đúng như trước khi bị ngắt.

Bộ xử lý: dùng cho máy có cấu hình nhiều CPU, xác định số hiệu CPU mà tiến trình đang sử dụng.

Bộ nhớ chính: danh sách các khối nhớ được cấp cho tiến trình.

Tài nguyên sử dụng: danh sách các tài mguyên hệ thống mà tiến trình đang sử dụng.

Tài nguyên tạo lập: danh sách các tài nguyên được tiến trình tạo lập.

Thông tin giao tiếp (4): 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ê (5): đây 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 có thể có ích cho công việc đánh giá tình hình hệ thống và dự đoán các tình huống tương lai.


Hình vẽ 2.4 Khối mô tả tiến trình
Thao tác trên tiến trình

Hệ điều hành cung cấp các thao tác chủ yếu sau đây trên một tiến trình :

tạo lập tiến trình (create)

kết thúc tiến trình (destroy)

tạm dừng tiến trình (suspend)

tái kích hoạt tiến trình (resume)

thay đổi độ ưu tiên tiến trình
Tạo lập tiến trình

Trong quá trình xử lý, một tiến trình có thể tạo lập nhiều tiến trình mới bằng cách sử dụng một lời gọi hệ thống tương ứng. Tiến trình gọi lời gọi hệ thống để tạo tiến trình mới sẽ được gọi là tiến trình cha, tiến trình được tạo gọi là tiến trình con. Mỗi tiến trình con đến lượt nó lại có thể tạo các tiến trình mới…quá trình này tiếp tục sẽ tạo ra một cây tiến trình.


Hình vẽ2.5 Một cây tiến trình trong hệ thống UNIX

Các công việc hệ điều hành cần thực hiện khi tạo lập tiến trình bao gồm :

định danh cho tiến trình mới phát sinh

đưa tiến trình vào danh sách quản lý của hệ thống

xác định độ ưu tiên cho tiến trình

tạo PCB cho tiến trình

cấp phát các tài nguyên ban đầu cho tiến trình

Khi một tiến trình tạo lập một tiến trình con, tiến trình con có thể sẽ được hệ điều hành trực tiếp cấp phát tài nguyên hoặc được tiến trình cha cho thừa hưởng một số tài nguyên ban đầu.

Khi một tiến trình tạo tiến trình mới, tiến trình ban đầu có thể xử lý theo một trong hai khả năng sau :

Tiến trình cha tiếp tục xử lý đồng hành với tiến trình con.

Tiến trình cha chờ đến khi một tiến trình con nào đó, hoặc tất cả các tiến trình con kết thúc xử lý.

Các hệ điều hành khác nhau có thể chọn lựa các cài đặt khác nhau để thực hiện thao tác tạo lập một tiến trình.
Kết thúc tiến trình

Một tiến trình kết thúc xử lý khi nó hoàn tất chỉ thị cuối cùng và sử dụng một lời gọi hệ thống để yêu cầu hệ điều hành hủy bỏ nó. Đôi khi một tiến trình có thể yêu cầu hệ điều hành kết thúc xử lý của một tiến trình khác. Khi một tiến trình kết thúc, hệ điều hành thực hiện các công việc :

thu hồi các tài nguyên hệ thống đã cấp phát cho tiến trình

hủy tiến trình khỏi tất cả các danh sách quản lý của hệ thống

hủy bỏ PCB của tiến trình

Hầu hết các hệ điều hành không cho phép các tiến trình con tiếp tục tồn tại nếu tiến trình cha đã kết thúc. Trong những hệ thống như thế, hệ điều hành sẽ tự động phát sinh một loạt các thao tác kết thúc tiến trình con.
Cấp phát tài nguyên cho tiến trình

Khi có nhiều người sử dụng đồng thời làm việc trong hệ thống, hệ điều hành cần phải cấp phát các tài nguyên theo yêu cầu cho mỗi người sử dụng. Do tài nguyên hệ thống thường rất giới hạn và có khi không thể chia sẻ, nên hiếm khi tất cả các yêu cầu tài nguyên đồng thời đều được thỏa mãn. Vì thế cần phải nghiên cứu một phương pháp để chia sẻ một số tài nguyên hữu hạn giữa nhiều tiến trình người dùng đồng thời. Hệ điều hành quản lý nhiều loại tài nguyên khác nhau (CPU, bộ nhớ chính, các thiết bị ngoại vi …), với mỗi loại cần có một cơ chế cấp phát và các chiến lược cấp phát hiệu qủa. Mỗi tài nguyên được biễu diễn thông qua một cấu trúc dữ liệu, khác nhau về chi tiết cho từng loại tài nguyên, nhưng cơ bản chứa đựng các thông tin sau :
Định danh tài nguyên

Trạng thái tài nguyên : đây là các thông tin mô tả chi tiết trạng thái tài nguyên : phần nào của tài nguyên đã cấp phát cho tiến trình, phần nào còn có thể sử dụng ?

Hàng đợi trên một tài nguyên : danh sách các tiến trình đang chờ được cấp phát tài nguyên tương ứng.

Bộ cấp phát : là đoạn code đảm nhiệm việc cấp phát một tài nguyên đặc thù. Một số tài nguyên đòi hỏi các giải thuật đặc biệt (như CPU, bộ nhớ chính, hệ thống tập tin), trong khi những tài nguyên khác (như các thiết bị nhập/xuất) có thể cần các giải thuật cấp phát và giải phóng tổng quát hơn.


Hình 2.6 Khối quản lý tài nguyên

Các mục tiêu của kỹ thuật cấp phát :

Bảo đảm một số lượng hợp lệ các tiến trình truy xuất đồng thời đến các tài nguyên không chia sẻ được.

Cấp phát tài nguyên cho tiến trình có yêu cầu trong một khoảng thời gian trì hoãn có thể chấp nhận được.

Tối ưu hóa sự sử dụng tài nguyên.

Để có thể thõa mãn các mục tiêu kể trên, cần phải giải quyết các vấn đề nảy sinh khi có nhiều tiến trình đồng thời yêu cầu một tài nguyên không thể chia sẻ.

Giữa các tiến trình trên tại sao phải có sự cộng tác với nhau?


Tiến trình hợp tác (Cooperating process)

Có thể tác động hoặc chịu tác động bởi sự thực hiện của tiến trình khác.
Vi du: tiến trình này chia sẻ dữ liệu với tiến trình khác

Các lợi điểm của tiến trình hợp tác

-- Chia sẻ thông tin - Information sharing
-- Tăng tốc độ tính toán - Computation speed-up
-- Mô-đun hóa - Modularity
-- Sự tiện lợi - Convenience (vd người sử dụng cùng thực hiện soạn thảo, in ấn, biên dịch song song)

Sự cộng tác giữa các quá trình yêu cầu hệ điều hành hỗ trợ cơ chế giao tiếp và cơ chế đồng bộ hoạt động của các quá trình

nguyenthithutrang (I11C)

Tổng số bài gửi : 33
Join date : 26/08/2011
Age : 28
Đến từ : Lâm Đồng

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Thảo luận Bài 4

Bài gửi  nguyenthithutrang (I11C) on 17/3/2013, 21:44

DoThiHaDuc(I22B) đã viết:Có 3 loại trình điều phối (Scheduler) sau:

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ớ).
-- Mục đích: Cân bằng tải cho toàn hệ thố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 tiến trình:
===>1. Hướng CPU (CPU - Bound) : tính toán nhiều, ít I/O.
VD: 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 (I/O - Bound) : tính toán ít , nhiều I/O.
VD: công ty có 1 chiếc xe ô 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).

2) Điều phối nhanh (Short - Term Schedule):
-- Còn gọi là Điều phối CPU.
-- Chọn tiến trình từ Ready Queue để cấp CPU.
-- Có tần suất công việc cao. Thường cứ 100ms lại tốn 10ms đề sát đị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.

VD: 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ẽ gọi 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).

Cam on ban nhieu nhe, bai cua ban rat de hieu,

nguyenthithutrang (I11C)

Tổng số bài gửi : 33
Join date : 26/08/2011
Age : 28
Đến từ : Lâm Đồng

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Thảo luận Bài 4

Bài gửi  NguyenHoangKimVu (I11C) on 17/3/2013, 21:57

DangQuangBinh(I22B) đã viết:Hôm qua,thầy có nói về vấn đề tại sao không lấy hết các tiến trình từ trạng thái new sang trạng thái ready,em chưa rõ lắm thầy giải thích lại giúp em với.....
Theo mình nghĩ thì không phải các process nào ở trạng thái new thì cũng sẽ được chuyển tất cả sang trạngthái ready mà phải được "sơ tuyển". Việc "sơ tuyển" ở đây 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.

NguyenHoangKimVu (I11C)

Tổng số bài gửi : 62
Join date : 25/08/2011

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Thảo luận Bài 4

Bài gửi  Sponsored content Today at 14:48


Sponsored content


Về Đầu Trang Go down

Trang 3 trong tổng số 9 trang Previous  1, 2, 3, 4, 5, 6, 7, 8, 9  Next

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang


 
Permissions in this forum:
Bạn không có quyền trả lời bài viết