Thảo luận Bài 4

Trang 2 trong tổng số 4 trang Previous  1, 2, 3, 4  Next

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

Địng nghĩa tiến trình và các trạng thái của nó

Bài gửi  truongphamhuytruong.i11c on 26/3/2014, 15:23

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ĐH .
Phân biệt tiến trình :
- Tiến trình hệ thống : khi khởi động máy các chương trình mặc định của hệ điều hành sẽ tự động chạy lên vd như windows Explore , desktop window manager ...
- Tiến trình người dùng : khi user cần sử dụng chương trình phục vụ cho cong việc thì sẽ kích hoạt chương trình cần dùng lên . vd : yahoo, word , ...
Các trạng thái tiến trình :
- Mới (New )- Tiến trình vửa được tạo lập
- Đang chạy (Running )- Các lệnh thực thi .
- Đang chờ ( waitting ) - Các lệnh đang chờ thực thi.
- Sẵn sàng (ready ) - Tiến trình chờ để ấn dịnh sẵn trong CPU .
- Kết thức ( Termnated )- Tiến trình vửa thực hiện xong .

Vd đời thường ( mình tự nghĩa ra nếu không chính xác ,thầy và các bạn đừng chê Very Happy )
Trong nhà hàng :
• các nhân viên đang làm việc là vd như tiến trình của hệ thống vì khi mở cửa đã chuẩn bị sẵn tất cá các thứ đó .
•Khi khách yêu cầu các món ăn cũng như nước uống thì là vd của tiến trình người dùng vì khi đó mới thực hiện những công việc khách hàng yêu cầu .

truongphamhuytruong.i11c

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

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  truongphamhuytruong.i11c on 26/3/2014, 15:25

Thanks, ban..

VoThiHuynhVan(TH09A2) đã viết:Giải thích code bài toán:
NguyenThiKimThanh (102C) đã viết:Tham khảo code sản xuất và tiêu thụ, các bạn cho ý kiến nha
Code:
#define BUFFER_SIZE  10          //số lượng khoang chứa

int buffer[BUFFER_SIZE];          //bộ nhớ đệm size 10 p.tử
int in=0;                        //con trỏ tới vị trí trống kế tiếp
int out=0;                      //con trỏ tới vị trí trống tiếp theo

int nextProduced=1;    //tạo 1 sản phẩm được sản xuất kế tiếp

//Hàm sản xuất:
void Producer()
{
   while (1)
   {
      //Quá trình tạo ra 1 sản phẩm
      // ... San xuat (nextProduced

      //vòng lặp quẩn tại đây cho đến khi có 1 chỗ trống trong bộ đệm hay ngăn chứa sản phẩm
      while(((in+1)%BUFFER_SIZE)==out);

      //khi vòng lặp while kết thúc =>có 1 chỗ trống để chèn sản phẩm vào
      buffer[in]=nextProduced++;      //chèn sản phẩm tại vị trí in vô ngăn chứa, sản phẩm được sản xuất
      in=(in+1)%BUFFER_SIZE;       //tìm vị trí khác để Producer chèn thêm sản phầm vào

      //hàm SuspendThread dùng để tạo ngưng 1 luồng hiện hành
      SuspendThread(GetCurrentThread());
   }
}

//Hàm tiêu thụ:
void Consumer()
{
   int nextConsumed;
   while (1)
   {
      // vòng lặp quẩn tại đây khi các ngăn chứa sản phầm đều trống
      while(in==out);

      //vòng lặp while thoát khi có 1 ngăn chứa sản phầm
      nextConsumed=buffer[out];   //lấy sản phẩm tại vị trí out ra khỏi ngăn
      out=(out+1)%BUFFER_SIZE;   //tìm vị trí khác để Consumer lấy sản phẩm

      // ... Tieu thu (nextConsumed)--> quá trình tiêu thụ sàn phẩm

      //hàm Sleep đưa luồng vào trạng thái ngủ trong khi chờ Producer sản xuất thêm sản phầm
      //đếm số mili giây trong giờ hiện tại % 5000, hết thời gian thực hiện while kế tiếp
      Sleep(GetTickCount()%5000);
   }
}

