Thảo luận Bài 4

Trang 3 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

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

Bài gửi  NguyenChiKien(HLT3) on 30/3/2014, 09:06

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();
   }
}

Thanks... Rõ ràng!!!!
avatar
NguyenChiKien(HLT3)

Tổng số bài gửi : 44
Join date : 23/03/2014
Age : 34

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

Về Đầu Trang Go down

Xử lý bất đồng bộ

Bài gửi  PhanVietTrung(HLT3) on 30/3/2014, 21:42

Chào các bạn ngày nay việc lập trình bất đồng bộ là việc không thể thiếu đối với lập trình viên chúng ta Basketball , một ứng dụng không thể có tình trạng đứng stop giao diện, bởi trên khía cạnh trãi nghiệm của người dùng điều đó là không thể chấp nhận affraid , người dùng sẽ cho là ứng dụng bị đứng bị crash, bị lỗi... cheers , nếu bạn nào đã từng lập trình cho các thiết bị di động thì chắc chắn biết tầm quan trọng của trãi nghiệm người dùng, chả thế mà có nguyên một chủ đề lớn về User experience hay gọi tắt là UX song song với User Interface giao diện người dùng. Các tính toán về giao diện được xử lý trong một  Smile 
main thread. Nếu ta viết tất cả các code xủ lý trong main thread mà không quan tâm thì có thể dẫn đến tình trạng giao diện bị lag, giật, thậm chí đóng băng do main thread bận xủ lý các tác vụ khác mà không tính toán các tác vụ liên quan đến giao diện được. Vì thế các việc tính toán hướng cpu hoặc phải yêu cầu đến truy xuất data, đặc biệt networking(có thể có độ trễ lớn) đều phải đưa ra xử lý bất đồng bộ tại thread khác ngoài main thread. Việc này đem lại nhiều ưu điểm.
1. Không ảnh hưởng đến giao diện ứng dụng qua đó không ảnh hưởng trãi nghiệm người dùng.
2. Tận dụng CPU đa luồng, đa nhân xử lý song song, tăng tốc ứng dụng.

Dưới đây là một đoạn code Object-C rất cơ bản demo việc sử dụng multi thread để xử lý bất đồng bộ. Mình chưa thử qua các ngôn ngữ lập trình khác nhưng mình tin chúng cũng có cơ chế tương tự, hãy tự tìm hiểu theo nhu cầu các bạn nhé.

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(queue, ^{  

// Viết code cho việc xử lý nặng hay tốn thời gian tại đây, toàn bộ code trong block này sẽ được đưa ra hàng đợi thread global để xử lý, lưu ý không được viết code liên quan đến giao diện ngoài main thread.

dispatch_async(dispatch_get_main_queue(), ^{
   // code liên quan đến update giro diện phải được đưa vào hàng đợi main thread để tính toán
}); });

các bạn cũng có thể tạo ra các hàng đợi và thread riêng theo nhu cầu, không phải bắt buộc là global thread nhé.

Trên đây là những điều cơ bản nhất về xử lý đồng bộ và bất đồng bộ mình tự học được, có điểm gì sai sót mong các bạn góp ý, nếu bạn nào cần ebook liên quan đến vấn đề này trong lập trình Object-c có thể liên hệ mình sẽ giúp đỡ.

Ghi chú thêm: ^{} dấu hiệu bạn thấy này chính là block trong Object-c Về cơ bản nó giống hàm trong C++ mà chúng ta hay dùng, điểm khác biệt, cũng là ưu điểm chính là code trong block sẽ được thực thi trong một thread khác ngoài thread chứa Block. Mình sẽ không đi sâu về vấn đề này, bạn nào hứng thú có thể tìm hiểu tài liệu rất nhiều thông qua google nhé pirat .

PhanVietTrung(HLT3)

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

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

Về Đầu Trang Go down

ĐỊNH NGHĨA TIẾN TRÌNH

Bài gửi  vothihongngoc72 (HLT3) on 1/4/2014, 07:43

Tham Khảo!

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

vothihongngoc72 (HLT3)

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

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. Cho VD minh họa từ đời thường (Phân biệt t/trình hướng CPU với t/trình hướng I/O)

Bài gửi  dangthituyetnhungTH08a1 on 1/4/2014, 20:45

Admin đã viết:Thảo luận những vấn đề liên quan đến Bài 4.
Điều phối chậm (Long-time 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)

Điều phối nhanh (Short-time 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.

dangthituyetnhungTH08a1

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

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

Về Đầu Trang Go down

Chương trình ??

Bài gửi  dangthituyetnhungTH08a1 on 1/4/2014, 20:50

Admin đã viết:Thảo luận những vấn đề liên quan đến Bài 4.

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)

dangthituyetnhungTH08a1

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

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

Về Đầu Trang Go down

Cách thức hoạt động và các đặc điểm của tiến trình

Bài gửi  LeVanVan69 (I22B) on 1/4/2014, 23:10

Điều phối hoạt động của các tiến trình là một vấn đề rất phức tạp, đòi hỏi hệ điều hành khi giải quyết phải xem xét nhiều yếu tố khác nhau để có thể đạt được những mục tiêu đề ra. Một số đặc tính của tiến trình cần được quan tâm như tiêu chuẩn điều phối :

a) Tính hướng xuất / nhập của tiến trình ( I/O-boundedness):

Khi một tiến trình nhận được CPU, chủ yếu nó chỉ sử dụng CPU đến khi phát sinh một yêu cầu nhập xuất ? Hoạt động của các tiến trình như thế thường bao gồm nhiều lượt sử dụng CPU , mỗi lượt trong một thời gian khá ngắn.

b) Tính hướng xử lý của tiến trình ( CPU-boundedness):

