1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng hệ điều hành chương 3 tiến trình (process)

39 704 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 39
Dung lượng 1,09 MB

Nội dung

Mục TiêuGiới thiệu các khái niệm về Tiến trình và những thao tác cơ bản trong quản lý Tiến trình như tạo, định thời và kết thúc tiến trình.. Nội DungCác khái niệm cơ bản Định thời cho Ti

Trang 1

CT107 Hệ Điều Hành

Chương 3 Tiến Trình (Process)

Giảng viên: Trần Công Án (tcan@cit.ctu.edu.vn)

https://sites.google.com/site/tcanvn/

Bộ môn Mạng máy tính & Truyền thông

Khoa Công Nghệ Thông Tin & Truyền Thông

Đại học Cần Thơ

2014

Trang 2

Mục Tiêu

Giới thiệu các khái niệm về Tiến trình và những thao tác cơ bản trong quản lý Tiến trình như tạo, định thời và kết thúc tiến trình Các phương thức giao tiếp liên tiến trình cũng sẽ được trình bày.

Trang 3

Nội Dung

Các khái niệm cơ bản

Định thời cho Tiến trình (Process Scheduling)

Các thao tác trên Tiến trình

Hợp tác Tiến trình (Cooperating process)

Giao tiếp trong hệ thống Client–Server

Trang 4

Các khái niệm cơ bản

Khái niệm Tiến trình

Khái Niệm Tiến Trình

I Tiến trình là thể hiện (instance) của một chương trình máy tính trong

bộ nhớ, đang thực thi hoặc chờ thực thi.

I Mỗi tiến trình thường được gán 1 số định danh tiến trình (process identifier, pid ), dùng để định danh các tiến trình.

I Một tiến trình bao gồm:

I Mã lệnhchương trình (program code)

I Bộ đếmchương trình (program counter) và cácthanh ghicủa CPU

I Ngăn xếp(stack)

I Phầndữ liệu (data section)

I Có thể gồm phầnbộ nhớ cấp phát độngkhi tiến trình thực thi (heap)

Trang 5

Các khái niệm cơ bản

Khái niệm Tiến trình

Chương Trình & Tiến Trình

I Chương trình là một thực thể bị động , được lưu

trữ trên đĩa

I Tiến trình là một thực thể chủ động , lưu trú

trên bộ nhớ chính

I Khi một chương trình được kích hoạt (nhấp

chuột, CLI, ), một thể hiện của chương trình

sẽ được nạp lên bộ nhớ, tạo ra 1 tiến trình

I Một chương trình có thể có vài tiến trình trong

0

max

data heap stack

Trang 6

Các khái niệm cơ bản

Trạng thái của Tiến trình (Process state)

Trạng Thái Của Tiến Trình (Process State)

I Một tiến trình có thể có một trong các trạng thái sau:

I new: tiến trình đang được khởi tạo

I running: các chỉ thị của tiến trình đang được thực thi

I waiting: tiến trình đang chờ đợi một sự kiện nào đó xảy ra (hoàn thànhI/O, tín hiệu từ tiến trình khác, )

I ready: tiến trình sẵn sàng để thực thi (đang đợi để được sử dụng CPU)

I terminated: tiến trình đã kết thúc

Trang 7

Các khái niệm cơ bản

Trạng thái của Tiến trình (Process state)

Sơ Đồ Chuyển Trạng Thái Của Tiến Trình

running ready

admitted interrupt

scheduler dispatch I/O or event completion I/O or event wait

exit

waiting

Trang 8

[CT107] Ch3 Tiến trình

Các khái niệm cơ bản

Khối điều khiển Tiến trình (Process Control Block – PCB)

Khối Điều Khiển Tiến Trình (PBC)

I Chứa thông tin của tiến trình trong Hệ điều hành:

I Trạng tháicủa quá trình: ready, running,

I Bộ đếmchương trình: chỉ thị kế tiếp sẽ được thực thi

I Cácthanh ghi: phụ thuộc vào k/trúc máy tính

I Thông tin vềchi phí: t/gian sử dụng CPU, pid,

I Thông tin về trạng tháinhập/xuất: các thiết bị đang

được cấp phát, danh sách tập tin đang mở,

process state process number program counter

memory limits list of open files registers

• • •

Trang 9

Các khái niệm cơ bản

Chuyển CPU giữa các Tiến trình

Chuyển CPU Giữa Các Tiến Trình

trạng thái của tiến

trình

I Trạng thái của tiến

trình phải được lưu trữ

save state into PCB 0

save state into PCB 1

reload state from PCB 1

reload state from PCB0

operating system

idle

idle

executing idle

executing

executing

interrupt or system call

interrupt or system call

Trang 10

Định thời cho Tiến trình (Process Scheduling)

Định Thời Tiến trình (Process Scheduling)

