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

2020. 4. 23. 13:44Β·πŸ“ Computer Science/✏ OS

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

μ‹€ν–‰ 쀑인 ν”„λ‘œκ·Έλž¨μœΌλ‘œ λ””μŠ€ν¬λ‘œλΆ€ν„° 메인 λ©”λͺ¨λ¦¬μ— μ μž¬λ˜μ–΄ CPU의 할당을 받을 수 μžˆλŠ” 것이닀. μš΄μ˜μ²΄μ œλ‘œλΆ€ν„° μ£Όμ†Œ 곡간, 파일, λ©”λͺ¨λ¦¬ 등을 ν• λ‹Ήλ°›μœΌλ©° 이것듀을 μ΄μΉ­ν•˜μ—¬ ν”„λ‘œμ„ΈμŠ€λΌκ³  ν•œλ‹€.

 

1) ν”„λ‘œμ„ΈμŠ€ μ œμ–΄ 블둝(Process Control Block, PCB)

  • νŠΉμ • ν”„λ‘œμ„ΈμŠ€μ— λŒ€ν•œ μ€‘μš”ν•œ 정보(metadata)λ₯Ό μ €μž₯ν•˜κ³  μžˆλŠ” 운영체제의 μžλ£Œκ΅¬μ‘°μ΄λ‹€.
  • μ—°κ²° 리슀트λ₯Ό μ΄μš©ν•΄ 메인 λ©”λͺ¨λ¦¬μ—μ„œ κ΄€λ¦¬λ˜λ©° ν”„λ‘œμ„ΈμŠ€ 생성과 λ™μ‹œμ— κ³ μœ ν•œ PCBκ°€ μƒμ„±λ˜κ³  ν”„λ‘œμ„ΈμŠ€ μ™„λ£Œ μ‹œ μ œκ±°λœλ‹€.
  • CPU ν• λ‹Ή ν›„ μž‘μ—…μ„ ν•˜λ‹€κ°€ ν”„λ‘œμ„ΈμŠ€ μ „ν™˜(λ¬Έλ§₯ κ΅ν™˜)이 λ°œμƒν•˜λ©΄, PCB에 μ§„ν–‰ν•˜λ˜ μž‘μ—…μ„ λͺ¨λ‘ μ €μž₯ν•˜κ³  CPUλ₯Ό λ°˜ν™˜ν•œλ‹€. λ‹€μ‹œ CPUλ₯Ό ν• λ‹Ήλ°›κ²Œ 되면, PCB에 μ €μž₯된 λ‚΄μš©μ„ λΆˆλŸ¬μ™€ μ’…λ£Œλλ˜ μ‹œμ λΆ€ν„° λ‹€μ‹œ μž‘μ—…μ„ μˆ˜ν–‰ν•œλ‹€.

 

2) ν”„λ‘œμ„ΈμŠ€ 생성 κ³Όμ •

  1. PCBκ°€ μƒμ„±λ˜λ©° μš΄μ˜μ²΄μ œκ°€ μ‹€ν–‰ν•œ ν”„λ‘œκ·Έλž¨μ˜ μ½”λ“œλ₯Ό 읽어 λ©”λͺ¨λ¦¬μ˜ ν…μŠ€νŠΈ μ˜μ—­μ— μ €μž₯ν•œλ‹€.
  2. μ΄ˆκΈ°ν™”λœ μ „μ—­ λ³€μˆ˜μ™€ 정적 λ³€μˆ˜λ₯Ό 데이터 μ˜μ—­μ— μ €μž₯ν•œλ‹€.
  3. νž™κ³Ό μŠ€νƒμ€ 초기 λ©”λͺ¨λ¦¬ μ£Όμ†Œλ§Œ μ΄ˆκΈ°ν™”λœλ‹€.
  4. PCB에 μ—¬λŸ¬ 정보가 기둝되면 μ€€λΉ„ νμ—μ„œ CPU 할당을 λŒ€κΈ°ν•œλ‹€.

 

3) λ©€ν‹° ν”„λ‘œμ„ΈμŠ€

ν•œ 컴퓨터에 μ—¬λŸ¬ ν”„λ‘œμ„Έμ„œ(CPU)λ₯Ό μž₯μ°©ν•˜μ—¬ ν•˜λ‚˜ μ΄μƒμ˜ ν”„λ‘œμ„ΈμŠ€λ“€μ„ λ™μ‹œμ— 병렬 μ²˜λ¦¬ν•œλ‹€. μ•ˆμ „ν•˜μ§€λ§Œ 각각 λ…λ¦½λœ λ©”λͺ¨λ¦¬ μ˜μ—­μ„ κ°–κ³  μžˆμ–΄ μž‘μ—…λŸ‰μ΄ λ§Žμ„μˆ˜λ‘ μ˜€λ²„ν—€λ“œκ°€ λ°œμƒν•˜κ³  λ¬Έλ§₯ κ΅ν™˜μœΌλ‘œ μΈν•œ μ„±λŠ₯ μ €ν•˜ λ°œμƒν•œλ‹€.

 

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

