Thảo luận Bài 4

Trang 6 trong tổng số 9 trang Previous  1, 2, 3, 4, 5, 6, 7, 8, 9  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  HoangThanhThien(I22B) on 20/3/2013, 00:43

nguyenhoanglam_I22B đã 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:- Đề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.

Cho mình hỏi một câu nha: Job Queue vs Ready Queue cái nào có nhiều thời gian xử lý hơn nhỉ ???

HoangThanhThien(I22B)

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

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

Về Đầu Trang Go down

Cùng giải quyết câu hỏi của bạn

Bài gửi  luquoctuan(I22A) on 20/3/2013, 10:15

PhanPhamDanPhuong(I22B) đã viết:
DangQuangBinh(I22B) đã viết:Hôm qua,thầy có nói về vấn đề tại sao không lấy hết các tiến trình từ trạng thái new sang trạng thái ready,em chưa rõ lắm thầy giải thích lại giúp em với.....

Như Thầy đã nói thì ở New cũng có hàng đợi như ở Ready và Waiting. Như vậy khi các tiến trình vừa được tạo (tức là đang ở New) cũng sẽ xếp hàng tuần tự. Ready: ở đây tiến trình chờ để được ấn định CPU. Vậy theo mình nghĩ tiến trình lấy từ new sang ready cũng phải đi theo tuần tự của hàng đợi và bản thân tiến trình đã sẵn sàng để chờ đợi CPU cấp phát để được xử lý.
Mình hiểu như thế, không biết còn sai sót gì ko? mong Thầy và các bạn giải thích và làm rõ thêm. Laughing

Bạn giải thích vậy cũng hợp lí rồi đó mình cũng đồng tình.
Lúc tiến trình new được hình thành thì tiến trình nào hình thành trước thì vào hàng đợi ready trước .Nếu hàng đợi full thì tiến trình new phải đợi để được vào hàng đợi ready. Cũng như xếp hàng ấy mà nếu hàng full người thì mình phải đợi khi có chổ mình mới được vào xếp. Very Happy

luquoctuan(I22A)

Tổng số bài gửi : 11
Join date : 09/03/2013
Age : 24
Đến từ : tra vinh

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

Về Đầu Trang Go down

Mình sẽ làm rõ hơn vấn đề để các bạn hiểu rõ vấn đề này hơn ve Buffer. IN=(In +1)%buffer_size.

Bài gửi  BuiHuuDang(I22B) on 20/3/2013, 10:29

<p>LeAnhToan48(I22B) đã viết:

TruongMinhTriet(I22B) đã viết:

xuanlinh đã viết:

TruongMinhTriet(I22B) đã viết:Thầy và các bạn cho mình hỏi tại sao code:
Tiến trình Sản Xuất giá trị của in = (in + 1) % BUFFER_SIZE mà không phải là in = in + 1
Tiến trình Tiêu Thụ giá trị của out = (out + 1) % BUFFER_SIZE mà không phải là out = out + 1
Cảm ơn thầy và các bạn đã giải đáp.



Vì nếu in=in+1 hay out=out+1 như thế sẽ lớn hơn kích thước BUFFER_SIZE. Như vậy là vượt quá phạm vi nhớ. Nên cần phải viết là in = (in + 1) % BUFFER_SIZE để lúc in hay out chạy đến ô nhớ cuối cùng thì quay trở lại vị trí đầu tiên là 0

Admin
Lần này, nhiều bạn giỏi hơn các khoá trước đấy !



Cảm ơn về lời giải thích của bạn nhưng theo mình sau khi tăng "in" hay "out" lên 1 thì mình có thể kiểm tra giá trị của "in" hoặc "out" có lớn hơn BUFFER_SIZE hay ko sau đó mình chạy lại lặp củng đc mà, có nhất thiết phải in = (in + 1) % BUFFER_SIZE or out = (out + 1) % BUFFER_SIZE ????</P>


Mình sẽ làm rõ hơn vấn đề để các bạn hiểu rõ vấn đề này hơn.

Để tiết kiệm bộ nhớ nên khi thiết kế buffer người ta thường giới hạn bộ nhớ để tiết kiệm tối đa.
Nên họ sử dụng quay vòng buffer để tiết kiệm bộ nhớ.
-khi hàm in=(in+1)%buffer_size và hàm out=(out+1)%buffer_size
Giã sữ ta cấp cho buffer_size= 10,khi đó giá trị chạy trong bộ nhớ sẽ là từ 0->9.
B1:Đầu tiên ta cấp giá trị đầu tiên S1 vào buffer




B2:Cấp giá trị s2 vào



B3:Cuối cùng là s9.khi đó buffer đầy






B4:Để sữ dụng lại bộ nhớ nên ta phải quay vòng lại IN = (in+1)%buffer_size =(10+1)%10= 1 vị trí