I Là một tác vụ của hệ điều hành trong các hệ thống đa chương dựa trên phân chia thời gian (time-sharing) nhằm lựa chọn một tiến trình được phép sử dụng CPU và phân bổ thời gian sử dụng CPU của tiến trình.

I Thành phần lựa chọn/định thời cho các tiến trình được gọi là bộ định thời tiến trình (process scheduler).

I Bộ định thời tiến trình dùng 1 hệ thống các hàng đợi (queue) để sắp xếp và định thời cho các tiến trình.

Trang 11

Định thời cho Tiến trình (Process Scheduling)

Hàng đợi Tiến trình (Process queues)

Hàng Đợi Tiến Trình (Process Queues)

I Các hàng đợi dùng cho việc định thời tiến trình:

I Hàng đợi công việc(job queue): tập hợp tất cả các tiến trình trong hệthống

I Hàng đợi sẵn sàng(ready queue): tập hợp tất cả các tiến trình đangnằm trong bộ nhớ, sẵn sàng và đang chờ để thực thi

I Hàng đợi thiết bị(device queue): tập hợp các tiến trình đang đợi sửdụng một thiết bị vào ra

I Tiến trình có thể di chuyển giữa các hàng đợi khác nhau.

Trang 12

Định thời cho Tiến trình (Process Scheduling)

Hàng đợi Tiến trình (Process queues)

Hàng Đợi Sẵn Sàng & Hàng Đợi Thiết Bị

disk unit 0

terminal unit 0

mag unit 0

mag tape unit 1

Trang 13

Định thời cho Tiến trình (Process Scheduling)

Hàng đợi Tiến trình (Process queues)

Sơ Đồ Định Thời Tiến Trình

I/O I/O queue I/O request

time slice expired

fork a child

wait for an interrupt

interrupt occurs child executes

Trang 14

Định thời cho Tiến trình (Process Scheduling)

Các loại bộ định thời (Schedulers)

Các Loại Bộ Định Thời (Shcedulers)

I Bộ định thời dài kỳ (long-term scheduler/job scheduler):

I chọn tiến trình nào sẽ đượcđặt vào hàng đợi sẵn sàng(nạp vào bộ nhớ)

I Bộ định thời ngắn kỳ (short-term scheduler/CPU scheduler):

I chọn ra tiến trình sẽđược thực thi kế tiếpvà cấp CPU cho nó

Trang 15

Định thời cho Tiến trình (Process Scheduling)

Các loại bộ định thời (Schedulers)

Bộ Định Thời Trung Kỳ (Medium-term)

I là mức trung gian giữa bộ định thời ngắn và dài kỳ

I thực hiện hoán vị (swapping) các tiến trình ra/vào bộ nhớ/đĩa do cạnh tranh CPU, bộ nhớ

I thường được sử dụng trong các hệ thống phân chia thời gian

end CPU

I/O I/O waiting

queues ready queue

partially executed swapped-out processes

Trang 16

Các thao tác trên Tiến trình

Các Thao Tác Cơ Bản Trên Tiến Trình

I Có 2 thao tác cơ bản trên tiến trình:

I Tạo tiến trình

I Kết thúc tiến trình

Trang 17

Các thao tác trên Tiến trình

Tạo Tiến trình

Tạo Tiến Trình

I Một tiến trình ( cha ) có thể tạo những tiến trình khác ( con )

I Quan hệ “cha–con” của các tiến trình tạo nên cây tiến trình

Trang 18

Các thao tác trên Tiến trình

Tạo Tiến trình

Một Số Vấn Đề Giữa Tiến Trình Cha – Con

I Chia sẻ tài nguyên:

I Tiến trình cha và conchia sẻ tất cảcác tài nguyên

I Tiến trình chachia sẻ một phần tài nguyên cho tiến trình con

I Tiến trình cha và conkhông chia sẻgì cả

I Dữ liệu khởi tạo: được chuyển từ tiến trình cha sang con.

I Thực thi: song song hoặc tuần tự theo thứ tự cha – con.

I Không gian địa chỉ:

I Tiến trình consao chéptừ tiến trình cha (cả code và dữ liệu)

I Tiến trình contự nạp chương trình riêng

Trang 19

Các thao tác trên Tiến trình

Tạo Tiến trình

Tạo Tiến Trình Trên UNIX & Windows NT

I UNIX:

I fork(): lời gọi hệ thốngđể tạo tiến trình mới

I execlp():thay thế không gian địa chỉcủa tiến trình gọi bằng một tiếntrình mới

Trang 20

Các thao tác trên Tiến trình

