Thảo luận Bài 4

Trang 5 trong tổng số 13 trang Previous  1, 2, 3, 4, 5, 6 ... 11, 12, 13  Next

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

Điều khiển quá trình Block

Bài gửi  NguyenThiMinhHuong(I11C) on 19/9/2011, 15:35

TruongHanhPhuc (I11C) đã viết:
  • Trước khi CPU chuyển từ thực thi tiến trình này sang tiến trình khác, do các tiến trình cần phải sử dụng bộ nhớ để xử lý công việc của chúng, nên hệ điều hành cần phải chuyển toàn bộ dữ liệu của tiến trình đang xử lý trên bộ nhớ sang một vùng nhớ tạm trước khi chuyển sang xử lý tiến trình tiếp theo. Đây chính là chức năng chính của khối kiểm soát tiến trình.

  • Các thông tin hệ điều hành cần lưu lại trước khi chuyển sang xử lý tiến trình khác bao gồm:
    • Credentials (user ID, group ID, effective ID,...)
    • Trạng thái process : new, ready, running, waiting…
    • Program counter: địa chỉ của lệnh kế tiếp sẽ thực thi
    • Các thanh ghi CPU
    • Thông tin dùng để định thời CPU: priority,...
    • Thông tin bộ nhớ: base/limit register, page tables…
    • Thông tin thống kê: CPU time, time limits…
    • Thông tin trạng thái I/O: danh sách thiết bị I/O được cấp phát, danh sách các file đang mở,...
    • Con trỏ (pointer) đến PCBs khác.

Điều khiển quá trình Block


Tất cả các thông tin cần thiết để theo dõi của một quá trình khi chuyển đổi được giữ trong một gói dữ liệu được gọi là một khối điều khiển quá trình. Khối điều khiển quá trình thường bao gồm:
Một số ID xác định các quá trình
Con trỏ tới các địa điểm trong chương trình và dữ liệu của nó, nơi chế biến mới nhất xảy ra
Đăng ký nội dung
Hoa của lá cờ khác nhau và chuyển mạch
Con trỏ tới các giới hạn trên và dưới của bộ nhớ cần thiết cho quá trình
Một danh sách các tập tin được mở bởi quá trình
Ưu tiên của quá trình
Tình trạng của tất cả các thiết bị I / O cần thiết cho quá trình

Mỗi tiến trình có một tình trạng liên kết với nó. Nhiều quá trình tiêu thụ không có thời gian CPU cho đến khi họ nhận được một số loại đầu vào. Ví dụ, một quá trình có thể được chờ đợi cho một phím tắt từ người sử dụng. Trong khi đó là chờ đợi cho các phím tắt, nó sử dụng không có thời gian CPU. Trong khi chờ đợi, đó là "treo". Khi tổ hợp phím đến, hệ điều hành thay đổi tình trạng của nó. Khi tình trạng của quá trình thay đổi, đang chờ xử lý để hoạt động, ví dụ, từ bị đình chỉ để chạy, các thông tin trong khối điều khiển quá trình phải được sử dụng như các dữ liệu trong bất kỳ chương trình khác để thực hiện trực tiếp của phần nhiệm vụ chuyển đổi của hệ điều hành.

Quá trình trao đổi này xảy ra mà không có sự can thiệp của người sử dụng trực tiếp, và mỗi quá trình có đủ chu kỳ CPU để thực hiện nhiệm vụ của mình trong một khoảng thời gian hợp lý. Sự cố có thể bắt đầu nếu người dùng cố gắng để có các quy trình quá nhiều chức năng cùng một lúc. Các hệ điều hành này yêu cầu một số chu kỳ CPU để thực hiện tiết kiệm và trao đổi của tất cả các đăng ký, hàng đợi và ngăn xếp của các quá trình ứng dụng. Đủ các quy trình được bắt đầu, và nếu hệ thống điều hành đã không được thiết kế cẩn thận, hệ thống có thể bắt đầu sử dụng phần lớn các chu kỳ CPU có sẵn của nó để trao đổi giữa các quá trình chứ không phải là các tiến trình chạy. Khi điều này xảy ra, nó được gọi là trận đòn, và nó thường đòi hỏi một số loại can thiệp của người dùng trực tiếp để ngăn chặn các quy trình và đem lại trật tự trở lại vào hệ thống.



Một cách mà các nhà thiết kế hệ thống điều hành làm giảm cơ hội của trận đòn là bằng cách giảm sự cần thiết cho quy trình mới để thực hiện các nhiệm vụ khác nhau. Một số hệ điều hành cho phép một "tiến trình-lite", được gọi là một chủ đề, có thể đối phó với tất cả các công việc CPU-chuyên sâu của một quá trình bình thường, nhưng thường không đối phó với các loại khác nhau của I / O và không thiết lập các cấu trúc yêu cầu khối điều khiển quá trình mở rộng của một quá trình thường xuyên. Một quá trình có thể bắt đầu chủ đề hoặc các quá trình khác, nhưng một chủ đề không có thể bắt đầu một quá trình.

Cho đến nay, tất cả các lịch trình chúng tôi đã thảo luận có liên quan đến một CPU duy nhất. Trong một hệ thống với hai hoặc nhiều CPU, hệ điều hành phải phân chia khối lượng công việc giữa các CPU, cố gắng để cân bằng nhu cầu của các quy trình cần thiết với các chu kỳ có sẵn trên các CPU khác nhau hệ điều hành không đối xứng sử dụng một CPU cho nhu cầu riêng của họ và phân chia quá trình ứng dụng giữa các CPU còn lại hệ điều hành đối xứng phân chia giữa các CPU khác nhau, cân bằng nhu cầu so với CPU sẵn sàng ngay cả khi hệ điều hành chính nó là tất cả những gì đang chạy.

Nếu hệ thống điều hành là phần mềm duy nhất với nhu cầu thực hiện, CPU không phải là nguồn duy nhất để được sắp xếp. Quản lý bộ nhớ là bước quan trọng tiếp theo trong việc bảo đảm rằng tất cả các quá trình chạy trơn tru.

NguyenThiMinhHuong(I11C)

Tổng số bài gửi : 9
Join date : 16/09/2011
Age : 27

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

Về Đầu Trang Go down

Liên lạc giữa các tiến trình

Bài gửi  NguyenThiMinhHuong(I11C) on 19/9/2011, 15:40