Khi một tiến trình nhận được CPU, nó có khuynh hướng sử dụng CPU đến khi hết thời gian dành cho nó ? Hoạt động của các tiến trình như thế thường bao gồm một số ít lượt sử dụng CPU , nhưng mỗi lượt trong một thời gian đủ dài.

c) Tiến trình tương tác hay xử lý theo lô :

Người sử dụng theo kiểu tương tác thường yêu cầu được hồi đáp tức thời đối với các yêu cầu của họ, trong khi các tiến trình của tác vụ được xử lý theo lô nói chung có thể trì hoãn trong một thời gian chấp nhận được.

d) Độ ưu tiên của tiến trình :

Các tiến trình có thể được phân cấp theo một số tiêu chuẩn đánh giá nào đó, một cách hợp lý, các tiến trình quan trọng hơn ( có độ ưu tiên cao hơn) cần được ưu tiên hơn.

e) Thời gian đã sử dụng CPU của tiến trình :

Một số quan điểm ưu tiên chọn những tiến trình đã sử dụng CPU nhiều thời gian nhất vì hy vọng chúng sẽ cần ít thời gian nhất để hoàn tất và rời khỏi hệ thống . Tuy nhiên cũng có quan điểm cho rằng các tiến trình nhận được CPU trong ít thời gian là những tiến trình đã phải chờ lâu nhất, do vậy ưu tiên chọn chúng.

f) Thời gian còn lại tiến trình cần để hoàn tất :

Có thể giảm thiểu thời gian chờ đợi trung bình của các tiến trình bằng cách cho các tiến trình cần ít thời gian nhất để hoàn tất được thực hiện trước. Tuy nhiên đáng tiếc là rất hiếm khi biết được tiến trình cần bao nhiêu thời gian nữa để kết thúc xử lý.

LeVanVan69 (I22B)

Tổng số bài gửi : 16
Join date : 18/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  LeVanVan69 (I22B) on 1/4/2014, 23:20




1/ 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.

2/ 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. 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.

LeVanVan69 (I22B)

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

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

Về Đầu Trang Go down

Trình điều phối (Schedulers)

Bài gửi  CaoBaDuc-25-HLT3 on 4/4/2014, 11:13

Trình điều phối (Schedulers): 3 loại:
-Điều phối chậm (Long-Term Scheduler):
Chậm vì trình điều phồi này làm việc lâu do nghĩ kỹ trước khi quyết định.Quyết định để chọn tiến trình từ Job Queue đưa sang Ready Queue.
VD: Chương trình ai là triệu phú, bộ phận đài truyền hình chọn 1 ng lên (bộ phận đài truyền hình là Long-Term Scheduler).
Tác dụng: Đảm bảo độ đa chương cần thiết.
Đảm bảo phối hợp cân đối tối ưu nhất 2 loại tiến trình : 1. Hướng CPU: dùng CPU rất nhiều,tính toán nhiều, ít I/O. 2.Hướng I/O (I/O - Bound): nhập xuất rất nhiều, tính toán ít.
Phối hợp tốt 2 hướng I/O & CPU thì công việc của hệ thống nhanh hơn rất nhiều.
- Điều phối nhanh (Short-Term Scheduler): nó phải suy nghĩ trong thời gian nhanh nhất.
– 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. 9 - 10% 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.
-Chuyển ngữ cảnh (Context Switch):
Là chức năng của Dispatcher khi cần chuyển CPU từ tiến trình P0 này sang tiến trình P1 khác:
– Ghi môi trường và trạng thái làm việc của P0 vào PCB0
– Nạp môi trường và trạng thái làm việc của tiến trình P1 từ PCB1
Thời gian chuyển ngữ cảnh khá lớn: Từ 1-1000 ms

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

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

Bài gửi  NguyenHuuSonLam(TH10A1) on 4/4/2014, 22:23

