λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
πŸ’» Computer Science/- Operating System

[운영체제] 6. ν”„λ‘œμ„ΈμŠ€μ˜ κ°œλ…κ³Ό μƒνƒœ λ³€ν™”

by Wonit 2019. 12. 7.

ν”„λ‘œμ„ΈμŠ€μ˜ κ°œλ…κ³Ό μƒνƒœ λ³€ν™”

 

ν”„λ‘œμ„ΈμŠ€μ˜ κ°œλ…

μ—¬λŸ¬ ν”„λ‘œκ·Έλž¨μ„ λ©”λͺ¨λ¦¬μ— μ μž¬ν•˜μ—¬ 병행 μ‹€ν–‰ν•  수 μžˆλŠ” 닀쀑 ν”„λ‘œκ·Έλž˜λ° ν™˜κ²½ μ—μ„œ 병행 μ‹€ν–‰ν•˜λŠ” ν”„λ‘œκ·Έλž¨λ“€μ€ 컴퓨터 μžμ›μ„ κ³΅μœ ν•˜λŠ”λ° 이 μžμ›μ„ μ œμ–΄ν•˜λŠ” 방법이 λ°”λ‘œ ν”„λ‘œμ„ΈμŠ€μ΄λ‹€.

 

ν”„λ‘œμ„ΈμŠ€μ™€ κ΄€λ ¨λœ μš©μ–΄λŠ”

  • μ‹€ν–‰ 쀑인 ν”„λ‘œκ·Έλž¨
  • 비동기적 ν–‰μœ„ asynchronous
  • μ‹€ν–‰ 쀑인 ν”„λ‘œμ‹œμ Έ
  • μ‹€ν–‰ 쀑인 ν”„λ‘œμ‹œμ €μ˜ μ œμ–΄ 좔적
  • μš΄μ˜μ²΄μ œμ— λ“€μ–΄μžˆλŠ” ν”„λ‘œμ„Έμ„œ μ œμ–΄ 블둝 ^PCB^

 

이 쀑 κ°€μž₯ 일반적으둜 μ“°μ΄λŠ” ν”„λ‘œμ„ΈμŠ€μ˜ μ •μ˜λŠ” 싀행쀑인 ν”„λ‘œκ·Έλž¨μ΄λ‹€.

 

ν”„λ‘œμ„ΈμŠ€λŠ” ν”„λ‘œκ·Έλž¨μ΄ μ‹€ν–‰λ˜λ©΄ (점유 μ‹œκ°„, λ©”λͺ¨λ¦¬, 파일, μž…μΆœλ ₯μž₯치)λ“± μžμ›μ΄ ν•„μš”ν•œλ° ν”„λ‘œμ„ΈμŠ€λŠ” 이 μžμ›μ„ ν• λ‹Ήν•œλ‹€.

 

μΆ”κ°€μ μœΌλ‘œ PCλ‚˜ λ ˆμ§€μŠ€ν„°μ˜ λ‚΄μš©(ν”„λ‘œμ„Έμ„œμ˜ ν˜„μž¬ ν™œλ™)도 ν¬ν•¨λœλ‹€.

 

ν”„λ‘œκ·Έλž¨μ€ μ»΄νŒŒμΌν•œ μ½”λ“œμ™€ μ—¬λŸ¬ λ³€μˆ˜λ“€μ΄ λͺ¨μΈ 정적인 개체 μ΄μ§€λ§Œ, 반면 ν”„λ‘œμ„ΈμŠ€λŠ” λ©”λͺ¨λ¦¬ ꡬ쑰λ₯Ό 이루고 PCλ‚˜ λ ˆμ§€μŠ€ν„° 처럼 ν˜„μž¬ μ–΄λ–€ μžμ›μ„ μ‚¬μš©ν•˜λŠ” 동적인 κ°œμ²΄μ΄λ‹€.

 

ν”„λ‘œμ„ΈμŠ€μ˜ λ©”λͺ¨λ¦¬ ꡬ쑰

 

μŠ€νƒ

데이터λ₯Ό μΌμ‹œμ μœΌλ‘œ μ €μž₯ν•˜λŠ” μ˜μ—­μœΌλ‘œ 주둜 지역 λ³€μˆ˜, λ§€κ°œλ³€μˆ˜ 등이 μ‘΄μž¬ν•œλ‹€.
νž™κ³Ό μΈμ ‘ν•œ λ°©ν–₯으둜 점점 컀져 μŠ€νƒ 포인터와 νž™ 포인터가 λ§Œλ‚˜λ©΄ λ©”λͺ¨λ¦¬κ°€ μ†Œμ§„λ˜μ—ˆλ‹€λŠ” μ˜λ―Έμ΄λ‹€.

νž™