ν”„λ‘œμ„ΈμŠ€λ³΄λ‹€ μž‘μ€ λ‹¨μœ„λ‘œ ν•œ ν”„λ‘œμ„ΈμŠ€ λ‚΄μ—μ„œ λ™μž‘ν•˜λŠ” μ—¬λŸ¬ μ‹€ν–‰ 흐름 λ‹¨μœ„μ΄λ‹€.

 

1) λ©€ν‹° μŠ€λ ˆλ“œ

ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€λ₯Ό λ‹€μˆ˜μ˜ μ‹€ν–‰ λ‹¨μœ„λ‘œ κ΅¬λΆ„ν•œ 것이닀. 같은 ν”„λ‘œμ„ΈμŠ€ λ‚΄μ˜ λ‹€λ₯Έ μŠ€λ ˆλ“œμ™€ μ½”λ“œ μ˜μ—­, 데이터 μ˜μ—­, μ—΄λ¦° νŒŒμΌμ΄λ‚˜ μ‹ ν˜Έμ™€ 같은 운영체제 μžμ›λ“€μ„ κ³΅μœ ν•˜κ³  μžμ›μ˜ 생성과 κ΄€λ¦¬μ˜ 쀑볡성을 μ΅œμ†Œν™”ν•˜μ—¬ μˆ˜ν–‰ λŠ₯λ ₯을 ν–₯μƒν•œλ‹€. κ·ΈλŸ¬λ‚˜ μžμ›μ„ κ³΅μœ ν•˜λ―€λ‘œ 동기화λ₯Ό 톡해 μŠ€λ ˆλ“œμ˜ μž‘μ—… 처리 μˆœμ„œμ™€ 곡유 μžμ›μ— λŒ€ν•œ 접근을 μ œμ–΄ν•΄μ•Ό ν•œλ‹€.

 

μ‹±κΈ€ μŠ€λ ˆλ“œμ™€ λ©€ν‹° μŠ€λ ˆλ“œ

 

각각의 μŠ€λ ˆλ“œλŠ” 독립적인 μž‘μ—…μ„ μˆ˜ν–‰ν•΄μ•Ό ν•˜κΈ° λ•Œλ¬Έμ— 각자의 μŠ€νƒκ³Ό λ ˆμ§€μŠ€ν„°λ₯Ό κ°–κ³  μžˆλ‹€.

  • μŠ€νƒμ„ λ…λ¦½μ μœΌλ‘œ ν• λ‹Ήν•˜λŠ” 이유? μŠ€νƒμ€ ν•¨μˆ˜ 호좜 μ‹œ μ „λ‹¬λ˜λŠ” 인자, λ˜λŒμ•„κ°ˆ μ£Όμ†Œ κ°’ 및 ν•¨μˆ˜ λ‚΄μ—μ„œ μ„ μ–Έν•˜λŠ” λ³€μˆ˜ 등을 μ €μž₯ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λ˜λŠ” λ©”λͺ¨λ¦¬ κ³΅κ°„μ΄λ―€λ‘œ μŠ€νƒ λ©”λͺ¨λ¦¬ 곡간이 λ…λ¦½μ μ΄λΌλŠ” 것은 독립적인 ν•¨μˆ˜ 호좜이 κ°€λŠ₯ν•˜λ‹€λŠ” 것이고 μ΄λŠ” 독립적인 μ‹€ν–‰ 흐름이 κ°€λŠ₯ν•˜κ²Œ ν•œλ‹€.
  • λ ˆμ§€μŠ€ν„°λ₯Ό λ…λ¦½μ μœΌλ‘œ ν• λ‹Ήν•˜λŠ” 이유? μŠ€λ ˆλ“œλŠ” CPUλ₯Ό ν• λ‹Ήλ°›μ•˜λ‹€κ°€ μŠ€μΌ€μ€„λŸ¬μ— μ˜ν•΄ μ„ μ λ‹Ήν•œλ‹€. κ·Έλ ‡κΈ° λ•Œλ¬Έμ— λͺ…λ Ήμ–΄κ°€ μ—°μ†μ μœΌλ‘œ μˆ˜ν–‰λ˜μ§€ λͺ»ν•˜κ³  μ–΄λŠ λΆ€λΆ„κΉŒμ§€ μˆ˜ν–‰ν–ˆλŠ”μ§€ κΈ°μ–΅ν•  ν•„μš”κ°€ μžˆλ‹€. λ ˆμ§€μŠ€ν„°λŠ” μŠ€λ ˆλ“œκ°€ λͺ…λ Ήμ–΄μ˜ μˆ˜ν–‰λœ 정도λ₯Ό λ‚˜νƒ€λ‚Έλ‹€.

 

