Thảo luận Bài 4

Trang 4 trong tổng số 15 trang Previous  1, 2, 3, 4, 5 ... 9 ... 15  Next

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down

Hàm API

Bài gửi  nguyenthimao_I12A on 8/3/2012, 08:28

API là giao diện lập trình ứng dụng ( Application Programming Interface) Nó là 1 giao tiếp phần mềm được dùng bởi các ứng dụng khác nhau. Cũng giống như bàn phím là một thiết bị giao tiếp giữa người dùng và máy tính, API là 1 giao tiếp phần mếm chẳng hạn như giữa chương trình và hệ điều hành (HĐH). Bộ API của từng HĐH là khác nhau, làm cho các HĐH khác nhau và thường không tương thích với nhau. Ví dụ những phần mềm trên máy Macintosh không thể chạy được trên máy Windows bởi vì Macintosh và Windows có các API hòan tòan khác nhau.
Windows API quản lý mọi vấn đề làm ra Windows. Tuy nhiên nó đồng thời cũng cung cấp hầu hết các tính năng thông dụng (Open, Save As, Choose Font,…), các thiết lập HĐH, các sự kiện,… Các ứng dụng trên nền Windows dùng Windows API hầu như trong mỗi tác vụ. Thậm chí nếu bạn không dùng API trong khi lập trình thì ngôn ngữ lập trình cũng sẽ gọi các API trong chương trình được tạo ra để quản lý nhiều tác vụ khác nhau.
Hầu hết các hàm API được chứa trong các file DLL (Dynamic Link Library – thư viện liên kết động) chứa trong thư mục hệ thống của Windows. Các file DLL cho phép các chương trình bên ngòai dùng các hàm của chúng.

Bốn thư viện DLL chính của Windows :
KERNEL32 : Các hàm của HĐH
GDI32 : Các hàm giao tiếp thiết bị đồ họa
WINMM : Các hàm âm thanh, video
USER32 : Các hàm giao diện người dùng

Ví dụ:
GetWindowsDirectory -> KERNEL32.DLL
ShellExecute -> shell32.dll
ExitWindowsEx -> user32
GetModuleFileNameA -> kernel32.dll
ShowWindow -> user32
PlaySound -> winmm.dll

Các hàm API dùng tạo mới tiến trình và khởi động chương trình:
CreateProcess, CreateProcessWithLogon
WinExec
ShellExecute, ShellExecuteEx
CreateProcess, CreateProcessWithLogon
WinExec
ShellExecute, ShellExecuteEx
Các hàm API dùng để Gửi/Nhận thông điệp:
SendMessage: Gửi có chờ
PostMessage: Gửi không chờ
SendMessageTimeout: Gửi có chờ nhưng với thời hạn
WaitMessage: Chờ thông điệp
GetMessage: Nhận có chờ
PeekMessage: Nhận không chờ.

nguyenthimao_I12A

Tổng số bài gửi : 35
Join date : 16/02/2012

Xem lý lịch thành viên

Về Đầu Trang Go down

Ví dụ thực tiễn về bài toán sản xuất tiêu thụ để minh họa hệ thống có nhiều tiến trình song song, đồng hành cùng chia sẽ tài nguyên

Bài gửi  nguyenthimao_I12A on 8/3/2012, 08:33

Ví dụ một lớp là một tiến trình và lớp khác cũng là một tiến trình có thực thể thay đổi trạng thái từ 6h-8h30.Mỗi bạn trong lớp học là một tiến trình có thể coi là một luồng đang tiến hành song song và cùng sử dụng chung một tài nguyên là bảng đen.

nguyenthimao_I12A

Tổng số bài gửi : 35
Join date : 16/02/2012

Xem lý lịch thành viên

Về Đầu Trang Go down

Khối quản lí tiến trình

Bài gửi  nguyenthaihiep (I11C) on 8/3/2012, 08:35

Một khối điều khiển tiến trình (Process Control Block - PCB) là một cấu trúc dữ liệu trong nhân hệ điều hành chứa thông tin cần thiết để quản lý một tiến trình nhất định.
Tuỳ thuộc vào cài đặt nhưng nói chung PCB trực tiếp hoặc gián tiếp chứa những thông tin như sau:
• Định danh của tiến trình (process identifier hay PID)
• Giá trị các thanh ghi của tiến trình, trong đó đáng chú ý là con trỏ chương trình và con trỏ stack
• Không gian địa chỉ của tiến trình
• Độ ưu tiên (trong đó tiến trình có giá trị cao hơn được ưu tiên trước, ví dụ nice trong các hệ điều hành Unix)
• Thông tin kế toán tiến trình, ví dụ như thời điểm thực thi gần nhất, bao nhiêu thời gian CPU đã sử dụng...
• Con trỏ tới PCB tiếp theo, nghĩa là con trỏ tới tiến trình tiếp theo được chạy
• Thông tin V/R (ví dụ các thiết bị V/R được cấp phát cho tiến trình, danh sách các tệp đang mở...)
Khi chuyển ngữ cảnh, tiến trình đang thực hiện bị dừng lại và một tiến trình khác có cơ hội thực hiện. Nhân dừng việc thực hiện của tiến trình, sao chép các giá trị trong thanh ghi vào PCB và cập nhật thanh ghi với các giá trị của PCB của tiến trình mới.
Vị trí của PCB
Vì PCB chứa những thông tin tối quan trọng đối với tiến trình, nó phải được giữ trong một vùng bộ nhớ được bảo vệ. Trong một số hệ điều hành,, PCB được đặt ở đầu của ngăn xếp nhân của tiến trình

nguyenthaihiep (I11C)

Tổng số bài gửi : 34
Join date : 31/08/2011

Xem lý lịch thành viên

Về Đầu Trang Go down

Truyền thông điệp trong windows (Message-Passing in Windows)

