Cơ sở dữ liệu - Chương 3: Quá trình
Bạn đang xem 20 trang mẫu của tài liệu "Cơ sở dữ liệu - Chương 3: Quá trình", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- co_so_du_lieu_chuong_3_qua_trinh.pdf
Nội dung text: Cơ sở dữ liệu - Chương 3: Quá trình
- CHCHƯƠƯƠNGNG 3:3: QUQUÁÁ TRÌNHTRÌNH
- NNỘỘII DUNGDUNG Khái niệm quá trình Lậplịch biểu quá trình Các hoạt động trên quá trình Hợp tác các quá trình Liên lạcgiữa các quá trình Liên lạctrongcáchệ Client-Server Operating System Concepts - 7th Edition, Feb 7, 2006 3.2 Silberschatz, Galvin and Gagne ©2005
- KHKHÁÁII NINIỆỆMM QUQUÁÁ TRÌNHTRÌNH HĐH thựchiện nhiềukiểuchương trình: z Hệ thống bó – jobs z Các hệ thống chia sẻ thờigian–cácchương trình người dùng/ các nhiệmvụ Công việc (job) = quá trình (process) Quá trình là mộtchương trình trong sự thựchiện; sự thực hiện quá trình phảitiếntriển theo kiểucáchtuầntự Một quá trình bao gồm: z Bộđếmchương trình z Stack z Phầndữ liệu Operating System Concepts - 7th Edition, Feb 7, 2006 3.3 Silberschatz, Galvin and Gagne ©2005
- ProcessProcess inin MemoryMemory Operating System Concepts - 7th Edition, Feb 7, 2006 3.4 Silberschatz, Galvin and Gagne ©2005
- TRTRẠẠNGNG THTHÁÁII QUQUÁÁ TRÌNHTRÌNH Khi quá trình thựchiện nó thay đổitrạng thái z new: Quá trình đang đượckhởitạo z running: các chỉ thịđang đượcthựchiện z waiting: Quá trình đang chờđợimộtbiếncố xảyra z ready: Quá trình đang chờ đượccấp processor z terminated: Quá trình kết thúc sự thựchiện Operating System Concepts - 7th Edition, Feb 7, 2006 3.5 Silberschatz, Galvin and Gagne ©2005
- BIBIỂỂUU ĐĐỒỒ TRTRẠẠNGNG THTHÁÁII QUQUÁÁ TRÌNHTRÌNH Operating System Concepts - 7th Edition, Feb 7, 2006 3.6 Silberschatz, Galvin and Gagne ©2005
- KHKHỐỐII ĐĐIIỀỀUU KHIKHIỂỂNN QUQUÁÁ TRÌNHTRÌNH ProcessProcess ControlControl BlockBlock (PCB)(PCB) Thông tin kếthợpvớimỗi quá trình Trạng thái quá trình Bộđếmchương trình Các thanh ghi CPU Thông tin lậplịch biểuCPU Thông tin quảntrị bộ nhớ Thông tin kiểm toán Thông tin trạng thái I/O Operating System Concepts - 7th Edition, Feb 7, 2006 3.7 Silberschatz, Galvin and Gagne ©2005
- KHKHỐỐII ĐĐIIỀỀUU KHIKHIỂỂNN QUQUÁÁ TRÌNHTRÌNH (PCB)(PCB) Operating System Concepts - 7th Edition, Feb 7, 2006 3.8 Silberschatz, Galvin and Gagne ©2005
- SSỰỰ CHUYCHUYỂỂNN CPUCPU QUAQUA LLẠẠII GIGIỮỮAA CCÁÁCC QUQUÁÁ TRÌNHTRÌNH Operating System Concepts - 7th Edition, Feb 7, 2006 3.9 Silberschatz, Galvin and Gagne ©2005
- CCÁÁCC HHÀÀNGNG ĐĐỢỢII LLẬẬPP LLỊỊCHCH BIBIỂỂUU QUQUÁÁ TRÌNHTRÌNH Hàng đợicôngviệc (Job Queue) –tậptấtcả các quá trình trong hệ thống Hàng đợisẵn sàng (Ready Queue) –tập các quá trình nằm trong bộ nhớ sẵnsàngvàchờđợithựchiện Các hàng đợithiếtbị (Device Queues) –tập các quá trình chờđợimộtthiếtbị I/O Các quá trình di trú giữa các hàng đợi Operating System Concepts - 7th Edition, Feb 7, 2006 3.10 Silberschatz, Galvin and Gagne ©2005
- HHÀÀNGNG ĐĐỢỢII SSẴẴNN SSÀÀNGNG && CCÁÁCC HHÀÀNGNG ĐĐỢỢII THITHIẾẾTT BBỊỊ I/OI/O Operating System Concepts - 7th Edition, Feb 7, 2006 3.11 Silberschatz, Galvin and Gagne ©2005
- SSƠƠ ĐĐỒỒ LLẬẬPP LLỊỊCHCH BIBIỂỂUU QUQUÁÁ TRÌNHTRÌNH Operating System Concepts - 7th Edition, Feb 7, 2006 3.12 Silberschatz, Galvin and Gagne ©2005
- CCÁÁCC BBỘỘ LLẬẬPP LLỊỊCHCH BIBIỂỂUU Bộ lậplịch biểudàihạn (Long-term scheduler / job scheduler) –chọn các quá trình để chuyển sang hàng đợisẵn sàng Bộ lậplịch biểungắnhạn (Short-term scheduler / CPU scheduler) –chọn quá trình sẽđượcthựchiệnkế tiếpvàcấpphátCPU chonó Operating System Concepts - 7th Edition, Feb 7, 2006 3.13 Silberschatz, Galvin and Gagne ©2005
- BBỔỔ XUNGXUNG LLẬẬPP LLỊỊCHCH BIBIỂỂUU TRUNGTRUNG HHẠẠNN Operating System Concepts - 7th Edition, Feb 7, 2006 3.14 Silberschatz, Galvin and Gagne ©2005
- CCÁÁCC BBỘỘ LLẬẬPP LLỊỊCHCH BIBIỂỂUU (Cont.)(Cont.) Bộ lậplịch biểungắnhạn đượcviệndẫnthường xuyên (ms) ⇒ nhanh Bộ lậplịch biểu dài hạn đượcviệndẫnítthường xuyên (seconds, minutes) ⇒ có thể chậm Bộ lậplịch biểu dài hạn điềukhiểnbậc đachương Các quá trình được phân thành: z Quá trình I/O-bound –tiêunhiềuthời gian cho hoạt động I/O hơn cho tính toán, gồm nhiều CPU bursts ngắn z Quá trình CPU-bound –tiêunhiềuthờigianhơn cho tính toán; gồmmộtsố ít CPU bursts rất dài Operating System Concepts - 7th Edition, Feb 7, 2006 3.15 Silberschatz, Galvin and Gagne ©2005
- CHUYCHUYỂỂNN NGNGỮỮ CCẢẢNHNH Khi CPU chuyển cho quá trình khác, hệ thống phảilưulạitrạng thái của quá trình cũ và nạptrạng thái của quá trình mới Thờigianchuyểnngữ cảnh là một “phí”; hệ thống không làm việc “hữu ích” khi chuyểnngữ cảnh Thờigianchuyểnngữ cảnh phụ thuộcvàohỗ trợ phầncứng Operating System Concepts - 7th Edition, Feb 7, 2006 3.16 Silberschatz, Galvin and Gagne ©2005
- TTẠẠOO QUQUÁÁ TRÌNHTRÌNH Quá trình cha tạo ra các quá trình con, các quá trình con lạicóthể tạo ra các quá trình con củanó, tạoramột cây các quá trình Chia sẻ tài nguyên z Cha và con chia sẻ tấtcả các tài nguyên z Các con chia sẻ mộttập con các tài nguyên củacha z Cha và con không chia sẻ tài nguyên Sự thựchiện z Cha và các con thựchiện đồng thời z Cha chờđếntận khi con kết thúc Operating System Concepts - 7th Edition, Feb 7, 2006 3.17 Silberschatz, Galvin and Gagne ©2005
- TTẠẠOO QUQUÁÁ TRÌNHTRÌNH (Cont.)(Cont.) Không gian địachỉ z Con sao lạicủacha z Con có mộtchương trình đượcnạpvàotrongnó Ví dụ: UNIX z Fork: lờigọihệ thống tạo quá trình mới z Exec: lờigọihệ thống được dùng sau fork để thay thế không gian bộ nhớ của quá trình vớichương trình mới Operating System Concepts - 7th Edition, Feb 7, 2006 3.18 Silberschatz, Galvin and Gagne ©2005
- TTẠẠOO QUQUÁÁ TRÌNHTRÌNH Operating System Concepts - 7th Edition, Feb 7, 2006 3.19 Silberschatz, Galvin and Gagne ©2005
- CHCHƯƠƯƠNGNG TRÌNHTRÌNH CC PHÂNPHÂN NHNHÁÁNHNH QUQUÁÁ TRÌNHTRÌNH int main() { pid_t pid; /* fork another process */ pid = fork(); if (pid < 0) { /* error occurred */ fprintf(stderr, "Fork Failed"); exit(-1); } else if (pid == 0) { /* child process */ execlp("/bin/ls", "ls", NULL); } else { /* parent process */ /* parent will wait for the child to complete */ wait (NULL); printf ("Child Complete"); exit(0); } } Operating System Concepts - 7th Edition, Feb 7, 2006 3.20 Silberschatz, Galvin and Gagne ©2005
- CÂYCÂY QUQUÁÁ TRÌNHTRÌNH TRONGTRONG SolarisSolaris Operating System Concepts - 7th Edition, Feb 7, 2006 3.21 Silberschatz, Galvin and Gagne ©2005
- KKẾẾTT THTHÚÚCC QUQUÁÁ TRÌNHTRÌNH Quá trình thựchiện xong chỉ thị saucùngvàyêucầu HĐH xóa nó (exit) z Xuấtdữ liệutừ con đến cha (thông qua wait) z Các tài nguyên của quá trình đượcthuhồibởi HĐH Cha có thể kết thúc sự thựchiệncủa các quá trình con (abort) z Con vượt quá các tài nguyên đượccấpphát z Nhiệmvụ của con không còn đượccầnthiếtnữa z Nếucha đang thoát Mộtsố HĐH không cho phép con tiếptụcnếucha kết thúc – Tấtcả các con bị kết thúc – Kết thúc hàng loạt (cascading termination) Operating System Concepts - 7th Edition, Feb 7, 2006 3.22 Silberschatz, Galvin and Gagne ©2005
- CCÁÁCC QUQUÁÁ TRÌNHTRÌNH HHỢỢPP TTÁÁCC Quá trình độclập không ảnh hưởng và không bịảnh hưởng bởi sự thựchiệncủa quá trình khác Quá trình hợptáccó thểảnh hưởng và bịảnh hưởng bởisự thực hiệncủa quá trình khác Các lợithế củasự hợp tác quá trình z Chia sẻ thông tin z Tăng tốc độ tính toán z Module hóa z Tiệnlợi Operating System Concepts - 7th Edition, Feb 7, 2006 3.23 Silberschatz, Galvin and Gagne ©2005
- VVẤẤNN ĐĐỀỀ PRODUCERPRODUCER CONSUMERCONSUMER Kiểumẫu cho các quá trình hợp tác, quá trình producer sản suất thông tin đượctiêuthụ bởi quá trình consumer z Buffer không giớinội (unbounded-buffer) không bị giới hạnvề kích cỡ buffer z Buffer giớinội (bounded-buffer) buffer có kích cỡ cốđịnh Operating System Concepts - 7th Edition, Feb 7, 2006 3.24 Silberschatz, Galvin and Gagne ©2005
- BUFFERBUFFER GIGIỚỚII NNỘỘII –– GIGIẢẢII PHPHÁÁPP BBỘỘ NHNHỚỚ CHIACHIA SSẺẺ Dữ liệu chia sẻ #define BUFFER_SIZE 10 typedef struct { . . . } item; item buffer[BUFFER_SIZE]; int in = 0; int out = 0; Giảiphápđúng nhưng chỉ sử dụng được BUFFER_SIZE-1 phần tử Operating System Concepts - 7th Edition, Feb 7, 2006 3.25 Silberschatz, Galvin and Gagne ©2005
- BUFFERBUFFER GIGIỚỚII NNỘỘII –– PHPHƯƠƯƠNGNG PHPHÁÁPP Insert()Insert() while (true) { /* Produce an item */ while (((in = (in + 1) % BUFFER SIZE count) == out) ; /* do nothing no free buffers */ buffer[in] = item; in = (in + 1) % BUFFER SIZE; } Operating System Concepts - 7th Edition, Feb 7, 2006 3.26 Silberschatz, Galvin and Gagne ©2005
- BUFFERBUFFER GIGIỚỚII NNỘỘII –– PHPHƯƠƯƠNGNG PHPHÁÁPP Remove()Remove() while (true) { while (in == out) ; // do nothing nothing to consume // remove an item from the buffer item = buffer[out]; out = (out + 1) % BUFFER SIZE; return item; } Operating System Concepts - 7th Edition, Feb 7, 2006 3.27 Silberschatz, Galvin and Gagne ©2005
- LIÊNLIÊN LLẠẠCC GIGIỮỮAA CCÁÁCC QUQUÁÁ TRÌNHTRÌNH (IPC)(IPC) Cơ chế cho sự liên lạcgiữa các quá trình và đồng bộ hóa các hành động của chúng Hệ thống thông điệp – các quá trình liên lạcvới nhau không sử dụng đến các biếnchiasẻ IPC cung cấp hai hoạt động: z send(message) – message kích cỡ cốđịnh/thay đổi z receive(message) Nếu P và Q muốnliênlạc, chúng cầnphải: z Thiếtlậpmộtnốikếtliênlạc z Trao đổi các thông điệp (messages) dùng send/receive Thựcthinốikết liên lạc: z Vậtlý(bộ nhớ chia sẻ, hardware bus) z logic (Các tính chấtlogic) Operating System Concepts - 7th Edition, Feb 7, 2006 3.28 Silberschatz, Galvin and Gagne ©2005
- MMỘỘTT SSỐỐ VVẤẤNN ĐĐỀỀ THTHỰỰCC THITHI Các nốikết đượcthiếtlậpnhư thế nào? Mộtnốikếtcóthể kếthợpvớihơn hai quá trình? Có thể có bao nhiêu nốikếtgiữamỗicặpquátrìnhliênlạc? Khả năng củamộtnốikết? Kích cỡ thông điệpmànốikếtchịu đựng đượclàcốđịnh / thay đổi? Mộtnốikếtlàđơnhướng hay lưỡng hướng? Operating System Concepts - 7th Edition, Feb 7, 2006 3.29 Silberschatz, Galvin and Gagne ©2005
- CCÁÁCC MÔMÔ HÌNHHÌNH LIÊNLIÊN LLẠẠCC Operating System Concepts - 7th Edition, Feb 7, 2006 3.30 Silberschatz, Galvin and Gagne ©2005
- LIÊNLIÊN LLẠẠCC TRTRỰỰCC TITIẾẾPP Các quá trình phải định tên tường minh mỗi quá trình khác: z send (P, message) – gửimột message cho quá trình P z receive(Q, message) – nhậnmột message từ quá trình Q Các tính chấtcủamộtnốikết liên lạc z Các nốikết đượcthiếtlậptựđộng z Mộtnốikết đượckếthợpvới đúng mộtcặp quá trình liên lạc z Giũamỗicặpcóđúng mộtnốikết z Nốikếtcóthểđơnhướng, nhưng thông thường là lưỡng hướng Operating System Concepts - 7th Edition, Feb 7, 2006 3.31 Silberschatz, Galvin and Gagne ©2005
- LIÊNLIÊN LLẠẠCC GIGIÁÁNN TITIẾẾPP Các thông điệp đượcgửivànhậntừ mailboxes (cũng được tham khảonhư các ports) z Mỗi mailbox có một id duy nhất z Các quá trình có thể liên lạcnếu chúng chia sẻ một mailbox Các tính chấtcủanốikết liên lạc z Nốikếtchỉ đượcthiếtlậpnếu các quá trình chia sẻ một mailbox chung z Mộtnốikếtcóthểđượckếthợpvới nhiều quá trình z Mỗicặpquátrìnhcóthể chia sẻ mộtvàinốikết liên lạc z Nốikếtcóthểđơnhướng hoặclưỡng hướng Operating System Concepts - 7th Edition, Feb 7, 2006 3.32 Silberschatz, Galvin and Gagne ©2005
- LIÊNLIÊN LLẠẠCC GIGIÁÁNN TITIẾẾPP Các hoạt động z Tạomột mailbox mới z Gửivànhận messages qua mailbox z Phá hủy mailbox Các nguyên thủy: send(A, message) – gửimột message đến mailbox A receive(A, message) – nhậnmột message từ mailbox A Operating System Concepts - 7th Edition, Feb 7, 2006 3.33 Silberschatz, Galvin and Gagne ©2005
- LIÊNLIÊN LLẠẠCC GIGIÁÁNN TITIẾẾPP Chia sẻ mailbox z P1, P2, và P3 chia sẻ mailbox A z P1, gủi; P2 và P3 nhận z Ai nhận message? Các giải pháp z Chophépmộtnốikếtkếthợpvới nhiềunhất hai quá trình z Chỉ cho phép một quá trình tạimộtthời điểmthựchiệnhoạt động nhận z Chophéphệ thống chọntùyý ngườinhận. Ngườigửi báo ai sẽ nhận. Operating System Concepts - 7th Edition, Feb 7, 2006 3.34 Silberschatz, Galvin and Gagne ©2005
- ĐĐỒỒNGNG BBỘỘ HHÓÓAA Truyền Message có thể là blocking / non-blocking Blocking đượcxétlàđồng bộ (synchronous) z Gửi Blocking: ngườigửibị ngăn đếntận khi message được nhận z Nhận Blocking: ngườinhậnbị ngăn đếntậnkhimột message là sẵncó Non-blocking được xét là phi đồng bộ (asynchronous) z Gửi Non-blocking: Ngườigửigửi message và tiếptục z Nhận Non-blocking: ngườinhậnnhậnmột message hợplệ / vô hiệu Operating System Concepts - 7th Edition, Feb 7, 2006 3.35 Silberschatz, Galvin and Gagne ©2005
- BUFFERBUFFER Hàng đợi các messages gắnvớinốikết; đượcthựcthibởimột trong ba cách 1. Sứcchứa Zero – 0 messages Ngườigửiphảichờ ngườinhận(hẹ hò) 2. Sứcchứagiớinội–n messages Ngườigửiphảichờ nếunốikết đầy 3. Sứcchứakhônggiớihạn Ngườigửi không phảichờ Operating System Concepts - 7th Edition, Feb 7, 2006 3.36 Silberschatz, Galvin and Gagne ©2005
- LIÊNLIÊN LLẠẠCC ClientClient ServerServer Sockets Remote Procedure Calls - RPC Remote Method Invocation (Java) -RMI Operating System Concepts - 7th Edition, Feb 7, 2006 3.37 Silberschatz, Galvin and Gagne ©2005
- SocketsSockets Một socket được định nghĩanhưđiểmcuốicủamột liên lạc Nối địachỉ IP và port Socket 161.25.19.8:1625 tham khảo port 1625 trên host 161.25.19.8 Liên lạcgồmmộtcặp sockets Operating System Concepts - 7th Edition, Feb 7, 2006 3.38 Silberschatz, Galvin and Gagne ©2005
- LIÊNLIÊN LLẠẠCC SocketSocket Operating System Concepts - 7th Edition, Feb 7, 2006 3.39 Silberschatz, Galvin and Gagne ©2005
- GGỌỌII THTHỦỦ TTỤỤCC TTỪỪ XAXA RemoteRemote ProcedureProcedure CallsCalls RPCRPC Remote procedure call (RPC): gọithủ tụcgiữ các quá trình trên các hệ thống mạng. Stubs – proxy phía client cho thủ tục trên server. Stub phía client định vị server và sắpxếp theo thứ tự (marshal) các tham số. Stub phía server nhận message này, tháo các tham sốđược, và thựchiệnthủ tục trên server. Operating System Concepts - 7th Edition, Feb 7, 2006 3.40 Silberschatz, Galvin and Gagne ©2005
- SSỰỰ THTHỰỰCC HIHIỆỆNN RPCRPC Operating System Concepts - 7th Edition, Feb 7, 2006 3.41 Silberschatz, Galvin and Gagne ©2005
- RemoteRemote MethodMethod InvocationInvocation RMIRMI Remote Method Invocation (RMI) là mộtcơ chế Java tương tự RPC. RMI cho phép mộtchương trình Java program trên mộtmáygọi mộtphương pháp trên một đốitượng ở xa. Operating System Concepts - 7th Edition, Feb 7, 2006 3.42 Silberschatz, Galvin and Gagne ©2005
- CCÁÁCC THAMTHAM SSỐỐ ĐƯĐƯỢỢCC SSẮẮPP THEOTHEO THTHỨỨ TTỰỰ Operating System Concepts - 7th Edition, Feb 7, 2006 3.43 Silberschatz, Galvin and Gagne ©2005
- EndEnd ofof ChapterChapter 33