NgoLeYen48(I11C) đã viết:- Chia sẽ thông tin(Information Sharing): Một tiến trình sử dụng thông tin do tiến trình khác cung cấp.
- Tăng tốc tính toán (Computation Speedup): Các tiến trình làm việc song song trên cùng một hoặc nhiều máy tính để giải quyết bài toán chung.
- Đảm bảo tính đơn thể (Modularity): Chương trình được chia thành các đơn thể chức năng riêng vận hành trong các tiến trình hoặc luồng khác nhau.
- Đảm bảo tính tiện dụng (Convenience): Người dùng có khả năng làm nhiều việc cùng một lúc: Soạn thảo, In ấn, Lấy file về,...
VD:Nhu cầu nối mạng internet của chúng ta.
LIÊN LẠC GIỮA CÁC TIẾN TRÌNH

I.1. 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 để :

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.

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.

I.2. Các vấn đề nảy sinh trong việc liên lạc giữa các tiến trình

Do mỗi tiến trình sỡ hữu một không gian địa chỉ riêng biệt, nên các tiến trình không thể liên lạc trực tiếp dễ dàng mà phải nhờ vào các cơ chế do hệ điều hành cung cấp. Khi cung cấp cơ chế liên lạc cho các tiến trình, hệ điều hành thường phải tìm giải pháp cho các vấn đề chính yếu sau :

Liên kết tường minh hay tiềm ẩn (explicit naming/implicit naming) : tiến trình có cần phải biết tiến trình nào đang trao đổi hay chia sẻ thông tin với nó ? Mối liên kết được gọi là tường minh khi được thiết lập rõ ràng , trực tiếp giữa các tiến trình, và là tiềm ẩn khi các tiến trình liên lạc với nhau thông qua một qui ước ngầm nào đó.

Liên lạc theo chế độ đồng bộ hay không đồng bộ (blocking / non-blocking): khi một tiến trình trao đổi thông tin với một tiến trình khác, các tiến trình có cần phải đợi cho thao tác liên lạc hoàn tất rồi mới tiếp tục các xử lý khác ? Các tiến trình liên lạc theo cơ chế đồng bộ sẽ chờ nhau hoàn tất việc liên lạc, còn các tiến trình liên lạc theo cơ chế nonblocking thì không.

Liên lạc giữa các tiến trình trong hệ thống tập trung và hệ thống phân tán: cơ chế liên lạc giữa các tiến trình trong cùng một máy tính có sự khác biệt với việc liên lạc giữa các tiến trình giữa những máy tính khác nhau?

Hầu hết các hệ điều hành đưa ra nhiều cơ chế liên lạc khác nhau, mỗi cơ chế có những đặc tính riêng, và thích hợp trong một hoàn cảnh chuyên biệt.

II. Các Cơ Chế Thông Tin Liên lạc

II.1. Tín hiệu (Signal)

Giới thiệu: Tín hiệu là một cơ chế phần mềm tương tự như các ngắt cứng tác động đến các tiến trình. Một tín hiệu được sử dụng để thông báo cho tiến trình về một sự kiện nào đó xảy ra. Có nhiều tín hiệu được định nghĩa, mỗi một tín hiệu có một ý nghĩa tương ứng với một sự kiện đặc trưng.

Ví dụ : Một số tín hiệu của UNIX

Mỗi tiến trình sỡ hữu một bảng biễu diễn các tín hiệu khác nhau. Với mỗi tín hiệu sẽ có tương ứng một trình xử lý tín hiệu (signal handler) qui định các xử lý của tiến trình khi nhận được tín hiệu tương ứng.

Các tín hiệu được gởi đi bởi :

Phần cứng (ví dụ lỗi do các phép tính số học)

Hạt nhân hệ điều hành gởi đến một tiến trình ( ví dụ lưu ý tiến trình khi có một thiết bị nhập/xuất tự do).

Một tiến trình gởi đến một tiến trình khác ( ví dụ tiến trình cha yêu cầu một tiến trình con kết thúc)

Người dùng ( ví dụ nhấn phím Ctl-C để ngắt xử lý của tiến trình)

Khi một tiến trình nhận một tín hiệu, nó có thể xử sự theo một trong các cách sau :

Bỏ qua tín hiệu

Xử lý tín hiệu theo kiểu mặc định

Tiếp nhận tín hiệu và xử lý theo cách đặc biệt của tiến trình.

NguyenThiMinhHuong(I11C)

Tổng số bài gửi : 9
Join date : 16/09/2011
Age : 27

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

Về Đầu Trang Go down

Ví dụ về truyền thông điệp (liên lạc giửa các tiến trình) remote và các thiết bị điều khiển từ xa?

Bài gửi  dangminhthinh2107 on 19/9/2011, 16:02

Remote điều khiển tivi, máy quạt ở đây có hai tiến trình
một của remote & bộ phận cảm nhận của thiết bị (bo mạch điện tử)
khi người sử dụng Send (Message) - gửi đi một thông điệp (tăng, giảm volume hoặc chuyển kênh khác khi đang xem tivi) đến thiết bị nhận thông điệp. Lúc này giữu remote và tivi được thiết lập sẳn các hàm mặc định của IPC. Tùy theo yêu cầu người sử dụng mà IPC sẻ xử lý tín hiệu được nhận.
Mong các bạn đóng góp ý kiến về ví dụ của mình. mình nghỉ liên lạc giửa các tiến trình là như thế nhưng không biết được cách trình bày và hoạt động theo kiểu nào.
avatar
dangminhthinh2107

Tổng số bài gửi : 15
Join date : 09/09/2011

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

Về Đầu Trang Go down

Vai trò của khối kiểm soát tiến trình

Bài gửi  caotanthanh(i11c) on 19/9/2011, 18:04

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....
avatar
caotanthanh(i11c)

Tổng số bài gửi : 16
Join date : 03/09/2011
Age : 28
Đến từ : Buôn Hồ-KrongBuk-ĐakLak

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

Về Đầu Trang Go down

Tại sao phải tổ chức cộng tác giữa các tiến trình?

Bài gửi  NgoDucTuan (I11C) on 19/9/2011, 23:23

. Chia sẻ thông tin (Information Sharing): Một tiến trình sử dụng thông tin do tiến trinh khác cung cấp.
. Tăng tốc tính toán (Computation Speedup): Các tiến trình cùng làm việc song song trên 1 hoặc nhiều máy để giải quyết bài toán chung.
. Đảm bảo tính đơn thể (Modularity): Chương trình được chia thành các đơn thể chức năng vận hành trong các tiến trình hoặc luồng khác nhau.
. Đảm bảo tính tiện dụng (Convenience): Người dùng có nhu cầu làm nhiều việc một lúc: Soạn thảo, In ấn, Duyệt Web, Lấy file về, Biên dịch chương trình, Kiểm tra chính tả,...
sunny bounce affraid afro
avatar
NgoDucTuan (I11C)

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

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