int main(){
   HANDLE ProducerHandle1, ProducerHandle2;//biến HANDLE chứa mục quản nhà sản xuất
   HANDLE ConsumerHandle1, ConsumerHandle2;// biến HANDLE chứa mục quản nhà tiêu thụ

   DWORD ProducerID1, ProducerID2, ConsumerID1, ConsumerID2;//chứa ID nhà sản xuất và nhà tiêu thụ
  
   //khởi tạo nhà sản xuất với các thông tin: Producer, ID, số 4 biểu thị trạng thái của Producer lúc khởi tạo: trạng thái ngủ
   ProducerHandle1=CreateThread(0,0,(LPTHREAD_START_ROUTINE)Producer,0,4,&ProducerID1);
   ProducerHandle2=CreateThread(0,0,(LPTHREAD_START_ROUTINE)Producer,0,4,&ProducerID2);

   //khởi tạo nhà tiêu thụ với các thông tin: Consumer, ID, số 0 biểu thị trạng thái của Producer lúc khởi tạo: trạng thái thức
   ConsumerHandle1=CreateThread(0,0,(LPTHREAD_START_ROUTINE)Consumer,0,0,&ConsumerID1);
   ConsumerHandle2=CreateThread(0,0,(LPTHREAD_START_ROUTINE)Consumer,0,0,&ConsumerID2);

   while(1)
   {
      printf("\n- Nhan phim P/p de san xuat, nhan 0 de ket thuc:");
      switch (getch())
      {
         //nhấn phím P=Producing
         case 'P':
               // đánh thức Producer lúc này đang ở trạng thái ngủ
               ResumeThread(ProducerHandle1);
            break;
         //nhấn phím p=Producing
         case 'p':   ResumeThread(ProducerHandle2);      break;

         //giải phóng Producer và Consumer khỏi bộ nhớ
         case '0':
         {
            CloseHandle(ProducerHandle1);
            CloseHandle(ProducerHandle2);
            CloseHandle(ConsumerHandle1);
            CloseHandle(ConsumerHandle2);
            return 0;

         }
      }
      //ngừng 1 khoảng thời gian nhất định để nhà sản xuất vừa được đánh thức kịp hoàn tất 1 chu trình công việc
      Sleep(1);

      //show kết quả sau khi sản xuất tiêu thụ
      ShowBuffer();
   }
}

Có giải thích khá rõ. Mọi người tham khảo thêm  Very Happy

truongphamhuytruong.i11c

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

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

Về Đầu Trang Go down

Truyền thông điệp trong Windows

Bài gửi  truongphamhuytruong.i11c on 26/3/2014, 15:27


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ờ


.

truongphamhuytruong.i11c

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

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

Về Đầu Trang Go down

điều phối chậm

Bài gửi  NguyenHuuSonLam(TH10A1) on 27/3/2014, 09:14

Trình điều phối gồm có:
Điều phối chậm (Long-term scheduler):
- Chọn tiến trình nào sẽ được đưa vào ready queue ( tức là từ New chuyển sang Ready)
- Kiểm soát Độ đa chương (số tiến trình trong bộ nhớ)
- 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
1. 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).
2. 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 thực hiện giao dịch tại chỗ (I/O), không sử dụng đến ô tô. Vậy quá lãng phí ô tô (CPU)
- Mục đích là cân bằng tải cho toàn hệ thống
Điều phối nhanh (Short-term scheduler (or CPU scheduler)) :
- Chọn tiến trình nào sẽ được chiếm CPU để xử lý (tức là từ Ready chuyển sang Running)
- Tần xuất công việc cao
Điều phối vừa (Medium-term scheduler) :
- Chuyển tiến trình từ bộ nhớ chính sang sang bộ nhớ thứ cấp (nhưng vẫn nằm trong không gian bộ nhớ ảo); khi nào cần thì nạp process từ bộ nhớ thứ cấp vào bộ nhớ chính.
Ví dụ: 1 Lớp học vi tính, nhưng quá nhiều bạn đi học (tức là có nhiều tiến trình). Thầy sẽ chỉ định một số bạn ra khỏi lớp (tức là rút tiến trình ra khỏi bộ nhớ). Sau khi nhóm trong lớp học xong Thầy gọi các bạn bên ngoài vào phòng học (tức là đưa tiến trình vào bộ nhớ vào thời điểm thích hợp).

NguyenHuuSonLam(TH10A1)

