25/05/2018, 07:54

Managing processes trong UNIX

Processes Sau khi hệ thống hoàn thành việc khởi động hệ thống ta có thể thực hiện chạy các ứng dụng. Một ứng dụng đang thực thi gọi là một process. Công việc của hệ điều hành là quản lý thực thi ứng dụng. Khi thực thi một ...

Processes

Sau khi hệ thống hoàn thành việc khởi động hệ thống ta có thể thực hiện chạy các ứng dụng. Một ứng dụng đang thực thi gọi là một process. Công việc của hệ điều hành là quản lý thực thi ứng dụng. Khi thực thi một chương trình thì hệ điều hành sẽ tạo ra một process mới. Nhiều process có thể cùng đồng thời tồn tại, nhưng chỉ một process có thể được thực hiện thực sự trên CPU tại một thời điểm. Hệ điều hành phân chia việc thực thi các process một các rất nhanh làm cho các process như đang thực hiện đồng thời. Khái niệm này xem như là sự phân chia thời gian xử lý hoặc đa nhiệm.

Khi thoát khỏi chương trình thì process sẽ kết thúc và hệ điều hành sẽ giải phóng các tài nguyên mà chương trình đ• sử dụng.

Hầu hết các chương trình đều thực hiện một vài nhiệm vụ từ lúc khởi đầu cho đến lúc kết thúc cho nên để thực thi các tác vụ chương trình yêu cầu hệ điều hành cung cấp các tài nguyên cần thiết cho việc thực thi.

Có một vài loại process có trong các hệ điều hành Unix. Mỗi loại có các đặc điểm riêng gồm: Interactive process là process được khởi động bởi shell nó có thể là foreground hoặc background. Batch process là process mà không tương ứng với terminal. Daemon process là process mà chạy background khi được yêu cầu. Loại này thường thực hiện khi khởi động hệ thống.

Một số lệnh liên quan đến việc quản lý tiến trình:kill, ps

Phần tham số của lệnh xem trong end user.

Ví dụ:

$ ps -f

UID PID PPID C STIME TTY TIME COMD

sartin 1400 1398 80 18:31:32 pts/5 0:01 -sh

sartin 1406 1400 25 18:34:33 pts/5 0:00 ps –f

Lệnh ps cho phép người quản trị xem xét các thông tin về hệ thông báo gồm các thông số sau:

F Chỉ ra trạng thái của process và được tính toán bởi các giá trị hexadecimal gồm:

00 Process đ• kết thúc.

01 Là system process luôn tồn tại trong memory

02 Process đang bị kiểm soát bởi tiến trình cha.

04 Process đang bị kiểm soát bởi tiến trình cha và nó đ• bị dừng.

08 Process không thể được kích hoạt bởi các signal

10 Process đang trong bộ nhớ và bị lock đang đợi event

20 Process không thể bị swapped

S Cũng dùng chỉ trạng thái của process:

O Process đang chạy trên processor.

S Process đang sleeping, và đang đợi I/O event để hoàn thành.

R Process đang sẵn sàng chạy.

I Process không làm gì.

Z Process đ• bị kết thúc và tiến trình cha không đợi nhưng nó vẫn đang trong process table (zombie process)

T Process đ• bị ngừng bởi tiến trình cha.

X Process đang đợi để lấy thêm bộ nhớ.

UID User ID của người chủ process

PID Process ID number

PPID Parent process ID number

C Sử dụng CPU theo thời gian biểu.

CLS Lớp thời gian biểu, real-time, time sharing, hoặc system

PRI Mức ưu tiên Process (số càng lớn độ ưu tiên càng nhỏ).

NI Mức độ ưu tiên về chiếm dụng thời gian xử lý CPU. Tăng giá trị -> giảm độ ưu tiên.

SZ Tổng virtual memory yêu cầu bởi process.

Wchan Địa chỉ của process trong process table.

TTY Terminal khởi động process, hoặc cha nó. (A ? chỉ ra không có terminal tồn tại.)

TIME Tổng thời gian process sử dụng CPU từ khi process bắt đầu.

COMD Lệnh tạo ra process

Process scheduling

Thông thường các hệ thống lớn hoặc cần cung cấp dữ liệu thường xuyên hệ thống luôn được chạy 24/24. UNIX đưa ra một số lệnh cho phép thực hiện các process theo thời gian định sẵn.

Lệnh at: Lệnh at được sử dụng để để đặt schedule cho một lệnh thực hiện trong thời gian qui định.

at time date < file

Việc đặt lịch theo khoảng thời gian nào đó tuỳ theo người đặt qui định. Có thể là hh:mm, có thể hh:mm(pm,am). Có một số từ về thời gian dùng làm option là noon, midnight, now, next. Có thể đặt ngày, tháng thực hiện May 10 hoặc day of the week .

Ví dụ:

at 20:30 < reorg.data

at 8:30 pm < reorg/data

at 20:30 today < reorg.data

at 8:30 pm Friday < reorg.data

at 0900 Monday next week < reorg.data

Dùng lệnh at -l để hiện danh sách các các process được schedule.

Ví dụ:

$ at -l

user = tparker job 827362.a at Wed Aug 31 06:00:00 EDT 1995

user = tparker job 829283.a at Wed Aug 31 09:30:00 EDT 1995

Dùng lệnh at –r <job> để bỏ một schedule.

Ví dụ:

at -r 2892732.a

Lệnh cron và crontab: cron là một tiện ích cho phép thực hiện các lệnh tại một thời điểm chỉ định mà không cần một ai trực tiếp khởi động nó. Hệ thống UNIX tự động load cron như là một daemon khi nó khởi động. Khi hoạt động cron đọc thời gian và công việc mà nó được định thực hiện trong crontab file. Việc thực hiện các tác vụ đặt trong crontab file là luôn luôn được thực hiện nó chỉ ngừng thực hiện khi kết thúc tiện ích cron hoặc khi thay đổi thông tin trong crontab file.

Trên hầu hết các hệ thống việc truy nhập và tạo các schedule chỉ được thực hiện bởi người quản trị hệ thống.

Ngày nay một số hệ điều hành UNIX còn cho phép người sử dụng tự tạo các crontab của riêng họ.

Để tạo crontab file sử dụng lệnh crontab với tham số -l. Nó sẽ tạo ra một crontab file cho phép tạo các tác vụ mong muốn.

$ crontab -l > new_crontab_file

$ vi new_crontab_file

[edit the file to update your crontab]

$ crontab new_crontab_file

$

Một crontab file được thể hiện dưới khuôn dạng sau:

<minute> <hour> <day-of-month> <month-of-year> <day-of-week> <command>

Giá trị chấp nhận của các trường:

minute (0-59)

hour (0-23)

day of month (1-31)

month of year (1-12)

day of week (0-6, 0 is Sunday)

Command (rest of line)

Ví dụ

0 17 1 * 0 date | mail user

Lệnh sẽ được thực hiện vào 5 p.m. vào ngày đầu tháng và 5 p.m. mỗi ngày chủ nhật.

Các file cron tab được đặt trong thư mục cron để thực hiện. Thư mục này có thể ở một vị trí nào đó tuỳ loại UNIX thông thường là /usr/spool/cron/ hoặc /var/spool/cron/.

Process priorities

0