CS/운영체제

[운영체제] ν”„λ‘œκ·Έλž¨, ν”„λ‘œμ„ΈμŠ€, μŠ€λ ˆλ“œ, λ©€ν‹°ν”„λ‘œμ„ΈμŠ€·λ©€ν‹°μŠ€λ ˆλ“œ

코더999 2023. 1. 29. 18:28

1. ν”„λ‘œκ·Έλž¨ (Program)

  • μ–΄λ–€ μž‘μ—…μ„ ν•˜κΈ° μœ„ν•΄ ν•΄μ•Όν•  일듀을 μˆœμ„œλŒ€λ‘œ λ‚˜μ—΄ν•œ 것
  • μ»΄ν“¨ν„°μ—μ„œ μ–΄λ–€ μž‘μ—…μ„ μœ„ν•΄ μ‹€ν–‰ν•  수 μžˆλŠ” '정적인 μƒνƒœ'의 파일

 

2. ν”„λ‘œμ„ΈμŠ€ (Process)

  • ν”„λ‘œκ·Έλž¨μ΄ μ‹€ν–‰λ˜λ©΄ ν”„λ‘œμ„ΈμŠ€ μΈμŠ€ν„΄μŠ€κ°€ μƒμ„±λœλ‹€. 즉, ν”„λ‘œκ·Έλž¨ 싀행에 ν•„μš”ν•œ λ‚΄μš©μ΄ λ©”λͺ¨λ¦¬(Ram)에 μ μž¬λ˜λŠ” 것.
  • μš΄μ˜μ²΄μ œκ°€ λ©”λͺ¨λ¦¬ λ“±μ˜ ν•„μš”ν•œ μžμ›μ„ ν• λ‹Ήν•΄μ€€ '싀행쀑인 ν”„λ‘œκ·Έλž¨'
  • ν”„λ‘œκ·Έλž¨μ΄ μ‹€ν–‰λ˜μ„œ λŒμ•„κ°€κ³  μžˆλŠ” μƒνƒœ, μ»΄ν“¨ν„°μ—μ„œ μ—°μ†μ μœΌλ‘œ μ‹€ν–‰λ˜κ³  μžˆλŠ” '동적인 μƒνƒœ'의 ν”„λ‘œκ·Έλž¨
  • μž‘μ—…κ΄€λ¦¬μ°½μ— ν‘œμ‹œλ˜μ–΄μžˆλŠ” 것듀이 ν”„λ‘œμ„ΈμŠ€μž„
  • ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€κ°€ λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€μ˜ μžμ›μ— μ ‘κ·Όν•˜λ €λ©΄ ν”„λ‘œμ„ΈμŠ€ κ°„μ˜ 톡신 ν•„μš”
  • 각 ν”„λ‘œμ„ΈμŠ€λŠ” λ³„λ„μ˜ μ£Όμ†Œκ³΅κ°„μ—μ„œ μ‹€ν–‰λ˜κ³ , ν”„λ‘œμ„ΈμŠ€λΌλ¦¬λŠ” μžμ›μ„ κ³΅μœ ν•˜μ§€ μ•ŠμŒ

 

2-1. ν”„λ‘œμ„ΈμŠ€μ˜ 생λͺ…μ£ΌκΈ°

  • new : ν”„λ‘œμ„ΈμŠ€κ°€ μƒμ„±λ˜λŠ” μƒνƒœ
  • ready : ν”„λ‘œμ„ΈμŠ€κ°€ CPU에 ν• λ‹Ήλ˜μ–΄, 처리되기λ₯Ό κΈ°λ‹€λ¦¬λŠ” μƒνƒœ
  • running: ν”„λ‘œμ„ΈμŠ€κ°€ CPU에 ν• λ‹Ήλ˜μ–΄, λͺ…령어듀이 μ‹€ν–‰ λ˜λŠ” μƒνƒœ
  • waiting: μ–΄λ–€ 이벀트의 λ°œμƒμœΌλ‘œ 인해 ν”„λ‘œμ„ΈμŠ€κ°€ κΈ°λ‹€λ¦¬λŠ” μƒνƒœ
  • terminated: ν”„λ‘œμ„ΈμŠ€κ°€ μ’…λ£Œλ˜λŠ” μƒνƒœ

