Trong môi trường đơn lập trình, chỉ một tiến trình có thể sống ở bất kỳ thời điểm nhất định nào. Tiến trình này được sing ra khi một chương trình được chọn để thự thi và được đưa vào bộ nhớ chính (có lẽ
từng phần) với các yêu cầu sơ bộ của nó được hoàn thành. Ngay sau khi nó sinh ra, hệ thống bắt đầu thực thi lệnh của nó. Sự thi hành lệnh tiếp tục cho đến khi tiến trình cần phải đọc một số dữ liệu từ một thiết bị nhập ho ặc muốn ghi một số dữ liệu lên một thiết bị xuất. Có nhiều bộ xử lý chuyên dụng được gọi là bộ xử lý I/O để chuyển dữ liệu từ các thiết bị nhập tới bộ nhớ chính và từ bộ nhớ chính tới các thiết bị xuất. Các lớp thiết bị I/O khác nhau có các bộ xử lý I/O khác nhau. Một bộ xử lý I/O là một bộ xử lý chuyên dụng dùng để làm một tác vụ cụ thể một cách hiệu quả. Có thể hiểu là một bộ xử lý như thế sẽ thực hiện tác vụ cụ thể tốt hơn một bộ xử lý đa dụng, tức là CPU. Trong khi một thao tác I/O đang được tiến hành, CPU phải chờ và không làm gì cả. Sau khi thao tác I/O được hoàn thành, CPU sẽ tiếp tục lại thực thi các lệnh. Chu kỳ này, sẽ thông qua các trạng thái tiến trình đang chạy và I/O, có thể được lặp đi lặp lại nhiều lần cho đến khi công việc được hoàn thành hoặc vì một số lý do bị bỏ dở. Chu kỳ sống của một tiến trình trong môi trường đơn lập trình được thể hiện trong hình 3.1.
Hình 3.1 : Chu kỳ sống của các tiến trình trong môi trường đơn lập trình
Nếu thời gian thực thi trung bình của một chương trình trong môi trường đơn lập trình là bằng e và thời gian I/O trung bình, tức là, tổng thời gian trung bình dành cho các thao tác I/O của chương trình là b, khi đó tỷ lệ b/(b+e) được gọi là phân số chờ CPU và được biểu diễn bằng w, khi đó w = b/(b+e).
Giá trị này( w), chính xác là phân số thời gian CPU nhàn rỗi. Ví dụ, nếu thời gian thực thi trung bình của chương trình là 10 giây, trong đó, trung bình, 9 giây là dành cho các thao tác I/O, khi đó w = 9/(9+1) = 9/10 = 0.9. Điều này có nghĩa là thời gian trung bình, 90% thời gian CPU bị lãng phí. Không chỉ thời gian của CPU bị lãng phí, nhưng cũng có khi hệ thống dưới tải của các thiết bị khác, ví dụ, bộ nhớ, bộ nhớ đệm, và/hoặc đĩa cứng sẽ không được sử dụng tốt. Điều này sảy ra trong khi thời gian của người dùng máy tính có thể bị lãng phí bởi không có khẳ năng chạy các chương trình khác cùng một lúc. Phân số 1/w là bằng e/(e+b), nó được gọi là phân số bận rộn CPU.
Hiệu quả gia tăng bao nhiêu khi chúng ta chuyển đổi từ đơn lập trình sang đa lập trình ? Chúng ta sẽ trả lời câu hỏi này về phần sử dụng CPU trong phần kế tiếp.