- vừa được xem lúc

Tiến trình trong hệ điều hành (Phần 2)

0 0 22

Người đăng: Le Duc Tien

Theo Viblo Asia

Trong bài viết trước mình đã giới thiệu sơ lược về định nghĩa, đặc điểm và phân loại tiến trình, ở bài viết này, mình xin tiếp tục trình bày về vấn đề quan trọng đó là điều phối tiến trình trong hệ điều hành.

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 một trong các trạng thái sau đây: * Mới tạo(new): 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 tài nguyên,hay chờ một sự kiện xảy ra. * Ready(ready): tiến trình chờ được cấp phát CPU để xử lý. * Waiting (đợi): tiến trình phải dừng vì thiếu tài nguyên hoặc chờ một sự kiện nào đó. * Kết thúc(halt) : tiến trình hoàn tất xử lý Các trạng thái của tiến trình được biểu diễn qua sơ đồ sau:

Mục đích

Sự công bằng: Các tiến trình chia sẻ CPU một cách công bằng,không có tiến trình nào phải chờ đợi vô hạn để được cấp phát CPU. Tính hiệu quả: Hệ thống phải tận dụng được CPU 100% thời gian.(thời gian chờ trung bình ngắn). Thời gian đáp ứng hợp lý: Cực tiểu hóa thời gian hồi đáp cho các tương tác của người sử dụng. Thời gian lưu lại trong hệ thống: Cực tiểu hóa thời gian hoàn tất các ác vụ xử lý. Thông lượng tối đa: Cực đại hóa số công việc được xử lý trong một đơn vị thời gian .

Tuy nhiên thường không thể thỏa mãn tất cả các mục tiêu kể trên vì bản thân chúng có sự mâu thuẩn nhau mà chỉ có thể dung hòa chúng ở mức độ nào đó.

Cơ chế điều phối độc quyền

Nguyên lý: Cơ chế này cho phép một tiến trình khi nhận được CPU sẽ có quyền đọc chiếm CPU đến khi hoàn tất xử lý hoặc tự giải phóng CPU.Khi đó quyết định điều phối sẻ xảy ra các trường hợp sau. • Tiến trình chuyển từ trạng thái running --> blockit • Kết thúc tiến trình. Các giải thuật độc quyền dễ cài đặt thuật toán.Tuy nhiên lại không thích hợp cho hệ thống tổng quát nhiều người dùng.Vì nếu cho tiến trình thời gian chiếm giử CPU tùy ý thì sẻ ngăn cản quá trình xử lý của các tiến trình còn lại.

Cơ chế điều phối không độc quyền.

Ngược với nguyên lý độc quyền ,điều phối theo nguyên lý không đọc quyền cho phép tạm dừng hoạt động của tiến trình đang sẵn sang xử lý.Khi một tiến trình nhận CPU nó vấn được sử dụng CPU cho đến khi hoàn tất hoặc tự nguyện giải phóng CPU,nhưng một tiến trình khác có độ ưu tiên cao hơn có thể dành quyền sử dụng CPU của tiến trình ban đầu.Như vậy tiến trình có thể dừng hoạt động bắt cứ lúc nào mà không được báo trước để tiến trình khác xử lý.Các quyết định điều phối xảy ra khi: • Tiến trình chuyển từ trạng thái running --> blocked. • Một tiến trình chờ trạng thái xử lý. • Chuyển từ trạng thái chờ(blocked) --> ready. • Khi một tiến trình kết thúc. Các thuật toán điều phối theo nguyên tắc không đọc quyến ngăn cản tình trạng một tiến trình đọc chiếm CPU.

Trong bài viết sau mình sẽ trình bày về chiến lược một hàng đợi nhiều tiến trình chờ phân phối xử lý. Trong chiến lược một hàng đợi này có 4 thuật toán chính FIFO, SJF ,RR, thuật toán ƯU TIÊN

Mr.Nara

Bình luận

Bài viết tương tự

- vừa được xem lúc

Giới thiệu Typescript - Sự khác nhau giữa Typescript và Javascript

Typescript là gì. TypeScript là một ngôn ngữ giúp cung cấp quy mô lớn hơn so với JavaScript.

0 0 500

- vừa được xem lúc

Cài đặt WSL / WSL2 trên Windows 10 để code như trên Ubuntu

Sau vài ba năm mình chuyển qua code trên Ubuntu thì thật không thể phủ nhận rằng mình đã yêu em nó. Cá nhân mình sử dụng Ubuntu để code web thì thật là tuyệt vời.

0 0 376

- vừa được xem lúc

Đặt tên commit message sao cho "tình nghĩa anh em chắc chắn bền lâu"????

. Lời mở đầu. .

1 1 701

- vừa được xem lúc

Tìm hiểu về Resource Controller trong Laravel

Giới thiệu. Trong laravel, việc sử dụng các route post, get, group để gọi đến 1 action của Controller đã là quá quen đối với các bạn sử dụng framework này.

0 0 335

- vừa được xem lúc

Phân quyền đơn giản với package Laravel permission

Như các bạn đã biết, phân quyền trong một ứng dụng là một phần không thể thiếu trong việc phát triển phần mềm, dù đó là ứng dụng web hay là mobile. Vậy nên, hôm nay mình sẽ giới thiệu một package có thể giúp các bạn phân quyền nhanh và đơn giản trong một website được viết bằng PHP với framework là L

0 0 421

- vừa được xem lúc

Bạn đã biết các tips này khi làm việc với chuỗi trong JavaScript chưa ?

Hi xin chào các bạn, tiếp tục chuỗi chủ đề về cái thằng JavaScript này, hôm nay mình sẽ giới thiệu cho các bạn một số thủ thuật hay ho khi làm việc với chuỗi trong JavaScript có thể bạn đã hoặc chưa từng dùng. Cụ thể như nào thì hãy cùng mình tìm hiểu trong bài viết này nhé (go).

0 0 414