[ 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.

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

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

Bài gửi  NguyenHuuSonLam(TH10A1) on 4/4/2014, 22:25

LIÊN LẠC GIỮA CÁC TIẾN TRÌNH

I.1. Nhu cầu liên lạc giữa các tiến trình

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.

Hợp tác hoàn thành tác vụ: đôi khi để đạt được một sự xử lý nhanh chóng, người ta phân chia một tác vụ thành các công việc nhỏ có thể tiến hành song song. Thường thì các công việc nhỏ này cần hợp tác với nhau để cùng hoàn thành tác vụ ban đầu, ví dụ dữ liệu kết xuất của tiến trình này lại là dữ liệu nhập cho tiến trình khác …Trong các trường hợp đó, hệ điều hành cần cung cấp cơ chế để các tiến trình có thể trao đổi thông tin với nhau.

I.2. Các vấn đề nảy sinh trong việc liên lạc giữa các tiến trình

Do mỗi tiến trình sỡ hữu một không gian địa chỉ riêng biệt, nên các tiến trình không thể liên lạc trực tiếp dễ dàng mà phải nhờ vào các cơ chế do hệ điều hành cung cấp. Khi cung cấp cơ chế liên lạc cho các tiến trình, hệ điều hành thường phải tìm giải pháp cho các vấn đề chính yếu sau :

Liên kết tường minh hay tiềm ẩn (explicit naming/implicit naming) : tiến trình có cần phải biết tiến trình nào đang trao đổi hay chia sẻ thông tin với nó ? Mối liên kết được gọi là tường minh khi được thiết lập rõ ràng , trực tiếp giữa các tiến trình, và là tiềm ẩn khi các tiến trình liên lạc với nhau thông qua một qui ước ngầm nào đó.

Liên lạc theo chế độ đồng bộ hay không đồng bộ (blocking / non-blocking): khi một tiến trình trao đổi thông tin với một tiến trình khác, các tiến trình có cần phải đợi cho thao tác liên lạc hoàn tất rồi mới tiếp tục các xử lý khác ? Các tiến trình liên lạc theo cơ chế đồng bộ sẽ chờ nhau hoàn tất việc liên lạc, còn các tiến trình liên lạc theo cơ chế nonblocking thì không.

Liên lạc giữa các tiến trình trong hệ thống tập trung và hệ thống phân tán: cơ chế liên lạc giữa các tiến trình trong cùng một máy tính có sự khác biệt với việc liên lạc giữa các tiến trình giữa những máy tính khác nhau?

Hầu hết các hệ điều hành đưa ra nhiều cơ chế liên lạc khác nhau, mỗi cơ chế có những đặc tính riêng, và thích hợp trong một hoàn cảnh chuyên biệ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

Xử lý bất đồng bộ

Bài gửi  NguyenHuuSonLam(TH10A1) on 4/4/2014, 22:28

(bất đồng bộ) là một khái niệm có thể nói là ngược lại với Synchronous. Nó nói lên sự thiếu chặt chẻ, tính liên kết yếu, quản lý vô cùng khó khăn (đôi khi không biết đâu mà lần :p) tuy nhiên lại uyển chuyển và khả năng tùy biến cao. Trong một chuỗi các hàm của một quy trình có n tác vụ, nếu nó được bảo là bất đồng bộ thì có nghĩa là cho dù hàm B được gọi sau hàm A nhưng không ai đảm bảo được rằng hàm A sẽ phải kết thúc trước hàm B và hàm B bắt buộc phải chỉ được gọi chạy khi hàm A kết thúc.

Trong một xã hội đồng bộ, kẹt xe xãy ra, xe nọ nối đuôi xe kia trong đúng làn đường vì đơn giản mọi thành phần tham gia giao thông đều tuân thủ nguyên tắc trước sau (FIFO) và quy định đi đúng phần đường. Tuy nhiên trong một xã hội thiếu đồng bộ thì khi kẹt xe bạn có thể vác xe lên vai, hay phóng xe lên vỉa hè rồi tót lên trên, lao bừa vô hẻm, phân tích thiệt hơn chúng ta sẽ thấy sự ưu khuyết của hai quan điểm hành xữ Asynchronous và Synchronous có phần mang tính hên xui :p và tùy tình huống ứng dụng.

Thông thường người ta dễ hiểu Asynchronous gần với sự lộn xộn hay ngẫu nhiên (random), tôi không phủ định, tuy nhiên trong kỉ thuật, sự ba hồi ba phèng của Asynchronous thông thường trong khuôn khổ. Giống như khi bạn học trong một trường không cần đồng phục nhưng hãy thử bận bikini đi học xem Smile. Vì vậy hãy suy nghĩ về cặp khái niệm này trên cơ sở thuyết tương đối Smile.

Một lưu ý hết sức hay ho nữa được rút ra từ những gì đã nói ở trên là Asynchronous thường mang tính thực tế, tiệm cận với các xử lý thời gian thực, gần tính người, ít máy móc hơn Synchronous. Hãy suy nghĩ về lưu ý này với những ưu khuyến đã đề cập ở trên để liên hệ tới thực tiễn ứng dụng của bạn.

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

Các cơ chế liên lạc giữa các tiến trình

Bài gửi  DuongHaiLong_HLT3 on 5/4/2014, 22:40

I) Tín hiệu (Signal):
_ Tín hiệu là một cơ chế phần mềm tương tự như các ngắt cứng tác động đến các tiến trình. Một tín hiệu được sử dụng để thông báo cho tiến trình về một sự kiện nào đó xảy ra. Có nhiều tín hiệu được định nghĩa, mỗi một tín hiệu có một ý nghĩa tương ứng với một sự kiện đặc trưng.
_ Mỗi tiến trình sỡ hữu một bảng biễu diễn các tín hiệu khác nhau. Với mỗi tín hiệu sẽ có tương ứng một trình xử lý tín hiệu (signal handler) qui định các xử lý của tiến trình khi nhận được tín hiệu tương ứng.
_ Các tín hiệu được gởi đi bởi :
+ Phần cứng (ví dụ lỗi do các phép tính số học)
+ Hạt nhân hệ điều hành gởi đến một tiến trình ( ví dụ lưu ý tiến trình khi có một thiết bị nhập/xuất tự do).
+ Một tiến trình gởi đến một tiến trình khác ( ví dụ tiến trình cha yêu cầu một tiến trình con kết thúc)
+ Người dùng ( ví dụ nhấn phím Ctl-C để ngắt xử lý của tiến trình).
_ Khi một tiến trình nhận một tín hiệu, nó có thể xử sự theo một trong các cách sau :
+ Bỏ qua tín hiệu.
+ Xử lý tín hiệu theo kiểu mặc định.
+ Tiếp nhận tín hiệu và xử lý theo cách đặc biệt của tiến trình.

II) Pipe:
_ Một pipe là một kênh liên lạc trực tiếp giữa hai tiến trình : dữ liệu xuất của tiến trình này được chuyển đến làm dữ liệu nhập cho tiến trình kia dưới dạng một dòng các byte.
_ Khi một pipe được thiết lập giữa hai tiến trình, một trong chúng sẽ ghi dữ liệu vào pipe và tiến trình kia sẽ đọc dữ liệu từ pipe. Thứ tự dữ liệu truyền qua pipe được bảo toàn theo nguyên tắc FIFO. Một pipe có kích thước giới hạn (thường là 4096 ký tự).
_ Một tiến trình chỉ có thể sử dụng một pipe do nó tạo ra hay kế thừa từ tiến trình cha. Hệ điều hành cung cấp các lời gọi hệ thống read/write cho các tiến trình thực hiện thao tác đọc/ghi dữ liệu trong pipe. Hệ điều hành cũng chịu trách nhiệm đồng bộ hóa việc truy xuất pipe trong các tình huống:
+ Tiến trình đọc pipe sẽ bị khóa nếu pipe trống, nó sẽ phải đợi đến khi pipe có dữ liệu để truy xuất.
+ Tiến trình ghi pipe sẽ bị khóa nếu pipe đầy, nó sẽ phải đợi đến khi pipe có chỗ trống để chứa dữ liệu.
_ Cơ chế này cho phép truyền dữ liệu với cách thức không cấu trúc.
_ Ngoài ra, một giới hạn của hình thức liên lạc này là chỉ cho phép kết nối hai tiến trình có quan hệ cha-con, và trên cùng một máy tính.