2) μŠ€λ ˆλ“œ μˆ˜μ™€ Throughput의 관계

μŠ€λ ˆλ“œκ°€ 증가함에 따라 μ΄ˆλ°˜μ—λŠ” Throughputκ°€ λΉ„λ‘€ν•΄μ„œ μ¦κ°€ν•œλ‹€. λ°˜λ©΄ 일정 μˆ˜μ€€ 이상이 되면 였히렀 Throughputκ°€ κ°μ†Œν•˜λŠ”λ° μž„κ³„κ°’μ„ λ„˜κΈ°κ²Œ 되면 λ¬Έλ§₯ κ΅ν™˜ λΉ„μš©μ΄ μ¦κ°€ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€.

 

μŠ€λ ˆλ“œ μˆ˜μ™€ Throughput의 관계

 

3) μŠ€λ ˆλ“œ ν’€(Thread Pool)

μ‹œμŠ€ν…œμ˜ λ™μž‘μ„ 보μž₯ν•˜λŠ” μ΅œλŒ€ν•œμ˜ μŠ€λ ˆλ“œ μˆ˜μ— λŒ€ν•œ μ œν•œμ΄λ‹€. μŠ€λ ˆλ“œ 풀을 λ§Œλ“€μ–΄μ„œ ν”„λ‘œμ„ΈμŠ€κ°€ μƒˆλ‘œ 싀행될 λ•Œ μ •ν•΄μ§„ 수만큼 μŠ€λ ˆλ“œλ₯Ό λ§Œλ“€κ³  풀에 ν• λ‹Ήν•œλ‹€. μŠ€λ ˆλ“œκ°€ 자주 μƒμ„±λ˜κ³  μ œκ±°λ˜λŠ” μƒν™©μ—μ„œ μƒˆλ‘œ μŠ€λ ˆλ“œλ₯Ό λ§Œλ“œλŠ” μ‹œκ°„μ΄ μ‹€μ œ μŠ€λ ˆλ“œκ°€ λ™μž‘ν•˜λŠ” μ‹œκ°„λ³΄λ‹€ κΈΈμ–΄μ§ˆ λ•Œ μ‚¬μš©ν•œλ‹€.

 

3. ν”„λ‘œμ„ΈμŠ€ vs μŠ€λ ˆλ“œ

  • λ©€ν‹° ν”„λ‘œμ„ΈμŠ€: 독립적인 λ‹€μˆ˜μ˜ ν”„λ‘œμ„ΈμŠ€λ‘œ λ©”λͺ¨λ¦¬ 곡간을 κ³΅μœ ν•˜μ§€ μ•ŠλŠ”λ‹€.
    • μž₯점: ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€κ°€ 죽더라도 λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€μ— 영ν–₯을 λΌμΉ˜μ§€ μ•Šκ³  μ •μƒμ μœΌλ‘œ μˆ˜ν–‰λ  수 μžˆλ‹€.
    • 단점: λ©€ν‹° μŠ€λ ˆλ“œλ³΄λ‹€ λ§Žμ€ λ©”λͺ¨λ¦¬ 곡간과 CPU μ‹œκ°„μ„ μ°¨μ§€ν•œλ‹€.
  • λ©€ν‹° μŠ€λ ˆλ“œ: ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€ μ•ˆμ˜ λ‹€μˆ˜μ˜ μŠ€λ ˆλ“œλ‘œ μŠ€νƒκ³Ό λ ˆμ§€μŠ€ν„°λ₯Ό μ œμ™Έν•œ λ©”λͺ¨λ¦¬ 곡간을 κ³΅μœ ν•œλ‹€.
    • μž₯점: λ©€ν‹° ν”„λ‘œμ„ΈμŠ€λ³΄λ‹€ 적은 λ©”λͺ¨λ¦¬ 곡간을 μ°¨μ§€ν•˜κ³  λ¬Έλ§₯ κ΅ν™˜μ΄ λΉ λ₯΄λ‹€.
    • 단점: 였λ₯˜λ‘œ 인해 ν•˜λ‚˜μ˜ μŠ€λ ˆλ“œκ°€ μ’…λ£Œλ˜λ©΄ 전체 μŠ€λ ˆλ“œκ°€ μ’…λ£Œλ  수 있고 곡유 μžμ›μœΌλ‘œ μΈν•œ 동기화 μ²˜λ¦¬κ°€ ν•„μš”ν•˜λ‹€.

 