μ½”λ“œ μ˜μ—­κ³Ό λ³„λ„λ‘œ μœ μ§€λ˜λŠ” 자유 μ˜μ—­μ΄λ‹€.
C κ³„μ—΄μ˜ malloc()κ³Ό java κ³„μ—΄μ˜ new()와 같은 λ©”λͺ¨λ¦¬ ν• λ‹Ή, ν•΄μ œμ™€ 관련이 μžˆλ‹€.

데이터

ν”„λ‘œκ·Έλž¨μ˜ 가상 μ£Όμ†Œ 곡간이닀.
μ „μ—­ λ³€μˆ˜, 정적 λ³€μˆ˜λ₯Ό μ €μž₯ν•˜κ±°λ‚˜ ν• λ‹Ήν•˜λ©° μ‹€ν–‰ 전에 μ΄ˆκΈ°ν™”λ₯Ό ν•œλ‹€.

μ½”λ“œ

μ½”λ“œ 자체λ₯Ό κ΅¬μ„±ν•˜λŠ” λ©”λͺ¨λ¦¬ μ˜μ—­μœΌλ‘œ HexνŒŒμΌμ΄λ‚˜ BIN파일 λ©”λͺ¨λ¦¬λ‹€.
ν”„λ‘œκ·Έλž¨ λͺ…령이 μœ„μΉ˜ν•˜λŠ” 곳으둜 κΈ°κ³„μ–΄λ‘œ μ œμ–΄λ˜λŠ” λ©”λͺ¨λ¦¬ μ˜μ—­μ΄λ‹€.


μΆ”κ°€μ μœΌλ‘œ 같은 ν”„λ‘œκ·Έλž¨μ„ ν”„λ‘œμ„ΈμŠ€ 두 κ°œκ°€ μ‚¬μš©ν•œλ‹€κ³  ν•΄μ„œ ν”„λ‘œμ„ΈμŠ€ λ©”λͺ¨λ¦¬ ꡬ쑰λ₯Ό λ‹€λ₯΄κ²Œ μ‚¬μš©ν•œλ‹€λ©΄ μ„œλ‘œ λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€ 이닀.


ν”„λ‘œμ„ΈμŠ€μ˜ μ’…λ₯˜

 

ν”„λ‘œμ„ΈμŠ€μ˜ μ’…λ₯˜λŠ” μ—­ν• κ³Ό 병행 μˆ˜ν–‰ λ°©λ²•μœΌλ‘œ λ‚˜λ‰˜λŠ”λ°

 

μ—­ν• 
  • μ‹œμŠ€ν…œ(컀널) ν”„λ‘œμ„ΈμŠ€

    λͺ¨λ“  μ‹œμŠ€ν…œ λ©”λͺ¨λ¦¬μ™€ ν”„λ‘œμ„Έμ„œμ˜ λͺ…령에 μ•‘μ„ΈμŠ€ν•  수 μžˆλŠ” ν”„λ‘œμ„ΈμŠ€
    ν”„λ‘œμ„ΈμŠ€μ˜ μ‹€ν–‰ μˆœμ„œλ₯Ό μ œμ–΄ν•˜κ±°λ‚˜ μ‚¬μš©μž ν”„λ‘œμ„ΈμŠ€λ₯Ό 생성

  • μ‚¬μš©μž ν”„λ‘œμ„ΈμŠ€

    μ‚¬μš©μž μ½”λ“œλ₯Ό μˆ˜ν–‰ν•˜λŠ” ν”„λ‘œμ„ΈμŠ€

λ²™ν–‰ μˆ˜ν–‰ 방법
  • 독립 ν”„λ‘œμ„ΈμŠ€

    λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€μ— 영ν–₯을 주지 μ•Šκ±°λ‚˜ λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€μ˜ 영ν–₯을 받지 μ•ŠμœΌλ©΄μ„œ μˆ˜ν–‰ν•˜λŠ” 병행 ν”„λ‘œμ„ΈμŠ€

  • ν˜‘λ ₯ ν”„λ‘œμ„ΈμŠ€

    λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€μ— 영ν–₯을 μ£Όκ±°λ‚˜ λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€μ˜ 영ν–₯을 λ°›λŠ” 병행 ν”„λ‘œμ„ΈμŠ€

ν”„λ‘œμ„ΈμŠ€μ˜ μƒνƒœ 변화와 μƒνƒœ 정보

ν”„λ‘œμ„ΈμŠ€μ˜ μƒνƒœ λ³€ν™”

ν”„λ‘œμ„ΈμŠ€μ˜ μƒνƒœλŠ” 크게 μ‹€ν–‰ μƒνƒœ, λΉ„μ‹€ν–‰ μƒνƒœλ‘œ κ΅¬λΆ„λœλ‹€.