III) Vùng nhớ chia sẻ:
_  Cách tiếp cận của cơ chế này là cho nhiều tiến trình cùng truy xuất đến một vùng nhớ chung gọi là vùng nhớ chia sẻ (shared memory).Không có bất kỳ hành vi truyền dữ liệu nào cần phải thực hiện ở đây, dữ liệu chỉ đơn giản được đặt vào một vùng nhớ mà nhiều tiến trình có thể cùng truy cập được.
_ Với phương thức này, các tiến trình chia sẻ một vùng nhớ vật lý thông qua trung gian không gian địa chỉ của chúng. Một vùng nhớ chia sẻ tồn tại độc lập với các tiến trình, và khi một tiến trình muốn truy xuất đến vùng nhớ này, tiến trình phải kết gắn vùng nhớ chung đó vào không gian địa chỉ riêng của từng tiến trình, và thao tác trên đó như một vùng nhớ riêng của mình.
_ Đây là phương pháp nhanh nhất để trao đổi dữ liệu giữa các tiến trình. Nhưng phương thức này cũng làm phát sinh các khó khăn trong việc bảo đảm sự toàn vẹn dữ liệu.
_ Một khuyết điểm của phương pháp liên lạc này là không thể áp dụng hiệu quả trong các hệ phân tán , để trao đổi thông tin giữa các máy tính khác nhau.

IV)  Trao đổi thông điệp (Message):
_ Hệ điều hành còn cung cấp một cơ chế liên lạc giữa các tiến trình không thông qua việc chia sẻ một tài nguyên chung,mà thông qua việc gởi thông điệp. Để hỗ trợ cơ chế liên lạc bằng thông điệp, hệ điều hành cung cấp các hàm IPC chuẩn (Interprocess communication), cơ bản là hai hàm:
+ Send(message)  : gởi một thông điệp
+ Receive(message)  : nhận một thông điệp.
_ Có nhiều cách thức để thực hiện sự liên kết giữa hai tiến trình và cài đặt các theo tác send /receive tương ứng : liên lạc trực tiếp hay gián tiếp, liên lạc đồng bộ hoặc không đồng bộ , kích thước thông điệp là cố định hay không.…
_  Đơn vị truyền thông tin trong cơ chế trao đổi thông điệp là một thông điệp, do đó các tiến trình có thể trao đổi dữ liệu ở dạng có cấu trúc.

V) Sockets:
_  Một socket là một thiết bị truyền thông hai chiều tương tự như tập tin, chúng ta có thể đọc hay ghi lên nó, tuy nhiên mỗi socket là một thành phần trong một mối nối nào đó giữa các máy trên mạng máy tính và các thao tác đọc/ghi chính là sự trao đổi dữ liệu giữa các ứng dụng trên nhiều máy khác nhau.
_ Sử dụng socket có thể mô phỏng hai phương thức liên lạc trong thực tế : liên lạc thư tín (socket đóng vai trò bưu cục) và liên lạc điện thoại (socket đóng vai trò tổng đài) .
_ Các thuộc tính của socket:
+ Domaine: định nghĩa dạng thức địa chỉ và các nghi thức sử dụng. Có nhiều domaines, ví dụ UNIX, INTERNET, XEROX_NS, ...
+ Type: định nghĩa các đặc điểm liên lạc:
  ++ Sự tin cậy

  ++ Sự bảo toàn thứ tự dữ liệu

  ++ Lặp lại dữ liệu

  ++ Chế độ nối kết

  ++ Bảo toàn giới hạn thông điệp

  ++ Khả năng gởi thông điệp khẩn
_ Để thực hiện liên lạc bằng socket, cần tiến hành các thao tác :
+ Tạo lập hay mở một socket.
+ Gắn kết một socket với một địa chỉ.
+ Liên lạc : có hai kiểu liên lạc tùy thuộc vào chế độ nối kết:
  ++ Liên lạc trong chế độ không liên kết : liên lạc theo hình thức hộp thư.
  ++ Liên lạc trong chế độ nối kết.

DuongHaiLong_HLT3

Tổng số bài gửi : 2
Join date : 02/04/2014

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

Về Đầu Trang Go down

Các trạng thái tiến trình

Bài gửi  LeThanhQuan (TH10A2) on 5/4/2014, 23:47

Admin đã viết:Thảo luận những vấn đề liên quan đến Bài 4.


Từ khi được đưa vào hệ thống cho đến khi kết thúc tiến trình tồn tại ở các trạng thái khác nhau. 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 đó. Tiến trình hai trạng thái: Một số ít hệ điều hành chỉ cho phép tiến trình tồn tại ở một trong hai trạng thái: Not Running và Running. Khi hệ điều hành tạo ra một tiến trình mới, hệ điều hành đưa tiến trình đó vào hệ thống ở trạng thái Not Running, tiến trình ở trạng thái này để chờ được chuyển sang trạng thái Running. Vì một lý do nào đó, tiến trình đang thực hiện bị ngắt thì bộ điều phối tiến trình của hệ điều hành sẽ thu hồi lại processor của tiến trình này và chọn một tiến trình ở trạng thái Not running để cấp processor cho nó và chuyển nó sang trạng thái Running. Tiến trình bị thu hồi processor sẽ được chuyển về lại trạng thái Not running.