1) λ©€ν‹° ν”„λ‘œμ„ΈμŠ€ λŒ€μ‹  λ©€ν‹° μŠ€λ ˆλ“œλ₯Ό μ‚¬μš©ν•˜λŠ” 이유?

  • ν”„λ‘œμ„ΈμŠ€λ₯Ό μƒμ„±ν•˜μ—¬ μžμ›μ„ ν• λ‹Ήν•˜λŠ” μ‹œμŠ€ν…œ 콜이 κ°μ†Œν•˜μ—¬ μžμ›μ˜ 효율적 관리가 κ°€λŠ₯ν•˜λ‹€.
  • ν”„λ‘œμ„ΈμŠ€ κ°„ 톡신(IPC)보닀 μŠ€λ ˆλ“œ κ°„ 톡신 λΉ„μš©μ΄ 적어 μž‘μ—…λ“€ κ°„ 뢀담이 κ°μ†Œν•œλ‹€.
  • λ¬Έλ§₯ κ΅ν™˜ μ‹œ μŠ€λ ˆλ“œλŠ” μŠ€νƒκ³Ό λ ˆμ§€μŠ€ν„° μ˜μ—­λ§Œ λ³€κ²½ν•˜λ©΄ λ˜λ―€λ‘œ ν”„λ‘œμ„ΈμŠ€λ³΄λ‹€ λΉ„μš©μ΄ 적게 λ“ λ‹€.

 

2) λ¬Έλ§₯ κ΅ν™˜(Context Switching)

ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€κ°€ CPUλ₯Ό μ‚¬μš© 쀑인 μƒνƒœμ—μ„œ λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€μ—κ²Œ CPUλ₯Ό ν• λ‹Ήν•˜κΈ° μœ„ν•΄ μ΄μ „ ν”„λ‘œμ„ΈμŠ€μ˜ μƒνƒœλ₯Ό λ³΄κ΄€ν•˜κ³  μƒˆλ‘œμš΄ ν”„λ‘œμ„ΈμŠ€ 정보λ₯Ό μ μž¬ν•˜λŠ” μž‘μ—…μœΌλ‘œ λ³΄ν†΅ μΈν„°λŸ½νŠΈκ°€ λ°œμƒν•˜κ±°λ‚˜ μ‹€ν–‰ 쀑인 CPU μ‚¬μš© ν—ˆκ°€μ‹œκ°„μ„ λͺ¨λ‘ μ†Œλͺ¨ν•˜κ±°λ‚˜ μž…μΆœλ ₯을 μœ„ν•΄ λŒ€κΈ°ν•΄μ•Ό ν•˜λŠ” κ²½μš°μ— λ°œμƒν•œλ‹€.

'πŸ“ Computer Science/✏ OS' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • ν”„λ‘œμ„ΈμŠ€ 동기화
  • ν”„λ‘œμ„ΈμŠ€ μŠ€μΌ€μ€„λŸ¬
  • ν”„λ‘œμ„ΈμŠ€ μ£Όμ†Œ 곡간과 κΈ°μ–΅ 클래슀
  • 컴퓨터 μ‹œμŠ€ν…œμ˜ ꡬ성
Blxxming
Blxxming
CS 지식과 κ³΅λΆ€ν•˜λ‹€ 배운 것, κ²½ν—˜ν•œ 것 등을 κΈ°λ‘ν•˜λŠ” λΈ”λ‘œκ·Έμž…λ‹ˆλ‹€.
  • Blxxming
    πŸ’‘λ²ˆλœ©πŸ’‘
    Blxxming
  • 전체
    였늘
    μ–΄μ œ
  • 곡지사항

    • Tech Interview
    • πŸ“š Tech (246)
      • πŸ“ Computer Science (96)
        • ✏ OS (12)
        • ✏ Network & Web (10)
        • ✏ Database (11)
        • ✏ Data Structure (6)
        • ✏ Algorithm (40)
        • ✏ Design Pattern (9)
        • ✏ Cloud Computing (3)
        • ✏ (5)
      • πŸ“ Language (73)
        • ✏ Language (6)
        • ✏ C & C++ (11)
        • ✏ C# (19)
        • ✏ JAVA (37)
      • πŸ“ Game (43)
        • ✏ Computer Graphics (2)
        • ✏ Unity (14)
        • ✏ Unreal (26)
        • ✏ (1)
      • πŸ“ Book (34)
        • ✏ Effective (3)
        • ✏ Game Server (16)
        • ✏ Clean Code (14)
        • ✏ (1)
  • hELLOΒ· Designed Byμ •μƒμš°.v4.10.0
Blxxming
ν”„λ‘œμ„ΈμŠ€μ™€ μŠ€λ ˆλ“œ
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”