Tổng số bài gửi : 35
Join date : 14/03/2014

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

Về Đầu Trang Go down

Trả lời với trích dẫn nội dung bài viết này Câu 2: Trình bày mô hình luân chuyển CPU giữa 2 tiến trình (Y/c phải nêu được vai trò khối kiểm soát tiến trình PCB)

Bài gửi  NguyenHuuSonLam(TH10A1) on 27/3/2014, 09:24

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 trong một các trạng thái sau đây :

Mới tạo : 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ý.



Hình 2.2 Sơ đồ chuyển trạng thái giữa các tiến trình

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ác nhậ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.

NguyenHuuSonLam(TH10A1)

Tổng số bài gửi : 35
Join date : 14/03/2014

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

Về Đầu Trang Go down

iến trình khác chương trình như thế nào?

Bài gửi  NguyenHuuSonLam(TH10A1) on 27/3/2014, 09:27

Tiến trình (process) : 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) .
So sánh tiến trình với chương trình:
Bản than tiến trình không là chương trình vì là thực thể thụ động , trong khi tiến trình là thực thể hoạt động với nhiều thôn g tin về trạng thái trong đó có bộ đếm chương trình cho biết vị trí lệnh hiện hành .
- Nhiều tiến trình có thể liên quan đến một chương trình và là các thực thể khác nhau khi vận hành .
- Mỗi tiến trình có thể sinh ra nhiều tiến trình con khác khi vận hành.
- Tiến trình cần các tài nguyên ( CPU , Memory,tâp tin, thiết bị I/O) để hoàn thành công việc .
- Tài nguyên cấp cho tiến trinh ngay từ đầu (khi tiến trình được tạo lập) hoặc trong thời gian vận hành và được thu hồi hết khi tiến trình kết thúc .
- Tiến trình là thực thể hoạt động , chương trình là thực thể thụ động , tiến trình có thông – Điểm khác nhau giữa tiến trình và chương trình : tiến trình có thông tin trạng thái để phản ánh tiến trình đang ở trạng thái nào .
Bổ Sung!
I . Tiến trình là gì?
Thuật ngữ: Process (tiến trình/quá trình) Là một chương trình đang được thực hiện Được xem là đơn vị làm việc trong các HĐH z
Có hai loại tiến trình:
1. Tiến trình của HĐH
2. Tiến trình của NSD
II. Tiến trình gồm có…
Đoạn mã lệnh (code, có sách gọi là text)
Đoạn dữ liệu
Đoạn ngăn xếp và heap (stack/heap)
Các hoạt động hiện tại được thể hiện qua
con đếm lệnh (IP) và nội dung các thanh ghi (registers) của bộ xử lý
Chú ý:
Tiến trình là thực thể chủ động
Chương trình là thực thể bị động
III. Khối điều khiển tiến trình
Thuật ngữ: Process
Control Block (PCB)
Các thông tin:
Trạng thái tiến trình
Con đếm
Các thanh ghi
Thông tin về lập lịch
Thông tin về bộ nhớ
Thông tin accounting
Thông tin vào/ra

NguyenHuuSonLam(TH10A1)

Tổng số bài gửi : 35
Join date : 14/03/2014

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

Về Đầu Trang Go down

Hàng đợi lập thời biểu

Bài gửi  NguyenHuuSonLam(TH10A1) on 27/3/2014, 10:47

Trạng thái quá trình (process state): trạng thái có thể là mới, sẳn sàng, đang chạy, chờ đợi, kết thúc, …
Bộ đếm chương trình (program counter): bộ đếm hiển thị địa chỉ của chỉ thị kế tiếp được thực thi cho quá trình này.
Các thanh ghi (registers) CPU: các thanh ghi khác nhau về số lượng và loại, phụ thuộc vào kiến trúc máy tính. Chúng gồm các bộ tổng (accumulators), các thanh ghi chỉ mục, các con trỏ ngăn xếp, và các thanh ghi đa năng (general-purpose registers), cùng với thông tin mã điều kiện (condition-code information). Cùng với bộ đếm chương trình, thông tin trạng thái này phải được lưu khi một ngắt xảy ra, cho phép quá trình được tiếp tục một cách phù hợp sau đó (Hình III.3).
Thông tin lập thời biểu CPU (CPU-scheduling information): thông tin gồm độ ưu tiên của quá trình, các con trỏ chỉ tới các hàng đợi lập thời biểu, và bất kỳ tham số lập thời biểu khác.
Thông tin quản lý bộ nhớ (Memory-management information): thông tin này có thể gồm những thông tin như giá trị của các thanh ghi nền và thanh ghi giới hạn, các bảng trang hay các bảng phân đoạn, phụ thuộc hệ thống bộ nhớ được dùng bởi hệ điều hành.
Thông tin tính toán (accounting information): thông tin này gồm lượng CPU và thời gian thực được dùng, công việc hay số quá trình,…
Thông tin trạng thái nhập/xuất (I/O status information): thông tin này gồm danh sách của thiết bị nhập/xuất được cấp phát quá trình này, một danh sách các tập tin đang mở,..
PCB đơn giản phục vụ như kho chứa cho bất cứ thông tin khác nhau từ quá trình này tới quá trình khác.