Bài gửi  nguyenthimao_I12A on 8/3/2012, 08:39

Các hàm API dùng để Gửi/Nhận thông điệp
– SendMessage - Gửi có chờ
– PostMessage - Gửi không chờ
– SendMessageTimeout- Gửi có chờ nhưng với thời hạn
– WaitMessage - Chờ thông điệp đến
– GetMessage - Nhận có chờ
– PeekMessage - Nhận không chờ

nguyenthimao_I12A

Tổng số bài gửi : 35
Join date : 16/02/2012

Xem lý lịch thành viên

Về Đầu Trang Go down

Phân biệt TCP với UDP

Bài gửi  nguyenthaihiep (I11C) on 8/3/2012, 08:47

Giống nhau : đều là các giao thức mạng TCP/IP, đều có chức năng kết nối các máy lại với nhau, và có thể gửi dữ liệu cho nhau....
Khác nhau:
các header của TCP và UDP khác nhau ở kích thước (20 và 8 byte) nguyên nhân chủ yếu là do TCP phải hỗ trợ nhiều chức năng hữu ích hơn (như khả năng khôi phục lỗi). UDP dùng ít byte hơn cho phần header và yêu cầu xử lý từ host ít hơn.
TCP :
- Dùng cho mạng WAN
- Không cho phép mất gói tin
- Đảm bảo việc truyền dữ liệu
- Tốc độ truyền thấp hơn UDP
UDP:
- Dùng cho mạng LAN
- Cho phép mất dữ liệu
- Không đảm bảo.
- Tốc độ truyền cao, VolP truyền tốt qua UDP

nguyenthaihiep (I11C)

Tổng số bài gửi : 34
Join date : 31/08/2011

Xem lý lịch thành viên

Về Đầu Trang Go down

Các hàm của Win32 API dùng để lập trình đa luồng.

Bài gửi  TranThiNgocQuynh(I12C) on 8/3/2012, 08:48

- CreateThread: tạo một luồng để thực thi trong địa chỉ lời gọi tiến trình.
- ExitThread: dùng để kết thúc một luồng.
- GetCurrentThread: có chức năng trả về mục quản tạm cho luồng hiện tại.
- TerminateThread: có chức ngắt luồng.
- SetThreadPriority: có chức năng thiết lập giá trị ưu tiên cho một luồng.

TranThiNgocQuynh(I12C)

Tổng số bài gửi : 14
Join date : 16/02/2012

Xem lý lịch thành viên

Về Đầu Trang Go down

Phân biệt điều phối chậm với điều phối nhanh

Bài gửi  nguyenthaihiep (I11C) on 8/3/2012, 08:50

+ Điều phối chậm:
Chọn tiến trình từ Job Queue để đưa vào Ready Queue.
Kiểm soát độ đa chương (Số tiến trình trong bộ nhớ).
Do có nhiều thời gian (vài phút), loại Scheduler này có điều kiện để lựa chọn kỹ cáctiến trình cần nhằm phối hợp cân đối hai loại tiến trình:
Hướng CPU (CPU-Bound): Tính toán nhiều, Ít I/O.
Hướng I/O(I/O-Bound): Tính toán ít, Nhiều I/O.
Mục đích:
Cân bằng tải cho nhiều hệ thống.
+ Điều phối nhanh:
Còn gọi là điều phối CPU.
Chọn tiến trình từ Ready Queue để cấp CPU.
Có tần suất công việc cao. Thường cứ 100ms lại tốn 10ms để xác định tiến trình kếtiếp, như vậy 10/(100+10) = 9% thời gian CPU được dùng để điều phối công việc.


Được sửa bởi nguyenthaihiep (I11C) ngày 8/3/2012, 08:50; sửa lần 1.

nguyenthaihiep (I11C)

Tổng số bài gửi : 34
Join date : 31/08/2011

Xem lý lịch thành viên

Về Đầu Trang Go down

Ví dụ về PCB

Bài gửi  nguyenthimao_I12A on 8/3/2012, 08:50

Mình có ví dụ về PCB có gì các bạn bổ sung thêm!
Trong giờ học thầy gọi một bạn A lên bảng giải bài tập trong lúc bạn A đang giải thầy lại gọi bạn B lên và bạn A xuống, khi bạn A xuống thì toàn bộ nội dung của bạn A đã được thầy ghi chép vào một vùng bộ nhớ của bạn A (ví dụ như ghi vào một trang giấy) gọi là vùng nhớ PCB. Bạn B ghi xong thầy lại lưu nội dung của bạn B vào vùng nhớ PCB của bạn B. Sau đó thầy muốn bạn A lên bảng lại thì thầy lại khôi phục lại nội dung của bạn A( dữ liệu của vùng nhớ PCB) được khôi phục lại.

nguyenthimao_I12A

Tổng số bài gửi : 35
Join date : 16/02/2012

Xem lý lịch thành viên

Về Đầu Trang Go down

Trình bày mô hình chuyển trạng thái của tiến trình trạng thái

Bài gửi  NguyenHongHaiI12C on 8/3/2012, 08:50

