Bài giảng Hệ điều hành - Chương 2: Khái niệm về quá trình - Lê Ngọc Minh

Khái niệm cơ bản

? OS thực thi nhiều chương trình khác nhau

– Batch system: jobs

– Time-shared systems: user programs, tasks

– Job ≈ process

? Process

– một chương trình đang thực thi (executing program).

? Một process bao gồm các phần

– Text section(program code), data section(global variable), stack

(local variable, )

– Hardware: Program Counter(PC), Process Status Word (PSW),

Stack Pointer (SP), Memory Management Registers

? So sánh process và program

– Process = active <> passive = programing

Process Control Block (PCB)

? Chứa các thông tin ứng với mỗi process.

– Process ID, parent process ID

– Credentials (user ID, group ID, effective ID,.)

– Trạng thái process : new, ready, running, waiting

– Program counter: địa chỉ của lệnh kế tiếp sẽ thực thi

– Các thanh ghi CPU

– Thông tin dùng để định thời CPU: priority,.

– Thông tin bộ nhớ: base/limit register, page tables

– Thông tin thống kê: CPU time, time limits

– Thông tin trạng thái I/O: danh sách thiết bị I/O được

cấp phát, danh sách các file đang mở,.

– Con trỏ (pointer) đến PCBs khác.

 

Bài giảng Hệ điều hành - Chương 2: Khái niệm về quá trình - Lê Ngọc Minh trang 1

Trang 1

Bài giảng Hệ điều hành - Chương 2: Khái niệm về quá trình - Lê Ngọc Minh trang 2

Trang 2

Bài giảng Hệ điều hành - Chương 2: Khái niệm về quá trình - Lê Ngọc Minh trang 3

Trang 3

Bài giảng Hệ điều hành - Chương 2: Khái niệm về quá trình - Lê Ngọc Minh trang 4

Trang 4

Bài giảng Hệ điều hành - Chương 2: Khái niệm về quá trình - Lê Ngọc Minh trang 5

Trang 5

Bài giảng Hệ điều hành - Chương 2: Khái niệm về quá trình - Lê Ngọc Minh trang 6

Trang 6

Bài giảng Hệ điều hành - Chương 2: Khái niệm về quá trình - Lê Ngọc Minh trang 7

Trang 7

Bài giảng Hệ điều hành - Chương 2: Khái niệm về quá trình - Lê Ngọc Minh trang 8

Trang 8

Bài giảng Hệ điều hành - Chương 2: Khái niệm về quá trình - Lê Ngọc Minh trang 9

Trang 9

Bài giảng Hệ điều hành - Chương 2: Khái niệm về quá trình - Lê Ngọc Minh trang 10

Trang 10

Tải về để xem bản đầy đủ

pdf 34 trang duykhanh 5420
Bạn đang xem 10 trang mẫu của tài liệu "Bài giảng Hệ điều hành - Chương 2: Khái niệm về quá trình - Lê Ngọc Minh", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Hệ điều hành - Chương 2: Khái niệm về quá trình - Lê Ngọc Minh

Bài giảng Hệ điều hành - Chương 2: Khái niệm về quá trình - Lê Ngọc Minh
 danh duy nhất (unique process identifier)
 – Cấp phát không gian nhớ cho process image.
 – Khởi tạo process control block (PCB)
 » Một số giá trị mặc định (ví dụ: trạng thái=New, không có thiết
 bị I/O, không mở files...)
 – Thiết lập các mối liên hệ cần thiết
 » Ví dụ: thêm process mới vào linked list của hàng đợi định thời
 Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM -4.31-
 Mối quan hệ cha/con 
‰ Process cha tạo ra các process con, các process con 
 tạo ra nhiều process khác,... và cứ như thế tạo thành
 một cây process trong hệ thống.