Hình III‑3-Lưu đồ hiển thị việc chuyển CPU từ quá trình này tới quá trình khác

NguyenHuuSonLam(TH10A1)

Tổng số bài gửi : 35
Join date : 14/03/2014

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

Về Đầu Trang Go down

Ví dụ từ đời thường của Đồng bộ hóa liên lạc (Synchronization)

Bài gửi  truongphamhuytruong.i11c on 27/3/2014, 17:05

Ví dụ từ đời thường của việc gửi thông điệp có chờ ( Blocking Send) và gửi thông điệp không chờ ( Nonblocking Send) :
- Gửi thông điệp có chờ ( Blocking Send) : bạn A gửi một thông điệp cho bạn B và chờ khi nào bạn B trả lời mới làm việc khác. Nếu bạn B không trả lời thì bạn A vẫn chờ cho đến khi nào bạn B trả lời và không làm việc gì khác cả.
- Gửi thông điệp không chờ ( Nonblocking Send) : bạn A gửi thông điệp cho bạn B rồi vào nhà xem phim không chờ bạn B trả lời. Dù bạn B có trả lời hay không thì A vẫn đi làm việc khác.
Ta có thể lấy ví dụ tương tự cho nhận thông điệp có chờ ( Blocking Receive) và nhận thông điệp không chờ ( Nonblocking Receive)

Các bạn cò ví dụ nào thì bổ sung thêm để mọi người cùng tham khỏa nhébounce 
.

truongphamhuytruong.i11c

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

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

Về Đầu Trang Go down

Trình bày mô hình luân chuyển CPU giữa hai tiến trình

Bài gửi  VanPhuAnhTuan95(HLT3) on 27/3/2014, 20:28


VanPhuAnhTuan95(HLT3)

Tổng số bài gửi : 31
Join date : 16/03/2014

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  VanPhuAnhTuan95(HLT3) on 27/3/2014, 20:29

Đ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).

VanPhuAnhTuan95(HLT3)

Tổng số bài gửi : 31
Join date : 16/03/2014

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  NguyenThiThuThao(TH09A2) on 27/3/2014, 20:34

VoThiHuynhVan(TH09A2) đã viết:Giải thích code bài toán:
NguyenThiKimThanh (102C) đã viết:Tham khảo code sản xuất và tiêu thụ, các bạn cho ý kiến nha
Code:
#define BUFFER_SIZE  10          //số lượng khoang chứa

int buffer[BUFFER_SIZE];          //bộ nhớ đệm size 10 p.tử
int in=0;                        //con trỏ tới vị trí trống kế tiếp
int out=0;                      //con trỏ tới vị trí trống tiếp theo

int nextProduced=1;    //tạo 1 sản phẩm được sản xuất kế tiếp

//Hàm sản xuất:
void Producer()
{
   while (1)
   {
      //Quá trình tạo ra 1 sản phẩm
      // ... San xuat (nextProduced

      //vòng lặp quẩn tại đây cho đến khi có 1 chỗ trống trong bộ đệm hay ngăn chứa sản phẩm
      while(((in+1)%BUFFER_SIZE)==out);

      //khi vòng lặp while kết thúc =>có 1 chỗ trống để chèn sản phẩm vào
      buffer[in]=nextProduced++;      //chèn sản phẩm tại vị trí in vô ngăn chứa, sản phẩm được sản xuất
      in=(in+1)%BUFFER_SIZE;       //tìm vị trí khác để Producer chèn thêm sản phầm vào

      //hàm SuspendThread dùng để tạo ngưng 1 luồng hiện hành
      SuspendThread(GetCurrentThread());
   }
}

