4.7. Phân vùng cho ổ đĩa mới. Bước tiếp theo trong cách lắp song song 2 ổ cứng SSD và HDD là tiến hành phân vùng cho ổ đĩa. Để phân vùng, các bạn quay lại cửa sổ Computer Management rồi click chuột phải vào ổ đĩa mới đã cài đặt nhưng chưa phân vùng. Sau đó chọn New Simple
Parallel.Invoke chạy song song nhiều loại tác vụ (phương thức) Với các vòng lặp ở trên, thì các tác vụ định nghĩa trọng một Action, nhưng nếu muốn chạy song song nhiều loại Action (phương thức) một lúc thì dùng Paralell.Invoke. public static void PintInfo(string info) => Console.WriteLine
Cách Ghép 2 Video Chạy Song Song, Làm Video Phân Thân Trên Tiktok | Hồng Ngọc Tourguide-----Tặng Ngọc 1 ly tà tữa nếu video này có ích cho
Sync () khi sử dụng CuPy) Tôi đang chạy GPU-CPU song song một cách hiệu quả. Cảm ơn một lần nữa. Một quy trình chung với Numba, để làm cho gpu_ Chức năng và cpu_ Chức năng chạy song song sẽ giống như sau: """ GPU has buffer full to start processing Frame N-1 """ tmp_gpu = cp.asarray (tmp_cpu) gpu
Các process này có thể chạy song song với nhau. Về bản chất thì khái niệm song song được hiểu bởi con người, đối với máy tính tại 1 thời điểm CPU chỉ đáp ứng được 1 process.
Away In a Manger Deck the Hall Ding Dong! Merrily on High The First Noel God Rest Ye Merry, Gentlemen Good Christian Men Rejoice Good King Wenceslas Hark! the Herald Angels Sing Here We Come A-Wassailing The Holly and the Ivy I Saw Three Ships In the Bleak Midwinter It Came Upon a Midnight Clear Jingle Bells Jolly Old St. Nicholas Joy to the World.
0jU3q1. Trong một lần phỏng vấn mình có được hỏi về các khái niệm này, lúc đó do kiến thức mình hiểu có phần bị sai vì thế mình quyết định là tìm hiểu lại và viết lại một số vấn đề trong lập trình đa luồng và đa tiến trình trong Python1. Một số khái niệm cơ bảnTiến trình ProcessTiến trình đơn giản có thể hiểu là một chương trình đang được thực thi. Khi chương trình được đưa vào bộ nhớ nó thành tiến trình và được chia thành các 4 phần stack, heap,text,data. Các tiến trình chạy trong không gian riêng biệt lẫn nhauMỗi tiến trình trong hệ điều hành được biểu diễn bằng 1 cấu trúc dữ liệu gọi là PCB bao gồm tất cả các thông tin của tiến trìnhCác thông tin chứa trong PCBLuồng ThreadLuồng là một đơn vị thực thi trong một tiến trình. Một tiến trình có thể có một hay nhiều luồng. Các luồng không độc lập với nhau mà có thể chia sẻ phần tài nguyên và dữ liệu cho trong tiến trìnhĐồng bộ hóa SynchronizationVấn đề đồng bộ hóa được chia thành hai dạngĐồng bộ hóa tài nguyên Xác định việc truy cập vào tài nguyên dùng chung có an toàn bộ hóa hoạt động Đảm bảo việc thực thi các tác vụ chính xác khi phối hợp cùng nhau2. Lập trình đa luồng và đa tiến trình trong PythonPhân biệt đồng thời concurrency và song song parallelismLập trình đồng thời chỉ việc 2 hay nhiều tiến trình được xử lý xen kẽ thông qua cơ chế context switch trên 1 core CPULập trình song song tức là 2 hay nhiều tiến trình được xử lý song song với nhau trên nhiều core CPUIO và CPU boundCPU-bound chỉ việc chương trình sử dụng CPU phần lớn tính toán. Việc tăng tốc những chương trình dạng này tức là làm sao để có thể thực hiện nhiều phép tính toán hơn trong cùng 1 khoảng thời gianIO-bound chỉ việc thời gian thực hiện chương trình phần lớn là do thời gian đợi các tác vụ IO hoàn tất ví dụ đọc ghi từ ổ đĩa, bàn phím hay mạng. Khi đó CPU sẽ không được sử dụngCơ chế GIL trong PythonCơ chế GIL hay gọi là Global Intepreter Lock là một cơ chế trong python khóa toàn bộ trình thông dịch chỉ cho phép một luồng duy nhất được thực hiện. Do đó tại một thời điểm chỉ có một luồng được thực thi. Mỗi luồng muốn được thực thi thì GIL phải giải phóng luồng trước nên cơ chế này sẽ khiến các mô hình lập trình đa luồng không tăng hiệu suất mà có thể bị giảm hiệu Thử nghiệm đánh giá các mô hìnhChạy chương trình python dưới đây bao gồm 2 hàm là IO-bound và CPU-bound thực hiện tác vụ tương ứng với tên hàm1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 import time, os from threading import Thread, current_thread from multiprocessing import Process, current_process COUNT = 200000000 SLEEP = 10 def io_boundsec pid = threadName = current_thread.name processName = current_process.name printf"{pid} * {processName} * {threadName} \ -> Start sleeping..." printf"{pid} * {processName} * {threadName} \ -> Finished sleeping..." def cpu_boundn pid = threadName = current_thread.name processName = current_process.name printf"{pid} * {processName} * {threadName} \ -> Start counting..." while n>0 n -= 1 printf"{pid} * {processName} * {threadName} \ -> Finished counting..." if __name__=="__main__" start = YOUR CODE SNIPPET HERE end = print'Time taken in seconds -', end - start Thử nghiệm mô hình với các tác vụ IO-boundGọi 2 lần hàm io_bound1 2 io_boundSLEEP io_boundSLEEP Chương trình sẽ có thời gian chạy hơn 20s với 20s là sleep thực hiện tuần tự. Kết quả như dưới đây1 2 3 4 5 18795 * MainProcess * MainThread -> Start sleeping... 18795 * MainProcess * MainThread -> Finished sleeping... 18795 * MainProcess * MainThread -> Start sleeping... 18795 * MainProcess * MainThread -> Finished sleeping... Time taken in seconds - Đa luồngỞ đây mình sử dụng 2 luồng để tăng tốc việc xử lý. 2 luồng đều hoàn thành công việc trong 10s đồng thời và việc này giảm 50% thời gian thực thi chương trình1 2 3 4 5 6 7 8 9 10 11 12 t1 = Threadtarget = io_bound, args =SLEEP, t2 = Threadtarget = io_bound, args =SLEEP, Kết quả1 2 3 4 5 19327 * MainProcess * Thread-1 -> Start sleeping... 19327 * MainProcess * Thread-2 -> Start sleeping... 19327 * MainProcess * Thread-2 -> Finished sleeping... 19327 * MainProcess * Thread-1 -> Finished sleeping... Time taken in seconds - Đa tiến trìnhTrong trường hợp này mình sẽ tạo ra 2 tiến trình thực hiện song song hàm io_bound trên và kết quả cũng tương tự phần đa luồng1 2 3 4 5 6 7 8 9 10 11 p1 = Processtarget = io_bound, args =SLEEP, p2 = Processtarget = io_bound, args =SLEEP, 1 2 3 4 5 19967 * Process-1 * MainThread -> Start sleeping... 19968 * Process-2 * MainThread -> Start sleeping... 19967 * Process-1 * MainThread -> Finished sleeping... 19968 * Process-2 * MainThread -> Finished sleeping... Time taken in seconds - Thử nghiệm mô hình với các tác vụ CPU-boundTương tự với phần trên mình gọi 2 lần hàm cpu_bound1 2 cpu_boundCOUNT cpu_boundCOUNT Kết quả của việc thực hiện tuần tự1 2 3 4 5 20153 * MainProcess * MainThread -> Start counting... 20153 * MainProcess * MainThread -> Finished counting... 20153 * MainProcess * MainThread -> Start counting... 20153 * MainProcess * MainThread -> Finished counting... Time taken in seconds - Đa luồngMình sẽ thử thực hiện chương trình trên với hai luồng để kiểm tra xem đối với các công việc cpu-bound thì liệu việc đa luồng trong Python có được cải thiện hay không1 2 3 4 5 6 7 8 9 10 11 t1 = Threadtarget = cpu_bound, args =COUNT, t2 = Threadtarget = cpu_bound, args =COUNT, Kết quả cho thấy đối với các tác vụ CPU-bound thì việc lập trình đa luồng không cải thiện được tốc độ. Giải thích ở đây là do cơ chế GIL được trình bày ở trên chỉ cho phép trong một thời điểm chỉ có một luồng được chạy. Ở đây sau khi luồng 1 chạy thì GIL mới được giải phóng và luồng 2 mới được phép 2 3 4 5 20338 * MainProcess * Thread-1 -> Start counting... 20338 * MainProcess * Thread-2 -> Start counting... 20338 * MainProcess * Thread-2 -> Finished counting... 20338 * MainProcess * Thread-1 -> Finished counting... Time taken in seconds - Đa tiến trìnhĐối với trường hợp đa tiến trình mình cũng sẽ thử nghiệm tương tự1 2 3 4 5 6 7 8 9 10 11 12 13 p1 = Processtarget = cpu_bound, args =COUNT, p2 = Processtarget = cpu_bound, args =COUNT, end = Ở đây kết quả đã được cải thiện đáng kể, tốc độ thực thi giảm gần 50%. Tiến trình chính chia thành 2 tiến trình con chạy song song trên các core CPU. Mỗi tiến trình có một luồng chính riêng là MainThread1 2 3 4 5 20556 * Process-1 * MainThread -> Start counting... 20557 * Process-2 * MainThread -> Start counting... 20557 * Process-2 * MainThread -> Finished counting... 20556 * Process-1 * MainThread -> Finished counting... Time taken in seconds - 4. Kết luậnTrong Python thì việc sử dụng lập trình đa tiến trình sẽ giúp cải thiện tốc độ của chương trình đối với cả CPU-bound và IO-bound tuy nhiên cũng cần phải chú ý vì đa tiến trình tức là các tiến trình riêng biệt sử dụng thêm tài nguyên ram và với lập trình đa luồng do cơ chế GIL thì các tác vụ CPU-bound sẽ không cải thiện được vấn đề gì vì thực chất chỉ có 1 luồng được phép chạy và việc sử dụng có khi còn giảm hiệu quả. Tuy nhiên cũng có thể sử dụng trong trường hợp IO-bound, ở đây có thể lấy ví dụ đa luồng trong việc crawl web. Khi gửi request đến một trang thì thời gian IO luôn chiếm phần lớn, khi đó CPU nhàn rỗi có thể cho luồng khác sử dụng vì lúc này luồng phía trước không còn GIL nữa, luồng mới sẽ được sử dụng. Thực chất đây là lập trình đồng thời concurrencyTham khảoDifference between multithreading and multiprocessing in Python Beginers guide to concurrency and parallellism in Python Cơ chế GIL trong Python Introduction to infamous Python GIL Multithreading in Python
Nếu chỉ muốn vọc một chút thì có thể trải nghiệm bằng máy ảo virtualbox, cài vào máy ảo ubuntu rồi thử xem thế nào thôi; Với cấu hình 4G ram thì chạy máy ảo bình thường rồi không nhất thiết phải cài song song đâu, nhầm lẫn tí khi cài là mất hết dữ liệu đóWINDOWS 10 có thể dual boot ngon lành với Ubuntu nếu không cùng 1 ổ vật lý, không cần tắt fastboot. Thậm chí nếu cài WIN10 chung 1 ổ cứng với eOS còn ngon hơn - boot ngon lành khỏi cần tắt FAST BOOT và Secure Boot. Nhưng nay WINDOWS 10 ANN đã khác, boot UBUNTU sẽ không aumount RW được các phân vùng cùng ổ cứng với WIN10 nếu trước đó không restart WIN, nhưng mount Read only qua terminal vẫn được. Nhưng đó là do automount qua file /etc/fstab Ubuntu còn automount bằng app DISK thì automount RW ngon lành khi WIN10 vẫn chạy fastboot, và không cần start+ restart WIN10 trước khi boot Ubuntu nếu lần trước WIN10 shutdown. esata Tớ đang chạy trên cùng 1 ổ cứng vật lý SSD Intel 200GB đây bạn ơi, chạy phà phà. Laptop core i5, thường đời nầy nó chạy UEFI hơi răc rối chút, để đơn giản thì chuyển về MBR nếu không cần boot triple OS VUHEO Thực ra set automount bằng /etc/fstab cũng được như thường, nhưng phải đổi tham số mount từ ntfs-3g defaults 0 0 thành auto nosuid,nodev,nofail,x-gvfs-show 0 0 ! UUID=6820856E20854452 /media/pc/500S ntfs-3g defaults 0 0 => UUID=6820856E20854452 /media/pc/500S auto nosuid,nodev,nofail,x-gvfs-show 0 0 Còn eOS vẫn không được, chắc là do nó dùng nhân Ubuntu cũ hơn U Bạn nào có tham số nào tương thích thì giúp tôi với. Còn không chắc hy vọng bãn eOS tiếp theo với nhân mới hơn sẽ được?cài vậy cơ bản là đúng rồi nhưng có một số điểm có thể một số thay đổi như sau - nếu sau này bạn ko muốn cài thêm gì thì chỉ cần khoảng 10G ổ cứng, nếu cần cài đặt phần mềm nặng như là steam ... thì phải để phân vùng này cao hơn mà cài trên ổ ảo thì hiệu năng không bằng khi cài thẳng vì thế cái này không khuyến khích chỉ cài một số phần mềm nhỏ nhẹ như là để tinh chỉnh hệ thống, tóm lại là nhỏ nhẹ - trong phần setting/display chọn 128Mb -trong phần setting/system trong phần optical driver có hình đĩa bên tay phải chọn nó và chọn file iso đã tải về thế là khi bấm vào start là nó tự động boot vào trong file iso -còn lại tất cả đều ổnXin đính chính là tất cả những bạn ở trên lạc đề và nói quá nhiều ! Từ khi máy tính ra đời tới giờ mới thấy người ta cài nhiều hệ điều hành trên cùng một máy chứ chưa thấy ai "có thể chạy song song hai hệ điều hành" cả, nếu chạy song song được chắc ubuntu, windows chạy cùng lúc và được bật ở một màn hình, có dạng cửa sổ thích dùng cái nào thì chuyển qua lại giữa các cửa sổ là xong khỏi phải khởi động máy chi cho mệt Chạy song song nhiều hệ điều hành trên cùng một máy không hề hiếm gặp, đó là vấn đề mà máy ảo giải quyết, 1 máy tính có thể sử dụng bất kỳ phần mềm trên hdh nào. Bạn có thể sử dụng linux, cho máy thật và sử dụng windows trên máy ảo, gpu thật cho máy ảo để chơi gam, sử dụng max, cad các kiểu, chi cần 1 gpu cho máy thật, 1 cho máy ảo 1 card on, 1 card rời là đủ và 2 màn hình. Với cách này bạn có thể sử dụng song song n hdh, chỉ cần đủ số gpu, cpu, và ổ đĩa, màn hình. Và chỉ cần 1 bàn phím, 1 chuột để sử dụng. Do chạy song song nhiều hdh đòi hỏi khá cao nên khi có người nói đến dùng song song thường có ý nói cài song song trên cùng một máy. lazyboy76 Bạn cứ thích nói sai thành đúng thì tôi cũng không nói gì thêm ! Ai thấy máy nào chạy song song hệ điều hành đưa dẫn chứng xem? Còn chạy hệ điều hành trên máy ảo là chạy gián tiếp, chứ nói song song chỉ để loè con nít Nếu thực sự chạy song song 2 hdh và cả 2 đều sử dụng trực tiếp phần cứng, phần cứng được chia sẻ giữa 2 hdh thì chưa có, hdh cũng không được thiết kế để có thể sử dụng chung phần cứng. Nếu bạn muốn thao tác phần mềm A của hdh X và phần mềm B của hdh Y, tất cả trên cùng giao diện, mỗi phần mềm trên một cửa sổ, khởi động phần mềm từ cùng một menu thì hiện tại có một hdh làm được điều gần giống, đó là qubes os. Cách tiếp cận của họ là dùng máy ảo, và rất tiếc là chỉ hỗ trợ fedora, tuy nhiên hoàn toàn có thể hỗ trợ các hdh nguồn mở khác. Với cách này bạn có thể sử dụng bất kỳ phần mềm cho hệ điều hành nào, với nguồn đóng như windows hay mac thì sẽ được khuyến mại thêm full giao diện đồ họa, với hdh nguồn mở thì chỉ có duy nhất phần mềm đó. Mình thắc mắc bạn mong muốn sử dụng song song hdh làm gì, để sử dụng 2 hdh hay để sử dụng phần mềm trong đó, nếu là để có thể sử dụng phần mềm của nhiều hdh khác nhau thì đó là mục đích của máy ảo, còn nếu bạn muốn chạy 2 hdh để sử dụng song song 2 hdh thì khó có ai có thể đáp ứng được. Hiện tại cũng không nhiều phần mềm mà máy ảo không đáp ứng được. lazyboy76 Lạc đề nữa kìa em, anh có nói muốn sử dụng song song 2 hệ điều hành lúc nào?Có thể cài song song windows 10 và ubuntu trên cùng 1 đĩa cứng nha bạn. không có gì khó khăn bạn chia ổ hợp lý thì có thể dùng cùng lúc nhiều hệ điều hành, có grub rồi thì bao nhiêu chẳng muốn cài phần mềm SeaDas, nhưng phần mềm này chạy trên HĐH Linux, ko hoạt động trên window. mình đang xài window 8. rất cần cài phần mềm biết cách cái đặt ai biết chỉ dùm. thanksCó trang nào chuyên dùng thủ dâm ubuntu không các bạn?
Trong quá trình sử dụng máy tính, nhiều người thường có thói quen lắp thêm một ổ cứng cho máy tính để giúp máy tính hoạt động tốt hơn, đáp ứng tối đa cho nhu cầu công việc. Thậm chí, có những máy tính còn cho phép các bạn gắn 2, 3 hoặc là 4 ổ cứng mới. Việc lắp ổ cứng không hề quá khó khăn. Nếu biết cách các bạn hoàn toàn có thể tự mình làm được mà không cần phải tốn nhiều chi phí nhờ đến các kỹ thuật viên IT chuyên nghiệp. Tuy nhiên, các bạn cần lưu ý là chỉ các máy tính để bàn mới có thể lắp thêm ổ cứng còn máy tính xách tay hay netbook thì diện tích và cấu tạo máy không có phép các bạn làm điều này. Sau đây chúng tôi sẽ hướng dẫn các bạn 10 bước lắp song song 2 ổ cứng SSD và HDD đơn giản và dễ hiểu nhất nhé! ========================= 1. Tại sao nên nâng cấp ổ cứng SSD cho laptop? 2. Có nên lắp song song 2 ổ cứng SSD và HDD không? 3. Lợi ích khi lắp 2 ổ cứng đồng thời 4. Hướng dẫn cách lắp song song 2 ổ cứng SSD và HDD cho PC 1. Tại sao nên nâng cấp ổ cứng SSD cho laptop? Ở thời điểm hiện tại ổ cứng HDD đã không còn phù hợp để sử dụng cho một số dòng máy tính nữa rồi, bởi tốc độ truy xuất data của ổ này khá chậm. Chính vì vậy ổ cứng SSD xuất hiện và là lựa chọn tốt nhất. SSD có khả năng lưu trữ được lượng data lớn, cùng tốc độ truy xuất dữ liệu nhanh và an toàn. Nhờ phần ổ cứng này mà người dùng dễ dàng thực hiện các thao tác một cách trơn tru hơn. Các bạn hoàn toàn có thể an tâm rằng trên thị trường hiện nay đối với hầu hết các dòng máy như Asus, Dell, Acer, Sony, HP, Macbook,… đều có thể nâng cấp ổ cứng từ HDD lên SSD. Nên nâng cấp ổ cứng SSD thay vì vẫn sử dụng HDD SSD được ứng dụng công nghệ hiện đại và mới nhất hiện nay, nên giá thành sẽ cao hơn so với HDD. Bù lại người dùng sẽ hoàn toàn yên tâm về chất lượng sản phẩm này mang lại. Tốc độ Với SSD bạn chỉ mất khoảng vài giây để khởi động máy tính hay các chương trình khác. Còn với HDD bạn sẽ phải chờ đến 1 phút thậm chí là nhiều hơn nữa. Hiệu suất Vì sở hữu công nghệ hiện đại nên dĩ nhiên SSD chạy ổn định và khả năng chống sốc cũng tốt hơn nhiều so với HDD. Tốc độ đọc/ ghi cũng sẽ nhanh hơn khi máy chạy trên ổ HDD. Độ bền Sở hữu cấu tạo vật lý cố định nên SSD có độ bền cao hơn HDD HDD phải hoạt động liên tục trục quay và đĩa từ. Hình thức Vì được áp dụng kỹ thuật hiện đại nên SSD sở hữu vẻ ngoài chỉn chu và bắt mắt hơn HDD. Tiếng ồn Nhờ cơ chế hoạt động tự động nên SSD hoạt động khá mượt. Còn HDD sử dụng trục quay nên sẽ gây ồn hơn. 2. Có nên lắp song song 2 ổ cứng SSD và HDD không? Trên các dòng laptop thế hệ mới hiện nay đều được tích hợp chipset Z77, H77 hoặc B75. Vì vậy người dùng có thể dễ dàng sử dụng cùng lúc 2 ổ cứng nếu thông qua công nghệ Intel Smart Response. Còn đối với các dòng máy tính cũ trường hợp bạn muốn sử dụng thêm ổ cứng thì cần phải có sự hỗ trợ của khe cắm mSATA. Cần xem xét nhiều yếu tố trước khi lắp song song ổ cứng SSD và HDD Khi bạn muốn lắp song song 2 ổ cứng, điều đầu tiên là phải tiến hành kiểm tra xem máy của mình có khe ổ cứng hay không? Đặc biệt ổ cứng dạng mSATA không được phổ biến trên thị trường Việt Nam, chủ yếu được bán ở nước ngoài nên khá khó tìm kèm theo đó là mức giá của chúng cũng tương đối cao. Vì vậy, nếu bạn muốn lắp song song 2 ổ cứng SSD và HDD hãy xem xét thật kỹ lưỡng rồi hãy đưa ra quyết định có nên lắp vào máy tính không nhé! 3. Lợi ích khi lắp 2 ổ cứng đồng thời Việc sử dụng đồng thời 2 ổ cứng bao giờ cũng đem lại hiệu quả tốt hơn một. Bởi khi sử dụng song song 2 ổ bạn sẽ có được lợi thế về tốc độ ngoài ra còn có lợi thế về không gian lưu trữ trong quá trình sử dụng, cụ thể như sau Khi sử dụng ổ cứng SSD sẽ giúp máy tính tăng tốc độ khởi động Windows cũng như gia tăng tốc độ truyền tải dữ liệu tốt hơn. Có thể nói, việc lắp đồng thời 2 ổ cứng SSD và HDD cho máy tính hay laptop có thể mang lại sự hài lòng rất lớn cho người dùng. Bởi lúc này máy sẽ đạt được tốc độ cũng như công suất tối đa, đồng thời giúp mở rộng không gian lưu trữ dữ liệu. Lắp cả 2 ổ cứng SSD và HDD mang lại nhiều lợi ích cho máy tính của bạn Việc lắp cùng lúc 2 ổ cứng còn giúp người dùng tận dụng được tính năng RAID. Đây được xem là giải pháp bảo vệ dữ liệu an toàn trên ổ cứng nếu chẳng may 1 ổ cứng bị hỏng trong quá trình sử dụng. Dù giá thành của SSD thường được bán ra khá cao, nhưng sản phẩm mang lại rất nhiều lợi ích. Ngược lại ổ đĩa HDD có giá bán ra mềm hơn cùng với dung lượng lớn có thể thích hợp cho việc lưu trữ dữ liệu nhưng tốc độ chạy không cao. Chính vì điều này mà khi 2 ổ này kết hợp và bù trừ khuyết điểm cho nhau thì mang lại lợi ích vô cùng lớn cho máy tính của bạn. 4. Hướng dẫn cách lắp song song 2 ổ cứng SSD và HDD cho PC Tắt máy, rút nguồn và tháo vỏ máy tính Bước đầu tiên để gắn thêm ổ cứng cho PC chính là phải tắt máy, rút nguồn và tháo vỏ máy tính ra. Trong bước này các bạn cần lưu ý, nếu môi trường xung quanh máy là môi trường dễ bị tĩnh điện thì trước khi tiến hành bước này các bạn cần mua một dây tiếp đất rồi quấn quanh cổ tay của bạn. Thậm chí, ngay cả môi trường xung quanh không có nhiều tĩnh điện thì các bạn cũng nên lưu ý khi chạm vào vỏ máy xong hãy để tay xuống đất trước khi các bạn tiếp xúc với các linh kiện bên trong máy. Chuẩn bị ổ cứng tương thích và lắp đặt Để lắp thêm ổ cứng cho PC thì các bạn cần phải chọn ổ cứng tương thích với dòng PC mà mình đang sử dụng. Khi đã chọn đúng loại ổ cứng cần thiết thì các bạn ấn nó vào một vị trí trống ở giá lắp bên trong máy tính. Giá lắp có dạng khay trượt nên việc lắp đặt cũng không quá khó khăn. Ví dụ, ổ cứng máy tính bạn đang sử dụng đã được lắp sẵn trong máy chiếm một vị trí thì trước khi lắp ổ cứng mới các bạn hãy quan sát cách mà ổ cứng cũ được lắp. Sau đó thì gắn ổ cứng mới tương tự như ổ cứng cũ. Xem thêm Cách giải quyết win 10 ngốn ram Cắm cáp SATA Bước tiếp theo trong số 10 cách cắm 2 ổ cứng trên 1 máy là cắm cáp ư. Để cắm cáp các bạn cần tìm cáp được đánh dấu SATA trên bo mạch chủ. Sau đó thì cắm cáp SATA ổ cứng mới ngay bên cạnh. Lưu ý rằng đầu cắm chỉ phù hợp với một đầu nối và nằm phía bên phải. >>Xem ngay máy tính bàn giá rẻ, cấu hình mạnh tại TPHCM! Gắn dây cáp điện vào ổ cứng Trong máy tính, bạn tìm một dây cáp điện SATA trong giống như cáp dữ liệu SATA nhưng lớn hơn và được dẫn từ nguồn của máy tính rồi gắn vào ổ cứng. Lắp ổ cứng và vặn vào đúng vị trí Hãy kiểm tra máy tính của mình, nếu như thấy hai ổ cứng được lắp cùng một vị trí trên giá lắp thì thỉnh thoảng các bạn nên dùng tua-vit nới lỏng các ốc vít của ổ cứng hiện tại. Như vậy sẽ giúp ổ cứng mới có thể trượt vào đúng vị trí, đồng thời việc lắp dây cáp cũng trở nên dễ dàng hơn. Tiếp đó hãy lắp lại vỏ máy tính như ban đầu và cắm nguồn điện rồi bật máy tính lên. Như vậy là máy tính của bạn đã hoạt động với chiếc ổ cứng mới rồi. Cài đặt cho máy tính Để ổ cứng có thể hoạt động được các bạn cần cài đặt máy tính một chút nhé! Đầu tiên, hãy click chuột vào nút Start để góc trái cuối màn hình và chọn Computer -> Manage. Sau khi cửa sổ menu Manage mở ra các bạn chọn Disk Management ở phía bên trái khung cửa sổ Computer Management. Lúc này bạn sẽ thấy trên màn hình xuất hiện cửa sổ Initialize Disk. tại màn hình này sẽ liệt kê các ổ đĩa mới cài đặt của bạn và yêu cầu bạn cho phép khởi tạo nó. Nghĩ là bạn phải thực hiện các thao tác cho phép Windows bắt đầu đưa thông tin vào đó. Trong trường hợp các bạn không có thay đổi bất kỳ cài đặt nào thì chỉ cần nhấn OK để hệ thống bắt đầu quá trình. Sau khi kết thúc, mặc dù ổ đĩa mới đã được ghi nhận nhưng chưa được phân vùng. Điều này đồng nghĩa với việc nếu muốn ổ đĩa sử dụng được thì cần phải thêm drive letter và chấp nhận lưu trữ các tập tin. Phân vùng cho ổ đĩa mới Bước tiếp theo trong cách lắp song song 2 ổ cứng SSD và HDD là tiến hành phân vùng cho ổ đĩa. Để phân vùng, các bạn quay lại cửa sổ Computer Management rồi click chuột phải vào ổ đĩa mới đã cài đặt nhưng chưa phân vùng. Sau đó chọn New Simple Volume từ trình đơn được bật lên. Khi thấy có cửa sổ New Simple Volume Wizard thì có nghĩa là ổ đĩa cứng mới mà bạn thêm vào đã được phân vùng. Chọn Next ở tất cả màn hình trong wizard Ổ đĩa của bạn sẽ được Windows chỉ định chữ và định dạng. Các bạn có thể thấy tại ổ đĩa mới vừa cài đặt đã có chữ cái và được xuất hiện trong trình Computer. Kiểm tra bằng cách nhấp chuột vào mục Start góc dưới bên trái màn hình và chọn Computer. Trên đây là hướng dẫn cách lắp thêm ổ cứng cho PC. Quá đơn giản phải không nào? Hy vọng với những thông tin chúng tôi gửi đến bạn sẽ giúp bạn có thể tự mình thêm mới và cài đặt được ổ cứng cho chiếc PC của mình. Xem thêm nội dung liên quan
Mô hình lập trình đồng thời và lập trình song song Thời gian đầu, CPU chỉ có một nhân duy nhất, các ngôn ngữ khi đó sẽ theo mô hình lập trình tuần tự, điển hình là ngôn ngữ C. Ngày nay, với sự phát triển của công nghệ đa xử lý, để tận dụng tối đa sức mạnh của CPU, mô hình lập trình song song hay multi-threading thường thấy trên các ngôn ngữ lập trình ra đời. Ngôn ngữ Go cũng phát triển mô hình lập trình đồng thời rất hiệu quả với khái niệm Goroutines. Lập trình tuần tự Lập trình song song Ở phần này chúng ta sẽ đi tìm hiểu về mô hình lập trình đồng thời trong Golang như thế nào. Trước hết chúng ta cùng nhắc lại một số kiến thức liên quan đến xử lý đồng thời và xử lý song song parallelism. Xử lý đồng thời là khả năng phân chia và điều phối nhiều tác vụ khác nhau trong cùng một khoảng thời gian và tại một thời điểm chỉ có thể xử lý một tác vụ. Khái niệm này trái ngược với xử lý tuần tự sequential processing. Xử lý tuần tự là khả năng xử lý chỉ một tác vụ trong một khoảng thời gian, các tác vụ sẽ được thực thi theo thứ tự hết tác vụ này sẽ thực thi tiếp tác vụ khác. Concurrency is about dealing with lots of things at once-Rob Pike Ví dụ như chúng ta vừa muốn nghe nhạc vừa đọc Advanced Go book và trong lúc đọc bạn muốn tải bộ tài liệu về từ zalopay-oss. Nếu như theo mô hình xử lý tuần tự thì trìng duyệt web sẽ phải thực hiện việc nghe nhạc xong, rồi tới việc mở Advanced Go book online để đọc và sau khi đọc xong chúng ta mới có thể tải về được. Đối với mô hình xử lý đồng thời thì ta có thể làm 3 tác vụ trên trong cùng một khoảng thời gian. Chúng ta có thể vừa nghe nhạc vừa lướt đọc tài liệu mà vừa có thể tải bộ tài liệu này về máy. Vậy làm thế nào để có thể xử lý đồng thời như vậy ? Tất cả các chương trình đang chạy trong máy tính chúng ta chạy đều do hệ điều hành quản lý, với mỗi chương trình đang chạy như vậy được gọi là một process tiến trình và được cấp một process id PID để hệ điều hành dễ dàng quản lí. Các tác vụ của tiến trình sẽ được CPU core nhân CPU của máy tính xử lý. Vậy làm sao 1 máy tính có CPU 1 nhân có thể làm được việc xử lý đồng thời nhiều tác vụ của các tiến trình cùng lúc. Bởi vì bản chất tại một thời điểm nhân CPU chỉ có thể xử lý một tác vụ. Như câu nói của Rob Pike, ông đã sử dụng từ dealing phân chia xử lý để nói đến khái niệm concurrency. Thật như vậy, nhân CPU không bao giờ đợi xử lý xong một tác vụ rồi mới xử lý tiếp tác vụ khác, mà nhân CPU đã chia các tác vụ lớn thành các tác vụ nhỏ hơn và sắp xếp xen kẽ lẫn nhau. Nhân CPU xẽ tận dụng thời gian rảnh của tác vụ này để đi làm tác vụ khác, một lúc thì làm tác vụ nhỏ này, một lúc khác thì làm tác vụ nhỏ khác. Như vậy chúng ta sẽ cảm thấy máy tính xử lý nhiều việc cùng lúc tại cùng thời điểm. Nhưng bản chất bên dưới nhân CPU thì nó chỉ có thể thực thi một tác vụ nhỏ trong tác vụ lớn tại thời điểm đó. Chia nhỏ tác vụ và xử lý trong mô hình concurrency Mô hình xử lý tuần tự Xử lý song song là gì ? Xử lý song song là khả năng xử lý nhiều tác vụ khác nhau trong cùng một thời điểm, các tác vụ này hoàn toàn độc lập với nhau. Xử lý song song chỉ có thể thực hiện trên máy tính có số nhân lớn hơn 1. Thay vì một nhân CPU chúng ta chỉ có thể xử lý một tác vụ nhỏ tại một thời điểm thì khi số nhân CPU có nhiều hơn chúng ta có thể xử lý các tác vụ song song với nhau cùng lúc trên các nhân CPU. Parallelism is about doing lots of things at once-Rob Pike Cũng lấy ví dụ nghe nhạc, đọc tài liệu và tải tài liệu ở trên, thì trong mô hình xử lý song song sẽ như sau. Mô hình xử lý song song các tác vụ cùng một thời điểm Trong thực tế, trên mỗi nhân của CPU vẫn xảy ra quá trình xử lý đồng thời miễn là tại một thời điểm không có xảy ra việc xử lý cùng một tác vụ trên hai nhân CPU khác nhau, mô hình trên vẽ lại như sau Mô hình xử lý song song Chúng ta nên nắm được mô hình xử lý đồng thời khác với mô hình xử lý song song, tuy hai mô hình đều nêu lên việc xử lý nhiều tác vụ trong cùng một thời điểm. Trong một bài diễn thuyết của Rob Pike, ông cũng đã trình bày và phân biệt hai mô hình trên. Các bạn có thể xem buổi diễn thuyết ở đây. Xử lý đồng thời trong Golang Trước khi tìm hiểu về cách Golang xử lý đồng thời như thế nào, chúng ta cùng nhắc lại một số khái niệm về tiến trình process và luồng thread trong hệ điều hành. Process Tiến trình có thể hiểu đơn giản là một chương trình đang chạy trong máy tính. Khi chúng ta mở trình duyệt web để đọc Advanced Go book thì đây được xem là một tiến trình. Khi chúng ta viết 1 chương trình máy tính bằng ngôn ngữ lập trình như C, Java, hay Go, sau khi tiến hành biên dịch và chạy chương trình thì hệ điều hành sẽ cấp cho chương trình một không gian bộ nhớ nhất định, PID process ID,... Mỗi tiến trình có ít nhất một luồng chính main thread để chạy chương trình, nó như là xương sống của chương trình vậy. Khi luồng chính này ngừng hoạt động tương ứng với việc chương trình bị tắt. Thread Thread hay được gọi là tiểu trình nó là một luồng trong tiến trình đang chạy. Các luồng được chạy song song trong mỗi tiến trình và có thể truy cập đến vùng nhớ được cung cấp bởi tiến trình, các tài nguyên của hệ điều hành,... Mô hình xử lý song song Các thread trong process sẽ được cấp phát riêng một vùng nhớ stack để lưu các biến riêng của thread đó. Stack được cấp phát cố định khoảng 1MB-2MB. Ngoài ra các thread chia sẻ chung vùng nhớ heap của process. Khi process tạo quá nhiều thread sẽ dẫn đến tình trạng stack overflow. Khi các thread sử dụng chung vùng nhớ sẽ dễ gây ra hiện tượng race condition. Ở phần sau chúng ta sẽ tìm hiểu cách Golang xử lý như thế nào để tránh lỗi race condition. Ở các phần trên chúng ta đã cùng nhau thảo luận về mô hình xử lý đồng thời và xử lý song song các tác vụ, các tác vụ ở đây sẽ được thực hiện bởi các thread khác nhau. Vì vậy tương quan ở đây là khi chúng ta xử lý các tác vụ theo mô hình đồng thời hay song song cũng có nghĩa là có nhiều thread chạy đồng thời hay song song multi-threading. Số lượng thread chạy song song trong cùng một thời điểm sẽ bằng với số lượng nhân CPU mà máy tính chúng ta có. Vì vậy khi chúng ta lập trình mà tạo quá nhiều thread thì cũng không có giúp cho chương trình chúng ta chạy nhanh hơn, mà còn gây ra lỗi và làm chậm chương trình. Theo kinh nghiệm lập trình chúng ta chỉ nên tạo số thread bằng số nhân CPU * 2. Như mình đã trình bày ở phần trên thì khi xử lý đồng thời thì tại một thời điểm chỉ có một tác vụ được xử lý hay một thread được chạy trên một nhân CPU. Khi nhân CPU chuyển qua xử lý tác vụ khác cũng có nghĩa là thread khác được chạy. Thao tác đó được gọi là context switch. Các bạn có thể xem chi tiết ở đây. Goroutines và system threads Goroutines là một đơn vị concurrency của ngôn ngữ Go. Hay nói cách khác Golang sử dụng goroutine để xử lý đồng thời nhiều tác vụ. Việc khởi tạo goroutines sẽ ít tốn chi phí hơn khởi tạo thread so với các ngôn ngữ khác. Cách khởi tạo goroutine chỉ đơn giản thông qua từ khóa go. Về góc nhìn hiện thực, goroutines và thread không giống nhau. Đầu tiên, system thread sẽ có một kích thước vùng nhớ stack cố định thông thường vào khoảng 2MB. Vùng nhớ stack chủ yếu được dùng để lưu trữ những tham số, biến cục bộ và địa chỉ trả về khi chúng ta gọi hàm. Kích thước cố định của stack sẽ dẫn đến hai vấn đề Stack overflow với những chương trình gọi hàm đệ quy sâu. Lãng phí vùng nhớ đối với chương trình đơn giản. Giải pháp cho vấn đề này chính là cấp phát linh hoạt vùng nhớ stack Một Goroutines sẽ được bắt đầu bằng một vùng nhớ nhỏ khoảng 2KB hoặc 4KB. Khi gọi đệ quy sâu không gian stack hiện tại là không đủ Goroutines sẽ tự động tăng không gian stack kích thước tối đa của stack có thể được đạt tới 1GB. Bởi vì chi phí của việc khởi tạo là nhỏ, chúng ta có thể dễ dàng giải phóng hàng ngàn goroutines. Với ngôn ngữ lập trình khác như Java thì các thread được quản lý bởi hệ điều hành, có nghĩa là chương trình chúng ta đang xử lý đồng thời bị phụ thuộc vào hệ điều hành. Trong Golang sử dụng Go runtime có riêng cơ chế định thời cho Goroutines, nó dùng một số kỹ thuật để ghép M Goroutines trên N thread của hệ điều hành. Cơ chế định thời Goroutines tương tự với cơ chế định thời của hệ điều hành nhưng chỉ ở mức chương trình. Biến quy định số lượng thread hiện thời chạy trên các Goroutines. Chúng ta cùng xem qua bảng so sánh giữa Gorountines và Thread được tham khảo ở đây Mô hình xử lý song song Ví dụ Goroutine Ví dụ 1 func main { // sử dụng từ khoá go để tạo goroutine go chào goroutine" chào main goroutine " } Chương trình trên có lúc in ra cả hai câu không đúng như thứ tự trên, có lúc sẽ chỉ in được mỗi câu "Xin chào main goroutin". Chúng ta đã biết khi hàm main chạy xong thì chương trình sẽ dừng. Hàm main cũng là một goroutine và chạy đồng thời với hàm Nên có trường hợp hàm main chạy xong và dừng trước khi hàm được chạy. Chúng ta có thể làm như sau để có thể in ra cả hai câu func main { // sử dụng từ khoá go để tạo goroutine go from another goroutine" from main goroutine" // chờ 1 giây để có thể chạy được goroutine //của hàm trước khi hàm main kết thúc } Sau khi chương trình chạy xong các goroutine sẽ bị huỷ. Ví dụ 2 Chúng ta có thể sử dụng goroutine bằng cách sau. func MyPrintlnid int, delay { go func { chào, tôi là goroutine ", id } } func main { for i = 0; i < 100; i++ { MyPrintlni, 1* } * trình kết thúc" } Ở phần tiếp theo chúng ta sẽ đi tới những ví dụ phức tạp hơn như cách xử lý race-condition trong Golang, sử dụng channel để chặn các goroutine,... Liên kết Phần tiếp theo Mô hình thực thi đồng thời Phần trước Functions, Methods và Interfaces Mục lục
chạy song song 2 cpu