Quá trình là một chương trình đang thực thi. Khi một quá trình thực thi, nó thay đổi trạng thái. Trạng thái của một quá trình được định nghĩa bởi một hoạt động hiện tại của quá trình đó. Mỗi quá trình có thể ở một trong những trạng thái sau: mới (new), sẳn sàng (ready), đang chạy (running), chờ (waiting), hay kết thúc (terminated). Mỗi quá trình được biểu diễn trong hệ điều hành bởi khối điều khiển quá trình của chính nó (PCB).
Một quá trình khi không thưc thi, được đặt vào hàng đợi. Hai cấp chủ yếu của hàng đợi trong hệ điều hành là hàng đợi yêu cầu nhập/xuất và hàng đợi sẳn sàng. Hàng đợi sẳn sàng chứa tất cả quá trình sẳn sàng để thực thi và đang chờ CPU. Mỗi quá trình được biểu diễn bởi một PCB và các PCB có thể được liên kết với nhau để hình thành một hàng đợi sẳn sàng. Định thời biểu dài (long-term scheduling) (hay định thời biểu công việc) là chọn các quá trình được phép cạnh tranh CPU. Thông thường, định thời biểu dài bị ảnh hưởng nặng nề bởi việc xem xét cấp phát tài nguyên, đặc biệt quản lý bộ nhớ. Định thời ngắn (short-term scheduling) là sự chọn lựa một quá trình từ các hàng đợi sẳn sàng.
Các quá trình trong hệ thống có thể thực thi đồng hành. Có nhiều lý do các thực thi đồng hành: chia sẻ thông tin, tăng tốc độ tính toán, hiệu chỉnh và tiện dụng. Thực thi đồng hành yêu cầu cơ chế cho việc tạo và xóa quá trình.
http://illiweb.com/fa/pbucket.gif
Quá trình thực thi trong hệ điều hành có thể là các quá trình độc lập hay các quá trình hợp tác. Các quá trình hợp tác phải có phương tiện giao tiếp với nhau. Chủ yếu, có hai cơ chế giao tiếp bổ sung cho nhau cùng tồn tại: chia sẻ bộ nhớ và hệ thống truyền thông điệp. Phương pháp chia sẻ bộ nhớ yêu cầu các quá trình giao tiếp chia sẻ một số biến. Các quá trình được mong đợi trao đổi thông tin thông qua việc sử dụng các biến dùng chung này. Trong hệ thống bộ nhớ được chia sẻ, nhiệm vụ cho việc cung cấp giao tiếp tách rời với người lập trình ứng dụng; chỉ hệ điều hành cung cấp hệ thống bộ nhớ được chia sẻ. Phương pháp truyền thông điệp cho phép các quá trình trong đổi thông điệp. Nhiệm vụ cung cấp giao tiếp có thể tách rời với hệ điều hành. Hai cơ chế này không loại trừ hỗ tương và có thể được dùng cùng một lúc trong phạm vi một hệ điều hành.

NguyenHongHaiI12C

Tổng số bài gửi : 48
Join date : 18/02/2012

Xem lý lịch thành viên

Về Đầu Trang Go down

Ví dụ về điều phối

Bài gửi  nguyenthimao_I12A on 8/3/2012, 09:00

* Điều phối chậm (Long-term scheduler or job scheduler) : hỗn hợp 2 loại hướng CPU và hướng I/O để đảm bảo cân bằng tải do đó CPU sẽ được xử lý hữu hiệu hơn.
+ Hướng CPU: tính toán nhiều,ít I/O:
- Ví dụ: Công ty có một chiếc ô tô (CPU), nhiều nhân viên cần đi công tác (nhiều tiến trình) phải sử dụng ôtô. Do đó, ô tô (CPU) phải bận (phục vụ) cho nhiều người (nhiều tiến trình).
+ Hướng I/O: tính toán ít, nhiều I/O:
- Ví dụ: Công ty có một chiếc ô tô (CPU), các nhân viên trong công ty chỉ ngồi nghiên cứu (I/O), không sử dụng đến ô tô. Vậy quá lãng phí ô tô (CPU).
* Điều phối vừa (Medium-termscheduler) :
Ví dụ: Phòng thực hành nhỏ, nhưng nhiều bạn đi học thực hành (nhiều tiến trình). Thầy (HĐH) sẽ đẩy một số bạn ra khỏi lớp (rút tiến trình ra khỏi bộ nhớ). Sau khi nhóm trong phòng học xong Thầy sẽ đẩy các bạn bên ngoài vào phòng học (đưa tiến trình vào bộ nhớ vào thời điểm thích hợp).

nguyenthimao_I12A

Tổng số bài gửi : 35
Join date : 16/02/2012

Xem lý lịch thành viên

Về Đầu Trang Go down

Trình bày lí do cộng tác giữa các tiến trình

Bài gửi  phuongnguyen on 8/3/2012, 09:09

Giữa các tiến trình cần sự cộng tác với nhau để đảm bảo các tiến trình được xử lí hoạt động đạt hiệu quả tối đa.
- Chia sẻ thông tin (Information Sharing): Một tiến trình sử dụng thông tin do tiến trình khác cung cấp.
+ Ví dụ thực tế: Trong một nhóm kỹ sư xe máy tham gia nghiên cứu một dự án cải tiến mẫu xe máy mới. Nhóm kỹ thuật viên này chia tài liệu về dự án mới cho mỗi thành viên trong nhóm. Thành viên thứ nhất nghiên cứu về cách thay đổi mẫu mã của xe, thành viên thứ hai nghiên cứu về cách tiết kiệm xăng cho xe. Sau đó các thành viên này tập hợp những thông tin mình nghiên cứu được để hoàn thiện một chiếc xe máy mới.

- Tăng tốc tính toán (Computation Speedup): Các tiến trình cùng làm việc song song trên 1 hoặc nhiều máy để giải quyết bài toán chung.
+ Ví dụ thực tế: Mỗi người kỹ sư sẽ áp dụng những nghiên cứu của mình trên mỗi xe riêng để kiểm thử kết quả nghiên cứu.

- Đảm bảo tính đơn thể (Modularity): Chương trình được chia thành các đơn thể chức năng vận hành trong các tiến trình hoặc luồng khác nhau.
+ Ví dụ thực tế: Trong một dây chuyền lắp ráp một chiếc xe máy, mỗi người kỹ sư sẽ lắp ráp bộ phận do mình phụ trách. Điều này đảm bảo được tính đơn thể của sự cộng tác tiến trình.