Còn nếu Cất dữ liệu theo hàm IN=(IN+1) tới một lúc nào đó buffer sẽ đầy và không sữ dụng lại buffer.

Admin
Chịu khó thể hiện nhiều trạng thái khác nhau theo thời gian của Buffer như trên là rất Đúng và Thiết thực !

BuiHuuDang(I22B)

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

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

Về Đầu Trang Go down

Chế độ xử lý của tiến trình

Bài gửi  LeThiKimNgan67(I11C) on 20/3/2013, 13:43

Để đảm bảo hệ thống hoạt động đúng đắn, hệ điều hành cần phải được bảo vệ khỏi sự xâm phạm của các tiến trình. Bản thân các tiến trình và dữ liệu cũng cần được bảo vệ để tránh các ảnh hưởng sai lạc lẫn nhau. Một cách tiếp cận để giải quyết vấn đề là phân biệt hai chế độ xử lý cho các tiến trình : chế độ không đặc quyền và chế độ đặc quyền nhờ vào sự trợ giúp của cơ chế phần cứng. Tập lệnh của CPU được phân chia thành các lệnh đặc quyền và lệnh không đặc quyền. Cơ chế phần cứng chỉ cho phép các lệnh đặc quyền được thực hiện trong chế độ đặc quyền. Thông thường chỉ có hệ điều hành hoạt động trong chế độ đặc quyền, các tiến trình của người dùng hoạt động trong chế độ không đặc quyền, không thực hiện được các lệnh đặc quyền có nguy cơ ảnh hưởng đến hệ thống. Như vậy hệ điều hành được bảo vệ. Khi một tiến trình người dùng gọi đến một lời gọi hệ thống, tiến trình của hệ điều hành xử lý lời gọi này sẽ hoạt động trong chế độ đặc quyền, sau khi hoàn tất thì trả quyền điều khiển về cho tiến trình người dùng trong chế độ không đặc quyền.

Hình vẽ hai chế độ xử lý

LeThiKimNgan67(I11C)

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

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 (KN tiến trình ,KN trạng thái tiến trình ,sơ đồ chuyển trạng thái của tiến trình ,khối kiểm soát tiến trình PCB ).

Bài gửi  QuangMinhTuan(I22B) on 20/3/2013, 14:29

Như bài giảng, tiến trình là chương trình đang thực hiện dưới sự quản lí của HĐH. Như khi ta bấm tổ hợp phím Ctrl+Alt+Delete, vào Task Manager, trên thẻ Processes, ta sẽ thấy các tiến trình đang chạy. hầu hết là các file.exe.
Trong đó, có rất nhiều tiến trình, có thể phân làm 2 loại là tiến trình người dùng và tiến trình hệ thống. Tiến trình người dùng có thể do người dùng kích hoạt 1 chương trình; hoặc do chương trình nào đó được tự động kích thông hoạt qua cấu hình trước của người dùng hay của HĐH mà sinh ra. Nên bản thân chương trình thực chất không hoạt động được. Tiến trình hệ thống thì được sinh ra từ hệ thống thông qua hệ điều hành ví dụ như : Tiến trình chờ của hệ thống - System Idlle Process: khi phát hiện tiến trình A đang kích hoạt thì tiến trình này có nhiệm vụ cấp phát CPU xử lí A theo cách cần bao nhiêu sẽ cấp bao nhiêu. Và khi tiến trình A hoàn tất hoặc ở chế độ chờ. Tiến trình này có nhiệm vụ thu lại CPU đã cấp phát . Càng nhiều tiến trình cần CPU, tiến trình cà chia nhỏ để phân phối cho các nơi cần dẫn đến hệ thống sẽ chậm đi.

Như ta thấy Hệ Điều Hành là 1 chương trình có nhiều tiến trình như quản lí ổ đĩa, soạn thảo văn bản, màn hình, con chuột,…. Như chương trình quét virus khi khởi động sẽ sinh ra vô số các chương trình con hoạt động, như tiến trình bảo vệ cục bộ (Real-time system protection), quét ngay khi gắn 1 số thiết bị lưu trữ ngoại vi (plug and scan)… Và các tiến trình này thường chạy ngầm song song với hệ điều hành, đến khi thỏa điều kiện sẽ được kích hoạt. Để hoạt động các chương trình cần bộ nhớ do HĐH cấp phát và cần CPU xử lí, như nói ở trên, còn có thể cần các thiết bị ngoại vi để xuất ra kết quả như loa, màn hình , máy in.