‰ 3 cách chia sẻ tài nguyên (resource sharing)
 – Process cha và con chia sẻ mọi tài nguyên
 – Process con chia sẻ một phần tài nguyên của cha
 – Process cha và con không chia sẻ tài nguyên nào
‰ Trình tự thực thi
 – Process cha và con thực thi đồng thời (concurrently)
 – Process cha đợi đến khi các process con kết thúc.
 Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM -4.32-
 16
 Cây process trong UNIX
 root pid= 0
 pid= 1
 pagedaem on sw apper init
 user 1 user 2 user 3
 Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM -4.33-
 Mối quan hệ cha/con (t.t)
‰ Không gian địa chỉ (address space)
 – Không gian địa chỉ của process con được nhân bản từ cha
 – Không gian địa chỉ của process con được nạp chương trình khác.
‰ Ví dụ trong UNIX/Linux
 – System call fork() tạo một process mới
 – System call execlp() dùng sau fork() để nạp một chương trình
 mới vào không gian nhớ của process mới
 Cha Cha
 fork()
 Process Cha execlp()
 Con Con
 Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM -4.34-
 17
 Ví dụ tạo process với fork()
 #include 
 int main (int argc, char *argv[])
 {
 int pid;
 /* create a new process */
 pid = fork();
 if ( pid < 0 ) {
 printf(“Fork error\n”);
 exit(-1);
 } 
 else if ( pid == 0 ) 
 {
 printf(“This is child process”);
 execlp(“/bin/ls”, “ls”, NULL);
 exit(0);
 }
 else {
 printf(“This is parent process”);
 exit(0);
 }
 }
 Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM -4.35-
 Kết thúc thực thi process 
‰ Kết thúc bình thường (normal completion)
‰ Vượt giới hạn thời gian (time limit exceeded)
‰ Không đủ bộ nhớ (memory unavailable)
‰ Xâm phạm vùng nhớ cấm (memory bounds 
 violation)
‰ Lỗi bảo vệ (protection error)
 – Ví dụ: ghi vào file có thuộc tính read-only 
‰ Lỗi số học (arithmetic error): chia cho 0, tràn
 số,...
‰ Time overrun
 – process chờ một sự kiện lâu hơn một khoảng thời
 gian tối đa được xác định trước
 Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM -4.36-
 18
 Kết thúc thực thi process (t.t)
‰ Thực hiện thất bại tác vụ I/O
‰ Lệnh không hợp lệ (invalid instruction)
‰ Privileged instruction
‰ Sự can thiệp của OS
 – Ví dụ: OS can thiệp khi có deadlock xảy ra
‰ Process cha yêu cầu kết thúc thực thi một
 process con
‰ Process cha kết thúc kéo theo các process con 
 cũng kết thúc
 Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM -4.37-
 Sự cộng tác giữa các process
‰ Một process thực thi độc lập thì không ảnh hưởng và
 không bị ảnh hưởng bởi các process khác trong hệ
 thống. Tuy nhiên, một số process có thể cộng tác, trao
 đổi dữ liệu với nhau để hoàn thành công việc.
‰ Ưu điểm của sự cộng tác
 – Chia sẻ thông tin 
 – Hiệu suất tính toán cao
‰ Sự cộng tác của các process yêu cầu OS hỗ trợ cơ chế
 giao tiếp (communication) và cơ chế đồng bộ hoạt động
 của các process (synchronization)
 Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM -4.38-
 19
 Bài toán Producer-Consumer 
‰ Mô hình cho sự cộng tác giữa các process, producer tạo
 ra các thông tin, dữ liệu và consumer tiêu thụ, sử dụng
 các dữ liệu đó. Sự trao đổi thông tin thực hiện qua buffer:
 – unbounded-buffer: kích thước buffer không giới hạn.
 – bounded-buffer: kích thước buffer có giới hạn.