Tại một thời điểm xác định chỉ có duy nhất một tiến trình ở trạng thái Runnig, nhưng có thể có nhiều tiến trình ở trạng thái Not running, các tiến trình ở trạng thái Not running được chứa trong một hàng đợi (Queue). Tiến trình đang ở trạng thái Running bị chuyển sang trạng thái Not running sẽ được đưa vào hàng đợi. Hình vẽ sau đây mô tả việc chuyển trạng thái tiến trình trong các hệ điều hành sử dụng 2 trạng thái tiến trình.

Tiến trình ba trạng thái: Đa số hệ điều hành đều cho phép tiến trình tồn tại ở một trong ba trạng thái, đó là: ready, running, blocked:
• Trạng thái Ready (sẵn sàng): Ngay sau khi khởi tạo tiến trình, đưa
tiến trình vào hệ thống và cấp phát đầy đủ tài nguyên (trừ processor) cho tiến trình,
hệ điều hành đưa tiến trình vào trạng thái ready. Hay nói cách khác, trạng thái
ready là trạng thái của một tiến trình trong hệ thống đang chờ được cấp processor
để bắt đầu thực hiện.
• Trạng thái Running (thực hiện): Là trạng thái mà tiến trình đang được sở hữu processor để hoạt động, hay nói cách khác là các chỉ thị của tiến trình đang được thực hiện/ xử lý bởi processor.
• Trạng thái Blocked (khoá): Là trạng thái mà tiến trình đang chờ để được cấp phát thêm tài nguyên, để một sự kiện nào đó xảy ra, hay một quá trình vào/ra kết thúc.

1. (Admit) Tiến trình được khởi tạo, được đưa vào hệ thống, được cấp phát đầy đủ tài nguyên chỉ thiếu processor.
2. (Dispatch) Tiến trình được cấp processor để bắt đầu thực hiện/ xử lý.
3. (Release) Tiến trình hoàn thành xử lý và kết thúc.
4. (Time_out) Tiến trình bị bộ điều phối tiến trình thu hồi processor, do hết thời gian được quyền sử dụng processor, để cấp phát cho tiến trình khác.
5. (Event wait) Tiến trình đang chờ một sự kiện nào đó xảy ra hay đang chờ một thao vào/ra kết thúc hay tài nguyên mà tiến trình yêu cầu chưa được hệ điều hành đáp ứng.
6. (Event Occurs) Sự kiện mà tiến trình chờ đã xảy ra, thao tác vào/ra mà tiến trình đợi đã kết thúc, hay tài nguyên mà tiến trình yêu cầu đã được hệ điều hành đáp ứng,
Bộ phận điều phối tiến trình thu hồi processor từ một tiến trình đang thực
hiện trong các trường hợp sau:
• Tiến trình đang thực hiện hết thời gian (time-out) được quyền sử dụng processor mà bộ phận điều phối dành cho nó.
• Có một tiến trình mới phát sinh và tiến trình mới này có độ ưu tiên cao hơn tiến trình hiện tại.
• Có một tiến trình mới phát sinh và tiến trình này mới cần một khoảng thời gian của processor nhỏ hơn nhiều so với khoảng thời gian còn lại mà tiến trình hiện tại cần processor.
Tại một thời điểm xác định trong hệ thống có thể có nhiều tiến trình đang ở trạng thái Ready hoặc Blocked nhưng chỉ có một tiến trình ở trạng thái Running. Các tiến trình ở trạng thái Ready và Blocked được chứa trong các hàng đợi (Queue) riêng.

Có nhiều lý do để một tiến trình đang ở trạng thái running chuyển sang trạng thái blocked, do đó đa số các hệ điều hành đều thiết kế một hệ thống hàng đợi gồm nhiều hàng đợi, mỗi hành đợi dùng để chứ những tiến trình đang đợi cùng một sự kiện nào đó.

LeThanhQuan (TH10A2)

Tổng số bài gửi : 6
Join date : 05/04/2014

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

Về Đầu Trang Go down

Sự giống, khác nhau của Luồng và Tiến trình!

Bài gửi  KhanhChan on 7/4/2014, 15:55

*Sự giống nhau:
- Luồng là tiến trình đặc biệt (luồng cũng là tiến trình nhưng là tiến trình nhẹ (Light Weigh Process)).
- Luồng nằm trong lòng tiến trình truyền thống.
- Đều có thông tin trạng thái.
- Đa luồng hay đa tiến trình có thể liên quan đến một chương trình.
- Chia sẻ tài nguyên cho nhau, tăng tốc tính toán, đảm bảo tính đơn thể.
- Do luồng cùng vận hành trong 1 vùng địa chỉ, vì vậy dễ dùng chung tài nguyên hơn đa tiến trình.
Ví dụ: Mình cần tiền làm gì đó gấp mượn người thân quen gần mình nhất thì dễ hơn mượn của người ngoài xa hơn.
- Do dùng chung tài nguyên với luồng cha nên việc tạo lập và chuyển đổi ngữ cảnh cũng nhanh hơn tiến trình.
Ví dụ: Việc ngăn phòng riêng ra trong nhà thì dễ hơn việc xây thêm hay mua thêm một nhà khác.

*Sự khác nhau:
- Lập trình đa luồng dễ hơn lập trình đa tiến trình.
- Tạo mới một tiến trình khó hơn tạo mới một luồng.
- Luồng không cần gởi, nhận thông điệp.
- Luồng chuyển đổi ngữ cảnh nhanh và ít chiếm tài nguyên hơn tiến trình.
- Luồng chia sẻ tài nguyên dùng chung dể hơn tiến trình.
- Cấp phát tài nguyên bộ nhớ cho tiến trình khá tốn kém.