Trạng thái tiến trình có nhiều trạng thái được hệ thống quản lí như sau : Tiến trình được lập ra có trạng thái mới (new), sau đó tiến trình được HĐH gán trạng thái sẳn sàng (ready) vồ hàng đợi (ready queue), để thực thi (running), quán trình running có thể cần tín hiệu từ i/o hay từ các tiến trình khác mà tiến trình phải qua trạng thái chờ (waiting) vào hàng đợi ở đây (waiting queue), đến khi thỏa điều kiện sẽ qua lại trạng thái sẵn sàng (ready) trở về hàng đợi ready. Để cuối cùng thực thi và cho ra kết quả (terminated). Trong thực tế, có nhiều tiến trình cùng được lập ra nên HĐH phải xếp chúng vào hàng đợi (join queue) với độ ưu tiên được mặc định.

sơ đồ trạng thái tiến trình.

Khối kiểm soát tiến trình PCB viết tắt từ Process Control Block_Bảng thông tin điều khiển tiến trình.

gồm
_Pointer: con trỏ đến các PCBs khác.
_Process State: trạng thái tiến trình hiện tại
_Process Number: số hiệu tiến trình
_Program Counter:bộ đếm lệnh
_Registers: nội dung các thanh ghi cpu
_Memory limits: thông tin giới hạn bộ nhớ
_List of open files: Danh sánh các file liên quan đang mở
_Còn 1 số thông tin khác : thời hạn, thời gian chạy, thời gian sử dụng CPU
Vậy PCB là 1 kho chứa các thông tin liên quan đến tiến trình đặc biệt có thay đổi về trạng thái trong quá trình từ lúc tạo mới đến khi kết thúc.

QuangMinhTuan(I22B)

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

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

Về Đầu Trang Go down

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

Bài gửi  LeThiKimNgan67(I11C) on 20/3/2013, 15:50

Trạng thái của tiến trình tại mỗi thời điểm được xác định bợi hoạt động hiện thời của nó
. New : Tiến trình được tạo lập sẵn
. Ready : tiến trình đã sẵn sang, đang chờ cấp CPU
.Running : tiến trình đantg được xử lý
.Waiting : tiến trình tạm dừng vì thiếu tài nguyên hay chờ 1 sự kiện nào đó
.Halt : tiến trình hoàn tất


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

LeThiKimNgan67(I11C)

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

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

Về Đầu Trang Go down

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

Bài gửi  BuiTrongHung41(I11C) on 20/3/2013, 16:33

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.

BuiTrongHung41(I11C)

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

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

Về Đầu Trang Go down

Phân loại hốc liên lạc trong hệ thống Client-Server.

Bài gửi  BuiTrongHung41(I11C) on 20/3/2013, 16:37

§ Có kết nối - Connection-Oriented (TCP - Transmission Control Protocol): Thiết lập sẵn mối liên kết giữa 2 máy trước khi truyền.

§ Không kết nối - Connectionless (UDP - User Datagram Protocol): Không phải thiết lập sẵn mối liên kết trước khi truyền, do đó dễ dàng liên lạc với nhiều máy một lúc, nhưng không đảm bảo bằng TCP.

BuiTrongHung41(I11C)

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

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

Về Đầu Trang Go down

Tạo lập tiến trình trong Unix/Linux

Bài gửi  LeThiKimNgan67(I11C) on 20/3/2013, 20:22

Trong quá trình xử lý, một tiến trình có thể tạo lập nhiều tiến trình mới bằng cách sử dụng một lời gọi hệ thống tương ứng. Tiến trình gọi lời gọi hệ thống để tạo tiến trình mới sẽ được gọi là tiến trình cha, tiến trình được tạo gọi là tiến trình con. Mỗi tiến trình con đến lượt nó lại có thể tạo các tiến trình mới…quá trình này tiếp tục sẽ tạo ra một cây tiến trình.

Một cây tiến trình trong hệ thống UNIX

Các công việc hệ điều hành cần thực hiện khi tạo lập tiến trình bao gồm :

định danh cho tiến trình mới phát sinh

đưa tiến trình vào danh sách quản lý của hệ thống

xác định độ ưu tiên cho tiến trình

tạo PCB cho tiến trình

cấp phát các tài nguyên ban đầu cho tiến trình

Khi một tiến trình tạo lập một tiến trình con, tiến trình con có thể sẽ được hệ điều hành trực tiếp cấp phát tài nguyên hoặc được tiến trình cha cho thừa hưởng một số tài nguyên ban đầu.

Khi một tiến trình tạo tiến trình mới, tiến trình ban đầu có thể xử lý theo một trong hai khả năng sau :

Tiến trình cha tiếp tục xử lý đồng hành với tiến trình con.

Tiến trình cha chờ đến khi một tiến trình con nào đó, hoặc tất cả các tiến trình con kết thúc xử lý.

Các hệ điều hành khác nhau có thể chọn lựa các cài đặt khác nhau để thực hiện thao tác tạo lập một tiến trình.

LeThiKimNgan67(I11C)

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

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

