BỘ GIÁO DỤC VÀ ĐÀO TẠOTRƯỜNG ĐẠI HỌC PHENIKAA HÀ NỘI, năm 2024.
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC PHENIKAA
HÀ NỘI, năm 2024
Trang 3Mở đầu
K t khi máy tính đa nhi m ra đ i, kh năng ch y đ ng th i ể ừ ệ ờ ả ạ ồ ờnhi u ng d ng trên cùng m t h th ng là đi u không còn xa l Tuy ề ứ ụ ộ ệ ố ề ạnhiên, vi c t n d ng t i đa s c m nh x lý đa lõi c a các b x lý hi n ệ ậ ụ ố ứ ạ ử ủ ộ ử ệđ i đòi h i ph i có c ch l p trình đa lu ng hi u qu M t trong nh ng ạ ỏ ả ơ ế ậ ồ ệ ả ộ ữkhái ni m then ch t c a l p trình đa lu ng đó là lu ng (thread) Lu ng ệ ố ủ ậ ồ ồ ồcho phép chia nh m t chỏ ộ ương trình thành nhi u đề ường th c thi đ c ự ộl p, mang l i kh năng x lý song song, tăng t c đ x lý Tuy nhiên, l p ậ ạ ả ử ố ộ ử ậtrình đa lu ng cũng đ t ra nhi u thách th c nh đ ng b , xung đ t và ồ ặ ề ứ ư ồ ộ ộl p l ch lu ng c n gi i quy t Bài ti u lu n này sẽ trình bày khái ni m ậ ị ồ ầ ả ế ể ậ ệlu ng, phân tích các v n đ chính v lu ng cũng nh ví d v lu ng ồ ấ ề ề ồ ư ụ ề ồtrong h đi u hành Linux - m t h th ng đi n hình ng d ng t t l p ệ ề ộ ệ ố ể ứ ụ ố ậtrình đa lu ng.ồ
N i dungộ1.T ng quanổ
1.1 Khái ni m lu ngệồ
Trong khoa h c máy tính, lu ng (thread) là m t chu i các l nh ọ ồ ộ ỗ ệđượ ậc l p trình nh nh t đ có th đỏ ấ ể ể ược qu n lý đ c l p b i m t b đ nhả ộ ậ ở ộ ộ ịth i (scheduler) , thờ ường là m t ph n c a h đi u hành Thread là m t ộ ầ ủ ệ ề ộđ n v c b n trong CPU M t lu ng sẽ chia s v i các lu ng khác trong ơ ị ơ ả ộ ồ ẻ ớ ồcùng process v thông tin data, các d li u c a mình Vi c t o ra thread ề ữ ệ ủ ệ ạgiúp cho các chương trình có th ch y để ạ ược nhi u công vi c cùng m t ề ệ ộlúc Nhi u h đi u hành hi n đ i hi n nay cung c p các đ c đi m cho ề ệ ề ệ ạ ệ ấ ặ ểm t quá trình ch a nhi u lu ng (thread) đi u khi n.ộ ứ ề ồ ề ể
Trang 4Lu ng là m t ti n trình g n nh có th đồ ộ ế ọ ẹ ể ược qu n lý đ c l p b i ả ộ ậ ởm t b l p l ch, là m t đ n v th c thi nh nh t c a m t chộ ộ ậ ị ộ ơ ị ự ỏ ấ ủ ộ ương trình Nó bi u di n m t dòng th c thi đ c l p bên trong m t ti n trình và có ể ễ ộ ự ộ ậ ộ ếkh năng chia s tài nguyên v i các lu ng khác trong cùng m t ti n trình.ả ẻ ớ ồ ộ ếLu ng giúp tăng cồ ường kh năng đa nhi m và t n d ng hi u qu tài ả ệ ậ ụ ệ ảnguyên h th ngệ ố
M i ti n trình (process) có ít nh t m t lu ng, nh ng có th có ỗ ế ấ ộ ồ ư ểnhi u lu ng Các lu ng trong cùng m t ti n trình chia s cùng m t ề ồ ồ ộ ế ẻ ộkhông gian b nh và tài nguyên h th ng Đa lu ng có th t n t i trong ộ ớ ệ ố ồ ể ồ ạcùng m t ti n trình, th c thi đ ng th i và chia s tài nguyên nh b nh ,ộ ế ự ồ ờ ẻ ư ộ ớtrong khi nh ng ti n trình khác nhau thì không chia s các tài nguyên ữ ế ẻnày.
1.2 So sánh lu ng và ti n trìnhồế
Đi m gi ng nhau:ể ốQu n lý tài nguyên:ả
C lu ng và ti n trình đ u là các đ n v th c thi trong h ả ồ ế ề ơ ị ự ệđi u hành, và c hai đ u c n tài nguyên đ ho t đ ng.ề ả ề ầ ể ạ ộ
C hai cũng đ u có th chia s tài nguyên nh b nh , tài ả ề ể ẻ ư ộ ớnguyên h th ng, và th i gian CPU (trong trệ ố ờ ường h p các ti n trìnhợ ếđược th c hi n song song trên các nhân CPU đa nhân).ự ệ
Qu n lý b i h đi u hành:ả ở ệ ề
C lu ng và ti n trình đ u đả ồ ế ề ược qu n lý b i h đi u hành.ả ở ệ ềH đi u hành qu n lý các ti n trình và lu ng b ng cách c p ệ ề ả ế ồ ằ ấphát tài nguyên và l p l ch th c thi chúng trên các nhân CPU.ậ ị ự
Trang 5Đi m khác nhau:ể
Ph m vi c a tài nguyên:ạ ủ
Ti n trình: M i ti n trình có không gian b nh riêng, bao ế ỗ ế ộ ớg m mã, d li u, và b nh stack Ti n trình không chia s b nh ồ ữ ệ ộ ớ ế ẻ ộ ớv i các ti n trình khác mà c n s d ng c ch liên l c nh IPC.ớ ế ầ ử ụ ơ ế ạ ư
Lu ng: Các lu ng trong cùng m t ti n trình chia s cùng m tồ ồ ộ ế ẻ ộkhông gian b nh Do đó, vi c truy c p và thay đ i d li u gi a ộ ớ ệ ậ ổ ữ ệ ữcác lu ng có th đồ ể ược th c hi n m t cách tr c ti p mà không c n ự ệ ộ ự ế ầs d ng c ch IPC.ử ụ ơ ế
Th i gian kh i t o và k t thúc:ờ ở ạ ế
Ti n trình: Th i gian kh i t o và k t thúc c a ti n trình ế ờ ở ạ ế ủ ếthường lâu h n so v i lu ng do vi c c n ph i c p phát và qu n lý ơ ớ ồ ệ ầ ả ấ ảkhông gian b nh riêng.ộ ớ
Lu ng: Th i gian kh i t o và k t thúc c a lu ng thồ ờ ở ạ ế ủ ồ ường nhanh h n so v i ti n trình vì không c n t o m i m t không gian ơ ớ ế ầ ạ ớ ộb nh m i.ộ ớ ớ
Đ tin c y:ộ ậ
Ti n trình: N u m t ti n trình g p l i, các ti n trình khác ế ế ộ ế ặ ỗ ếkhông b nh hị ả ưởng.
Lu ng: N u m t lu ng g p l i, nó có th nh hồ ế ộ ồ ặ ỗ ể ả ưởng đ n t t ế ấc các lu ng khác trong cùng m t ti n trình.ả ồ ộ ế
Trong khi c lu ng và ti n trình đ u là các khái ni m quan tr ng ả ồ ế ề ệ ọtrong l p trình đa lu ng và đa nhi m, s hi u bi t v s khác bi t gi a ậ ồ ệ ự ể ế ề ự ệ ữ
Trang 6chúng là quan tr ng đ tri n khai và qu n lý các ng d ng m t cách ọ ể ể ả ứ ụ ộhi u qu trên h đi u hành.ệ ả ệ ề
1.3 S c đ ng và thu n l iự ơ ộậ ợ
Nhi u gói ph n m m ch y trên các máy đ bàn PC là đa lu ng ề ầ ề ạ ể ồĐi n hình, m t ng d ng để ộ ứ ụ ược cài đ t nh m t quá trình riêng r v i ặ ư ộ ẻ ớnhi u lu ng đi u khi n M t trình duy t Web có th có m t lu ng hi n ề ồ ề ể ộ ệ ể ộ ồ ểth hình nh, văn b n trong khi m t lu ng khác l y d li u t m ng M tị ả ả ộ ồ ấ ữ ệ ừ ạ ộtrình so n th o văn b n có th có m t lu ng hi n th đ h a, lu ng th ạ ả ả ể ộ ồ ể ị ồ ọ ồ ứhai đ c s b m phím trên bàn phím t ngọ ự ấ ừ ười dùng, m t lu ng th ba ộ ồ ứth c hi n vi c ki m tra chính t và t v ng ch y trong ch đ n n.ự ệ ệ ể ả ừ ự ạ ế ộ ề
Trong nh ng trữ ường h p c th m t ng d ng đ n có th đợ ụ ể ộ ứ ụ ơ ể ược yêu c u th c hi n nhi u tác v đ n Thí d , m t trình ph c v web ch pầ ự ệ ề ụ ơ ụ ộ ụ ụ ấnh n các yêu c u khách hàng nh trang web, hình nh, âm thanh, M t ậ ầ ư ả ộtrình ph c v web có th có nhi u (hàng trăm) khách hàng truy xu t ụ ụ ể ề ấđ ng th i nó N u trình ph c v web ch y nh m t quá trình đ n lu ng ồ ờ ế ụ ụ ạ ư ộ ơ ồtruy n th ng thì nó sẽ có th ch ph c v m t khách hàng t i cùng th i ề ố ể ỉ ụ ụ ộ ạ ờđi m Lể ượng th i gian mà khách hàng ph i ch yêu c u c a nó đờ ả ờ ầ ủ ược ph c v là r t l n.ụ ụ ấ ớ
M t gi i pháp là có m t trình ph c v ch y nh m t quá trình đ nộ ả ộ ụ ụ ạ ư ộ ơch p nh n các yêu c u Khi trình ph c v nh n m t yêu c u, nó sẽ t o ấ ậ ầ ụ ụ ậ ộ ầ ạm t quá trình riêng đ ph c v yêu c u đó Th t v y, phộ ể ụ ụ ầ ậ ậ ương pháp t o ạra quá trình này là cách s d ng thông thử ụ ường trước khi lu ng tr nên ồ ởph bi n T o ra quá trình có nh hổ ế ạ ả ưởng r t l n nh đấ ớ ư ược trình bày ởchương trước N u quá trình m i sẽ th c hi n cùng tác v nh quá trình ế ớ ự ệ ụ ưđã có thì t i sao l i gánh ch u t t c chi phí đó? Thạ ạ ị ấ ả ường sẽ hi u qu h n ệ ả ơcho m t quá trình ch a nhi u lu ng ph c v cùng m t m c đích Ti p ộ ứ ề ồ ụ ụ ộ ụ ế
Trang 7c n này sẽ đa lu ng quá trình trình ph c v web Trình ph c v sẽ t o ậ ồ ụ ụ ụ ụ ạm t lu ng riêng l ng nghe các yêu c u ngộ ồ ắ ầ ười dùng; khi yêu c u đầ ược th c hi n nó không t o ra quá trình khác mà sẽ t o m t lu ng khác ph cự ệ ạ ạ ộ ồ ụv yêu c u.ụ ầ
Lu ng cũng đóng m t vai trò quan tr ng trong h th ng l i g i thồ ộ ọ ệ ố ờ ọ ủt c xa (remote process call-RPC) Nh đã trình bày chụ ư ở ương trước, RPCscho phép giao ti p liên quá trình b ng cách cung c p c ch giao ti p ế ằ ấ ơ ế ếtương t nh các l i g i hàm hay th t c thông thự ư ờ ọ ủ ụ ường Đi n hình, các ểtrình ph c v RPCs là đa lu ng Khi m t trình ph c v nh n m t thông ụ ụ ồ ộ ụ ụ ậ ộđi p, nó ph c v thông đi p dùng m t lu ng riêng Đi u này cho phép ệ ụ ụ ệ ộ ồ ềph c v nhi u yêu c u đ ng hành.ụ ụ ề ầ ồ
Nh ng thu n l i c a l p trình đa lu ng có th đữ ậ ợ ủ ậ ồ ể ược chia làm b n ốlo i:ạ
S đáp ng: đa lu ng m t ng d ng giao ti p cho phép m t ự ứ ồ ộ ứ ụ ế ộchương trình ti p t c ch y th m chí n u m t ph n c a nó b khóa hay ế ụ ạ ậ ế ộ ầ ủ ịđang th c hi n m t thao tác dài, do đó gia tăng s đáp ng đ i v i ngự ệ ộ ự ứ ố ớ ười dùng Thí d , m t trình duy t web v n có th đáp ng ngụ ộ ệ ẫ ể ứ ười dùng b ng ằm t lu ng trong khi m t nh đang độ ồ ộ ả ượ ạc n p b ng m t lu ng khác.ằ ộ ồ
Chia s tài nguyên: M c đ nh, các lu ng chia s b nh và các tài ẻ ặ ị ồ ẻ ộ ớnguyên c a các quá trình mà chúng thu c v Thu n l i c a vi c chia sẽ ủ ộ ề ậ ợ ủ ệmã là nó cho phép m t ng d ng có nhi u ho t đ ng c a các lu ng khác ộ ứ ụ ề ạ ộ ủ ồnhau n m trong cùng không gian đ a ch ằ ị ỉ
Kinh t : c p phát b nh và các tài nguyên cho vi c t o các quá ế ấ ộ ớ ệ ạtrình là r t đ t Vì các lu ng chia s tài nguyên c a quá trình mà chúng ấ ắ ồ ẻ ủthu c v nên nó kinh t h n đ t o và chuy n ng c nh gi a các lu ng ộ ề ế ơ ể ạ ể ữ ả ữ ồ
Trang 8Khó đ đánh giá theo kinh nghi m s khác bi t chi phí cho vi c t o và ể ệ ự ệ ệ ạduy trì m t quá trình h n m t lu ng, nh ng thộ ơ ộ ồ ư ường nó sẽ m t nhi u ấ ềth i gian đ t o và qu n lý m t quá trình h n m t lu ng Trong Solaris ờ ể ạ ả ộ ơ ộ ồ2, t o m t quá trình ch m h n kho ng 30 l n t o m t lu ng và chuy n ạ ộ ậ ơ ả ầ ạ ộ ồ ểđ i ng c nh ch m h n 5 l n.ổ ữ ả ậ ơ ầ
S d ng ki n trúc đa x lý: các l i đi m c a đa lu ng có th phát ử ụ ế ử ợ ể ủ ồ ểhuy trong ki n trúc đa x lý, đó m i lu ng th c thi song song trên m t ế ử ở ỗ ồ ự ộb x lý khác nhau M t quá trình đ n lu ng ch có th ch y trên m t ộ ử ộ ơ ồ ỉ ể ạ ộCPU Đa lu ng trên m t máy nhi u CPU gia tăng tính đ ng hành Trong ồ ộ ề ồki n trúc đ n x lý, CPU thế ơ ử ường chuy n đ i qua l i gi a m i lu ng quá ể ổ ạ ữ ỗ ồnhanh đ t o ra hình nh c a s song song nh ng trong th c t ch m t ể ạ ả ủ ự ư ự ế ỉ ộlu ng đang ch y t i m t th i đi m.ồ ạ ạ ộ ờ ể
1.4 Lu ng ngồười dùng và lu ng nhânồ
Lu ng ngồ ười dùng: đượ ỗ ợ ước h tr d i nhân và được cài đ t b i th ặ ở ưvi n lu ng t i c p ngệ ồ ạ ấ ười dùng Th vi n cung c p h tr cho vi c t o ư ệ ấ ỗ ợ ệ ạlu ng, l p th i bi u, và qu n lý mà không có s h tr t nhân Vì nhân ồ ậ ờ ể ả ự ỗ ợ ừkhông bi t các lu ng c p ngế ồ ấ ười dùng, t t c vi c t o lu ng và l p th i ấ ả ệ ạ ồ ậ ờbi u để ược th c hi n trong không gian ngự ệ ười dùng mà không c n s can ầ ựthi p c a nhân Do đó, các lu ng c p ngệ ủ ồ ấ ười dùng thường t o và qu n lý ạ ảnhanh, tuy nhiên chúng cũng có nh ng tr ng i Thí d , n u nhân là đ n ữ ở ạ ụ ế ơlu ng thì b t c lu ng c p ngồ ấ ứ ồ ấ ười dùng th c hi n m t l i g i h th ng ự ệ ộ ờ ọ ệ ốnghẽn sẽ làm cho toàn b quá trình b nghẽn, th m chí n u các lu ng ộ ị ậ ế ồkhác s n dùng đ ch y trong ng d ng Các th vi n lu ng ngẳ ể ạ ứ ụ ư ệ ồ ười dùng g m các lu ng POSIX Pthreads, Mach C-threads và Solaris 2 UI-threads.ồ ồ
Lu ng nhân: đồ ượ ỗ ợ ực h tr tr c ti p b i h đi u hành Nhân th c ế ở ệ ề ựhi n vi c t o lu ng, l p th i bi u, và qu n lý không gian nhân Vì qu n ệ ệ ạ ồ ậ ờ ể ả ả
Trang 9lý lu ng đồ ược th c hi n b i h đi u hành, lu ng nhân thự ệ ở ệ ề ồ ường t o và ạqu n lý ch m h n lu ng ngả ậ ơ ồ ười dùng Tuy nhiên, vì nhân được qu n lý ảcác lu ng n u m t lu ng th c hi n l i g i h th ng nghẽn, nhân có th ồ ế ộ ồ ự ệ ờ ọ ệ ố ểl p th i bi u m t lu ng khác trong ng d ng th c thi Trong môi trậ ờ ể ộ ồ ứ ụ ự ường đa x lý, nhân có th l p th i bi u lu ng trên m t b x lý khác H u h tử ể ậ ờ ể ồ ộ ộ ử ầ ếcác h đi u hành hi n nay nh Windows NT, Windows 2000, Solaris 2, ệ ề ệ ưBeOS và Tru64 UNIX (trước Digital UNIX)-h tr các lu ng nhânỗ ợ ồ
2 Các v n đ c a lu ngấề ủồ
2.1 Đ ng b hóaồộ
Đ ng b hóa là quá trình đi u ch nh th i gian th c thi c a các ồ ộ ề ỉ ờ ự ủlu ng đ đ m b o s nh t quán và an toàn trong qu n lý tài nguyên chia ồ ể ả ả ự ấ ảs Các v n đ đi n hình c a đ ng b hóa bao g m:ẻ ấ ề ể ủ ồ ộ ồ
Race Condition: Đây là tình tr ng x y ra khi hai ho c nhi u lu ngạ ả ặ ề ồcùng truy c p và thay đ i m t tài nguyên chia s mà không có s đ ngậ ổ ộ ẻ ự ồb hóa K t qu c a quá trình này là không th d đoán và th m chí cóộ ế ả ủ ể ự ậth d n đ n các l i và d li u không đúng.ể ẫ ế ỗ ữ ệ
Deadlock: Đây là tình tr ng mà hai ho c nhi u lu ng ho c ti nạ ặ ề ồ ặ ếtrình b k t đ ng vì m i lu ng đang ch tài nguyên mà ch có th đị ẹ ứ ỗ ồ ờ ỉ ể ượcgi i phóng b i m t lu ng khác Deadlock có th x y ra khi các lu ng cả ở ộ ồ ể ả ồ ốg ng gi và yêu c u tài nguyên t nhau mà không gi i phóng các tàiắ ữ ầ ừ ảnguyên đã gi ữ
2.2 Tranh ch p – Deadlockấ
Tranh ch p (Deadlock) là m t tr ng thái trong đó m t t p h p các ấ ộ ạ ộ ậ ợlu ng ho c ti n trình b k t vì m i lu ng ho c ti n trình trong t p h p ồ ặ ế ị ẹ ỗ ồ ặ ế ậ ợ
Trang 10đang ch đ i m t tài nguyên mà ch có s n cho m t lu ng ho c ti n ờ ợ ộ ỉ ẵ ộ ồ ặ ếtrình khác trong t p h p ậ ợ
Deadlock thường x y ra khi có m t chu trình trong các yêu c u tài ả ộ ầnguyên gi a các lu ng ho c ti n trình Deadlock gây t c nghẽn trong h ữ ồ ặ ế ắ ệth ng và có th gây ra các v n đ nghiêm tr ng n u không đố ể ấ ề ọ ế ượ ửc x lý đúng cách.
2.3 L p l ch (Scheduling)ậ ị
L p l ch (Scheduling) là quá trình quy t đ nh xem lu ng nào trong ậ ị ế ị ồh th ng sẽ đệ ố ược th c thi ti p theo trên các CPU có s n M t s v n đ ự ế ẵ ộ ố ấ ềthường g p trong l p l ch lu ng bao g m:ặ ậ ị ồ ồ
Starvation: Đây là tình tr ng m t ho c nhi u lu ng không đạ ộ ặ ề ồ ược l p l ch đ th c thi trong m t kho ng th i gian dài do u tiên c a các ậ ị ể ự ộ ả ờ ư ủlu ng khác ho c do các thu t toán l p l ch không công b ng.ồ ặ ậ ậ ị ằ
Priority Inversion: Đây là tình tr ng mà m t lu ng có u tiên cao ạ ộ ồ ưph i ch đ i m t lu ng có u tiên th p đ gi i phóng m t tài nguyên, ả ờ ợ ộ ồ ư ấ ể ả ộđi u này có th x y ra khi s d ng các c ch l p l ch không phù h p.ề ể ả ử ụ ơ ế ậ ị ợ
2.3 Các gi i pháp qu n lýảả
Đ ng b hóa lu ng: S d ng các c ch đ ng b nh mutex, ồ ộ ồ ử ụ ơ ế ồ ộ ưsemaphore, monitor đ b o v tài nguyên chung và tránh các tình hu ng ể ả ệ ốch y đua.ạ
Thi t k thu t toán l p l ch: Thu t toán l p l ch công b ng, tránh ế ế ậ ậ ị ậ ậ ị ằtình tr ng starvation lu ng Ví d Round Robin, Priority Scheduling.ạ ồ ụGi i h n s lớ ạ ố ượng lu ng: Gi i h n s lu ng t i đa có th t o ra đ gi m ồ ớ ạ ố ồ ố ể ạ ể ảoverhead cho h th ng.ệ ố
Trang 11S d ng các th vi n/framework qu n lý lu ng: NPTL, Pthreads ử ụ ư ệ ả ồcho Linux Boost, Java Thread cho l p trình ng d ng Gi m thi u l i ậ ứ ụ ả ể ỗti m n.ề ẩ
Cân nh c ng d ng h p lý đa lu ng: Ch áp d ng song song trên ắ ứ ụ ợ ồ ỉ ụnh ng ph n code th c s c n, tránh overhead không c n thi t.ữ ầ ự ự ầ ầ ế
Nh v y, v i m t t p h p các gi i pháp toàn di n, các nhà phát ư ậ ớ ộ ậ ợ ả ệtri n có th t n d ng để ể ậ ụ ược hi u qu c a lu ng đ ng th i ki m soát t t ệ ả ủ ồ ồ ờ ể ốcác v n đ ti m n.ấ ề ề ẩ
3 Mô hình lu ngồ
Nhi u h th ng cung c p s h tr c hai lu ng nhân và lu ng ề ệ ố ấ ự ỗ ợ ả ồ ồngười dùng nên t o ra nhi u mô hình đa lu ng khác nhau Chúng ta sẽ ạ ề ồxem xét ba lo i cài đ t lu ng thông thạ ặ ồ ường.
3.1 Mô hình nhi u-m tềộ
Mô hình nhi u-m t ánh x nhi u lu ng c p ngề ộ ạ ề ồ ấ ười dùng t i m t ớ ộlu ng c p nhân Qu n lý lu ng đồ ấ ả ồ ược th c hi n trong không gian ngự ệ ười dùng vì th nó hi u qu nh ng toàn b quá trình sẽ b khóa n u m t ế ệ ả ư ộ ị ế ộlu ng th c hi n l i g i h th ng khóa Vì ch m t lu ng có th truy xu t ồ ự ệ ờ ọ ệ ố ỉ ộ ồ ể ấnhân t i m t th i đi m nên nhi u lu ng không th ch y song song trên ạ ộ ờ ể ề ồ ể ạnhi u b x lý Green threads-m t th vi n lu ng đề ộ ử ộ ư ệ ồ ược cài đ t trên các ặh đi u hành không h tr lu ng nhân dùng mô hình nhi u-m t.ệ ề ỗ ợ ồ ề ộ
3.2 Mô hình m t-m tộộ
Mô hình m t-m t ánh x m i lu ng ngộ ộ ạ ỗ ồ ười dùng t i m t lu ng ớ ộ ồnhân Nó cung c p kh năng đ ng hành t t h n mô hình nhi u-m t ấ ả ồ ố ơ ề ộb ng cách cho m t lu ng khác ch y khi m t lu ng th c hi n l i g i h ằ ộ ồ ạ ộ ồ ự ệ ờ ọ ệth ng nghẽn; nó cũng cho phép nhi u lu ng ch y song song trên các b ố ề ồ ạ ộ