Về Đầu Trang Go down

Phân biệt điều phối chậm với điều phối nhanh

Bài gửi  nguyenminhlai.(I11C) on 20/9/2011, 09:58

Điều phối chậm:
Chọn tiến trình từ Job Queue để đưa vào Ready Queue.
Kiểm soát độ đa chương (Số tiến trình trong bộ nhớ).
Do có nhiều thời gian (vài phút), loại Scheduler này có điều kiện để lựa chọn kỹ cáctiến trình cần nhằm phối hợp cân đối hai loại tiến trình:
Hướng CPU (CPU-Bound): Tính toán nhiều, Ít I/O.
Hướng I/O(I/O-Bound): Tính toán ít, Nhiều I/O.
Mục đích:
Cân bằng tải cho nhiều hệ thống.
Điều phối nhanh:
Còn gọi là điều phối CPU.
Chọn tiến trình từ Ready Queue để cấp CPU.
Có tần suất công việc cao. Thường cứ 100ms lại tốn 10ms để xác định tiến trình kếtiếp, như vậy 10/(100+10) = 9% thời gian CPU được dùng để điều phối công việc.

nguyenminhlai.(I11C)

Tổng số bài gửi : 24
Join date : 26/08/2011
Age : 28
Đến từ : Quảng Nam

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  NguyThiGai (I11C) on 20/9/2011, 10:14

BuiHuuThanhLuan(I11C) đã viết:Khái niệm tiến trình: là chương trình được cung cấp trong bộ nhớ Ram và được sự quản lý của hệ điều hành.
Tiến trình hệ thống: là các tiến trình vận hành, quản lý tài nguyên của máy tính.
Tiến trình người dùng: là các tiến trình do người dùng cung cấp.

Mô hình chuyển trạng thái của tiến trình:


Một tiến trình P được đưa vào hàng đợi Job queue. Sau khi được hệ điều hành cho phép( thông qua sợ tuyển của điều phối Short-term) sẽ vào hàng đợi ready queue. Tại đây tiến trình P chưa được cấp CPU mà phải đợi trong khoảng thời gian ngắn sau đó mới được cập CPU( điều phối Long-term).
Tiến trình P sẽ trạng thái Waiting khi có yêu câu Nhập/Xuất hoặc chờ sự kiện khác diễn ra, đây là nhập xuất có chờ. Tiến trình sẽ về trạng thái Ready khi đã nhập/xuất xong hoặc sự kiện đã diễn ra xong.
Tiến trình P sẽ từ trạng thái Running-> Ready khi bị ngắt, phần lớn quá trình ngắt này là ngắt thời gian.
Tiến trình P sẽ từ trạng thái Running->Terminated khi có lệnh kết thúc, hoặc return.
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 Ready hay Waiting.

NguyThiGai (I11C)

Tổng số bài gửi : 28
Join date : 26/08/2011
Age : 29

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

Về Đầu Trang Go down

Phân biệt giữa Tiến trình và Thread

Bài gửi  08H1010052 on 20/9/2011, 10:21

Admin đã viết:Thảo luận những vấn đề liên quan đến Bài 4
Định nghĩa:
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.
Mỗi chương trình chạy trên một máy tính cần ít nhất là một quá trình. Quá trình đó bao gồm không gian địa chỉ (phần bộ nhớ máy tính mà ở đó chương trình chạy) và tiến trình điều khiển (cách thức để biết được phần nào của chương trình đang được bộ xử lý thực thi tại bất kỳ thời điểm nào). Nói cách khác, quá trình là một vùng làm việc và cách thức quản lý những gì chương trình đang thực hiện. Khi một số chương trình chạy cùng một thời điểm, mỗi chương trình sẽ có không gian địa chỉ và tiến trình điều khiển của riêng nó (xem sơ đồ).
Để phục vụ nhiều người dùng, một quá trình có thể cần phải phân nhánh, hay tạo bản sao của chính nó để tạo ra một quá trình con. Cũng giống như quá trình mẹ, quá trình con cũng có không gian địa chỉ và tiến trình điều khiển riêng. Tuy nhiên, thường thì khi quá trình mẹ chấm dứt, mọi quá trình con mà nó khởi động cũng sẽ tự động chấm dứt.
Hệ điều hành đa nhiệm như Unix hay Windows thực hiện việc chuyển đổi qua lại giữa các quá trình, lần lượt phân thời gian sử dụng CPU cho từng quá trình. Nếu máy tính có nhiều CPU, mỗi quá trình có thể được gán riêng cho một trong các CPU.
Điều này thích hợp với các chương trình đơn giản. Các ứng dụng phức tạp hiện nay như xử lý văn bản hay bảng tính có thể xem như là nhiều chương trình khác nhau với yêu cầu chuyển đổi qua lại và giao tiếp giữa các quá trình liên tục. Đây là một vấn đề vì phải mất thời gian để chuyển đổi giữa các quá trình.
CPU hiện đại có bộ quản lý bộ nhớ (memory management unit – MMU) để ngăn bất kỳ quá trình nào vi phạm không gian bộ nhớ của quá trình khác. Chuyển từ một quá trình này sang quá trình khác – được gọi là chuyển ngữ cảnh – có nghĩa là lập trình lại MMU để chỉ đến không gian địa chỉ khác cùng với việc lưu và phục hồi thông tin của một quá trình. Hệ điều hành chịu trách nhiệm quản lý chi tiết của việc chuyển ngữ cảnh nhưng nó cũng tiêu tốn thời gian của CPU. Do mỗi quá trình đều được cách ly với những quá trình khác, giao tiếp giữa các quá trình đòi hỏi phải có những chức năng đặc biệt. Tương tự việc chuyển ngữ cảnh, truyền thông giữa các quá trình cũng chiếm thời gian của bộ xử lý.
Tất cả thời gian trên sẽ cộng dồn lên khi nhiều chương trình chạy cùng lúc hay khi có nhiều người dùng mà mỗi người đều yêu cầu chạy nhiều quá trình cũng lúc. Càng nhiều quá trình chạy thì càng tốn nhiều thời gian của CPU và hệ điều hành để thực hiện công việc chuyển ngữ cảnh.
Nếu số quá trình đủ nhiều, máy chủ có thể phải dành toàn bộ thời gian để thực hiện việc chuyển đổi giữa các quá trình mà không thể thực sự xử lý được công việc nào.

Phân Luồng
Để tránh tình trạng trên, lập trình viên có thể dùng luồng (thread). Luồng cũng giống một quá trình con, ngoại trừ đặc điểm là mọi luồng kết hợp với một quá trình nào đó chia sẻ cùng không gian địa chỉ.Hình minh họa sau:


Ví dụ, nếu có nhiều người dùng cùng chương trình, lập trình viên có thể viết ứng dụng sao cho ứng với mỗi người dùng sẽ có một luồng mới được tạo ra.
Mỗi luồng có tiến trình kiểm soát riêng nhưng nó lại chia sẻ cùng không gian địa chỉ và hầu hết dữ liệu với tất cả luồng khác chạy trong cùng quá trình. Đối với từng người dùng có thể nói rằng chương trình dường như chỉ chạy cho một mình họ.
Ưu điểm là gì?
Thời gian chuyển đổi giữa các luồng ít hơn hẳn so với giữa các quá trình vì không cần phải chuyển đổi không gian địa chỉ. Ngoài ra, vì chúng chia sẻ không gian địa chỉ nên các luồng trong một quá trình có thể giao tiếp với nhau dễ dàng hơn nhiều.
Trên máy tính có nhiều bộ xử lý, chương trình dạng một quá trình đơn chỉ chạy trên một CPU, còn chương trình dạng luồng có thể chia các luồng cho tất cả các bộ xử lý. Vì thế, nếu bạn chuyển chương trình dạng luồng sang máy chủ nhiều bộ xử lý thì nó sẽ chạy nhanh hơn.
Khuyết điểm?
Chương trình dạng luồng khó viết và kiểm lỗi hơn. Không phải mọi thư viện lập trình đều được thiết kế để dùng với luồng và không phải mọi ứng dụng cũ đều có thể làm việc tốt với ứng dụng dạng luồng. Một vài công cụ lập trình cũng làm cho việc thiết kế và thử nghiệm mã luồng khó khăn hơn.
Lỗi liên quan đến luồng cũng khó phát hiện hơn. Các luồng trong một quá trình có thể bị chồng chéo dữ liệu với nhau. Hệ điều hành có thể hạn chế số luồng thực thi chẳng hạn đọc và ghi dữ liệu cùng lúc. Việc định thời cho các luồng khác nhau để tránh xung đột là rất khó khăn.
Tuy nhiên, khi các ứng dụng dùng chung phức tạp và máy chủ nhiều bộ xử lý ngày càng phổ biến thì luồng sẽ ngày càng được dùng nhiều để thực hiện đa xử lý.

Vài dòng đóng góp, sẻ chia đến các bạn.
Thân chào![center]

08H1010052

Tổng số bài gửi : 52
Join date : 02/07/2010

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  08H1010052 on 20/9/2011, 10:40

NguyThiGai (I11C) đã viết:
nguyenthithuylinh (I11C) đã viết:* 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
Mình xin bổ sung sự khác nhau giữa TCP và UDP
TCP:
-Truyền dữ liệu tuần tự (tái sắp xếp bất kỳ dữ liệu nào nhận sai thứ tự)
-Kiểm soát dòng (dùng các cửa sổ trượt để kiểm tra các cửa sổ của máy gửi)
-Quá trình truyền dữ liệu thực hiện kết nối bắt tay 3 bước để thiết lập quá trình khởi động cổng.
UDP:
-Truyền dữ liệu không tuần tự
-Không kiểm soát dòng
-Không thực hiện quá trình bắt tay 3 bước khi gửi và nhận thông tin

Không biết mình có nhớ nhằm không. Nhưng theo mình biết thì cả 2 giao thức TCP và UDP điều dùng được cho mạng LAN, WAN và INTERNET. Khi học mình có thực hành VoIP và dùng wireshark bắt gói tin TCP, UDP qua mạng LAN, WAN.

Rất mong Thầy và các bạn góp ý giúp!!!

Bạn bổ sung chính xác đấy, nhưng mình đóng góp thêm y này cho thực tế về tính năng hơn là:
1: Giao thức UDP không có thuộc tính kiểm tra tính tuần tự FCS ( Frame Check Sequence) trong gói tin truyền tải package như là TCP
2: Giao thức UDP sẽ được ứng dụng trong các quá trình truyền tải media data. vd như (Các gói dữ liệu phát trực tuyến về video, music, các kênh truyền hình, v.v...)
Thân!

08H1010052

Tổng số bài gửi : 52
Join date : 02/07/2010

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

Về Đầu Trang Go down

Mình xin góp thêm ý kiến về bài viết của bạn BuiHuuThanhLuan(I11C)

Bài gửi  08H1010052 on 20/9/2011, 10:59

NguyThiGai (I11C) đã viết:
BuiHuuThanhLuan(I11C) đã viết:Khái niệm tiến trình: là chương trình được cung cấp trong bộ nhớ Ram và được sự quản lý của hệ điều hành.
Tiến trình hệ thống: là các tiến trình vận hành, quản lý tài nguyên của máy tính.
Tiến trình người dùng: là các tiến trình do người dùng cung cấp.

Mô hình chuyển trạng thái của tiến trình:


Một tiến trình P được đưa vào hàng đợi Job queue. Sau khi được hệ điều hành cho phép( thông qua sợ tuyển của điều phối Short-term) sẽ vào hàng đợi ready queue. Tại đây tiến trình P chưa được cấp CPU mà phải đợi trong khoảng thời gian ngắn sau đó mới được cập CPU( điều phối Long-term).
Tiến trình P sẽ trạng thái Waiting khi có yêu câu Nhập/Xuất hoặc chờ sự kiện khác diễn ra, đây là nhập xuất có chờ. Tiến trình sẽ về trạng thái Ready khi đã nhập/xuất xong hoặc sự kiện đã diễn ra xong.
Tiến trình P sẽ từ trạng thái Running-> Ready khi bị ngắt, phần lớn quá trình ngắt này là ngắt thời gian.
Tiến trình P sẽ từ trạng thái Running->Terminated khi có lệnh kết thúc, hoặc return.
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 Ready hay Waiting.

Ở nội dung của bạn:
1: "Một tiến trình P được đưa vào hàng đợi Job queue. Sau khi được hệ điều hành cho phép( thông qua sợ tuyển của điều phối Short-term) sẽ vào hàng đợi ready queue...."
Ý bổ sung: theo mình được biết hôm thầy giải thích về vấn đề này thì lúc mà tiến trình P được đưa từ hàng đời Job queue sang hàng đợi Ready queue là quá trình điều phối Long-term chứ không phải là Short-term như bạn trình bày. Vì giai đoạn này là nhằm cân bằng tải cho I/O và CPU.
2: "Tại đây tiến trình P chưa được cấp CPU mà phải đợi trong khoảng thời gian ngắn sau đó mới được cập CPU( điều phối Long-term)...."
Ý bổ sung: tiến trình lúc này đang trong giai đoạn Ready chuẩn bị đưa vào CPU. Khi tiến trình P được cấp CPU nó sẽ được điều phối theo Short-term nhằm xử lý nhanh giảm tồn động tại Ready queue. Thời gian xử cho các tiến trình cực kỳ nhanh (10ms).

