Tin học
Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.

Khái niệm cơ bản về tiến trình trong Hệ Điều Hành

Go down

Khái niệm cơ bản về tiến trình trong Hệ Điều Hành Empty Khái niệm cơ bản về tiến trình trong Hệ Điều Hành

Bài gửi  DangMinhQuang(I11C) 17/10/2011, 11:58

Tiến 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 Tiến trình) và khả năng kiểm soát hiện trạng của bộ xử lý trong Tiến trình thực thi chương trình (tiến trình điều khiển của Tiến trình). Luồng (thread) tương tự như Tiến 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 Tiến trình.
Tiến 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 Tiến 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 Tiến trình. Tiến 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, Tiến 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ó .Để phục vụ nhiều người dùng, một Tiến 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 Tiến trình con. Cũng giống như Tiến trình mẹ, Tiến 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 Tiến trình mẹ chấm dứt, mọi Tiến 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 Tiến trình, lần lượt phân thời gian sử dụng CPU cho từng Tiến trình. Nếu máy tính có nhiều CPU, mỗi Tiến 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 Tiến 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 Tiến trình.
CPU hiện đại có bộ quản lý bộ nhớ (memory management unit – MMU) để ngăn bất kỳ Tiến trình nào vi phạm không gian bộ nhớ của Tiến trình khác. Chuyển từ một Tiến trình này sang Tiến 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 Tiến 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 Tiến trình đều được cách ly với những Tiến trình khác, giao tiếp giữa các Tiến 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 Tiến 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 Tiến trình cũng lúc. Càng nhiều Tiến 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ố Tiến 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 Tiến trình mà không thể thực sự xử lý được công việc nào.

DangMinhQuang(I11C)

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

Về Đầu Trang Go down

Về Đầu Trang

- Similar topics

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