Thread Model - springscomin/be-was GitHub Wiki

μŠ€λ ˆλ“œ λͺ¨λΈ

Many-To-One Model (Green Thread Model)

Untitled

Green Thread Model μ—μ„œλŠ” μŠ€λ ˆλ“œκ°€ μš΄μ˜μ²΄μ œκ°€ μ•„λ‹Œ λŸ°νƒ€μž„ μ—”μ§„(예: Java의 JVM)에 μ˜ν•΄ μŠ€μΌ€μ€„λ§λ˜μ–΄ λ™μž‘ν•œλ‹€. 즉, μ‚¬μš©μž λ ˆλ²¨μ—μ„œ μŠ€λ ˆλ“œλ₯Ό μŠ€μΌ€μ€„λ§ν•˜λ©°, μ΄λŠ” 운영 체제의 μŠ€μΌ€μ€„λ§κ³Ό λ¬΄κ΄€ν•˜κ²Œ μˆ˜ν–‰λœλ‹€.

μ—¬λŸ¬ 개의 μ‚¬μš©μž μŠ€λ ˆλ“œ(User Threads)κ°€ ν•˜λ‚˜μ˜ 컀널 μŠ€λ ˆλ“œ(Kernel Thread)에 λ§€ν•‘λœλ‹€.

β‡’ λͺ¨λ“  μ‚¬μš©μž μŠ€λ ˆλ“œλŠ” ν•˜λ‚˜μ˜ 컀널 μŠ€λ ˆλ“œ λ‚΄μ—μ„œ, ν•˜λ‚˜μ˜ CPU μ½”μ–΄μ—μ„œ λ²ˆκ°ˆμ•„κ°€λ©° μ‹€ν–‰λœλ‹€.

β‡’ λ©€ν‹° μ½”μ–΄ ν™˜κ²½μ—μ„œλŠ” κ·Έ λ©€ν‹° μ½”μ–΄ μ‹œμŠ€ν…œμ˜ μž₯점을 μ˜¨μ „νžˆ λˆ„λ¦΄ 수 μ—†λ‹€.

One-To-One Model

Untitled

One To One Model은 λ©€ν‹°μŠ€λ ˆλ”©μ˜ 초기 κ΅¬ν˜„ λͺ¨λΈμ΄λ‹€.

μ‚¬μš©μž μŠ€λ ˆλ“œ 1κ°œλŠ” 컀널 μŠ€λ ˆλ“œ 1κ°œμ— λ§€ν•‘λœλ‹€.

μ‚¬μš©μž μŠ€λ ˆλ“œ ν•œκ°œκ°€ λ³„λ„μ˜ 컀널 μŠ€λ ˆλ“œμ— λ§€ν•‘λ˜λ―€λ‘œ, μ—¬λŸ¬ μŠ€λ ˆλ“œκ°€ μ—¬λŸ¬ CPU 코어에 올라 λ™μ‹œμ— 싀행될 수 μžˆλ‹€.

ν•˜μ§€λ§Œ, ν•œμ •λœ μ»΄ν“¨νŒ… μžμ›μœΌλ‘œ 인해 컀널 μŠ€λ ˆλ“œμ˜ μˆ˜κ°€ μ œν•œλ˜λ©°, μœ μ € μŠ€λ ˆλ“œ μˆ˜λ„ μ œν•œλœλ‹€.

λ˜ν•œ, λ§Žμ€ 수의 컀널 μŠ€λ ˆλ“œκ°€ μƒμ„±λ˜λ©΄, 컀널 μŠ€λ ˆλ“œ κ°„μ˜ μ „ν™˜(context switch) λΉ„μš©μ΄ μ¦κ°€ν•˜μ—¬ μ‹œμŠ€ν…œμ˜ μ „λ°˜μ μΈ μ„±λŠ₯ μ €ν•˜λ₯Ό μ΄ˆλž˜ν•  수 μžˆλ‹€.

Many To Many Model (Native Thread Model)

Untitled

Native Thread Model은 Many-To-Oneλͺ¨λΈκ³Ό One-To-Oneλͺ¨λΈμ΄ κ°–λŠ” 단점을 λ³΄μ™„ν•œ λͺ¨λΈμ΄λ‹€.

μ‚¬μš©μž μŠ€λ ˆλ“œ Nκ°œλŠ” 컀널 μŠ€λ ˆλ“œ Mκ°œμ— λ§€ν•‘λœλ‹€. (N β‰₯ M)

μš΄μ˜μ²΄μ œκ°€ μ‚¬μš©μž μŠ€λ ˆλ“œμ™€ 컀널 μŠ€λ ˆλ“œλ₯Ό 적절히 λ§€ν•‘ν•œλ‹€.

Reference

https://docs.oracle.com/cd/E19455-01/806-3461/6jck06gqe/index.htmlhttps://docs.oracle.com/cd/E19455-01/806-3461/6jck06gqe/index.html