//Hàm tiêu thụ:
void Consumer()
{
   int nextConsumed;
   while (1)
   {
      // vòng lặp quẩn tại đây khi các ngăn chứa sản phầm đều trống
      while(in==out);

      //vòng lặp while thoát khi có 1 ngăn chứa sản phầm
      nextConsumed=buffer[out];   //lấy sản phẩm tại vị trí out ra khỏi ngăn
      out=(out+1)%BUFFER_SIZE;   //tìm vị trí khác để Consumer lấy sản phẩm

      // ... Tieu thu (nextConsumed)--> quá trình tiêu thụ sàn phẩm

      //hàm Sleep đưa luồng vào trạng thái ngủ trong khi chờ Producer sản xuất thêm sản phầm
      //đếm số mili giây trong giờ hiện tại % 5000, hết thời gian thực hiện while kế tiếp
      Sleep(GetTickCount()%5000);
   }
}

int main(){
   HANDLE ProducerHandle1, ProducerHandle2;//biến HANDLE chứa mục quản nhà sản xuất
   HANDLE ConsumerHandle1, ConsumerHandle2;// biến HANDLE chứa mục quản nhà tiêu thụ

   DWORD ProducerID1, ProducerID2, ConsumerID1, ConsumerID2;//chứa ID nhà sản xuất và nhà tiêu thụ
  
  //khởi tạo nhà sản xuất với các thông tin: Producer, ID, số 4 biểu thị trạng thái của Producer lúc khởi tạo: trạng thái ngủ
   ProducerHandle1=CreateThread(0,0,(LPTHREAD_START_ROUTINE)Producer,0,4,&ProducerID1);
   ProducerHandle2=CreateThread(0,0,(LPTHREAD_START_ROUTINE)Producer,0,4,&ProducerID2);

   //khởi tạo nhà tiêu thụ với các thông tin: Consumer, ID, số 0 biểu thị trạng thái của Producer lúc khởi tạo: trạng thái thức
   ConsumerHandle1=CreateThread(0,0,(LPTHREAD_START_ROUTINE)Consumer,0,0,&ConsumerID1);
   ConsumerHandle2=CreateThread(0,0,(LPTHREAD_START_ROUTINE)Consumer,0,0,&ConsumerID2);

   while(1)
   {
      printf("\n- Nhan phim P/p de san xuat, nhan 0 de ket thuc:");
      switch (getch())
      {
         //nhấn phím P=Producing
         case 'P':
               // đánh thức Producer lúc này đang ở trạng thái ngủ
               ResumeThread(ProducerHandle1);
            break;
         //nhấn phím p=Producing
         case 'p':   ResumeThread(ProducerHandle2);      break;

         //giải phóng Producer và Consumer khỏi bộ nhớ
         case '0':
         {
            CloseHandle(ProducerHandle1);
            CloseHandle(ProducerHandle2);
            CloseHandle(ConsumerHandle1);
            CloseHandle(ConsumerHandle2);
            return 0;

         }
      }
      //ngừng 1 khoảng thời gian nhất định để nhà sản xuất vừa được đánh thức kịp hoàn tất 1 chu trình công việc
     Sleep(1);

      //show kết quả sau khi sản xuất tiêu thụ
      ShowBuffer();
   }
}

Có giải thích khá rõ. Mọi người tham khảo thêm  Very Happy

Hehe, chi tiết quá mà không hiểu cho lắm.

NguyenThiThuThao(TH09A2)

Tổng số bài gửi : 21
Join date : 09/03/2014

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

Về Đầu Trang Go down

Phân biệt Job Queue ( hàng chờ công việc) và Ready Queue (hàng chờ sẵn sàng)

Bài gửi  CaoBaDuc-25-HLT3 on 27/3/2014, 23:12

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:- hàng chờ công việc lớn hơn hàng chờ sẵn sàng.
- thuật giải điều phối để sắp xếp các tiến trình khác nhau.
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.

CaoBaDuc-25-HLT3

Tổng số bài gửi : 11
Join date : 16/03/2014

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

Về Đầu Trang Go down