Về Đầu Trang Go down

Lập trình C tạo 1 quá trình con riêng lẻ

Bài gửi  BuiTrongHung41(I11C) on 20/3/2013, 20:49

#include
main(int argc, char* argv[])
{
int pid;
/*fork another process*/
pid = fork();
if(pid<0) /*lỗi xảy ra*/
fprintf(stderr, “Fork Failed”);
exit(-1);
}
else if (pid==0)
{
/*tiến trình con*/
execlp(“/bin/ls”,”ls”,NULL);
}
Else
{
/*tiến trình cha*/
/*chờ cho đến khi tiến trình con hoàn tất
wait(NULL);
printf(“Child Complete”
exit(0);
}
}

BuiTrongHung41(I11C)

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

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

Về Đầu Trang Go down

Chuyển ngữ cảnh là gì?

Bài gửi  BuiTrongHung41(I11C) on 20/3/2013, 21:01

Chuyển CPU tới một quá trình khác yêu cầu lưu trạng thái của quá trình cũ và
nạp trạng thái được lưu cho quá trình mới. Tác vụ này được xem như chuyển ngữ
cảnh (context switch). Ngữ cảnh của quá trình được hiện diện trong PCB của quá
trình; Nó chứa giá trị các thanh ghi, trạng thái quá trình và thông tin quản
lý bộ nhớ. Khi chuyển ngữ cảnh ngữ cảnh xảy ra, nhân lưu ngữ cảnh của quá trình cũ
trong PCB của nó và nạp ngữ cảnh được lưu của quá trình mới được định thời để
chạy. Thời gian chuyển ngữ cảnh là chi phí thuần vì hệ thống không thực hiện công
việc có ích trong khi chuyển. Tốc độ của nó khác từ máy này tới máy khác phụ thuộc
vào tốc độ bộ nhớ, số lượng thanh ghi phải được chép và sự tồn tại của các chỉ thị đặc
biệt (như chỉ thị để nạp và lưu tất cả thanh ghi). Điển hình dãy tốc độ từ 1 tới 1000
mili giây.
Những lần chuyển đổi ngữ cảnh phụ thuộc nhiều vào hỗ trợ phần cứng.
Ví dụ: vài bộ xử lý (như Sun UltraSPARC) cung cấp nhiều tập thanh ghi.
Một chuyển ngữ cảnh đơn giản chứa chuyển đổi con trỏ tới tập thanh ghi hiện hành. Dĩ nhiên, nếu quá
trình hoạt động vượt quá tập thanh ghi thì hệ thống sắp xếp lại dữ liệu thanh ghi tới và
từ bộ nhớ. Cũng vì thế mà hệ điều hành phức tạp hơn và nhiều công việc được làm
hơn trong khi chuyển ngữ cảnh. Kỹ thuật quản lý bộ nhớ nâng cao có thể yêu cầu dữ
liệu bổ sung để được chuyển với mỗi ngữ cảnh.
Ví dụ: không gian địa chỉ của quá trình hiện hành phải được lưu khi không gian của tác vụ kế tiếp được chuẩn bị dùng. Không gian địa chỉ được lưu như thế nào và lượng công việc được yêu cầu để lưu nó phụ thuộc vào phương pháp quản lý bộ nhớ của hệ điều hành.
Chuyển ngữ cảnh có thể dẫn đến thắt cổ chai năng lực thực hiện vì thế các lập trình viên đang sử dụng các cấu trúc mới để tránh nó bất cứ khi nào có thể.

BuiTrongHung41(I11C)

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

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

Về Đầu Trang Go down

Liên lạc trực tiếp và gián tiếp

Bài gửi  NguyenMinhTam(I22B) on 21/3/2013, 08:20

Liên lạc trực tiếp
  • Theo địa chỉ đối xứng :1 liên kết thiết lập tự động và chỉ giữa 2 tiến trình,2 bên tiến trình phải biết chính xác thông tin của nhau thì mới liên kết được

  • Theo địa chỉ phi đối xứng : 1 tiến trình này có thể gửi được cho nhiều tiến trình khác

Liên lạc gián tiếp
Qua mailbox và port. Có 2 loại mailbox
  • Hộp thư tiến trình : nằm trong vùng địa chỉ của tiến trình nào đó
    vd : hộp thư đặt trước nhà mỗi người ,1 địa chỉ duy nhất để dc ng đưa thư gui vào
  • Hộp thư hdh : nằm trong vùng địa chỉ của hdh ,là hộp thư of hệ thống
    vd: đó là hộp thư ở trường học (khi bạn học nội trú) và hộp thư ở bưu điện

NguyenMinhTam(I22B)

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

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

Về Đầu Trang Go down

TRÌNH BÀI MÔ HÌNH CHUYỂN TRẠNG THÁI CỦA TIẾN TRÌNH

Bài gửi  NguyenVanLanh (I22A) on 21/3/2013, 08:58




-Tiến trình được khởi tạo, được đưa vào hàng đợi ở trạng thái New, sau thời gian của quá trình điều phối chậm của hệ điều hành để chọn tiến trình.
-Sau khi được chon từ hệ điều hành Process 1 chuyển sang hàng đợi Ready ở trạng thái Ready. Khi đó Process 1 chỉ đợi cấp CPU và running.
-Tiến trình Process 2 sẽ bắt đầu sau khoảng thời gian running, lúc đó hệ điều hành sẽ ghi lại những tất cả thông tin của Process 1 vào PCB 1 và chuyển Process 1 sang hàng đợi Waiting và chuyển đến trạng thái Ready. Lúc này Process sẽ được cấp CPU và running.
-Sau một khoảng thời gian running, Process 2 sẽ chuyển sang hàng đợi Waiting và chuyển sang trạng thái Ready. khi đó hệ điều hàng sẽ ghi lại thông tin vào PCB2. Sau đó hệ điều hàng lấy thông tin của PCB1 và Process 1 tiếp tục running. Quá trình này cũng sẽ thực hiện cho Process 2 cho đến khi 2 tiến trình kết thúc.

NguyenVanLanh (I22A)

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

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

Về Đầu Trang Go down

Lý do cộng tác giữa các tiến trình (Cooperation Reasons)

Bài gửi  NguyenTienDat (I22A) on 21/3/2013, 09:43

Những lý dọ cộng tác (Cooperation Reasons):
- 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.
- Tăng tốc tính toán (Computation Speedup): 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ể (Modularity):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 (Convenience): 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ề, Biên dịch chương trình...
Ví dụ: trong học nhóm, mỗi thành viên tập trung tìm hiểu về một phần và sau đó trao đổi thông tin cho nhau

NguyenTienDat (I22A)

Tổng số bài gửi : 19
Join date : 10/03/2013
Age : 25

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

Về Đầu Trang Go down

Phân biệt 2 loại tiến trình Hướng CPU (CPU-Bound) và HƯớng I/O (I/O-Bound)

Bài gửi  NguyenTienDat (I22A) on 21/3/2013, 10:04

- 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
Ví dụ:
- Hướng CPU: scan virus, scan registry....
(những công việc đòi hỏi CPU phải tính toán nhiều, sử dụng nhiều bộ nhớ (RAM))
- Hướng I/O: download 1 fille trên mạng phải chờ đến khi kết thúc
Lưu ý:
-Nếu tiến trình toàn hướng CPU thì không tốt do lúc đó CPU hoạt động nhiều và bị nóng
- Nếu toàn hướng I/O thì CPU không hoạt đông -> không khai thác hiệu quả của CPU
=>Phải kết hợp cả 2 tiến trình này để tối ưu hoạt động (hỗn hợp như thế nào là do hệ điều hành quyết định)

NguyenTienDat (I22A)

Tổng số bài gửi : 19
Join date : 10/03/2013
Age : 25

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

Về Đầu Trang Go down

So sánh giao thức TCP với UDP

Bài gửi  NguyenTanDat(I22B) on 21/3/2013, 11:55

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 (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):
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

NguyenTanDat(I22B)

Tổng số bài gửi : 12
Join date : 09/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  truongtph.i11c on 21/3/2013, 18:11

luquoctuan(I22A) đã viết:
PhanPhamDanPhuong(I22B) đã viết:
DangQuangBinh(I22B) đã viết:Hôm qua,thầy có nói về vấn đề tại sao không lấy hết các tiến trình từ trạng thái new sang trạng thái ready,em chưa rõ lắm thầy giải thích lại giúp em với.....

Như Thầy đã nói thì ở New cũng có hàng đợi như ở Ready và Waiting. Như vậy khi các tiến trình vừa được tạo (tức là đang ở New) cũng sẽ xếp hàng tuần tự. Ready: ở đây tiến trình chờ để được ấn định CPU. Vậy theo mình nghĩ tiến trình lấy từ new sang ready cũng phải đi theo tuần tự của hàng đợi và bản thân tiến trình đã sẵn sàng để chờ đợi CPU cấp phát để được xử lý.
Mình hiểu như thế, không biết còn sai sót gì ko? mong Thầy và các bạn giải thích và làm rõ thêm. Laughing

Bạn giải thích vậy cũng hợp lí rồi đó mình cũng đồng tình.
Lúc tiến trình new được hình thành thì tiến trình nào hình thành trước thì vào hàng đợi ready trước .Nếu hàng đợi full thì tiến trình new phải đợi để được vào hàng đợi ready. Cũng như xếp hàng ấy mà nếu hàng full người thì mình phải đợi khi có chổ mình mới được vào xếp. Very Happy

Thanks, bạn...

truongtph.i11c

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

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

Về Đầu Trang Go down

Những trang web đọc văn bản (text-to-speech)

Bài gửi  truongtph.i11c on 21/3/2013, 18:25

Mọi người có thể vào đây để tham khảo những trang web chuyển văn bản trực tuyến thành giọng nói
Like a Star @ heaven IVONA (www.ivona.com): Trang web hỗ trợ chức năng text-to-speech theo tôi là tốt và dễ dùng nhất hiện nay. Điểm mạnh của trang này là có thể thay đổi nhiều giọng đọc khác nhau. Chỉ riêng tiếng Anh thôi, trang này cung cấp các giọng đọc theo kiểu Mỹ (American English) và giọng Anh (British English), vừa bổ sung giọng xứ Wales (Welsh English)- bản beta, giọng nam hoặc giọng nữ. Ngoài ra, trang này cũng hỗ trợ các ngôn ngữ khác như tiếng Pháp, tiếng Đức, tiếng Ba-lan, Rumani và mới nhất là tiếng Tây Ban Nha giọng Mỹ (American Spanish). Ưu điểm thứ hai là trang web này không phải là “máy đọc”, mà vẫn có nhấn giọng, ngừng nghỉ (tùy theo dấu câu), và đặc biệt là ngữ điệu (intonation) rất tốt. Ngược lại, nhược điểm của trang này là tốc độ load khá… chậm. Tùy vào số lượng từ mà bạn muốn đọc, hoặc tùy vào chất lượng đường truyền internet mà tốc độ load khi bạn PLAY sẽ khác nhau. Một điểm yếu khác của IVONA là số lượng từ bị hạn chế hơn so với các trang web khác cùng chủ đề, chỉ có 250 ký tự (character) cho phép.
Like a Star @ heaven iSpeech (www.ispeech.org): Trang web này có những đặc điểm hoàn toàn ngược lại với IVONA. Ưu điểm: gọn nhẹ, tốc độ load nhanh; nhưng nhược điểm lại là: chỉ có một giọng đọc duy nhất. Điểm chung với IVONA ở iSpeech chính là giọng đọc chuẩn mà trang web cung cấp, với ngữ điệu rất tự nhiên và chuẩn xác. Ngoài ra, iSpeech hỗ trợ nhiều giọng đọc khác nhau, và có thể tùy chỉnh được tốc độ đọc. Cách sử dụng: Ở trang chủ, bạn chọn mục DEMO ngay trên đầu trang để nhập đoạn văn bản cần đọc. Không thấy giới hạn số lượng ký tự. Tôi thử test bằng một đường link như sau: http://www.ispeech.org/ mà vẫn đọc luôn cả từng dấu “/” (slash) và “.” (dot). Ngoài ra, bạn cũng có thể upload một file văn bản và iSpeech sẽ đọc giúp bạn, thậm chí xuất ra file MP3 để phục vụ công việc của bạn. Tuy nhiên, bạn sẽ phải đăng ký làm thành viên với khoản phí hàng năm.
Like a Star @ heaven vozMe (www.vozme.com): Tốc độ load của trang này khá nhanh, ngang ngửa với iSpeech. Nhưng giọng đọc không được tự nhiên, kiểu giống với LacViet MTD hoặc Acrobat Reader (có chức năng text-to-speech miễn phí), nghĩa là ráp cách đọc từng từ riêng biệt thành một câu hoàn chỉnh. Hỗ trợ 2 giọng đọc duy nhất: nam và nữ. Neutral Có thể xuất dưới dạng file MP3.
Like a Star @ heaven YAKiToMe (www.yakitome.com): Tôi chưa thử qua trang web này, lý do là vì phải đăng ký thành viên (dù là MIỄN PHÍ) mới có thể sử dụng được. Theo như quảng cáo trên trang của họ, YAKI hỗ trợ upload các file văn bản (doc, pdf, txt) thậm chí đọc từ RSS Feed, đồng thời có thể xuất thành fille MP3.
Like a Star @ heaven Zamzar (www.zamzar.com): Nổi tiếng về chức năng chuyển đổi tập tin (convert file). Đối với tính năng đọc văn bản, người dùng chỉ việc upload file văn bản, hoặc nhập vào đường link của trang web, sau đó chuyển đổi thành định dạng fil MP3, MP4, RM hoặc các định dạng khác. Dung lượng cho phép của file văn bản có thể lên đến 100MB, nhưng phải nhập email để nhận được link để tải về.
Like a Star @ heaven Spoken Text (www.spokentext.net): Giọng đọc vẫn không được tự nhiên như IVONA hay iSpeech, mặt khác lại có kèm theo… quảng cáo trước và sau đoạn văn bản người dùng cần đọc. Giới hạn số lượng ký tự là… 100.[u]

truongtph.i11c

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

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

Về Đầu Trang Go down

VD VỀ GỬI THÔNG DIỆP CHỞ VÀ KHÔNG CHỜ TRONG LIÊN LẠC GIỮA CÁC TIẾN TRÌNH

Bài gửi  NguyenVanLanh (I22A) on 21/3/2013, 22:23



Gửi thông điệp có chờ:
Sauk hi P send message Q, M thì lúc đó ở trạng thai ngủ, cho đến khi Q báo là nhận được thì P thực hiện dong lệnh pt x=y+z.
Gửi thông điệp không chờ:
Khi P Post Message Q, M và thực hiện pt x=y+z luôn không cần biết là Q có nhận được hay không.

NguyenVanLanh (I22A)

Tổng số bài gửi : 21
Join date : 08/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  NguyenHoangKimVu (I11C) on 21/3/2013, 22:48

NguyenVanLanh (I22A) đã viết:
Gửi thông điệp có chờ:
Sauk hi P send message Q, M thì lúc đó ở trạng thai ngủ, cho đến khi Q báo là nhận được thì P thực hiện dong lệnh pt x=y+z.
Gửi thông điệp không chờ:
Khi P Post Message Q, M và thực hiện pt x=y+z luôn không cần biết là Q có nhận được hay không.
Gửi thông điệp có chờ : Một nhóm bạn cùng nhau đi đá bóng, vì không đủ người nên buộc phải rủ thêm bạn A (gửi thông điệp cho bạn A) và nhóm bạn đó phải đợi bạn A đồng ý thì mới đủ người (thực hiện việc tiếp theo) đi đá bóng.
Gửi thông điệp không chờ : Cũng một nhóm bạn đó đi đá bóng, lần này đã đủ người, nhưng cũng muốn rủ bạn A đi chung cho vui. Lần này không cần chờ bạn A trả lời đồng ý hay không thì cũng có thể đi đá bóng luôn.

NguyenHoangKimVu (I11C)

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

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

Về Đầu Trang Go down

So sánh Job Queue và Ready Queue. Cho VD minh hoạ

Bài gửi  dangthihoangly(I12A) on 21/3/2013, 23:37

- Job Queue là hàng công việc chứa các tiến trình được vận hành
- Read queue là hàng chờ sẵn sàng, chứa ccs 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:
- Job Queue:
+ Dùng thuật giải điều phối chậm (Long - Term Scheduler) để đưa các tiến trình từ Job Queue vào Ready Queue.
+ Có nhiều thời gian xử lý hơn Ready Queue
- Ready Queue:
+ Dùng thuật giải điều phối nhanh (Short term scheduler ) chọn các tiến trình trọng Ready Queue để cấp CPU
+ Có ít thời gian xử lý so với Job Queue.
+ 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 vì đảm bảo được độ cân bằng tải (Load - Balancing) cần thiết.
VD: Thầy giáo gọi tên 5 bạn trong danh sách sơ tuyển (khoảng 20 bạn) lên làm bài tập. Sau đó, trong 20 bạn này, thầy sẽ chọn ra 5 bạn (Job Queue) đưa vào Ready Queue (danh sách làm bài tập). Sau đó, mỗi thời điểm thầy chỉ lấy 1 bạn trong số 5 bạn đó. Và trò chơi "ai là triệu phú" cũng sử dụng nguyên lý này.


dangthihoangly(I12A)

Tổng số bài gửi : 64
Join date : 10/03/2012
Age : 26
Đến từ : Quang ngai

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

Về Đầu Trang Go down

mục tiêu điều phối tiến trình

Bài gửi  dangthihoangly(I12A) on 21/3/2013, 23:48

Bộ điều phối không cung cấp cơ chế, mà đưa ra các quyết định. Các hệ điều hành xây dựng nhiều chiến lược khác nhau để thực hiện việc điều phối, nhưng tựu chung cần đạt được các mục tiêu sau :

a) Sự công bằng ( Fairness) :

Các tiến trình chia sẻ CPU một cách công bằng, không có tiến trình nào phải chờ đợi vô hạn để được cấp phát CPU

b) Tính hiệu qủa (Efficiency) :

Hệ thống phải tận dụng được CPU 100% thời gian.

c) Thời gian đáp ứng hợp lý (Response time) :

Cực tiểu hoá thời gian hồi đáp cho các tương tác của người sử dụng

d) Thời gian lưu lại trong hệ thống ( Turnaround Time) :

Cực tiểu hóa thời gian hoàn tất các tác vụ xử lý theo lô.

e) Thông lượng tối đa (Throughput ) :

Cực đại hóa số công việc được xử lý trong một đơn vị thời gian.

Tuy nhiên thường không thể thỏa mãn tất cả các mục tiêu kể trên vì bản thân chúng có sự mâu thuẫn với nhau mà chỉ có thể dung hòa chúng ở mức độ nào đó.

dangthihoangly(I12A)

Tổng số bài gửi : 64
Join date : 10/03/2012
Age : 26
Đến từ : Quang ngai

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

Về Đầu Trang Go down

Hướng I/O và Hướng CPU

Bài gửi  dangthihoangly(I12A) on 21/3/2013, 23:49

Hướng CPU: scan virus, scan registry, defragment hardisk....
( đại khái là những công việc đòi hỏi CPU phải tính toán nhiều, sử dụng nhiều bộ nhớ ( RAM ), và khi nó làm việc thì ta ít chú ý đến nó - vì nó " im hơi lặng tiếng" quá mà
Hướng I/O:Nghe nhạc, xem phim, chơi game....

dangthihoangly(I12A)

Tổng số bài gửi : 64
Join date : 10/03/2012
Age : 26
Đến từ : Quang ngai

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

Về Đầu Trang Go down

Các Hàm API Dùng Trong Hướng Dẫn Lập Trình C#

Bài gửi  dangthihoangly(I12A) on 21/3/2013, 23:51

API: Một giao diện lập trình ứng dụng (tiếng anh Application Programming Interface hay API) là một giao diện mà một hệ thống máy tính hay ứng dụng cung cấp để cho phép các yêu cầu dịch vụ có thể được tạo ra từ các chương trình máy tính khác, và/hoặc cho phép dữ liệu có thể được trao đổi qua lại giữa chúng. Chẳng hạn, một chương trình máy tính có thể (và thường là phải) dùng các hàm API của hệ điều hành để xin cấp phát bộ nhớ và truy xuất tập tin. Nhiều loại hệ thống và ứng dụng hiện thực API, như các hệ thống đồ họa, cơ sở dữ liệu, mạng, dịch vụ web, và ngay cả một số trò chơi máy tính. Đây là phần mềm hệ thống cung cấp đầy đủ các chức năng và các tài nguyên mà các lập trình viên có thể rút ra từ đó để tạo nên các tính năng giao tiếp người- máy như: các trình đơn kéo xuống, tên lệnh, hộp hội thoại, lệnh bàn phím và các cửa sổ. Một trình ứng dụng có thể sử dụng nó để yêu cầu và thi hành các dịch vụ cấp thấp do hệ điều hành của máy tính thực hiện. Hệ giao tiếp lập trình ứng dụng giúp ích rất nhiều cho người sử dụng vì nó cho phép tiết kiệm được nhiều thời gian tìm hiểu các chương trình mới, do đó khích lệ mọi người dùng nhiều ứng dụng hơn.

Để khai báo API trong C#, chúng ta sử dụng cú pháp sau:

using System.Runtime.InteropServices;
....
[DllImport(DLL_FileName) ]
[public|private] static extern Return_Type Function_Name([type parameter,... ]);
Chúng ta bắt đầu với một hàm API đơn giản là hàm MessageBox trong C#. Mở một form C# mới, thêm vào đó một button. Kế tiếp chúng ta thêm vào không gian tên (namespace):

1.using System.Runtime.InteropServices;

Sau đó khai báo thêm dòng

1.[DllImport('User32.dll')]
2.public static extern int MessageBox(int a, string b, string c, int type);

Ở đây, thuộc tính DllImport được sử dụng để gọi hàm từ thư viện User32.dll, User32.dll là tên thư viện cần gọi, MessageBox là tên hàm trả về kiểu Int.
Thêm vào mã nguồn cho sự kiện Click của button

1.protected void button1_Click(object sender, System.EventArgs e)
2.{
3. MessageBox(0,'API Message Box','API Demo', 0);
4.}

Biên dịch và thực hiện project này, sau khi nhấn chuột trên button bạn sẽ thấy một hộp thoại được sử dụng hàm API. Sau đó bạn thay đổi tham số thứ 4 trong hàm MessageBox, bạn sẽ thấy sự khác biệt như thế nào.
Sử dụng các API có cấu trúc, hoặc cấu trúc lồng trong cấu trúc sẽ phức tạp hơn. Nhưng một khi bạn đã hiểu được cách thực hiện của các hàm API thì toàn bộ thế giới API sẽ nằm trong tay bạn.

dangthihoangly(I12A)

Tổng số bài gửi : 64
Join date : 10/03/2012
Age : 26
Đến từ : Quang ngai

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  dangthihoangly(I12A) on 21/3/2013, 23:51

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

dangthihoangly(I12A)

Tổng số bài gửi : 64
Join date : 10/03/2012
Age : 26
Đến từ : Quang ngai

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 Today at 14:50


Sponsored content


Về Đầu Trang Go down

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