Process trong hệ điều hành là gì

Những chiếc máy tính những năm đầu được chế tạo và phát triển chỉ cho phép một chương trình được chạy tại một thời điểm.

Sau đó, xuất hiện hệ thống cho phép nhiều chương trình cùng chạy. Dẫn tới việc cần phân rõ quyền điều khiển cũng như sự phân chia tài nguyên của hệ thống cho các chương trình đang chạy. Từ đó xuất hiện khái niệm về quá trình (process).

Tiến trình (process) là gì

Process là một chương trình đang được thực thi (đang chạy). Nhưng, một chương trình không phải là một process. Vì chương trình là một file, hay một folder bị động nằm trên máy; Trong khi đó, một process là một chương trình đang hoạt động (đang chạy, đã được tải lên bộ nhớ chính để hoạt động).

Một chương trình có thể có hai (hay nhiều) process đang chạy, nhưng chúng được coi là hai (hay nhiều) quá trình độc lập với nhau.

Hơn những thế, một process có thể là môi trường thực thi (execution environment) cho những dòng code khác. Ví dụ: các chương trình của Java cần được chạy trong Java Virtual Machine (JVM).

Wikipedia

Các trạng thái của một process

Process là gì
Process
  • New: process mới được tạo.
  • Running: process đang được thực thi/ chạy.
  • Waiting: process đợi I/O hoặc tín hiệu nào đó.
  • Ready: process sẵn sàng được CPU chạy.
  • Terminated: process hoàn thành việc. (hoặc gọi trạng thái blocked của một process)

Note: Những process của một chương trình cần phải tải lên bộ nhớ chính (cụ thể là RAM) trước khi được CPU nhận và thực hiện những yêu cầu của chương trình.

Các bước chuyển quá trình của process:

  • Những process được chương trình tạo ra, được sắp vào “hàng chờ” (hay còn gọi là stack).
  • Process được CPU thấy và thực thi.
  • Khi process quá bự, CPU phải nhả để thực hiện process khác. (bạn có thể tìm hiểu các thuật toán xử lý process của CPU)
  • Khi process đã được thực hiện xong.
  • Khi process đang thực hiện và yêu cầu I/O hay các tín hiệu khác. (ví dụ bạn cần file word in ra, process sẽ phải nói cho CPU, CPU gửi tín hiệu cho máy in, máy in in ra rồi báo lại CPU. Trong thời gian đó, để tiết kiệm thời gian, process này sẽ được chuyển qua trạng thái chờ, cho process khác vào thực hiện)
  • Sau khi I/O hay tín hiệu đã đến, process được sắp lại vào “hàng chờ”, chờ thực thi.

Process control block (PCB)

Mỗi process khi tạo ra sẽ được lưu thông tin tại một PCB tương ứng.

PCB của mỗi process là các loại thông tin sau:

  • Trạng thái của process: 1 trong 5 trạng thái được liệt kê bên trên
  • Bộ đếm (program counter): chứa địa chỉ (hay trong ngôn ngữ lập trình C, ta gọi nó là con trỏ/ pointer) đến lệnh cần thực thi tiếp theo
  • Thanh ghi CPU: có kiểu khác nhau tùy vào kiến trúc máy tính
  • Thông tin định thời CPU: độ ưu tiên của các process, quy định process nào thì thực thi trước
  • Thông tin quản lý bộ nhớ: tùy hệ thống bộ nhớ của từng hệ điều hành
  • Trạng thái của các tín hiệu I/O: danh sách các I/O được sử dụng bởi các process
  • Thông tin về số lượng CPU, thời gian sử dụng thực tế, thời gian process được giữ CPU tối đa
Process Control Block
PROCESS CONTROL BLOCK (PCB)

Thông qua bài viết trên chắc hẳn bạn cũng đã hiểu process là gì và biết thêm nhiều thông tin về nó rồi đúng không nào, Streamhub mong rằng chúng sẽ hữu ích dành cho bạn.

Đã nhắc đến quá trình (process), bạn nên tìm hiểu thêm về định thời, khả năng CPU của chúng ta kiểm soát các process ấy tại bài viết về bộ định thời.

Tò mò ở mặt ứng dụng hơn của process? Cùng xem ngay qua bài viết uefi là gì.

Trả lời