‰ Producer và consumer phải được đồng bộ hoạt động
 – Consumer không thể sử dụng một dữ liệu mà producer chưa kịp
 tạo ra.
 – Producer không được tạo thêm sản phẩm khi buffer đã đầy
 (bounded buffer)
‰ Hiện thực buffer
 – Shared memory
 – Interprocess communication facility (IPC)
 Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM -4.39-
 Ví dụ Shared Bounded-Buffer
‰ Shared memory
 #define BUFFER_SIZE 10
 – Shared buffer: danh sách xoay
 vòng. typedefstruct{
 » in: vị trí ghi kết tiếp . . .
 » out: vị trí đọc kế tiếp } item ;
 » BUFFER_SIZE: kích thước item buffer[BUFFER_SIZE];
 của buffer (chỉ được dùng intin = 0;
 BUFFER_SIZE – 1 phần tử)
 intout = 0;
‰ Producer và consumer chia sẻ
 một buffer chung
‰ Programmer phải hiện thực
 đoạn mã truy xuất buffer chung
 cho producer và consumer
 Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM -4.40-
 20
 Shared Bounded-Buffer (t.t)
 item nextProduced; item nextC onsum ed;
 while (1) {
 while (1) {
 while (in == out)
 while (((in + 1) % ; /* do nothing */
 BUFFER_SIZE) == out) nextC onsum ed = buffer[out];
 ; /* do nothing */ out = (out + 1) % 
 buffer[in] = nextProduced; BUFFER_SIZE;
 }
 in = (in + 1) % 
 BUFFER_SIZE;
 }
 Producer Process C onsum er Process
 Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM -4.41-
 Interprocess Communication (IPC)
‰ IPC là cơ chế cung cấp bởi OS nhằm giúp các process 
 giao tiếp và đồng bộ hoạt động.
‰ Shared Memory
 – threads
 – mmap()
‰ Message-passing
 – blocking (synchrous) và non-blocking
 – message format, buffer size, 
 – addressing (PID, port, mailbox, )
‰ Files, pipes (FIFOs), sockets
 Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM -4.42-
 21
 Message-Passing IPC
‰ Cung cấp ít nhất hai phương tiện giao tiếp:
 – send(msg)
 – receive(msg)
‰ Quá trình giao tiếp cần tuân theo một giao thức
 định trước:
 – Thiết lập kênh giao tiếp
 – Trao đổi message 
 Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM -4.43-
 Hiện thực IPC ?
‰ Làm thế nào để thiết lập các kênh giao tiếp?
‰ Một kênh giao tiếp có thể liên kết với nhiều hơn 2 
 process hay không?
‰ Có thể tạo bao nhiêu kênh giao tiếp giữa các cặp
 process muốn thực hiện giao tiếp?
‰ Dung lượng của một kênh giao tiếp là bao nhiêu?
‰ Kích thước message truyền qua kênh giao tiếp là cố định
 (fixed) hay có tùy ý ?
‰ Kênh giao tiếp theo hai chiều hay một chiều?
 Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM -4.44-
 22
 Đồng bộ (synchronization)
‰ Blocking hay non-blocking: synchronous hay 
 asynchronous
‰ Blocking send: sender bị block cho đến khi message đã
 được nhận bởi receiver hoặc message đã đến mailbox.
‰ Non-blocking send: sender gửi message và tiếp tục thực
 hiện công việc khác.
‰ Blocking receive: receiver sẽ bị block đến khi có một
 message được gửi đến.
‰ Non-blocking receive: không bị block, tuy nhiên receiver 
 hoặc là nhận được một message hoặc không nhận được
 gì cả.
‰ Rendezvous: blocking-send và blocking-receive
 Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM -4.45-
 Bộ đệm (buffering)