KhanhChan
Khách viếng thăm


Về Đầu Trang Go down

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

Bài gửi  PhamAnhDung_HLT3 on 11/4/2014, 11:09

Vai trò của khối kiểm soát tiến trình:
- PCB là một cấu trúc dữ liệu được hệ điều hành duy trì cho mỗi tiến trình để chứa thông tin cần thiết về tiến trình
đó. PCB chứa “bản sao công việc tiến trình”.
- Nó lưu thông tin lại trạng thái của một tiến trình tại thời điểm đang xét. Trạng thái này bao gồm (các địa chỉ liên kết của tiến trình và dữ liệu, số hiệu tiến trình, bộ đếm lệch, nội dung các thanh ghi,giới hạn bộ nhớ của các tiến trình, danh sách file đang mở, các thông tin về thời gian thống kê tiến trình hiện tại)
Vd: Dùng chung 1 bảng, bạn thứ 2 lên bảng sửa bài thì phải xóa bài của bạn thứ 1 đã viết >> Phải viết vào vở để nội dung không bị mất khi người khác xóa.
Khối kiểm soát tiến trình (Process Control Block - PCB ) - Bảng thông tin về môi trường và trạng thái hoạt động của tiến trình:



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

PhamAnhDung_HLT3

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

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

Về Đầu Trang Go down

Ngoài VNVoice còn có những phần mềm nào trên thị trường?Nêu ưu và khuyết điểm?

Bài gửi  NguyenVietLong08(HLT3) on 12/4/2014, 12:44

Vspeech: phần mềm nhận dạng giọng nói tiếng Việt trên máy tính: do nhóm BK02 của Đại học Bách khoa TP.HCM chế tạo thành công vào cuối năm 2004.
Ưu điểm:
Ngoài việc diều khiển máy tính bằng tiếng Việt, phần mềm này cũng là công cụ nhận dạng và điều khiển máy tính bằng tiếng Anh rất tốt.
Một trong những độc đáo và tiện dụng nhất là VSpeech được tích hợp với Internet Explorer.
Nhược điểm:
Vspeech chưa đủ khả năng điều khiển hoàn toàn một máy tính nhưng ít ra đây cũng là một công cụ giải trí tuyệt hảo, tránh sự nhàm chán cho những người phải làm việc với máy tính thường xuyên. Qua thử nghiệm dường như VSpeech “xung khắc” với các chương trình English Study (4.0, 4.1) nên nó tự động báo lỗi và thoát ra khi kích hoạt English Study hoạt động.
VNSpeech phần mềm giúp máy tính nói tiếng Việt
Ưu điểm:
Ưu điểm của phương pháp là dễ triển khai, tiếng nói tạo ra chính là tiếng người .
Tổng hợp được tiếng Việt bằng các luật từ các thành phần đặc trưng của ngữ âm tiếng Việt, tự động đọc không hạn chế văn bản tiếng Việt.
Là một công cụ mới để nghiên cứu ngữ âm tiếng Việt - Phân tích bằng Tổng hợp. Vnspeech thực hiện phân tích và chuẩn hóa văn bản tiếng Việt, đọc khá rõ tất cả các âm tiết tiếng Việt, thể hiện hợp lý ngữ điệu khi đọc các loại câu khác nhau, có thể điều khiển không hạn chế tốc độ đọc, cao độ của giọng nói để thành các giọng nói khác nhau.
Kích thước toàn bộ của Vnspeech rất nhỏ, không cần file dữ liệu riêng, toàn bộ đều nằm trên file thực thi (chương trình minh hoạ chỉ 350KB), thuận tiện để tích hợp vào mọi loại ứng dụng trên các hệ điều hành, phần cứng khác nhau, hoặc các thiết bị có tài nguyên hạn chế (như thiết bị cầm tay, di động,...).
Vnspeech xử lý văn bản tiếng Việt đầu vào thuộc bảng mã TCVN 5712 và Unicode dựng sẵn, tạo dãy tín hiệu tiếng nói đầu ra mã hóa theo chuẩn PCM (16 bit, mono, có thể thay đổi tần số lấy mẫu tùy ý), có thể ghi lên đĩa thành các file theo định dạng WAV hoặc phát trực tiếp ra loa.
Nhược điểm:
Thêm giọng nói là công việc tốn kém và các tham số đặc trưng chỉ có thể điều khiển hạn chế, điều này dễ dẫn đến méo tiếng và sẽ rất không tự nhiên khi ghép thành đoạn dài ứng với cả câu.
DovisocoTextAloRec phần mềm đọc tiếng Việt, chuyển sang mp3...
Ưu điểm:
Đây là phần mềm được phát triển từ dovisocoTextAloud với độ tuỳ biến cao.

Tự động nhận diện mã tiếng Việt (Unicode, VNI, TCVN-3 ABC) để chọn giọng nói cho thích hợp.

Hỗ trợ từ điển riêng cho mỗi giọng đọc: ví dụ: Thanh Vi.txt là từ điển cho giọng Thanh Vi (mã VNI), Minh Du.txt là từ điển dùng cho giọng đọc Minh Du (mã Unicode),...

Khắc phục được lỗi ngắt dấu câu cho gói giọng nói SaoMai.

Chức năng Text to mp3 cho phép chuyển sang định dạng mp3 với nhiều tuỳ chọn.

Chức năng After reading cho phép tắt, ngủ máy tính sau khi vừa đọc xong văn bản trong bộ nhớ.

Tăng giảm tốc độ, âm lượng cho giọng đọc...

NguyenVietLong08(HLT3)

Tổng số bài gửi : 20
Join date : 30/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  NguyenHaAn(I22A) on 12/4/2014, 15:18

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ụ: 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ụ: 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ụ: 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ụ: 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...

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

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  vothihongngoc72 (HLT3) on 12/4/2014, 16:24

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


