🐼 λ°±μ•€λ“œ/Server

ν”„λ‘œμ„ΈμŠ€μ™€ μŠ€λ ˆλ“œ

κ³„λž€μ†Œλ…„ 2023. 9. 22. 23:17

ν”„λ‘œμ„ΈμŠ€: μš΄μ˜μ²΄μ œλ‘œλΆ€ν„° μžμ›μ„ 할당받은 μž‘μ—…μ˜ λ‹¨μœ„

μŠ€λ ˆλ“œ: ν”„λ‘œμ„ΈμŠ€κ°€ 할당받은 μžμ›μ„ μ΄μš©ν•˜λŠ” μ‹€ν–‰ νλ¦„μ˜ λ‹¨μœ„

μžμ„Ένžˆ μ•Œμ•„λ³΄μž

 

1.  ν”„λ‘œμ„ΈμŠ€

μ˜›λ‚ μ—λŠ” κ²Œμž„κ³Ό 인터넷 μ„œμΉ­μ„ ν•¨κ»˜ ν•  수 μ—†μ—ˆλ‹€. λ©€ν‹°νƒœμŠ€ν‚Ήμ΄ κ°€λŠ₯ν•˜κΈ° μ „κΉŒμ§€λŠ”!!

Process is a program in execution

즉, ν”„λ‘œκ·Έλž¨μ΄ μ‹€ν–‰λΌμ„œ λŒμ•„κ°€κ³  μžˆλŠ” μƒνƒœ, 컴퓨터가 어떀일을 ν•˜κ³  μžˆλŠ” μƒνƒœ

λ©”λͺ¨λ¦¬μ— μ˜¬λΌμ™€ μ‹€ν–‰λ˜κ³  μžˆλŠ” ν”„λ‘œκ·Έλž¨μ˜ μΈμŠ€ν„΄μŠ€. "μž‘μ—…"

λ™μ‹œμ„±(Concurrency)λŠ”  μ—¬λŸ¬κ°œμ˜ μž‘μ—…μ„  ν•  λ•Œ, λ‹€ 끝내지 μ•Šκ³  일뢀뢄씩 λŒμ•„κ°€λ©° μž‘μ—…ν•˜λŠ” μƒνƒœ

μ΄λ ‡κ²Œ 진행쀑인 μž‘μ—…μ„ λ°”κΎΈλŠ” 것을 Context Switching이라고 ν•œλ‹€.

병렬성(Parallelism)은 ν”„λ‘œμ„ΈμŠ€ ν•˜λ‚˜μ— μ½”μ–΄ μ—¬λŸ¬κ°œκ°€ λ‹¬λ €μ„œ 각각 λ™μ‹œμ— μž‘μ—…λ“€μ„ μˆ˜ν–‰ν•˜λŠ” 것이닀.

 

ν”„λ‘œμ„ΈμŠ€μ˜ λ©”λͺ¨λ¦¬μ˜μ—­

●Code μ˜μ—­: μ‹€ν–‰ν•  ν”„λ‘œκ·Έλž¨μ˜ μ½”λ“œλ‚˜ λͺ…령어듀이 기계어 ν˜•νƒœλ‘œ μ €μž₯된 μ˜μ—­μ΄λ‹€. CPUλŠ” μ½”λ“œμ˜μ—­μ— μ €μž₯된 λͺ…령어듀을 ν•˜λ‚˜μ”© 처리

●Data μ˜μ—­: μ „μ—­ λ³€μˆ˜μ™€ 정적 λ³€μˆ˜κ°€ μ €μž₯λ˜λŠ” μ˜μ—­μ΄λ‹€. ν”„λ‘œκ·Έλž¨μ΄ μ‹€ν–‰λ˜λ©΄μ„œ ν• λ‹Ήλ˜κ³  μ’…λ£Œλ˜λ©΄μ„œ μ†Œλ©Έν•œλ‹€.

●Stack μ˜μ—­: 컴파일 μ‹œ 크기 κ²°μ •. ν•¨μˆ˜, μ§€μ—­λ³€μˆ˜, λ§€κ°œλ³€μˆ˜ 등이 μ €μž₯λ˜λŠ” μ˜μ—­μ΄λ‹€. ν•¨μˆ˜ ν˜ΈμΆœμ‹œ 기둝되고 μ’…λ£Œλ˜λ©΄ μ œκ±°λœλ‹€.

●Heap μ˜μ—­: λŸ°νƒ€μž„ μ‹œ 크기 κ²°μ •. 관리가 κ°€λŠ₯ν•œ 데이터 μ΄μ™Έμ˜ λ‹€λ₯Έ ν˜•νƒœμ˜ 데이터λ₯Ό κ΄€λ¦¬ν•˜κΈ° μœ„ν•œ μžμœ κ³΅κ°„μ΄λ‹€.

μ΄λ•Œ, stack, heap은 동적 μ˜μ—­μ΄κ³ ,  data, codeλŠ” 정적 μ˜μ—­μ΄λ‹€. 

 

2.  ν”„λ‘œμ„ΈμŠ€μ˜ μƒνƒœ(state)

ν”„λ‘œμ„ΈμŠ€λŠ” μƒνƒœκ°€ λ³€κ²½λ˜λ©° μˆ˜ν–‰λœλ‹€.