‰ Tương ứng với mỗi kênh giao tiếp có một hàng
 đợi message. Hiện thực của hàng đợi message 
 là một bộ đệm (buffer) với một trong ba kiểu sau
 – Bộ đệm dung lượng bằng 0 (zero capacity), nghĩa là
 giữa sender và receiver không có hàng đợi, sender 
 phải đợi receiver.
 – Bộ đệm có dung lượng hạn chế (bounded capacity): 
 kích thước bộ đệm là một số hữu hạn định trước. Nếu
 bộ đệm bị đầy thì sender phải đợi.
 – Bộ đệm có dung lượng không hạn chế (unbounded 
 capacity), sender không bao giờ phải đợi
 Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM -4.46-
 23
 Mô hình giao tiếp Client-Server 
‰ Sockets
‰ Remote Procedure Calls (RPC)
‰ Remote Method Invocation (RMI)
 Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM -4.47-
 Socket
‰ Socket: đầu cuối (endpoint) của một kênh giao tiếp
 – Bao gồm địa chỉ IP và số hiệu port
 » Ví dụ: socket 172.28.11.120:1234 tham chiếu đến port 1234 
 trên máy có địa chỉ IP là 172.28.11.120
 – Ví dụ: FTP server lắng nghe ở port 21, telnet ở port 23, web 
 server tại port 80
 – Quá trình giao tiếp được thực hiện qua một cặp socket.
‰ Socket là cơ chế giao tiếp mức thấp (low-level)
 – Gửi nhận một chuỗi byte dữ liệu không có cấu trúc (unstructured)
‰ Có hai cơ chế giao tiếp qua socket
 – Connectionless
 – Connection-oriented
‰ Berkeley socket (BSD socket): trên Unix/Linux
‰ WinSock: thư viện socket trên họ MS Windows 
 Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM -4.48-
 24
 Cơ chế gửi/nhận qua Socket 
 Hàm thư viện Diễn giải
 socket() Tạo một socket
 bind() Gắn một địa chỉ cục bộ vào một socket
 listen() Xác định độ lớn/kích thước hàng đợi
 accept() (server) chờ kết nối đến từ client
 connect() (client) kết nối đến một server
 send()/sendto() Gửi dữ liệu qua kênh giao tiếp đã thiết lập
 recv()/recvfrom() Nhận dữ liệu qua kênh giao tiếp
 close() Đóng kết nối
 Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM -4.49-
 Connectionless Socket 
 Process A Process B
 socket() socket()
 bind() bind()
 sendto()/ sendto()/
 recvfrom () recvfrom ()
 close() close()
» sendto(socket, buffer, buffer_length, flags, destination_address, addr_len)
»recvfrom (socket, buffer, buffer_length, flags, from _address, addr_len)
 Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM -4.50-
 25
 Connection-Oriented Client/Server 
 Server
 socket() bind() listen() accept() recv() send() close()
 Synchronization point
 com m unication
 (rendezvous)
 socket() connect() send() recv() close()
 Client
 » send(socket, buffer, buffer_length, flags)
 »recv(socket, buffer, buffer_length, flags)
 Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM -4.51-
 Remote Procedure Call (RPC)
‰ Cơ chế RPC cho phép thực hiện tác vụ gọi thủ tục
 (procedure call) giữa các process nằm trên hai máy tính
 kết nối bằng hệ thống mạng.
‰ Các vấn đề khi hiện thực RPC
 – Truyền tham số và kết quả trả về của lời gọi thủ tục
 – Chuyển đổi dữ liệu khi truyền trên mạng (data conversion)
 – Kết nối client đến server
 – Biên dịch chương trình
 –Kiểmsoátlỗi
 – Security 
 Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM -4.52-
 26
 Nguyên lý của RPC
 chờ kết quả trả về
 (suspend)
 CLIENT
 Gọi Remote
 Kết quả trả về
 Procedure
 R equest R eply