ν”„λ‘œμ„ΈμŠ€μ˜ μ‹€ν–‰ μƒνƒœμ™€ λΉ„μ‹€ν–‰ μƒνƒœλŠ” μ€€λΉ„, μ‹€ν–‰, λŒ€κΈ°λ‘œ ꡬ뢄될 수 있으며, ν”„λ‘œμ„ΈμŠ€λŠ” μ€€λΉ„, μ‹€ν–‰, λŒ€κΈ°λ‘œ λ³€ν™”ν•˜λ©΄μ„œ μ’…λ£Œκ°€ λœλ‹€.

  • μ€€λΉ„ -> μ‹€ν–‰

    μ€€λΉ„ 큐 맨 μ•žμ— 있던 ν”„λ‘œμ„ΈμŠ€κ°€ ν”„λ‘œμ„ΈμŠ€λ₯Ό 점유 ν•˜λŠ” 것.
    ν‘œκΈ°λ²•: Dispatch(ν”„λ‘œμ„ΈμŠ€ 이름)

  • μ‹€ν–‰ -> μ€€λΉ„

    ν”„λ‘œμ„ΈμŠ€κ°€ ν”„λ‘œμ„Έμ„œλ₯Ό λ…μ ν•˜μ§€ λͺ» ν•˜λ„λ‘ μΈν„°λŸ½νŠΈ 클둝^InterruptClock^ 을 두어 **νŠΉμ • μ‹œκ°„λ™μ•ˆλ§Œ(ν• λ‹Ήλœ μ‹œκ°„λ§ŒνΌλ§Œ) ν”„λ‘œμ„Έμ„œλ₯Ό μ μœ ν•˜κ²Œ ν•œλ‹€.
    ν‘œκΈ°λ²•: Timeout(ν”„λ‘œμ„ΈμŠ€ 이름)

  • μ‹€ν–‰ -> λŒ€κΈ°(보λ₯˜)

    ν• λ‹Ήλœ μ‹œκ°„ 이전에 μ‹€ν–‰μƒνƒœμ˜ ν”„λ‘œμ„ΈμŠ€μ— μž…μΆœλ ₯ μ—°μ‚° 등이 ν•„μš”ν•˜κ±°λ‚˜ μƒˆλ‘œμš΄ μžμ› μš”μ²­μ˜ 문제둜 ν”„λ‘œμ„Έμ„œλ₯Ό 슀슀둜 μ–‘λ„ν•˜λŠ” μƒνƒœ
    ν‘œκΈ°λ²•: block(ν”„λ‘œμ„ΈμŠ€ 이름)

  • λŒ€κΈ°(보λ₯˜) -> μ€€λΉ„

    block μƒνƒœμ˜ ν”„λ‘œμ„ΈμŠ€κ°€ μž…μΆœλ ₯ μž‘μ—…μ΄ λλ‚˜λ©΄ λŒ€κΈ°μ—μ„œ μ€€λΉ„ μƒνƒœκ°€ λœλ‹€.
    ν‘œκΈ°λ²•: wakeup(ν”„λ‘œμ„ΈμŠ€ 이름)

 

ν”„λ‘œμ„ΈμŠ€ μ œμ–΄ 블둝 PCB

μš΄μ˜μ²΄μ œκ°€ ν”„λ‘œμ„ΈμŠ€λ₯Ό μ œμ–΄ν•  λ•Œ ν”„λ‘œμ„ΈμŠ€μ˜ μƒνƒœ 정보λ₯Ό ν”„λ‘œμ„ΈμŠ€ μ œμ–΄ 블둝에 μ €μž₯ ν•œλ‹€.

ν”„λ‘œμ„ΈμŠ€κ°€ μƒμ„±λ˜λ©΄ ν”„λ‘œμ„ΈμŠ€ μ œμ–΄ 블둝을 생성
ν”„λ‘œμ„ΈμŠ€κ°€ μ’…λ£Œλ˜λ©΄ ν”„λ‘œμ„ΈμŠ€ μ œμ–΄ 블둝을 μ‚­μ œ

PCB λͺ¨λ“ˆ

  • ν”„λ‘œμ„ΈμŠ€ μ‹λ³„μž
  • ν”„λ‘œμ„ΈμŠ€ μƒνƒœ
  • ν”„λ‘œκ·Έλž¨ μΉ΄μš΄ν„°
  • λ ˆμ§€μŠ€ν„° μ €μž₯ μ˜μ—­
  • ν”„λ‘œμ„Έμ„œ μŠ€μΌ€μ₯΄λ§ 정보
  • 계정 정보
  • μž…μΆœλ ₯ μƒνƒœ 정보, λ©”λͺ¨λ¦¬ 관리 정보...
운영체제의 λͺ¨λ“  λͺ¨λ“ˆμ€ 이 정보λ₯Ό 읽고 μˆ˜μ •ν•  수 μžˆλ‹€.

λŒ“κΈ€