if (pid < 0) { /* error occurred */

fprintf(stderr, “Fork failed”);

Trang 21

Các thao tác trên Tiến trình

Kết thúc Tiến trình

Kết Thúc Tiến Trình

I T/trình thực thi câu lệnh cuối cùng và yêu cầu HĐH xóa nó (exit())

I Truyền dữ liệutừ tiến trình con lên tiến trình cha (wait())

I Thu hồi tài nguyênđã được cấp phát cho tiến trình

I Tiến trình con kết thúc trước khi t/trình cha gọi wait() ⇒ zombie

I Tiến trình con còn thực thi khi t/trình cha đã kết thúc ⇒ orphan

I Tiến trình cha có thể kết thúc tiến trình con (abort()):

I Tiến trình con đã cóvượt quá số tài nguyênđược cấp

I Công việc giao cho tiến trình con làm naykhông còn cần thiếtnữa

I Tiến trình chađang thoát: một vài HĐH không cho phép orphan

Trang 22

Hợp tác Tiến trình (Cooperating process)

Hợp Tác Tiến Trình (Cooperating Process)

I Tiến trình độc lập : không thể ảnh hưởng hoặc không bị ảnh hưởng bởi

sự thực thi của quá trình khác.

I Hợp tác tiến trình : có thể ảnh hưởng hoặc bị ảnh hưởng bởi sự thực thi của quá trình khác.

I Thuận lợi của sự hợp tác quá trình:

I Chia sẻ thông tin

Trang 23

Hợp tác Tiến trình (Cooperating process)

Giao Tiếp Liên Tiến Trình

I Các tiến trình muốn trao đổi dữ liệu với nhau cần sử dụng cơ chế giao tiếp liên tiến trình (interprocess communication, IPC):

kernel

process B

m0m1m2m3 mn

process B

Figure 3.12 Communications models (a) Message passing (b) Shared memory.

memory regions Once shared memory is established, all accesses are treated

as routine memory accesses, and no assistance from the kernel is required.

Recent research on systems with several processing cores indicates that

message passing provides better performance than shared memory on such

systems Shared memory suffers from cache coherency issues, which arise

because shared data migrate among the several caches As the number of

processing cores on systems increases, it is possible that we will see message

passing as the preferred mechanism forIPC.

In the remainder of this section, we explore shared-memory and

message-passing systems in more detail.

3.4.1 Shared-Memory Systems

Interprocess communication using shared memory requires communicating

processes to establish a region of shared memory Typically, a shared-memory

region resides in the address space of the process creating the shared-memory

segment Other processes that wish to communicate using this shared-memory

segment must attach it to their address space Recall that, normally, the

operating system tries to prevent one process from accessing another process’s

memory Shared memory requires that two or more processes agree to remove

this restriction They can then exchange information by reading and writing

data in the shared areas The form of the data and the location are determined by

these processes and are not under the operating system’s control The processes

are also responsible for ensuring that they are not writing to the same location

simultaneously.

To illustrate the concept of cooperating processes, let’s consider the

producer–consumer problem, which is a common paradigm for cooperating

processes Aproducerprocess produces information that is consumed by a

consumerprocess For example, a compiler may produce assembly code that

is consumed by an assembler The assembler, in turn, may produce object

truyền thông điệp

Trang 24

Hợp tác Tiến trình (Cooperating process)

Bộ nhớ chia sẻ (Shared-memory)

Bộ Nhớ Chia Sẻ (Shared-Memory)

I Một vùng đệm (buffer) được dùng để chia sẻ dữ liệu giữa các t/trình:

I kích thướckhông giới hạn(unbounded buffer): tiến trình đọc có thểchờ, tiến trình ghi không bao giờ chờ

I kích thước cógiới hạn(bounded buffer): cả tiến trình đọc và ghi có thểchờ

I Ví dụ kinh điển “Nhà sản xuất – Người tiêu thụ” : tiến trình Nhà sản xuất sinh dữ liệu, được sử dụng bởi tiến trình Người tiêu thụ.

I Tiến trình Nhà sản xuất ghi dữ liệu lên buffer

I Tiến trình Người tiêu thụ lấy dữ liệu từ buffer

Trang 25

Hợp tác Tiến trình (Cooperating process)

Trang 26

Hợp tác Tiến trình (Cooperating process)

}

Trang 27

Hợp tác Tiến trình (Cooperating process)

!

}

Trang 28

Hợp tác Tiến trình (Cooperating process)

Truyền thông điệp (Message passing)

Truyền Thông Điệp (Message Passing)

I Giao tiếp giữa các tiến trình không cần dùng bộ nhớ chia sẻ

⇒ hữu ích trong môi trường phân tán, giao tiếp qua mạng.

I Cần hai thao tác: send(msg) và receive(msg)

I Tiến trình P và Q muốn giao tiếp với nhau:

I Tạo một nối kết giao tiếp(communication link)

I Trao đổi thông điệpthông qua send/receive