- Đảm bảo tính tiện dụng (Convenience): Đảm bảo tính tiện dụng cho người dùng, người dùng sẽ được sử dụng nhiều tính năng mới.
+ Ví dụ thực tế: Sau khi chiếc xe cải tiến, người sử dụng sẽ được hưởng nhiều tính năng mới như: Mẫu mã đẹp, ít hao xăng, xe chạy khỏe hơn, ....

phuongnguyen

Tổng số bài gửi : 27
Join date : 17/02/2012

Xem lý lịch thành viên

Về Đầu Trang Go down

Phân biệt Job Queue và Ready Queue

Bài gửi  phuongnguyen on 8/3/2012, 09:10

Job Queue: là hàng chờ công việc, chứa các tiến trình chờ được vận hành.
Ready Queue: là hàng chờ sẵn sàng, chứa các tiến trình chờ được cấp CPU.
Giống nhau:- Đều là các hàng chờ chứa các tiến trình cần vận hành.
- Đều cần thuật giải điều phối để sắp xếp các tiến trình.
Khác nhau:- Đều là các hàng chờ chứa các tiến trình cần vận hành.
- Đều cần thuật giải điều phối để sắp xếp các tiến trình.
Khác nhau:
- Dùng giải thuật điều phối chậm(Long - term Scheduler) để đưa các tiến trình từ Job Queue vào Ready Queue.
- Dùng giải thuật điều phối nhanh(Short - term Scheduler) chọn các tiến trình trong Ready Queue để cấp CPU.

phuongnguyen

Tổng số bài gửi : 27
Join date : 17/02/2012

Xem lý lịch thành viên

Về Đầu Trang Go down

SỰ KHÁC NHAU GIỮA TIẾN TRÌNH VÀ CHƯƠNG TRÌNH

Bài gửi  phuongnguyen on 8/3/2012, 09:11

-Tiến trình là một thực thể một thực thể hoạt động điều khiển đoạn mã lệnh có riêng một không gian địa chỉ, có ngăn xếp (stack) riêng rẽ, có bảng chứa các số miêu tả file (file descriptor) được mở cùng tiến trình và đặc biệt là có một định danh PID (process identifier) duy nhất trong toàn bộ hệ thống vào thời điểm tiến trình đang chạy
-Chương trình hay còn gọi là phần mềm (software) là một một thực thể thụ động tập hợp những câu lệnh được viết bằng một hoặc nhiều ngôn ngữ lập trình theo một trật tự xác định nhằm tự động thực hiện một số chức năng hoặc giải quyết một bài toán nào đó. Tùy theo mức độ phức tạp của phần mềm làm ra, người thiết kế phần mềm sẽ ít nhiều dùng đến các phương tiện để tạo ra mẫu thiết kế theo ý muốn (chẳng hạn như là các sơ đồ khối, các lưu đồ, các thuật toán và các mã giả), sau đó mẫu này được mã hoá bằng các ngôn ngữ lập trình và được các trình biên dịch chuyển thành các tập tin thi hành. Tập họp các tập tin thi hành đó làm thành một phần mềm. Một phần mềm thông thường sẽ tương thích với một hay vài hệ điều hành, tùy theo cách thiết kế, cách viết mã nguồn và ngôn ngữ lập trình được dùng.
Việc thực hiện chương trình của máy tính có thể bị dừng lại khi người điều khiển thực hiện lệnh thoát hoặc dừng chương trình hay khi chương trình gặp lỗi (của bản thân chương trình, của hệ điều hành hay của phần cứng)

phuongnguyen

Tổng số bài gửi : 27
Join date : 17/02/2012

Xem lý lịch thành viên

Về Đầu Trang Go down

Câu 1 : Mô hình chuyển trạng thái của tiến trình

Bài gửi  NguyenThiHue48(I12A) on 8/3/2012, 09:13

Trước hết ta phải hiểu thế nào là tiến trình ?
Tiến trình là chương trình trong thời gian thức hiện (đặt dưới sự quản lý của hệ điều hành)

Trạng thái của tiến trình tại một thời điểm được xác định bởi hoạt động hiện thời của tiến trình tại thời điểm đó. Trong quá trình sống, một tiến trình thay đổi trạng thái do nhiều nguyên nhân như : phải chờ một sự kiện nào đó xảy ra, hay đợi một thao tác nhập/xuất hoàn tất, buộc phải dừng hoạt động do đã hết thời gian xử lý...
Mô hình trạng thái của tiến trình :

Có 5 trạng thái của tiến trình:
New : tiến trình đang được tạo lập.

Ready : tiến trình chờ được cấp phát CPU để xử lý

Running : các chỉ thị của tiến trình đang được xử lý.

Waiting : tiến trình chờ được cấp phát một tài nguyên, hay chờ một
sự kiện xảy ra .
Terminated : tiến trình hoàn tất xử lý.

Trong ready cũng có thế có nhiều tiến trình. HDH chọn 1 tiến trình thực thi ( mình nghĩ có sự ưu tiên trong Ready Queue-vì là hàng đợi) trước khi chuyển qua trạng thái running.
Tại trạng thái running của 1 tiến trình. Khi gặp lệnh exit sẽ lập tức chuyển tiến trình đó đến terminated. Tiến trình bị ngắt (interrup) có thể do chạy quá lâu ( còn gọi là “tiếm quyền”), hết thời lượng phải chuyển qua tiến trình khác, lúc này tiến trình ở trạng thái waiting. Waiting sẻ trả về cho ready để ready tiếp tục chuyển qua running. Và một tiến trình sau khi running xong sẽ được chuyển qua trạng thái - trạng thái kết thúc.
Có gì các bạn bổ sung thêm nha !

NguyenThiHue48(I12A)

Tổng số bài gửi : 8
Join date : 28/02/2012

Xem lý lịch thành viên