Thân chào!

08H1010052

Tổng số bài gửi : 52
Join date : 02/07/2010

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  Tranvancanh(I11C) on 20/9/2011, 11:42

tranvanhai_21(I11c) đã viết:
Duongthithanhhuynh (I11C) đã viết:
DaoQuangSieu (I11C) đã viết:
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.
Ví dụ như một lớp sử dụng chung 1 cái bảng:
- 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ụ.
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.

uhm cái ví dụ này là của Thầy giảng bài hôm bữa nè, do mình ngồi xa quá nghe ko rõ thanks bạn nhé !
Thanks bạn đã trình bày lại vd của Thầy, mình hiểu rỏ hơn rồi.

Tranvancanh(I11C)

Tổng số bài gửi : 39
Join date : 16/09/2011

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

Về Đầu Trang Go down

Tien trinh la gi/

Bài gửi  TranTrungKien (I11C) on 20/9/2011, 11:49

Admin đã viết:Thảo luận những vấn đề liên quan đến Bài 4
Tiến trình (process) : là chương trình trong thời gian thực hiện(đặt dưới sự quản lý của hệ điều hành) .
So sánh tiến trình với chương trình:
Bản than tiến trình không là chương trình vì là thực thể thụ động , trong khi tiến trình là thực thể hoạt động với nhiều thôn g tin về trạng thái trong đó có bộ đếm chương trình cho biết vị trí lệnh hiện hành .
- Nhiều tiến trình có thể liên quan đến một chương trình và là các thực thể khác nhau khi vận hành .
- Mỗi tiến trình có thể sinh ra nhiều tiến trình con khác khi vận hành.
- Tiến trình cần các tài nguyên ( CPU , Memory,tâp tin, thiết bị I/O) để hoàn thành công việc .
- Tài nguyên cấp cho tiến trinh ngay từ đầu (khi tiến trình được tạo lập) hoặc trong thời gian vận hành và được thu hồi hết khi tiến trình kết thúc .
- Tiến trình là thực thể hoạt động , chương trình là thực thể thụ động , tiến trình có thông – Điểm khác nhau giữa tiến trình và chương trình : tiến trình có thông tin trạng thái để phản ánh tiến trình đang ở trạng thái nào .

TranTrungKien (I11C)

Tổng số bài gửi : 8
Join date : 29/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  DuongTrungTinh(I11C) on 20/9/2011, 12:47

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ình chưa hiểu một vài vấn đề:
Thứ nhất: xét về ví dụ của bạn, nói như bạn thì người bán trà đá đợi khi nào người mua trà đá uống xong (tức là ly trà đá trống) thì người bán trà đá mới tiếp tục rót, nếu như vậy khi khách đông thì người bán trà đá sẽ phải xử lý như thế nào?
Thứ hai: xét về kỹ thuật trên windows và dựa vào ví dụ của bạn, như vậy thì rất dễ xảy ra trường hợp quá tải, mà đối với một hệ điều hành thì không chấp nhận được. Vậy hệ thống sẽ xử lý như thế nào trong trường hợp này?
Bạn nào biết có thể trả lời cho mình được không?

DuongTrungTinh(I11C)

Tổng số bài gửi : 31
Join date : 26/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  nguyenthithutrang (I11C) on 20/9/2011, 13:19

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 !!! farao
Tác dụng của nó là 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....

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

Hàm API - Nhìn từ góc độ người ít có điều kiện học Tin học

Bài gửi  DuongTrungTinh(I11C) on 20/9/2011, 13:39

Nếu bạn chưa từng lập trình những chương trình lớn, bạn sẽ phát hoảng khi đọc khai báo (rắc rối và kỳ cục!!!) của API:

Private Declare Function CallNextHookEx Lib "user32" Alias "CallNextHookEx" (ByVal hHook As Long, ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long

Tuy nhiên bạn có thể chép phần khai báo trên thật đơn giản bằng Text API Viewer. Theo các chuyên gia về Tin học thì đừng bao giờ sử dụng thẳng hàm API trong thủ tục thiết kế chính của mình. Thay vào đó ta thiết kế một hàm hay thủ tục Visual Basic thay thế hàm API để đơn giản hoá (Gọi là wrapper - Tôi không tìm được từ tiếng Việt tương ứng để nói đủ bản chất của nó.)

Ví dụ một wrapper sau:
Public Sub ThoatVaTatMay ()
'Thoát và tắt máy
Dim thoat
Thoat = ExitWindowsEX(2,0)
End Sub

Khi đó, trong chương trình Visual Basic của ta khi cần thoát và tắt máy chỉ việc gọi:
ThoatVaTatMay
hoặc Call ThoatVaTatMay
Là máy tính thực hiện thoát và tắt máy.

Chính vì thế, khi học viên dân tộc được học phổ cập API tại Trung tâm Dạy nghề và Phổ cập Tin học Miền núi ABC của chúng tôi đã gọi chức năng tạo Wrapper chẳng khác dán nhãn Tiếng Việt cho từng loại thuốc tây API vậy. Nên khi lập trình ta nên tạo các Wrapper tương ứng với các chức năng mà mình muốn sử dụng. Đó cũng là lời khuyên của Bill Gate cho chúng ta.

Để tạo các wrapper bạn hãy chèn một Module vào Project. Nếu máy của bạn không cài Visual Basic thì bạn phải copy hay đánh thật chính xác những dòng khai báo dạng như khai báo trên, thật khổ sở nếu như phần tiếng Anh của bạn không thạo lắm, vì một sai sót nhỏ có thể dẫn tới lỗi nặng cho máy. Nếu máy có cài Visual Basic thì quá tốt, chỉ việc khởi động API Viewer để hiện bảng giao tiếp như thế này:

Bạn phải mở các tệp TXT trong thư mục API của thư mục cài Visual Basic trong máy bạn. Ví dụ tệp Win32api.TXT. Máy sẽ hỏi có chuyển thành dạng cơ sở dữ liệu không, thì hãy chọn có để sử dụng API thuận lợi và nhanh chóng hơn. Khi đã copy vào clipboard, bạn có thể dán vào module của mình. Nó sẽ thành dạng tương tự như thế này:

Declare Function CallNextHookEx Lib "user32" Alias "CallNextHookEx" (ByVal hHook As Long, ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long

Bạn phải đánh thêm vào trước khai báo trên cụm từ Private để được:
Private Declare Function CallNextHookEx Lib "user32" Alias "CallNextHookEx" (ByVal hHook As Long, ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long

Tôi xin phép được nhắc lại 2 từ khoá khai báo trong Visual Basic là Private và Public.

Private - Khai báo dùng riêng trong Module. Có nghĩa là bạn chỉ sử dụng được nó trong Module này. Nếu chèn Module khác sẽ không sử dụng được nó.

Public - Khai báo dùng chung, bạn có thể dùng nó ở bất cứ Module nào.

Bạn biết đấy, ta khai báo các hàm API thì lại dùng Private, còn khai báo các Wrapper lại dùng Public. Đó chính là mẹo mà chúng ta đã học trộm được của Microsoft để tránh lỗi hệ thống.

Các hàm mà ta thiết kế trong Visual Basic có điều khác với các hàm API. Tại sao? Vì hàm ta thiết kế (Tạm gọi là hàm Visual Basic) thường chỉ có một kết quả trả về của hàm làm căn cứ xử lý. Còn hàm API không phải chỉ có một kết quả trả về mà nó còn trả về tiếp các giá trị vào các biến mà ta truyền cho nó. Nghĩa là có gọi nó là hàm thì bản chất nó là một thủ tục, ta gọi hàm để thực hiện và kiểm tra xem thủ tục trong hàm đó có thực hiện được thành công hay không mà thôi.

Điều này chỉ hơi giống như khi bạn lập trình với hàm Visual Basic mà bạn khai báo Public Static - Biến tĩnh dùng chung, để làm biến đổi nó trong hàm của bạn. Ta nghiên cứu một cách tổng quát như sau để hiểu cặn kẽ:

Giả sử ở một Wrapper bạn dùng công thức:
TENBIEN=TEN_HAM_API(Bien1, Bien2, Bien3)

Thực ra đây là một thủ tục. Nếu TENBIEN<>0 thì thủ tục này thành công.

Khi đó các Bien1, Bien2, Bien3 truyền vào, sẽ có một giá trị mới. Lập trình API lúc này không chỉ xử lý TENBIEN, mà bạn có thể xử lý các Bien1, Bien2, Bien3. Đó mới thực sự là sức mạnh của API.

Bản chất lập trình của biến là một vùng các ô nhớ trong RAM được đặt tên để tiện sử dụng. Tại một thời điểm biến chỉ có một giá trị duy nhất. Người ta có thể dùng biến này làm giá trị định vị hoặc kích thước lưu trữ cho biến kia. Các hàm API có thể được gọi nhiều lần để sử dụng kết quả trả về của các biến truyền Bien1, Bien2, Bien3 để xử lý theo quy luật xác định nào đó.

DuongTrungTinh(I11C)

Tổng số bài gửi : 31
Join date : 26/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  BuiHuuThanhLuan(I11C) on 20/9/2011, 19:16

08H1010052 đã viết:
NguyThiGai (I11C) đã viết:
BuiHuuThanhLuan(I11C) đã viết:Khái niệm tiến trình: là chương trình được cung cấp trong bộ nhớ Ram và được sự quản lý của hệ điều hành.
Tiến trình hệ thống: là các tiến trình vận hành, quản lý tài nguyên của máy tính.
Tiến trình người dùng: là các tiến trình do người dùng cung cấp.

Mô hình chuyển trạng thái của tiến trình:


Một tiến trình P được đưa vào hàng đợi Job queue. Sau khi được hệ điều hành cho phép( thông qua sợ tuyển của điều phối Short-term) sẽ vào hàng đợi ready queue. Tại đây tiến trình P chưa được cấp CPU mà phải đợi trong khoảng thời gian ngắn sau đó mới được cập CPU( điều phối Long-term).
Tiến trình P sẽ trạng thái Waiting khi có yêu câu Nhập/Xuất hoặc chờ sự kiện khác diễn ra, đây là nhập xuất có chờ. Tiến trình sẽ về trạng thái Ready khi đã nhập/xuất xong hoặc sự kiện đã diễn ra xong.
Tiến trình P sẽ từ trạng thái Running-> Ready khi bị ngắt, phần lớn quá trình ngắt này là ngắt thời gian.
Tiến trình P sẽ từ trạng thái Running->Terminated khi có lệnh kết thúc, hoặc return.
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 Ready hay Waiting.

Ở nội dung của bạn:
1: "Một tiến trình P được đưa vào hàng đợi Job queue. Sau khi được hệ điều hành cho phép( thông qua sợ tuyển của điều phối Short-term) sẽ vào hàng đợi ready queue...."
Ý bổ sung: theo mình được biết hôm thầy giải thích về vấn đề này thì lúc mà tiến trình P được đưa từ hàng đời Job queue sang hàng đợi Ready queue là quá trình điều phối Long-term chứ không phải là Short-term như bạn trình bày. Vì giai đoạn này là nhằm cân bằng tải cho I/O và CPU.
2: "Tại đây tiến trình P chưa được cấp CPU mà phải đợi trong khoảng thời gian ngắn sau đó mới được cập CPU( điều phối Long-term)...."
Ý bổ sung: tiến trình lúc này đang trong giai đoạn Ready chuẩn bị đưa vào CPU. Khi tiến trình P được cấp CPU nó sẽ được điều phối theo Short-term nhằm xử lý nhanh giảm tồn động tại Ready queue. Thời gian xử cho các tiến trình cực kỳ nhanh (10ms).

Thân chào!
Cảm ơn ý kiến bạn! Về điều phối Short - term và Long - term mình đã ghi nhầm.

BuiHuuThanhLuan(I11C)

Tổng số bài gửi : 30
Join date : 30/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  XuanThai_I11C on 20/9/2011, 19:32

DaoVanHoang (I11C) đã viết:Câu 1: Nắm vững được khái niệm tiến trình là gì. Trình bày mô hình chuyển trạng thái của tiến trình.

Câu 2: 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 HDH.

Câu 3: Trình bày mô hình luân chuyển CPU giữa 2 tiến trình P0 và P1

Câu 4: Phân tích vai trò của các loại hàng chờ được HDH duy trì trong quản lý tiến trình. Phân biệt điều phối chậm với điều phối nhanh. Cho các ví dụ minh họa. Phân biệt Job Queue với Ready Queue.

Câu 5: Phân tích vai trò của chuyển ngữ cảnh trong điều phối tiến trình.

Câu 6: Trình bày những lý do phải cộng tác giữa các tiến trình.

Câu 7: Phát biểu bài toán sản xuất tiêu thụ để minh họ 1 hệ thống có nhiều tiến trình cộng tác song song đồng hành cùng chia sẻ tài nguyên.


Bạn có phần trả lời các câu hỏi của thầy không post lên cho các bạn cùng tham khảo luôn đi chứ post mình câu hỏi thì khó quá àh nha. Thanks!

XuanThai_I11C

Tổng số bài gửi : 20
Join date : 10/09/2011
Age : 30

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

Về Đầu Trang Go down

Những lý do phải cộng tác giữa các tiến trình

Bài gửi  tannamthanh(I11C) on 20/9/2011, 19:45

_ Chia sẻ thông tin (Information Sharing): Một tiến trình sử dụng thông tin do tiến trình khác cung cấp. Ví dụ: các bạn trong lớp chia nhóm học. Nhóm một nghiên cứu chương 1, nhóm hai nghiên cứu chương 2. Sau đó, hai nhóm trao đổi thông tin cho nhau. Kết quả hai nhóm mau chóng tìm hiểu hết hai chương.
_ Tăng tốc tính toán (Computation Speedup): Các tiến trình cùng làm việc song song trên 1 hoặc nhiều máy để giải quyết bài toán chung.
_ Đảm bảo tính đơn thể (Modularity): Chương trình được chia thành các đơn thể chức năng vận hành trong các tiến trình hoặc luồng khác nhau. Ví dụ: mỗi bạn học một bài, đảm bảo tính đơn thể.
_ Đảm bảo tính tiện dụng (Convenience): Người dùng có nhu cầu làm nhiều việc một lúc: Soạn thảo, In ấn, Duyệt Web, Lấy file về, Biên dịch chương trình, Kiểm tra chính tả,...

tannamthanh(I11C)

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

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

Về Đầu Trang Go down

Phân biệt điều phối chậm & nhanh

Bài gửi  caotanthanh(i11c) on 20/9/2011, 19:50

_ Điều phối chậm (Long-term scheduler (or job scheduler)) :
• Chọn process nào sẽ được đưa vào ready queue (từ New chuyển sang Ready)
• Kiểm soát Độ đa chương
• Do có nhiều thời gian (tới vài phút), loại scheduler này có điều kiện để lựa chọn kỹ càng nhằm phối hợp cân đối 2 loại tiến trình
. Hướng CPU: tính toán nhiều, ít I/O.
Ví dụ: Công ty có một chiếc ô tô (CPU), nhiều nhân viên cần đi công tác (nhiều tiến trình) phải sử dụng ô tô. Do đó, ô tô (CPU) phải bận (phục vụ) cho nhiều người (nhiều tiến trình).
. Hướng I/O: tính toán ít, nhiều I/O
Ví dụ: Công ty có một chiếc ô tô (CPU), các nhân viên trong công ty chỉ ngồi nghiên cứu (I/O), không sử dụng đến ô tô. Vậy quá lãng phí ô tô (CPU)
• Mục đích cân bằng tải

_Điều phối nhanh (Short-term scheduler (or CPU scheduler)) :
• Còn gọi là Điều phối CPU.
• Chọn tiến trình từ Ready Queue để cấp CPU.
• Có tần suất công việc cao. Thường cứ 100 ms lại tốn 10 ms để xác định tiến trình kế tiếp, như vậy 10/(100+10)=9% thời gian CPU được dùng để điều phối công việc.
avatar
caotanthanh(i11c)

Tổng số bài gửi : 16
Join date : 03/09/2011
Age : 28
Đến từ : Buôn Hồ-KrongBuk-ĐakLak

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

Về Đầu Trang Go down

Phân tích vai trò của khối kiểm soát tiến trình

Bài gửi  tannamthanh(I11C) on 20/9/2011, 19:55

_ Khối kiểm soát tiến trình (Process Control Block - PCB ) - Bảng thông tin về môi trường và trạng thái hoạt động của tiến trình:
_ Chứa các thông tin ứng với mỗi process. Process ID, parent process ID
• Credentials (user ID, group ID, ID,...)
• Trạng thái process : new, ready, running, waiting…
• Program counter: địa chỉ của lệnh kế tiếp sẽ thực thi
• Các thanh ghi CPU
• Thông tin dùng để định thời CPU: priority,...
• Thông tin bộ nhớ: base/limit register, page tables…
• Thông tin thống kê: CPU time, time limits…
• Thông tin trạng thái I/O: danh sách thiết bị I/O được cấp phát, danh sách các file đang mở,...
• Con trỏ (pointer) đến PCBs khác.

_ PCB đơn giản phục vụ như kho chứa cho bất cứ thông tin khác nhau từ quá trình này tới quá trình khác.

tannamthanh(I11C)

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

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

Về Đầu Trang Go down

Các bước tạo lập một tiến trình(Process Creation)

Bài gửi  BuiHuuThanhLuan(I11C) on 20/9/2011, 20:29

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(system call) để 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.


Cây tiến trình trong Linux
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 khối kiểm soát (Process Control Block) 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.
  • Trong UNIX: khi tiến trình cha bị hủy thì tiến trình con bị hủy theo (process group)

  • Trong Windows: không có tổ chức thứ bậc, các process ngang hàng nhau

BuiHuuThanhLuan(I11C)

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

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

Về Đầu Trang Go down

Kết thúc một tiến trình

Bài gửi  TranCamThu(I11C) on 20/9/2011, 20:41

Nguyên nhân kết thúc một tiến trình:
  • Chủ động:

Kết thúc bình thường.
Kết thúc có lỗi sai.
  • Bị động:

Bị kết thúc bởi yêu cầu của process khác.
Kết thúc do lỗi nghiêm trọng(kết thúc bởi hệ điều hành

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

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

TranCamThu(I11C)

Tổng số bài gửi : 11
Join date : 02/09/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  tranvanhai_21(I11c) on 20/9/2011, 23:38

08H1010052 đã viết:
NguyThiGai (I11C) đã viết:
BuiHuuThanhLuan(I11C) đã viết:Khái niệm tiến trình: là chương trình được cung cấp trong bộ nhớ Ram và được sự quản lý của hệ điều hành.
Tiến trình hệ thống: là các tiến trình vận hành, quản lý tài nguyên của máy tính.
Tiến trình người dùng: là các tiến trình do người dùng cung cấp.

Mô hình chuyển trạng thái của tiến trình:


Một tiến trình P được đưa vào hàng đợi Job queue. Sau khi được hệ điều hành cho phép( thông qua sợ tuyển của điều phối Short-term) sẽ vào hàng đợi ready queue. Tại đây tiến trình P chưa được cấp CPU mà phải đợi trong khoảng thời gian ngắn sau đó mới được cập CPU( điều phối Long-term).
Tiến trình P sẽ trạng thái Waiting khi có yêu câu Nhập/Xuất hoặc chờ sự kiện khác diễn ra, đây là nhập xuất có chờ. Tiến trình sẽ về trạng thái Ready khi đã nhập/xuất xong hoặc sự kiện đã diễn ra xong.
Tiến trình P sẽ từ trạng thái Running-> Ready khi bị ngắt, phần lớn quá trình ngắt này là ngắt thời gian.
Tiến trình P sẽ từ trạng thái Running->Terminated khi có lệnh kết thúc, hoặc return.
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 Ready hay Waiting.

Ở nội dung của bạn:
1: "Một tiến trình P được đưa vào hàng đợi Job queue. Sau khi được hệ điều hành cho phép( thông qua sợ tuyển của điều phối Short-term) sẽ vào hàng đợi ready queue...."
Ý bổ sung: theo mình được biết hôm thầy giải thích về vấn đề này thì lúc mà tiến trình P được đưa từ hàng đời Job queue sang hàng đợi Ready queue là quá trình điều phối Long-term chứ không phải là Short-term như bạn trình bày. Vì giai đoạn này là nhằm cân bằng tải cho I/O và CPU.
2: "Tại đây tiến trình P chưa được cấp CPU mà phải đợi trong khoảng thời gian ngắn sau đó mới được cập CPU( điều phối Long-term)...."
Ý bổ sung: tiến trình lúc này đang trong giai đoạn Ready chuẩn bị đưa vào CPU. Khi tiến trình P được cấp CPU nó sẽ được điều phối theo Short-term nhằm xử lý nhanh giảm tồn động tại Ready queue. Thời gian xử cho các tiến trình cực kỳ nhanh (10ms).

Thân chào!

uhm Mình cũng đọc nội dung của bạn gái và bạn góp ý theo ý 1 và ý 2 đều đúng
mình cũng nghe Thầy giảng và theo mình ý 1
--
tiến trình P được đưa từ hàng đời Job queue sang hàng đợi Ready queue là quá trình điều phối Long-term (vì qua quá trình trong quá trình Job queue sang hàng đợi Ready queue là quá trình điều phối Long-term vì nó phải qua sơ tuyển mà qua sơ tuyển thì đòi hỏi phải cần nhiều thời gian do đó mình cũng nghĩ là long-term chứ không phải là short-term).

avatar
tranvanhai_21(I11c)

Tổng số bài gửi : 47
Join date : 25/08/2011
Age : 33
Đến từ : Đồng Nai

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

Về Đầu Trang Go down

Các danh sách sử dụng trong quá trình điều phối

Bài gửi  NgoThiCamNhung47 (I11C) on 21/9/2011, 09:08

Hệ điều hành sử dụng hai loại danh sách để thực hiện điều phối các tiến trình là danh sách sẵn sàng (ready list) và danh sách chờ đợi (waiting list).
Khi một tiến trình bắt đầu đi vào hệ thống, nó được chèn vào danh sách các tác vụ (job list). Danh sách này bao gồm tất cả các tiến trình của hệ thống. Nhưng chỉ các tiến trình đang thường trú trong bộ nhớ chính và ở trạng thái sẵn sàng tiếp nhận CPU để hoạt động mới được đưa vào danh sách sẵn sàng.
Bộ điều phối sẽ chọn một tiến trình trong danh sách sẵn sàng và cấp CPU cho tiến trình đó. Tiến trình được cấp CPU sẽ thực hiện xử lý, và có thể chuyển sang trạng thái chờ khi xảy ra các sự kiện như đợi một thao tác nhập/xuất hoàn tất, yêu cầu tài nguyên chưa được thỏa mãn, được yêu cầu tạm dừng ...Khi đó tiến trình sẽ được chuyển sang một danh sách chờ đợi.



Hình: Các danh sách điều phối

Hệ điều hành chỉ sử dụng một danh sách sẵn sàng cho toàn hệ thống, nhưng mỗi một tài nguyên ( thiết bị ngoại vi ) có một danh sách chờ đợi riêng bao gồm các tiến trình đang chờ được cấp phát tài nguyên đó.
Quá trình xử lý của một tiến trình trải qua những chu kỳ chuyển đổi qua lại giữa danh sách sẵn sàng và danh sách chờ đợi. Sơ đồ dưới đây mô tả sự điều phối các tiến trình dựa trên các danh sách của hệ thống.
Thoạt đầu tiến trình mới được đặt trong danh sách các tiến trình sẵn sàng (ready list), nó sẽ đợi trong danh sách này cho đến khi được chọn để cấp phát CPU và bắt đầu xử lý. Sau đó có thể xảy ra một trong các tình huống sau :
Tiến trình phát sinh một yêu cầu một tài nguyên mà hệ thống chưa thể đáp ứng, khi đó tiến trình sẽ được chuyển sang danh sách các tiến trình đang chờ tài nguyên tương ứng.
Tiến trình có thể bị bắt buộc tạm dừng xử lý do một ngắt xảy ra, khi đó tiến trình được đưa trở lại vào danh sách sẵn sàng để chờ được cấp CPU cho lượt tiếp theo.

]

Hình: Sơ đồ chuyển đổi giữa các danh sách điều phối

Trong trường hợp đầu tiên, tiến trình cuối cùng sẽ chuyển từ trạng thái blocked sang trạng thái ready và lại được đưa trở vào danh sách sẵn sàng. Tiến trình lặp lại chu kỳ này cho đến khi hoàn tất tác vụ thì được hệ thống hủy bỏ khỏi mọi danh sách điều phối.

NgoThiCamNhung47 (I11C)

Tổng số bài gửi : 5
Join date : 26/08/2011
Age : 28

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  chauchanduong (I11C) on 21/9/2011, 09:21

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ì
chauchanduong(I11C) đã viết:
Long-tern scheduler(or job scheduler) Điều phối chậm
Chon process nào sẽ đưa vào ready queue (từ New chuyển sang Ready)
Short-tern scherduler(or CPU scherduler) Điều phối nhanh
Chọn process nào sẽ chiếm CPU để xử lý (từ Ready chuyển sang Running)
Medium-tern scherduler Điều phối vừa
Chuyển process từ bộ nhớ chính 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

avatar
chauchanduong (I11C)

Tổng số bài gửi : 18
Join date : 26/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


Sponsored content


Về Đầu Trang Go down

Trang 5 trong tổng số 13 trang Previous  1, 2, 3, 4, 5, 6 ... 11, 12, 13  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