SERVER
 (Blocked)Gọi thủ tục cục bộ (Blocked)
 và trả về kết quả
 Trục thời gian
 Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM -4.53-
 Lưu đồ thực hiện RPC
 CLIENT SERVER
 return reply call request call request return reply
 CLIENT STUB SERVER STUB
 m essage to param eter m essage to param eter
 param eter to m essage param eter to m essage 
 TRANSPORT TRANSPORT
 (OS 1) (OS 2)
 receive send receive send
 Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM -4.54-
 27
 Truyền tham số trong RPC
‰ Marshaling: qui tắc truyền tham số và chuyển đổi dữ liệu
 trong RPC bao gồm cả đóng gói dữ liệu thành dạng thức
 có thể truyền qua mạng máy tính.
‰ Biểu diễn dữ liệu và kiểm tra kiểu dữ liệu (type checking)
 – Dữ liệu biểu diễn khác nhau trên các hệ thống khác nhau
 » ASCII, EBCDIC
 » Little Endian và Big Endian
 » Dạng biểu diễn XDR (External data representation): độc lập
 với hệ thống bên dưới (machine-independent)
 Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM -4.55-
 Truyền tham số trong RPC (t.t)
 Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM -4.56-
 28
Kết nối (bind) client và server
 Matchm aker
 Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM -4.57-
Quá trình thực hiện RPC
 Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM -4.58-
 29
 Remote Method Invocation
‰ Remote Method Invocation (RMI) là cơ chế tương tự
 RPC nhưng vận hành trên nền máy ảo Java.
‰ RMI cho phép một chương trình Java có thể triệu gọi
 một phương thức (method) của một đối tượng ở xa.
 JV M
 Re
 m ote JV M
 Java O bj
 ect I
 Program nvoc
 ation
 Remote
 Object
 Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM -4.59-
 Remote Method Invocation (t.t)
‰ Khác biệt giữa RPC và RMI
 – RPC hỗ trợ lập trình cấu trúc (procedural 
 programming)
 » Chỉ cho phép triệu gọi thủ tục (procedure) hoặc
 hàm (functions) ở xa. 
 – RMI hỗ trợ cơ chế hướng đối tượng (object-oriented)
 » RMI cho phép triệu gọi phương thức (method) trên
 đối tượng ở xa (remote object)
 – Trong RPC, tham số truyền đến thủ tục/hàm ở xa là
 dữ liệu bình thường (số, chuỗi kí tự, dãy,...)
 – Trong RMI, tham số truyền đến đối tượng ở xa có thể
 là một đối tượng
 Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM -4.60-
 30
 Cơ chế marshalling trong RMI
 client rem ote object
 val= som eM ethod(A, B) boolean som eM ethod(Objectx, Object y)
 {
 implem entation of som eM ethod
 }
 Stub Skeleton
 A, B, som eM ethod
 boolean return value
Phương thức được triệu gọi có dạng sau:
 boolean someMethod(Object x, Object y)
 Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM -4.61-
 Windows NT Process Object
‰ Process ID
‰ Security Descriptor
‰ Base priority
‰ Default processor affinity
‰ Quota limits
‰ Execution time
‰ I/O counters
‰ VM operation counters
‰ Exception/debugging ports
‰ Exit Status
 Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM -4.62-
 31
 Windows NT Thread Object
‰ Thread ID
‰ Thread context
‰ Dynamic priority
‰ Base priority
‰ Thread processor affinity
‰ Thread execution time
‰ Alert status
‰ Suspension count
‰ Impersonation token
‰ Termination port
‰ Thread exit status
 Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM -4.63-
 NT Thread Status
 Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM -4.64-
 32
 Solaris
‰ Process includes the user’s address space, stack, and process 
 control block
‰ User-level threads
‰ Lightweight processes
‰ Kernel threads
 Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM -4.65-
 Solaris User Level Threads
 Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM -4.66-
 33
Solaris Light weight Processes
 Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM -4.67-
 34

File đính kèm:

  • pdfbai_giang_he_dieu_hanh_chuong_2_khai_niem_ve_qua_trinh_le_ng.pdf