vothihongngoc72 (HLT3)

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

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

Về Đầu Trang Go down

Phân biệt 3 loại hàng chờ điều phối.

Bài gửi  vothihongngoc72 (HLT3) on 12/4/2014, 16:26

Hàng chờ công việc (Job Queue): Danh sách các tiến trình ở trạng thái New.

- Hàng chờ sẵn sàng (Ready Queue): Danh sách các tiến trình ở trạng thái Ready.

- Hàng chờ thiết bị (Device Queue): Danh sách các tiến trình chờ thiết bị Nhập/Xuất cụ thể.

vothihongngoc72 (HLT3)

Tổng số bài gửi : 28
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  NguyenTrungTruc(HLT3) on 13/4/2014, 08:56

Tiến trình là gì?
- Thuật ngữ: Process
- Là 1 chương trình đang được thực thi
- Được xem là đơn vị làm việc trong HDH
- Có 2 loại tiến trình: của người sử dụng và của hệ điều hành.
Tiến trình gồm:
- Đoạn mã lệnh (Code/Text)
- Đoạn ngăn xếp (Stack) và Heap
- Các hoạt động hiện tại được đếm qua con đếm IP và nội dung thanh ghi (registers) của bộ xử lý
- Tiến trình là thực thể chủ động.
- Chương trình là thực thể bị động

QUẢN LÝ TIẾN TRÌNH TRÊN LINUX

Tiến trình là một môi trường thực hiện, bao gồm một phân đoạn lệnh và một phân đoạn dữ liệu. Cần phân biệt với khái niệm chương trình chỉ gồm tập hợp lệnh.

Trên hệ điều hành Linux, tiến trình được nhận biết thông qua số hiệu của tiến trình, gọi là pid. Cũng như đối với user, nó có thể nằm trong nhóm. Vì thế để phân biệt ta nhận biết qua số hiệu nhóm gọi là pgrp. Một số hàm của C cho phép lấy được những thông số này:

int getpid() : trả về giá trị int là pid của tiến trình hiện tại

int getppid() : trả về giá trị int là pid của tiến trình cha của tiến trình hiện tại

int getpgrp() : trả về giá trị int là số hiệu của nhóm tiến trình

int setpgrp() : trả về giá trị int là số hiệu nhóm tiến trình mới tạo ra

Tạo một tiến trình - lệnh fork

int fork() tạo ra một tiến trình con. Giá trị trả lại là 0 cho tiến trình con và dấu hiệu pid cho tiến trình cha. Giá trị sẽ là -1 nếu không tạo được tiến trình mới. Theo nguyên tắc cơ bản của hệ thống, tiến trình con và cha sẽ có cùng đoạn mã. Đoạn dữ liệu của tiến trình mới là một bản sao chép chính xác đoạn dữ liệu của tiến trình cha. Tuy nhiên tiến trình con vẫn khác tiến trình cha ở pid, thời gian xử lý, ...

Dừng một tiến trình

Lệnh kill của Shell có thể dùng để chấm dứt hoạt động của một tiến trình. ví dụ

như khi muốn dừng tiến trình 234 ta dùng lệnh: kill 234

C cũng có lệnh kill như sau:

int kill(pid, sig);

int pid; là dấu hiệu nhận biết của một tiến trình.

int sig; hằng tín hiệu giao tiếp tiến trình.

Giao tiếp giữa các tiến trình

Việc giao tiếp giữa các tiến trình được thực hiện thông qua các tín hiệu chuẩn của hệ thống. Tín hiệu là một sự ngắt quãng logic được gửi đến các tiến trình bởi hệ thống để thông báo cho chúng về những sự việc không bình thường trong môi trường hoạt động của chúng (như lỗi bộ nhớ, lỗi vào ra). Nó cũng cho phép các tiến trình liên lạc với nhau. Một tín hiệu (trừ SIGKILL) có thể được xem xét theo ba cách khác nhau:

1. Tiến trình có thể được bỏ qua: Ví dụ chương trình có thể bỏ qua sự ngắt quãng của người sử dụng hệ thống (đó là sự bỏ qua khi một tiến trình đang được sử dụng ở phần nền.

2. Tiến trình có thể được thực hiện: Trong trường hợp này, khi nhận được 1 tín hiệu, việc thực hiện 1 tiến trình được chuyển về một quy trình do người sử dụng xác định trước, sau đó trở lại nơi nó bị ngắt.

3. Lỗi có thể được tiến trình trả về sau khi nhận được tín hiệu này.Dưới đây là một số tín hiệu thường gặp:

SIGHUP

Tín hiệu này được phát đến các tiến trình vào lúc cuối khi mà nó tự ngắt.

Nó cũng được phát đến mọi tiến trình có tiến trình chính tự ngắt.

SIGINT Tín hiệu này được phát đến các tiến trình khi ta ra lệnh ngắt.

SIGQUIT Tương tự như trên khi ta gõ vào ^D.

SIGILL

Lệnh không hợp lệ, tín hiệu được phát ra khi phát hiện 1 lệnh không đúng

ở cấp độ vật lý (ví dụ như 1 tiến trình thực hiện một lệnh mà máy tính

chông có lệnh này).

SIGTRAP

Tín hiệu được phát ra sau mỗi lệnh trong trường hợp tiến trình có sử dụng lệnh ptrace().

SIGIOT Bẫy được phát khi có các vấn đề về vật lý.

SIGEMT Bẫy của lệnh phát, được phát ra khi có lỗi vật lý trong khi thực hiện.

SIGFPE

Được phát ra khi có lỗi về tính toán như một số có dấu phẩy nối có định dạng không hợp lý. Gần như luôn chỉ ra lỗi khi lập trình.

SIGKILL Trang bị để kết thúc tiến trình. Không thể bỏ qua hoặc cắt tín hiệu này.

SIGBUS Được phát khi gặp lỗi trên bus.

SYSGEGV

Được phát ra khi gặp lỗi trên phân đoạn sự truy cập dữ liệu bên ngoài phân đoạn dữ liệu được cấp phát cho tiến trình.

SIGSYS Đối số không đúng cho hệ thống gọi.

SIGPIPE Viết trên một ống dẫn không mở để đọc.

SIGALRM

Phát ra khi đồng hồ của một tiến trình ngừng lại. Đồng hồ được hoạt động bằng lệnh alrm().

SIGTERM

Được phát ra khi một tiến trình kết thúc bình thường. Cũng có thể dùng để dừng 1 hệ thống để kết thúc tất cả các tiến trình hoạt động.



NguyenTrungTruc(HLT3)

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

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  HuynhQuangLuc52 (HLT3) on 13/4/2014, 10:21

Đ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), có 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) 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 ko cần sử dụng đến ô tô (I/O). 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.