I Phương thức cài đặt nối kết giao tiếp (mức luận lý):

I Giao tiếp trực tiếp hay gián tiếp

I Kích thước thông điệp cố định hay biến đổi

Trang 29

Hợp tác Tiến trình (Cooperating process)

Truyền thông điệp (Message passing)

Giao Tiếp Trực Tiếp (Direct Communication)

I Các quá trình phải được đặt tên rõ ràng:

I Send(P, msg): gởi thông điệp tới quá trình P

I Các thuộc tính của nối kết giao tiếp:

I Các nối kết đượcthiết lập tự động

I Một nối kết kết hợp vớichính xác một cặp quá trình

I Giữa mỗi cặp quá trình tồn tạichính xác một nối kết

I Nối kết có thểmột hướng, nhưng thường làhai hướng

Trang 30

Hợp tác Tiến trình (Cooperating process)

Truyền thông điệp (Message passing)

Giao Tiếp Gián Tiếp (Indirect Communication)

I Các thông điệp được gửi và nhận thông qua mailbox hay port

I Các quá trình chỉ có thể giao tiếp nếu chúng dùng chung mailbox

I Các thuộc tính của nối kết gián tiếp:

I Nối kết chỉ được thiết lập nếu các quá trìnhchia sẻ một hộp thư chung

I Một nối kếtcó thể kết hợp với nhiều quá trình

I Mỗi cặp quá trìnhcó thể dùng chung nhiều nối kếtgiao tiếp

I Nối kết có thểmột hướng hay hai hướng

Trang 31

Hợp tác Tiến trình (Cooperating process)

Truyền thông điệp (Message passing)

Các Tác Vụ Trong Giao Tiếp Gián Tiếp

I Các tác vụ cơ bản: tạo mailbox mới, gửi và nhận thông điệp qua mailbox, và xóa mailbox.

I Chia sẻ mailbox:

I Các tiến trình có thể chia sẻ cùng 1 mailbox

I Vấn đề: nếu 1 tiến trình gửi thì tiến trình nào sẽ nhận?

I Giải pháp cho việc chia sẻ mailbox:

I Một liên kết chỉ tương ứng với 2 tiến trình

I Chỉ cho phép 1 tiến trình thực hiện thao tác nhận tại 1 thời điểm

I HĐH chỉ định tiến trình nhận (1 tiến trình), và thông báo cho tiến trìnhgửi biết người nhận

Trang 32

Hợp tác Tiến trình (Cooperating process)

Truyền thông điệp (Message passing)

Đồng Bộ Hóa (Synchronisation)

I Truyền thông điệp có thể chặn (blocking) hay không chặn

(non-blocking).

I Blocking được xem là đồng bộ (synchronous):

I Blocking send: tiến trình gửi chờ cho đến khi thông điệp được nhận

I Blocking receive : tiến trình nhận chờ cho đến khi thông điệp sẵn sàng

I Non-blocking được xem là bất đồng bộ (asynchronous):

I Non-blocking send: gửi thông điệp và tiếp tục thực hiện công việc khác

I Non-blocking receive: nhận một thông điệp hay rỗng

Trang 33

Hợp tác Tiến trình (Cooperating process)

Truyền thông điệp (Message passing)

Trang 34

Giao tiếp trong hệ thống Client–Server

Giao Tiếp Trong Hệ Thống Client–Server

I Có 3 phương pháp cơ bản thường được dùng để giao tiếp trong mô hình client–server:

Trang 36

Giao tiếp trong hệ thống Client–Server

Giao tiếp bằng Socket

Socket

I Socket là một điểm nút của giao tiếp (endpoint of communication) của hai tiến trình.

I Hình thành từ 1 địa chỉ IP và 1 số hiệu cổng (port, 0–65535).

Trang 37

Giao tiếp trong hệ thống Client–Server

Giao tiếp bằng Socket

Mô Hình Giao Tiếp Dùng Socket

socket (146.86.5.20:1625)

host X

(146.86.5.20)

socket (161.25.19.8:80) web server (161.25.19.8)

Trang 38

Giao tiếp trong hệ thống Client–Server

Giao tiếp bằng Socket

Date Server

public static void main(String[] args) {

try {

ServerSocket sock = new ServerSocket(6013);

/* now listen for connections */

while (true) {

Socket client = sock.accept();

PrintWriter pout = new

PrintWriter(client.getOutputStream(), true);

!

/* write the Date to the socket */

pout.println(new java.util.Date().toString());

Trang 39

Giao tiếp trong hệ thống Client–Server

Giao tiếp bằng Socket

Date Client

try { !

/* make connection to server socket */ !

Socket sock = new Socket( "127.0.0.1" ,6013); !

BufferedReader(new InputStreamReader(in)); !

Ngày đăng: 27/04/2016, 18:49

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w