Về Đầu Trang Go down

Trình bày mô hình chuyển trạng thái của tiến trình

Bài gửi  TranThiAnhDao89I12C on 8/3/2012, 09:16

New: tiến trình đang được tạo lập.
Running: các chỉ thị của tiến trình đang được xử lý.
Blocked: tiến trình chờ được cấp phát một tài nguyên, hay chờ một sự kiện xảy ra .
Ready: tiến trình chờ được cấp phát CPU để xử lý.
Kết thúc: tiến trình hoàn tất xử lý.



Tiến trình P1: vào hàng đợi Job-Queue ở trạng thái New, sẽ đợi 1 khoảng thời gian của quá trình điều phối chậm (Scheduler Long Term) của hệ điều hành(HĐH) để chọn tiến trình, sau khi được O.S chọn, P1 chuyển sang hàng đợi reday quueue và ở trạng thái Ready. Lúc này P1 chỉ đợi cấp CPU và running.
Sau một khỏang thời gian running, tiến trình P2 xuất hiện. Lúc này, hệ điều hành sẽ ghi lại thông tin của P1 vào thanh PCB1 bao gồm những thông tin: con trỏ, trạng thái của P1, số hiệu của tiến trình P1, Bộ đếm P1, nội dung của P1…Và chuyển P1 sang hàng đợi Waiting và chuyển trạng thái Ready. Lúc này, P2 sẽ được cấp CPU và running. Và sau một khỏang thời gian running, P2 cũng sẽ chuyển sang hàng đợi waiting và chuyển trạng thái ready, lúc này HĐH cũng ghi lại thông tin vào thanh ghi PCB2 như đã làm ở P1. Sau đó, HĐH sẽ load lại thông tin của PCB1 và P1 sẽ tiếp tục running. Quá trình này cũng sẽ lập lại cho P2. Đển khi P1 và P2 kết thúc.

Tại một thời điểm, chỉ có một tiến trình có thể nhận trạng thái running trên một bộ xử lý
bất kỳ. Trong khi đó, nhiều tiến trình có thể ở trạng thái blocked hay ready.
Các cung chuyển tiếp trong sơ đồ trạng thái biễu diễn sáu sự chuyển trạng thái có thể xảy
ra trong các điều kiện sau :
• Tiến trình mới tạo được đưa vào hệ thống
• Bộ điều phối cấp phát cho tiến trình một khoảng thời gian sử dụng CPU
• Tiến trình kết thúc
• Tiến trình yêu cầu một tài nguyên nhưng chưa được đáp ứng vì tài nguyên chưa sẵn sàng để cấp phát tại thời điểm đó ; hoặc tiến trình phải chờ một sự kiện hay thao tácnhập/xuất.
• Bộ điều phối chọn một tiến trình khác để cho xử lý .
• Tài nguyên mà tiến trình yêu cầu trở nên sẵn sàng để cấp phát ; hay sự kiện hoặc thao tác nhập/xuất tiến trình đang đợi hoàn tất.

TranThiAnhDao89I12C

Tổng số bài gửi : 25
Join date : 17/02/2012

Xem lý lịch thành viên

Về Đầu Trang Go down

Trình bày những lý do công tác giữa các tiến trình

Bài gửi  TranThiAnhDao89I12C on 8/3/2012, 09:17

• Chia sẻ thông tin (Information Sharing): Một tiến trình sử dụng thông tin do tiến trình khác cung cấp. Ví dụ: các bạn trong lớp chia nhóm học. Nhóm một nghiên cứu chương 1, nhóm hai nghiên cứu chương 2. Sau đó, hai nhóm trao đổi thông tin cho nhau. Kết quả hai nhóm mau chóng tìm hiểu hết hai chương.
• Tăng tốc tính toán (Computation Speedup): Các tiến trình cùng làm việc song song trên 1 hoặc nhiều máy để giải quyết bài toán chung.
• Đảm bảo tính đơn thể (Modularity): Chương trình được chia thành các đơn thể chức năng vận hành trong các tiến trình hoặc luồng khác nhau. Ví dụ: mỗi bạn học một bài, đảm bảo tính đơn thể.
• Đảm bảo tính tiện dụng (Convenience): Người dùng có nhu cầu làm nhiều việc một lúc: Soạn thảo, In ấn, Duyệt Web, Lấy file về, Biên dịch chương trình, Kiểm tra chính tả,...

TranThiAnhDao89I12C

Tổng số bài gửi : 25
Join date : 17/02/2012

Xem lý lịch thành viên

Về Đầu Trang Go down

Trình bày mô hình chuyển trạng thái của tiến trình

Bài gửi  Đinh Đông Dương on 8/3/2012, 09:18

Trạng thái của tiến trình tại một thời điểm được xác định bởi hoạt động hiện thời của tiến trình tại thời điểm đó. Trong quá trình sống, một tiến trình thay đổi trạng thái do nhiều nguyên nhân như : phải chờ một sự kiện nào đó xảy ra, hay đợi một thao tác nhập/xuất hoàn tất, buộc phải dừng hoạt động do đã hết thời gian xử lý...

Tại một thời điểm, một tiến trình có thể nhận một trong các trạng thái sau đây :

New : tiến trình đang được tạo lập.

Ready : tiến trình chờ được cấp phát CPU để xử lý

Running : các chỉ thị của tiến trình đang được xử lý.

Waiting : tiến trình chờ được cấp phát một tài nguyên, hay chờ một
sự kiện xảy ra .
Terminated : tiến trình hoàn tất xử lý.

Tại một thời điểm, chỉ có một tiến trình có thể nhận trạng thái Running trên một bộ xử lý bất kỳ. Trong khi đó, nhiều tiến trình có thể ở trạng thái Waiting hay Ready.