HuynhQuangLuc52 (HLT3)

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

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

Về Đầu Trang Go down

Mô hình luân chuyển giữa 2 tiến trình :

Bài gửi  HuynhQuangLuc52 (HLT3) on 13/4/2014, 10:22

- Phân tích vai trò của khối kiểm soát tiến trình PCB :
+ PCB là một cấu trúc dữ liệu được hệ điều hành duy trì cho mỗi tiến trình dùng để chứa các thông tin cần thiết về tiến trình đó. PCB chứa "Bản sao công việc của tiến trình".
+ Nó lưu lại trạng thái của tiến trình tại thời điểm đang xét . Trạng thái này bao gồm (các địa chỉ liên kết của tiến trình & dữ liệu, số hiệu tiến trình, bộ đếm lệnh, nội dung các thanh ghi, giới hại bộ nhớ của tiến trình, danh sách các file đang mở, các thông tin về thời gian thống kê tiến trình hiện tại)

HuynhQuangLuc52 (HLT3)

Tổng số bài gửi : 14
Join date : 23/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  HuynhQuangLuc52 (HLT3) on 13/4/2014, 10:23

Trình điều phối (Schduler) có 3 loại trình điều phối :
A.Điều phối chậm (long - term schduler)
-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 (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 tiến trinh2.
1. Hướng CPU (CPU - Bound) ; 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 : (I/O) tính toán ít , nhiều I/O
VD: công ty có 1 chiếc xe ô to (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 cho toàn hệ thống.
B.điều phối nhanh (short - term schedule)
- 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 đề sát đị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.Đ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.
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).

HuynhQuangLuc52 (HLT3)

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

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

Về Đầu Trang Go down

So Sánh UDP và TCP

Bài gửi  HuynhQuangLuc52 (HLT3) on 13/4/2014, 10:23

UDP là gì ?

UDP (User Datagram Protocol) là một trong những giao thức cốt lõi của giao thức TCP/IP. Dùng UDP, chương trình trên mạng máy tính có thể gởi những dữ liệu ngắn được gọi là datagram tới máy khác. UDP không cung cấp sự tin cậy và thứ tự truyền nhận mà TCP làm; các gói dữ liệu có thể đến không đúng thứ tự hoặc bị mất mà không có thông báo. Tuy nhiên UDP nhanh và hiệu quả hơn đối với các mục tiêu như kích thước nhỏ và yêu cầu khắt khe về thời gian. Do bản chất không trạng thái của nó nên nó hữu dụng đối với việc trả lời các truy vấn nhỏ với số lượng lớn người yêu cầu.

TCP là gì ?
Giao thức TCP (Transmission Control Protocol - "Giao thức điều khiển truyền vận") là một trong các giao thức cốt lõi của bộ giao thức TCP/IP. Sử dụng TCP, các ứng dụng trên các máy chủ được nối mạng có thể tạo các "kết nối" với nhau, mà qua đó chúng có thể trao đổi dữ liệu hoặc các gói tin. Giao thức này đảm bảo chuyển giao dữ liệu tới nơi nhận một cách đáng tin cậy và đúng thứ tự. TCP còn phân biệt giữa dữ liệu của nhiều ứng dụng (chẳng hạn, dịch vụ Web và dịch vụ thư điện tử) đồng thời chạy trên cùng một máy chủ.

So sánh một cách đơn giản :
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ơ bả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
UDP:
- Dùng cho mạng LAN
- Cho phép mất dữ liệu
- Không đảm bảo.

HuynhQuangLuc52 (HLT3)

Tổng số bài gửi : 14
Join date : 23/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  NguyenVanNhieu74 (HLT3) on 19/4/2014, 19:59

PCB là một cấu trúc dữ liệu được hệ điều hành duy trì cho mỗi tiến trình dùng để chứa các thông tin cần thiết về tiến trình đó. PCB chứa "Bản sao công việc của tiến trình".
Nó lưu lại trạng thái của tiến trình tại thời điểm đang xét . Trạng thái này bao gồm (các địa chỉ liên kết của tiến trình & dữ liệu, số hiệu tiến trình, bộ đếm lệnh, nội dung các thanh ghi, giới hạn bộ nhớ của tiến trình, danh sách các file đang mở, các thông tin về thời gian thống kê tiến trình hiện tại).
Vd: Sinh Viên dùng chung 1 bảng, bạn thứ 2 lên bảng sửa bài thì phải xóa bài của bạn thứ 1 đã viết. Phải viết vào vở để nội dung không bị mất khi người khác lên xóa phần nội dung của mình

NguyenVanNhieu74 (HLT3)

Tổng số bài gửi : 20
Join date : 23/03/2014
Age : 27

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 3 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