ν”„λ‘œμ„ΈμŠ€μ˜ 생λͺ…μ£ΌκΈ°

 

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

  • ν”„λ‘œμ„ΈμŠ€ λ‚΄μ—μ„œ μ‹€ν–‰λ˜λŠ” νλ¦„μ˜ λ‹¨μœ„
  • ν”„λ‘œμ„ΈμŠ€ ν•˜λ‚˜μ— μžμ›μ„ κ³΅μœ ν•˜λ©΄μ„œ 일련의 과정을 μ—¬λŸ¬ 개 λ™μ‹œμ— μ‹€ν–‰ μ‹œ 킬 수 μžˆλŠ” 것을 말함
  • 할당받은 μžμ›μ„ μ΄μš©ν•˜λŠ” μ‹€ν–‰μ˜ λ‹¨μœ„
  • μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜ ν•˜λ‚˜κ°€ ν”„λ‘œμ„ΈμŠ€μ΄κ³ ,  κ·Έ μ•ˆμ—μ„œμ˜ λΆ„κΈ° μ²˜λ¦¬κ°€ μŠ€λ ˆλ“œκ°€ λ˜λŠ” μ…ˆ

 

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

ν”„λ‘œμ„ΈμŠ€λŠ” 싀행될 λ•Œ μš΄μ˜μ²΄μ œλ‘œλΆ€ν„° 각각 λ…λ¦½λœ λ©”λͺ¨λ¦¬ μ˜μ—­μ„ ν• λ‹Ήλ°›λŠ”λ‹€.

μŠ€λ ˆλ“œλŠ” ν•œ ν”„λ‘œμ„ΈμŠ€ λ‚΄μ—μ„œ λ™μž‘λ˜λŠ” νλ¦„μœΌλ‘œ, stack μ˜μ—­λ§Œ λ³„λ„λ‘œ ν• λ‹Ήλ°›κ³ ,

λΆ€λͺ¨ ν”„λ‘œμ„ΈμŠ€μ˜ Code, Stack, Data, Heap μ˜μ—­μ€ κ³΅μœ ν•œλ‹€.

즉, ν”„λ‘œμ„ΈμŠ€ λ‚΄μ—μ„œ μžμ‹ μŠ€λ ˆλ“œλ“€μ€ μ„œλ‘œ μ£Όμ†Œ κ³΅κ°„μ΄λ‚˜ μžμ›λ“€μ„ κ³΅μœ ν•˜λ©΄μ„œ 싀행될 수 μžˆλ‹€.

 

 

4. λ©€ν‹°ν”„λ‘œμ„ΈμŠ€(Multi Process)와 λ©€ν‹°μŠ€λ ˆλ“œ(Multi Thread)

  λ©€ν‹° ν”„λ‘œμ„ΈμŠ€ λ©€ν‹° μŠ€λ ˆλ“œ
κ°œλ… - 두 개 이상 λ‹€μˆ˜μ˜ ν”„λ‘œμ„Έμ„œ(CPU)κ°€ ν˜‘λ ₯적으둜
ν•˜λ‚˜ μ΄μƒμ˜ μž‘μ—…μ„ λ™μ‹œμ²˜λ¦¬ν•˜λŠ” 것(병렬)
- ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€μ— μ—¬λŸ¬ μŠ€λ ˆλ“œλ‘œ μžμ›μ„ κ³΅μœ ν•˜λ©°
μž‘μ—…μ„ λ‚˜λˆ„μ–΄ μˆ˜ν–‰ν•˜λŠ” 것
μž₯점 - λ…λ¦½λœ ꡬ쑰둜 μ•ˆμ •μ„± λ†’μŒ
(ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€κ°€ 죽더라도 λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€μ— 영ν–₯을
μ£Όμ§€ μ•ŠμŒ, μž‘μ—…μ†λ„κ°€ λŠλ €μ§€λŠ” μ •λ„μ˜ μ†ν•΄λ§Œ λ°œμƒ)
- λ©€ν‹° ν”„λ‘œμ„ΈμŠ€λ³΄λ‹€ 적은 λ©”λͺ¨λ¦¬ 곡간을 μ°¨μ§€
- context Switching이 λΉ λ₯Έ μž₯점
단점 - λ©€ν‹°μŠ€λ ˆλ“œλ³΄λ‹€ λ§Žμ€ λ©”λͺ¨λ¦¬κ³΅κ°„κ³Ό CPU μ‹œκ°„μ„ μ°¨μ§€ - 동기화 문제
- ν•˜λ‚˜μ˜ μŠ€λ ˆλ“œ μž₯μ• λ‘œ 전체 μŠ€λ ˆλ“œκ°€ μ’…λ£Œλ  수 있음
곡톡점 λ™μ‹œμ— μ—¬λŸ¬ μž‘μ—…μ„ μˆ˜ν–‰

 

 

더보기