- Tất cả các tiến trình mới tạo lập đều được chuyển sang trạng thái NEW –trạng thái đầu tiên , sau đó đưa vào hàng đợi job queue, hệ điều hành sẽ sử dụng điều phối chậm (long-term scheduler) và không tiếm quyền để lựa chọn một tiến trình thích hợp nhất trong hàng đợi job queue để chuyển nó sang trang thái Ready và đưa tiến trình này vào hàng đợi Ready Queue.
- Những tiến trình đang ở trạng thái sẵn sang Ready được sếp vào hàng đợi Ready Queue, ở trạng thái này hệ điều hành sẽ sử dụng trình điều phối nhanh(Short- Term scheduler) và có tiếm quyền để lựa chọn tiến trình thích hợp giao CPU cho nó và chuyển nó sang trạng thái Runing. Tiến trình sau khi giao CPU thì rời khỏi hàng đợi Ready queue (tiến trình đó vẫn có thể quay trở lại hàng đợi này nếu nó chưa thục thi
xong).
- Tiến trình được giao CPU nếu đã thực thi hoàn tất thì kết thúc và chuyển sang trạng thái terminated sau đó trả lại CPU cho hệ thống , việc chuyển trạng thái này được hệ điều hành sử dụng trình điều phối chậm không tiềm quyền .
- Tiến trình được giao CPU nhưng chưa thực thi xong công việc và bị tiếm quyền thì sẽ bị chuyển từ trạng thái Runing sang trạng thái Ready và quay trở về cuối hàng đợi Ready queue để đợi đến lượt giao CPU kế tiếp , tiến trình chuyển trạng thái xong trả lại CPU cho hệ điều hành .
- Tiến trình được giao CPU nhưng chưa hoàn tất công việc của mình vì phải chờ đợi sự xuất hiện của sự kiện hay IO nào đó thì sẽ được hệ điều hành chuyển sang trạng thái waiting và chuyển nó vào hàng đợi Waiting queue , việc chuyển sang trạng thái này được hệ điều hành sử dụng trình điều phối chậm không tiếm quyền .
- Những tiến trình ở trạng thái Waiting(nằm trong hàng đợi Waiting queue) sau khi sự kiện hay IO mà nó chờ xuất hiện thì lập tức nó được hệ điều hành chuyển nó sang trạng thái sẵn sàng Ready và đưa nó vào hàng đợi Ready queue để sẵn sàng cho lần cấp CPU kế tiếp .

Đinh Đông Dương

Tổng số bài gửi : 12
Join date : 17/02/2012

Xem lý lịch thành viên

Về Đầu Trang Go down

Phân biệt các loại trình điều phối

Bài gửi  phuongnguyen on 8/3/2012, 09:18

Điều phối chậm (Long-term scheduler (or job scheduler)) :
• Chọn process nào sẽ được đưa vào ready queue (từ New chuyển sang Ready)
• Kiểm soát Độ đa chương
• Do có nhiều thời gian (tới vài phút), loại scheduler này có điều kiện để lựa chọn kỹ càng nhằm phối hợp cân đối 2 loại tiến trình
. Hướng CPU: tính toán nhiều, ít I/O.
Ví dụ: Công ty có một chiếc ô tô (CPU), nhiều nhân viên cần đi công tác (nhiều tiến trình) phải sử dụng ô tô. Do đó, ô tô (CPU) phải bận (phục vụ) cho nhiều người (nhiều tiến trình).
. Hướng I/O: tính toán ít, nhiều I/O
Ví dụ: Công ty có một chiếc ô tô (CPU), các nhân viên trong công ty chỉ ngồi nghiên cứu (I/O), không sử dụng đến ô tô. Vậy quá lãng phí ô tô (CPU)
• Mục đích cân bằng tải

Điều phối nhanh (Short-term scheduler (or CPU scheduler)) :
• Còn gọi là Điều phối CPU.
• Chọn tiến trình từ Ready Queue để cấp CPU.
• Có tần suất công việc cao. Thường cứ 100 ms lại tốn 10 ms để xác định tiến trình kế tiếp, như vậy 10/(100+10)=9% thời gian CPU được dùng để điều phối công việc.

Điều phối vừa (Medium-term scheduler) :
• Là Short-Term Scheduler được thêm chức năng rút các tiến trình khỏi bộ nhớ, dẫn đến làm giảm Độ đa chương, sau đó đưa lại chúng vào bộ nhớ vào thời điểm thích hợp để tiếp tục thực hiện từ vị trí bị tạm ngừng trước đó.
• Nhờ cách điều phối này, hỗn hợp các tiến trình trong Ready Queue có tính tối ưu hơn.
Ví dụ: Phòng thực hành nhỏ, nhưng nhiều bạn đi học thực hành (nhiều tiến trình). Thầy (HĐH) sẽ đẩy một số bạn ra khỏi lớp (rút tiến trình ra khỏi bộ nhớ). Sau khi nhóm trong phòng học xong Thầy sẽ đẩy các bạn bên ngoài vào phòng học (đưa tiến trình vào bộ nhớ vào thời điểm thích hợp).


phuongnguyen

Tổng số bài gửi : 27
Join date : 17/02/2012

Xem lý lịch thành viên

Về Đầu Trang Go down

Giải thích đoạn mã sau:

Bài gửi  phuongnguyen on 8/3/2012, 09:22

Code:
#define BUFFER_SIZE 50
HANDLE semEmpty, semFull;
semEmpty=CreateSemaphore(0, BUFFER_SIZE, BUFFER_SIZE, "SemEmpty");
semFull=CreateSemaphore(0, 0, BUFFER_SIZE, "SemFull");
WaitForSingleObject(semEmpty, INFINITE);
printf(“semEmpty Handle=%d”, semEmpty);
WaitForSingleObject(semFull, INFINITE);
printf(“semFull Handle=%d”, semFull);