Tiến trình và mô hình 5 trạng thái

Bài gửi  HuynhHuuPhat(HLT3) on 28/3/2014, 08:13

Trong hệ thống đa chương có thể thể thực hiện nhiều tác vụ đồng thời.
- Việc thực hiện đồng thời này được hiện bằng cách chuyển đổi CPU qua lại giữa
các chương trình. Điều này tạo cảm giác có nhiều chương trình thực hiện đồng
thời.
- Trong hệ thống như vậy tất cả phần mềm được tổ chức thành một số tiến trình.
- Một tiến trình là một chương trình đang được xử lý, sở hữu con trỏ lệnh , tập các
thanh ghi, biến và để hoàn thành nhiệm vụ của mình một tiến trình phải sử dụng
các tài nguyên máy tính như CPU, bộ nhớ chính, các tập tin và thiết bị nhập xuất.
- Ý tưởng là có thể xem như mỗi tiến trình sở hữu một CPU ảo cho riêng mình,
nhưng trong thực tế chỉ có một bộ xử lý thật sự được chuyển đổi qua lại giữa các
tiến trình.
- Hệ điều hành chịu trách nhiệm sử dụng một thuật toán điều phối để quyết định thời
điểm cần dừng một tiến trình để thực hiện một tiến trình khác

Mô hình 5 trạng thái

(1) Tiến trình mới tạo được đưa vào hệ thống.
(2) Bộ lập lịch cấp phát cho tiến trình một khoảng thời gian sử dụng CPU
(3) Tiến trình kết thúc
(4)Tiến trình yêu cầu một tài nguyên nhưng chưa được đáp ứng hoặc phải chờ thao
tác nhập xuất.
(5) Bộ lập lịch thu hồi CPU và cấp phát cho tiến trình khác
(6) Tài nguyên mà tiến trình yêu cầu đã được cấp phát hay thao tác nhập xuất đã
hoàn tất.

HuynhHuuPhat(HLT3)

Tổng số bài gửi : 19
Join date : 16/03/2014

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

Về Đầu Trang Go down

Khái Niệm Tiến Trình (process).

Bài gửi  VoMinhThienHLT3 on 28/3/2014, 14:46

Process là chương trình được thưc thi:
  • Được nạp vào bộ nhớ gồm mã chương trình và dữ liệu chương trình.

  • Có các thông tin trạng thái: thanh ghi PC, các thanh ghi,....


Mỗi tiến trình (process) thực thi trên một CPU ảo

Hệ thống có nhiều tiến trình (process) đồng thời:
  • Đa chương - 1CPU: sử dụng cơ chế giả song song (làm mỗi thứ 1 chút).

  • Đa xữ lý - nhiều CPU trên 1 máy.

  • Phân bố - nhiều CPU trên nhiều máy.

VoMinhThienHLT3

Tổng số bài gửi : 9
Join date : 21/03/2014

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

Về Đầu Trang Go down

Câu 4: Trình bày những lý do cộng tác giữa các tiến trình(Cooperation Reasons)

Bài gửi  TranNguyenBinh(HLT3) on 28/3/2014, 21:07

