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.
Trang 1
Trang 2
Trang 3
Trang 4
Trang 5
Trang 6
Trang 7
Trang 8
Trang 9
Trang 10
Tải về để xem bản đầy đủ
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
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:
- bai_giang_he_dieu_hanh_chuong_2_khai_niem_ve_qua_trinh_le_ng.pdf