Trả lời:
1. Khai báo kích thước bộ nhớ đệm bằng 50 (cho bài toán Sản xuất-Tiêu thụ).
2. Khai báo 2 biến semEmpty và semFull dùng chứa mục quản (Handle) của 2 đèn hiệu (Semaphore).
3. Yêu cầu hệ điều hành tạo lập đèn hiệu liên tiến trình tên là SemEmpty với giá trị ban đầu và tối đa bằng 50 (BUFFER_SIZE). Mục quản của đèn hiệu gửi vào biến semEmpty.
4. Yêu cầu hệ điều hành tạo lập đèn hiệu liên tiến trình tên là SemFull với giá trị ban đầu bằng 0 và giá trị tối đa bằng 50 (BUFFER_SIZE). Mục quản của đèn hiệu gửi vào biến semFull.
5. Chờ vô hạn (INFINITE) đến khi giá trị của đèn SemEmpty lớn hơn 0 (hiện bằng 50 nên qua được, sau đó giá trị của SemEmpty còn 49).
6. Lệnh printf() đưa ra Mục quản của đèn hiệu SemEmpty.
7. Lời gọi chờ tại SemFull sẽ chuyển luồng hiện hành sang trạng thái chờ đến khi giá trị của đèn này lớn hơn 0 (hiện bằng 0).
8. Lệnh printf() đưa ra Mục quản của đèn hiệu SemFull, nhưng hiện tại không thực hiện, do luồng hiện hành phải chờ đến khi giá trị của SemFull lớn hơn 0.

phuongnguyen

Tổng số bài gửi : 27
Join date : 17/02/2012

Xem lý lịch thành viên

Về Đầu Trang Go down

Hệ điều hành cần phải có chức năng điều phối CPU

Bài gửi  hoanghaiyen on 8/3/2012, 09:32

Trong các hệ đa chương thực thi nhiều chương trình đồng thời làm tăng hiệu suất hệ thống.
Tại mỗi thời điểm, chỉ có một process được thực thi. Do đó, cần phải giải quyết vấn đề phân chia, lựa chọn process thực thi sao cho được hiệu quả nhất chiến lược định thời CPU.
Tiêu chí điều phối CPU là :
1. Công suất CPU (CPU Utilisation): Thực tế đạt từ 40% - 90% thời gian CPU. CPU càng bận càng tốt.
2. Thông suất hệ thống (Throughput): Số TT hoàn tất trong 1 đơn vị thời gian, ví dụ: 1 TT / giờ, 10 TT / giây.
3. Tổng thời gian làm việc (Turnaround Time): Kể từ khi bắt đầu đến khi kết thúc tiến trình (Bao gồm tổng thời gian chờ tại Ready Queue, tổng thời gian sử dụng CPU, tổng thời gian I/O, …).
4. Thời gian chờ (Waiting Time): Tổng thời gian chờ tại Ready Queue.
5. Thời gian đáp ứng (Response Time): Thời gian kể từ khi người dùng đặt yêu cầu cho đến khi có phản hồi đầu tiên.

hoanghaiyen

Tổng số bài gửi : 7
Join date : 23/02/2012

Xem lý lịch thành viên

Về Đầu Trang Go down

Phát biểu bài toán sản xuất tiêu thụ với thuật giải phù hợp. (Trình bày giải thuật)

Bài gửi  nguyenthimao_I12A on 8/3/2012, 09:42

Phát biểu bài toán:
- Giả sử có Bộ nhớ đệm (Buffer) bao gồm nhiều khoang (Items) được tiến trình Producer lần lượt đưa các sản phẩm S1, S2,... vào.
- Tiến trình Consumer lần lượt lấy sản phẩm ra theo đúng thứ tự.
- Công việc của Producer phải đồng bộ với Consumer: Không được đưa sản phẩm vào khi Buffer đầy, Không được lấy ra khi chưa có.


Trình bày giải thuật:




nguyenthimao_I12A

Tổng số bài gửi : 35
Join date : 16/02/2012

Xem lý lịch thành viên

Về Đầu Trang Go down

Tiến trình khác Chương trình như thế nào?

Bài gửi  nguyenthingocmai_I12A on 8/3/2012, 09:51

- Tiến trình (Process) là chuơng trình trong thời gian thực hiện (đặt dưới sự quản lý của HĐH).Có sự phân biệt Tiến trình hệ thống (của HĐH) với Tiến trình người dùng.
- Bản thân chương trình không là tiến trình vì là thực thể Thụ động (Passive), trong khi tiến trình là thực thể Hoạt động(Active) với nhiều thông tin về trạng thái trong đó có Bộ đếm chương trình (Program Counter) cho biết vị trí lệnh hiện hành.

nguyenthingocmai_I12A

Tổng số bài gửi : 26
Join date : 17/02/2012

Xem lý lịch thành viên

Về Đầu Trang Go down

Câu 4: Lý do các tiến trình cộng tác với nhau ?

Bài gửi  NguyenThiHue48(I12A) on 8/3/2012, 09:57

Trong môi trường đa chương, một tiến trình không đơn độc trong hệ thống , mà có thể ảnh hưởng đến các tiến trình khác , hoặc bị các tiến trình khác tác động. Nói cách khác, các tiến trình là những thực thể độc lập , nhưng chúng vẫn có nhu cầu liên lạc với nhau để :