●Running: CPUλ₯Ό 작고 instruction을 μˆ˜ν–‰μ€‘μΈ μƒνƒœ

●Ready: CPUλ₯Ό κΈ°λ‹€λ¦¬λŠ” μƒνƒœ

●Waiting: CPUλ₯Ό 주어도 λ‹Ήμž₯ instruction을 ν•  수 μ—†λŠ” μƒνƒœ

●New: λ””μŠ€ν¬μ—μ„œ λ©”λͺ¨λ¦¬λ‘œ ν”„λ‘œκ·Έλž¨μ΄ μ˜¬λΌκ°€μ„œ 쀀비쀑인 μƒνƒœ

●Terminated: execution이 λλ‚œ μƒνƒœ

 

3.  μŠ€λ ˆλ“œ (Thread)

ν•œ ν”„λ‘œμ„ΈμŠ€ λ‚΄μ—μ„œλ„ μ—¬λŸ¬ 갈래의 μž‘μ—…λ“€μ΄ λ™μ‹œμ— 진행될 ν•„μš”κ°€ 있음. 이 갈래λ₯Ό 'μŠ€λ ˆλ“œ' 라고 ν•œλ‹€.

μ–΄λ ΅λ‹€. μ˜ˆμ‹œλ₯Ό ν†΅ν•΄μ„œ μ΄ν•΄ν•΄λ³΄μž

 

μš”λ¦¬ ν•˜λ‚˜ν•˜λ‚˜λ₯Ό ν”„λ‘œμ„ΈμŠ€λΌκ³  ν•œλ‹€.  

햄버거λ₯Ό λ§Œλ“œλŠ” ν”„λ‘œμ„ΈμŠ€μ—μ„œλŠ” νŒ¨ν‹°λ₯Ό κ΅½λŠ” μŠ€λ ˆλ“œμ™€ 야채λ₯Ό λΉ΅μœ„μ— μ˜¬λ¦¬λŠ” μŠ€λ ˆλ“œκ°€ μžˆμ„ 것이닀.

ν•œ λ©”λ‰΄μ˜ μŠ€λ ˆλ“œλŠ” 같은 ν”„λ‘œμ„ΈμŠ€μ—μ„œ μ‘°λ¦¬λœλ‹€. 

νŒ¨ν‹°λ₯Ό λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€μ—μ„œ κ΅¬μ›Œμ„œ κ°€μ Έμ˜€λ €λ©΄ μΌν•˜κΈ°κ°€ νž˜λ“€λ‹€.

ν”„λ‘œμ„ΈμŠ€λ“€μ€ μ»΄ν“¨ν„°μ˜ μžμ›μ„ λΆ„ν• ν•΄μ„œ μ“°μ§€λ§Œ μŠ€λ ˆλ“œλŠ” ν”„λ‘œμ„ΈμŠ€λ§ˆλ‹€ μ£Όμ–΄μ§„ 전체 μžμ›μ„ ν•¨κ»˜ μ‚¬μš©ν•˜λŠ” 것이닀.

 

단점도 μžˆλ‹€.

μŠ€λ ˆλ“œ λ‘κ°œκ°€ λ™μ‹œμ— 손을 λŒ„λ‹€κ³  ν•˜μž. μ—λŸ¬!!

μ›λž˜λŠ” λ²„νŠΌμ„ ν•˜λ‚˜μ”© 10번 λˆŒλŸ¬μ„œ 20이 λ‚˜μ™€μ•Όν•˜λŠ”λ°, λ™μ‹œμ— λˆ„λ₯΄λ‹€λ³΄λ‹ˆ 같이 λˆŒλ¦¬λŠ” κ²½μš°κ°€ μƒκ²¨μ„œ 20보닀 적게 λˆŒλ¦°λ‹€.

λ”°λΌμ„œ μŠ€λ ˆλ“œλ₯Ό μ‚¬μš©ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ€ μ½”λ“œμ§œκΈ°, λ””λ²„κΉ…ν•˜κΈ° λͺ¨λ‘ νž˜λ“€λ‹€.

 

μ½”λ“œ,데이터,μŠ€νƒ,νž™μ„ 각각 μƒμ„±ν•˜λŠ” ν”„λ‘œμ„ΈμŠ€μ™€λŠ” 달리 μŠ€λ ˆλ“œλŠ” μ½”λ“œ, 데이터, νž™μ€ μŠ€λ ˆλ“œλΌλ¦¬ μ„œλ‘œ κ³΅μœ ν•˜κ³  μŠ€νƒμ€ 각각 μƒμ„±λœλ‹€.

λ©€ν‹°μŠ€λ ˆλ”©μ€ ν”„λ‘œμ„ΈμŠ€ λ‚΄ μž‘μ—…μ„ μ—¬λŸ¬κ°œμ˜ λ©€ν‹°μŠ€λ ˆλ“œλ‘œ μ²˜λ¦¬ν•˜λŠ” 기법이며 μŠ€λ ˆλ“œλΌλ¦¬ μžμ›μ„ κ³΅μœ ν•˜κΈ°μ— νš¨μœ¨μ„±μ΄ λ†’λ‹€.

 

 

REFERENCE

https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html

https://www.youtube.com/watch?v=iks_Xb9DtTM 

https://andjjip.tistory.com/291