_Chia sẽ thông tin(Information Sharing): một chương trình nó sẽ bao gồm nhiều tiến trình bên trong, chúng sẽ phối hợp cộng tác với nhau thì hiệu quả sẽ tốt hơn là chỉ 1 tiến trình làm việc đơn lẽ. Tiến trình này sẽ cung cấp thông tin cho tiến trình kia thực hiện.
VD: Khi họp nhóm để giải quyết một bài học khó chẳng hạng, ví dụ nhóm có 10 bạn, mỗi bạn học chủ yếu 1 phần sau đó họp lại và cùng chia sẽ những kinh nghiệm mà mình học được cho những bạn khác và học hỏi những kinh nghiệm của những bạn khác thì kiến thức sẽ phong phú hơn là tự học tất cả.
_Tăng tốc tính toán(Computation Speedup): do có nhiều tiến trình cùng làm việc như vậy thì tiến trình này làm việc này thì tiến trình khác làm việc khác và luân phiên nhau sử dụng CPU thì tốc độ hoàn thành công việc sẽ nhanh hơn.
VD: Trong bữa cơm gia đình của 1 gia đình có 4 người, nếu chỉ có 1 người vừa nấu cơm, nấu canh, kho cá, luột rau… thì bữa cơm sẽ lâu hoàn thành hơn là mỗi người làm 1 việc, và luân phiên nhau sử dụng bếp lửa(CPU).
_Đảm bảo tính đơn thể(Modularity): mỗi 1 tiến trình chỉ làm 1 chức năng riêng,tách biệt những chức năng của hệ thống thành nhiều chức năng riêng, để mỗi tiến trình làm 1 chức năng thì sẽ hiệu quả hơn là 1 tiến trình làm tất cả, đảm bảo tính đúng đắn và hiệu quả của công việc.
VD: Một công ty có các phòng ban: kinh doanh, marketing, nhân sự…thì nhân viên marketing sẽ bán hàng giỏi hơn nhân viên phòng kinh doanh và nhân sự, và nhân viên phòng nhân sự thì quản lý các giấy tờ sổ sách liên quan đến nhân viên tốt hơn là marketing và kinh doanh, và kinh doanh thì lại giỏi hơn nhân viên 2 phòng còn lại trong việc đàm phán và tìm ra giải pháp kinh doanh tốt hơn( tìm địa điểm tiêu thụ hàng hóa, đàm phán giá cả…)
_Đảm bảo tính tiện dụng(Convenience): người dùng có nhu cầu làm nhiều việc cùng 1 lúc: soạn thảo, in ấn, duyệt web,… nếu chúng ta có thể xây dựng hệ thống đáp ứng được nhu cầu của người dùng thì người dùng sẽ thích sử dụng hệ thống của chúng ta hơn

TranNguyenBinh(HLT3)

Tổng số bài gửi : 42
Join date : 18/03/2014
Age : 27
Đến từ : Tiền Giang

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

Về Đầu Trang Go down

Mô hình chuyển trạng thái của tiến trình

Bài gửi  TranNguyenBinh(HLT3) on 28/3/2014, 21:10

Trong khoa học máy tính, tiến trình là một thực thể đ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) dượ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.

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 trong một các trạng thái sau đây :

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ộtsự kiện xảy ra .
Ready : tiến trình chờ được cấp phát CPU để xử lý.
Exit : 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 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ác nhậ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.

TranNguyenBinh(HLT3)

Tổng số bài gửi : 42
Join date : 18/03/2014
Age : 27
Đến từ : Tiền Giang

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

Về Đầu Trang Go down

Tại sao phải có Điều phối chậm, Điều phối nhanh và Điều phối vừa?

Bài gửi  LamQuocVu(HLT3) on 28/3/2014, 22:51

Long-term scheduler (or job scheduler)

Chọn process nào sẽ được đưa vào ready queue (từ New chuyển sang Ready)

Short-term scheduler (or CPU scheduler)

Chọn process nào sẽ được chiếm CPU để xử lý (từ Ready chuyển sang Running)

Medium-term scheduler

Chuyển process từ bộ nhớ chính sang sang bộ nhớ thứ cấp (nhưng vẫn nằm trong không gian bộ nhớ ảo); khi nào cần thì nạp process từ bộ nhớ thứ cấp vào bộ nhớ chính.

LamQuocVu(HLT3)

Tổng số bài gửi : 31
Join date : 17/03/2014

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

Về Đầu Trang Go down

Chức năng và nội dung của Khối kiểm soát tiến trình.

Bài gửi  LamQuocVu(HLT3) on 28/3/2014, 22:55

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

q Process ID, parent process ID

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

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

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

q Các thanh ghi CPU

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

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

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

q 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ở,...

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

LamQuocVu(HLT3)

Tổng số bài gửi : 31
Join date : 17/03/2014

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à trình bày Thuật giải với Bộ đệm thực thi bằng mảng xoay vòng.

Bài gửi  LamQuocVu(HLT3) on 28/3/2014, 22:57

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:


LamQuocVu(HLT3)

Tổng số bài gửi : 31
Join date : 17/03/2014

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  LamQuocVu(HLT3) on 28/3/2014, 23:03

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.

LamQuocVu(HLT3)

Tổng số bài gửi : 31
Join date : 17/03/2014

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

Về Đầu Trang Go down

Công tác giữa các tiến trình

Bài gửi  LamQuocVu(HLT3) on 28/3/2014, 23:06