- Chia sẻ thông tin: nhiều tiến trình có thể cùng quan tâm đến những dữ liệu nào đó, do vậy hệ điều hành cần cung cấp một môi trường cho phép sự truy cập đồng thời đến các dữ liệu chung.
- Tăng tốc tính toán: Các tiến trình làm việc song song trên cùng một hoặc nhiều máy tính để giải quyết bài toán chung.
- Đảm bảo tính đơn thể: Chương trình được chia thành các đơn thể chức năng riêng vận hành trong các tiến trình hoặc luồng khác nhau.
- Đảm bảo tính tiện dụng: Người dùng có khả năng làm nhiều việc cùng một lúc: Soạn thảo, In ấn, Lấy file về,...
Ví dụ : Sinh viên làm đồ án tốt nghiệp thường làm theo nhóm. Mỗi người trong nhóm sẽ có 1 công việc cụ thể,cùng hợp tác giúp nhau hoàn thành đồ án chung của nhóm.

NguyenThiHue48(I12A)

Tổng số bài gửi : 8
Join date : 28/02/2012

Xem lý lịch thành viên

Về Đầu Trang Go down

Process control block(PCB)-khối điều khiển tiến trình

Bài gửi  thailongI12C on 8/3/2012, 11:00

Đại diện cho 1 process trong HĐH là khối điều khiển process(PCB).PCB là 1 cấu trúc dữ liệu chứa những thông tin quan trọng về process và có thể khác nhau trong các hệ thống khác nhau,trong đó thường có:
  • Trạng thái hiện tại của process

  • ID(identifer) duy nhất cho process

  • độ ưu tiên(priority) của process

  • thông tin về bộ nhớ

  • thông tin về các tài nguyên process đang sử dụng

  • vùng để cho các thanh ghi

PCB là đối tượng quan trọng,nhờ nó HĐH có thể có được toàn bộ thông tin cơ bản nhất về 1 process.Khi HĐH chuyển(switch) BXL từ đang phục vụ process này sang phục vụ process khác,nó dùng vùng cho các thanh ghi trong PCB lưu thông tin giá trị các thanh ghi của hệ thống để có thể tiếp tục thực hiện process mỗi khi process đến lượt được sử dụng BXL.

Tóm lại,PCB là đối tượng chính đại diện cho process đối với HĐH.Vì HĐH phải có khả năng thực hiện các thao tác với cái PCB khác nhau một cách nhanh chóng,trong nhiều hệ thống có những thanh ghi đặc biệt luôn chỉ tới PCB của running process.Và cũng có những lệnh cài đặt ngay trong phần cứng để đảm bảo nhanh chóng ghi thông tin trạng thái vào PCB và tiếp theo là nhanh chóng đọc các thông tin đó.

thailongI12C

Tổng số bài gửi : 35
Join date : 17/02/2012

Xem lý lịch thành viên

Về Đầu Trang Go down

Thảo luận bài 4 :Trình bày mô hình chuyển trạng thái của tiến trình

Bài gửi  Nguyen Sy Hung I12A on 8/3/2012, 11:07

New: tiến trình đang được tạo lập.
Running: các chỉ thị của tiến trình đang được xử lý.
Blocked: tiến trình chờ được cấp phát một tài nguyên, hay chờ một sự kiện xảy ra .
Ready: tiến trình chờ được cấp phát CPU để xử lý.
Kết thúc: tiến trình hoàn tất xử lý.

Tiến trình P1: vào hàng đợi Job-Queue ở trạng thái New, sẽ đợi 1 khoảng thời gian của quá trình điều phối chậm (Scheduler Long Term) của hệ điều hành(HĐH) để chọn tiến trình, sau khi được O.S chọn, P1 chuyển sang hàng đợi reday quueue và ở trạng thái Ready. Lúc này P1 chỉ đợi cấp CPU và running.
Sau một khỏang thời gian running, tiến trình P2 xuất hiện. Lúc này, hệ điều hành sẽ ghi lại thông tin của P1 vào thanh PCB1 bao gồm những thông tin: con trỏ, trạng thái của P1, số hiệu của tiến trình P1, Bộ đếm P1, nội dung của P1…Và chuyển P1 sang hàng đợi Waiting và chuyển trạng thái Ready. Lúc này, P2 sẽ được cấp CPU và running. Và sau một khỏang thời gian running, P2 cũng sẽ chuyển sang hàng đợi waiting và chuyển trạng thái ready, lúc này HĐH cũng ghi lại thông tin vào thanh ghi PCB2 như đã làm ở P1. Sau đó, HĐH sẽ load lại thông tin của PCB1 và P1 sẽ tiếp tục running. Quá trình này cũng sẽ lập lại cho P2. Đển khi P1 và P2 kết thúc.

Tại một thời điểm, chỉ có một tiến trình có thể nhận trạng thái running trên một bộ xử lý
bất kỳ. Trong khi đó, nhiều tiến trình có thể ở trạng thái blocked hay ready.
Các cung chuyển tiếp trong sơ đồ trạng thái biễu diễn sáu sự chuyển trạng thái có thể xảy
ra trong các điều kiện sau :
• Tiến trình mới tạo được đưa vào hệ thống
• Bộ điều phối cấp phát cho tiến trình một khoảng thời gian sử dụng CPU
• Tiến trình kết thúc
• Tiến trình yêu cầu một tài nguyên nhưng chưa được đáp ứng vì tài nguyên chưa sẵn sàng để cấp phát tại thời điểm đó ; hoặc tiến trình phải chờ một sự kiện hay thao tácnhập/xuất.
• Bộ điều phối chọn một tiến trình khác để cho xử lý .
• Tài nguyên mà tiến trình yêu cầu trở nên sẵn sàng để cấp phát ; hay sự kiện hoặc thao tác nhập/xuất tiến trình đang đợi hoàn tất.

Nguyen Sy Hung I12A

Tổng số bài gửi : 28
Join date : 15/02/2012
Age : 28

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Thảo luận Bài 4

Bài gửi  Sponsored content


Sponsored content


Về Đầu Trang Go down

Trang 4 trong tổng số 15 trang Previous  1, 2, 3, 4, 5 ... 9 ... 15  Next

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang


 
Permissions in this forum:
Bạn không có quyền trả lời bài viết