• 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ả,…

LamQuocVu(HLT3)

Tổng số bài gửi : 31
Join date : 17/03/2014

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

Về Đầu Trang Go down

Hai phương thức liên lạc giữa các tiến trình.

Bài gửi  LamQuocVu(HLT3) on 28/3/2014, 23:10

Liên lạc trực tiếp (Direct Communications)

§Theo địa chỉ đối xứng (Symmetric Scheme)

Send (P, Message) - Gửi thông điệp cho P

Receive (Q, Message) - Nhận thông điệp từ Q

Đặc điểm:

× Liên kết được thiết lập tự động giữa mỗi cặp tiến trình.

× Liên kết chỉ giữa 2 tiến trình.

× Chỉ có 1 liên kết giữa mỗi cặp.

× Tính đối xứng của liên lạc (2 bên đều biết đích xác tên của nhau khi Gửi/Nhận).

§Theo địa chỉ phi đối xứng (Asymmetric Scheme)

Send (P, Message) - Gửi thông điệp cho P

Receive (id, Message) - Nhận thông điệp từ tiến trình bất kỳ, Biến id chứa số hiệu tiến trình gửi

Liên lạc gián tiếp (Indirect Communications)

§ Qua các Hộp thư (Mailboxes) hoặc Cổng (Ports).

§ Hộp thư là một thực thể qua đó thông điệp được gửi đến và lấy ra.

§ Mỗi hộp thư có định danh riêng.

§ Hai tiến trình phải chung nhau một hộp thư nào đó.

§ Hai loại hộp thư:

× Hộp thư tiến trình (Process Mailbox): Nằm trong vùng địa chỉ của một tiến trình nào đó.

× Hộp thư hệ điều hành (OS Mailbox): Nằm trong vùng địa chỉ của HĐH

LamQuocVu(HLT3)

Tổng số bài gửi : 31
Join date : 17/03/2014

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  NguyenQuocCuong(HLT3) on 29/3/2014, 21:38

CaoBaDuc-25-HLT3 đã viết: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:- hàng chờ công việc lớn hơn hàng chờ sẵn sàng.
-  thuật giải điều phối để sắp xếp các tiến trình khác nhau.
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.

+ Ngoài ra, Ready Queue chứa hỗn hợp 2 loại tiến trình Hướng CPU và Hướng I/O sao cho tối ưu nhất để cân bằng, tránh tình trạng lạm dụng quá nhiều CPU (do tiến trình Hướng CPU gây ra) hoặc để CPU rỗi (do tiến trình Hướng O/I gây ra --> phí tài nguyên CPU).

VD: Lấy chương trình "thần tượng âm nhạc" làm ví dụ. Mỗi một người dân ở VN là một tiến trình, và những người đi thi là những tiến trình cần tham gia (được đưa vào Job Queue). Khi vòng sơ khảo diễn ra ở HCM, thì ban tổ chức chỉ chọn những thí sinh ở HCM trên tổng danh sách Job Queue để đưa vào danh sách dự thi đợt 1 (Ready Queue). Tiếp theo thì BGK chỉ kêu 1 thí sinh trong số đó vào phòng để thử giọng.

NguyenQuocCuong(HLT3)

Tổng số bài gửi : 15
Join date : 15/03/2014

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

Về Đầu Trang Go down

Tiến trình và Chương trình ??

Bài gửi  NguyenHaAn(I22A) on 29/3/2014, 21:42

Tiến trình là gì ?
Là một chương trình đang được thực hiện , được xem là đơn vị làm việc trong HĐH
Có hai loại tiến trình : Tiến trình của HĐH và Tiến trình của NSD .
Tiến trình gồm có…
Đoạn mã lệnh (code, có sách gọi là text).
Đoạn dữ liệu.
Đoạn ngăn xếp và heap (stack/heap).
Các hoạt động hiện tại được thể hiện qua con đếm lệnh (IP) và nội dung các thanh ghi (registers) của bộ xử lý .
Chú ý:
Tiến trình là thực thể chủ động
Chương trình là thực thể bị động

Chương trình hay còn gọi là phần mềm (software) là một 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)

NguyenHaAn(I22A)

Tổng số bài gửi : 11
Join date : 26/03/2013

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 2 trong tổng số 4 trang Previous  1, 2, 3, 4  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