πŸ“ƒ 운영체제

JeongMinΒ·2023λ…„ 9μ›” 15일
0
post-thumbnail

운영체제

  • μš΄μ˜μ²΄μ œλŠ” μ‚¬μš©μžκ°€ 컴퓨터λ₯Ό μ‚¬μš©ν•˜κΈ° μœ„ν•΄ ν•„μš”ν•œ μ†Œν”„νŠΈ 웨어이닀.
  • μ»΄ν“¨ν„°μ—μ„œ μ‹€ν–‰λ˜λŠ” λͺ¨λ“  ν”„λ‘œκ·Έλž¨μ€ μš΄μ˜μ²΄μ œμ—μ„œ κ΄€λ¦¬ν•˜κ³  μ œμ–΄ν•œλ‹€.
  • λŒ€ν‘œμ μΈ μš΄μ˜μ²΄μ œλŠ” Windows, Linux, Mac, iOS등이 μžˆλ‹€.
  • μžμ›μ„ 효율적으둜 κ΄€λ¦¬ν•˜κΈ° μœ„ν•΄ μžμ›μ˜ μŠ€μΌ€μ₯΄λ§ κΈ°λŠ₯을 μ œκ³΅ν•œλ‹€.
  • ν”„λ‘œμ„Έμ„œ, κΈ°μ–΅μž₯치, μž…μΆœλ ₯μž₯치, 파일 및 μ •λ³΄λ“±μ˜ μžμ›μ„ κ΄€λ¦¬ν•œλ‹€.
  • μ‚¬μš©μžμ™€ μ‹œμŠ€ν…œκ°„μ˜ νŽΈλ¦¬ν•œ μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ œκ³΅ν•œλ‹€.

닀쀑 ν”„λ‘œκ·Έλž˜λ° μ‹œμŠ€ν…œ (multi-programming system)

  • 닀쀑 ν”„λ‘œκ·Έλž˜λ°μ€ CPU μž‘μ—…κ³Ό μž…μΆœλ ₯ μž‘μ—…μ„ λ³‘ν–‰ν•˜μ—¬ CPU 이용과 μ²˜λ¦¬λŸ‰μ„ ν–₯μƒμ‹œν‚¬ 수 μžˆλ‹€.
  • ν•œ λ²ˆμ— μ—¬λŸ¬ 개의 ν”„λ‘œκ·Έλž¨μ„ λ™μ‹œμ— 돌렀 μ΅œλŒ€ν•œ CPUλ₯Ό 많이 ν™œμš©ν•˜λŠ” 것이닀.
  • μ‹œμŠ€ν…œμ— λ“€μ–΄μ˜€λŠ” λͺ¨λ“  μž‘μ—…μ€ λ””μŠ€ν¬μ˜ μž‘μ—… 풀에 μ μž¬λœλ‹€. ν”„λ‘œμ„Έμ„œκ°€ μž…μΆœλ ₯ μž‘μ—…μ˜ μ’…λ£Œλ₯Ό λŒ€κΈ°ν•  λ™μ•ˆ ν•˜λ‚˜μ˜ ν”„λ‘œμ„Έμ„œμ—μ„œ λ‹€λ₯Έ ν”„λ‘œκ·Έλž¨μ„ μˆ˜ν–‰ν•  수 μžˆλ„λ‘ ν•˜λŠ” 것이 닀쀑 ν”„λ‘œκ·Έλž˜λ°μ΄λ‹€.

μ‹œλΆ„ν•  μ‹œμŠ€ν…œ

  • μ‹œλΆ„ν•  μ‹œμŠ€ν…œμ€ νŠΉμ • μ‹œκ°„μ„ μ •ν•΄μ„œ κ·Έ μ‹œκ°„μ΄ μ§€λ‚˜λ©΄ λ‹€μŒ μž‘μ—…μ„ μ‹€ν–‰ν•˜λŠ” 방식이닀.
  • 이 μ‹œκ°„μ€ 맀우 짧기 λ•Œλ¬Έμ— μ‚¬μš©μžμ™€ μ»΄ν“¨ν„°λŠ” μƒν˜Έ μž‘μš©ν•  수 μžˆμ–΄ λŒ€ν™”ν˜• 컴퓨터 μ‹œμŠ€ν…œμ΄λΌκ³  ν•œλ‹€.
  • 닀쀑 μ‚¬μš©μž ν™˜κ²½μ—μ„œ 닀쀑 ν”„λ‘œκ·Έλž˜λ° 기반으둜 λ™μž‘ν•˜λŠ” μ‹œμŠ€ν…œμ΄λ‹€.
  • μ—¬λŸ¬ μ‚¬μš©μžκ°€ λ™μ‹œμ— 컴퓨터λ₯Ό μ‚¬μš©ν•˜μ—¬ μ£Ό κΈ°μ–΅μž₯치의 μš©λŸ‰μ΄ λΆ€μ‘±ν•  λ•Œ 가상 λ©”λͺ¨λ¦¬λ₯Ό μ‚¬μš©ν•œλ‹€.

    λŒ€ν™”ν˜• μ‹œμŠ€ν…œ(interactive system)은 μ‚¬μš©μžμ˜ μž…λ ₯에 λŒ€ν•΄μ„œ μ»΄ν“¨ν„°μ—μ„œ κ²°κ³Όλ₯Ό λ°”λ‘œ 좜λ ₯ν•˜λŠ” 것이닀. λŒ€λΆ€λΆ„μ˜ μš΄μ˜μ²΄μ œλŠ” λŒ€ν™”ν˜• μ‹œμŠ€ν…œμ΄λ‹€.


컀널

  • 컀널은 운영체제의 핡심 λΆ€λΆ„μœΌλ‘œμ¨ ν•˜λ“œμ›¨μ–΄μ™€ μ‘μš© ν”„λ‘œκ·Έλž¨ μ‚¬μ΄μ—μ„œ μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ œκ³΅ν•˜λŠ” 역할을 ν•˜λ©° 컴퓨터 μžμ›λ“€μ„ κ΄€λ¦¬ν•˜λŠ” 역할을 ν•œλ‹€.
  • 컀널은 λ©”λͺ¨λ¦¬ 관리, 파일 μ‹œμŠ€ν…œ, ν”„λ‘œλ ˆμŠ€ 관리, λ””λ°”μ΄μŠ€ μ œμ–΄ λ“±μ˜ 역할을 μˆ˜ν–‰ν•œλ‹€.

컀널 λͺ¨λ“œ

  • 컀널 λͺ¨λ“œλŠ” 운영체제 μ„œλΉ„μŠ€λ₯Ό μ œκ³΅λ°›μ„ 수 μžˆλŠ” μ‹€ν–‰λͺ¨λ“œμ΄λ‹€.
  • CPUκ°€ 컀널 λͺ¨λ“œλ‘œ λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰ν•˜λ©΄ μžμ›μ— μ ‘κ·Όν•˜λŠ” λͺ…λ Ήμ–΄λ₯Ό λΉ„λ‘―ν•œ λͺ¨λ“  λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰ν•  수 μžˆλ‹€.

μœ μ € λͺ¨λ“œ

  • μœ μ € λͺ¨λ“œλŠ” 운영체제 μ„œλΉ„μŠ€λ₯Ό μ œκ³΅λ°›μ„ 수 μ—†λŠ” μ‹€ν–‰λͺ¨λ“œμ΄λ‹€.
  • 일반적인 μ‘μš© ν”„λ‘œκ·Έλž¨μ€ μ‚¬μš©μž λͺ¨λ“œλ‘œ μ‹€ν–‰λœλ‹€.
  • CPUλŠ” μž…μΆœλ ₯ λͺ…령어와 같이 ν•˜λ“œμ›¨μ–΄ μžμ›μ— μ ‘κ·Όν•˜λŠ” λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰ν•  수 μ—†λ‹€.
  • μ‚¬μš©μž λͺ¨λ“œλ‘œ μ‹€ν–‰λ˜λŠ” μΌλ°˜μ μ€ μ‘μš© ν”„λ‘œκ·Έλž¨μ€ μžμ›μ— μ ‘κ·Όν•  수 μ—†λ‹€.

μ‹œμŠ€ν…œ 콜

  • μ‚¬μš©μž λͺ¨λ“œλ‘œ μ‹€ν–‰λ˜λŠ” ν”„λ‘œκ·Έλž¨μ΄ μžμ›μ— μ ‘κ·Όν•˜λŠ” 운영체제 μ„œλΉ„μŠ€λ₯Ό μ œκ³΅λ°›κΈ° μœ„ν•΄μ„œ μš΄μ˜μ²΄μ œμ— μš”μ²­μ„ 보내 컀널 λͺ¨λ“œλ‘œ μ „ν™˜λ˜μ–΄μ•Ό ν•œλ‹€. μžμ›μ— μ ‘κ·Όν•˜κΈ° μœ„ν•œ μš”μ²­μ„ μ‹œμŠ€ν…œ 콜이라고 ν•œλ‹€.

μΈν„°λŸ½νŠΈ

  • μ£Όλ³€ μž₯μΉ˜λ“€μ˜ μž…μΆœλ ₯μ΄λ‚˜ ν•˜λ“œμ›¨μ–΄ 문제, ν”„λ‘œκ·Έλž¨μ—μ„œ μ˜ˆμ™Έ 등이 λ°œμƒν–ˆμ„ λ•Œ CPUμ—κ²Œ μ•Œλ €μ£ΌλŠ” 방식이닀.

  • CPUλŠ” IRQ(Interrupt Request) Line을 가지고 μžˆλŠ”λ° ν•˜λ“œμ›¨μ–΄ μž₯μΉ˜λ‚˜ λ‹€λ₯Έ λΆ€λΆ„μ—μ„œ μ΄λ²€νŠΈκ°€ λ°œμƒν•  경우 이벀트λ₯Ό CPU에 μ•Œλ¦¬κΈ° μœ„ν•΄ IRQ Line을 ν™œμ„±ν™”ν•œλ‹€.

  • μ‹ ν˜Έλ₯Ό 보내면 CPUλŠ” ν•˜λ˜ μž‘μ—…μ„ λ©ˆμΆ”κ³  μž‘μ—… λ‚΄μš©μ„ Context에 잠깐 μ €μž₯ν•œ μƒνƒœλ‘œ Interrupt handling을 ν•˜κ²Œ λœλ‹€.

폴링

  • ν΄λ§μ΄λž€ CPUκ°€ 계속 μž…μΆœλ ₯에 λŒ€ν•œ μƒνƒœλ₯Ό ν™•μΈν•˜κ³  μž…μΆœλ ₯ λͺ…령을 λ§Œλ‚˜λ©΄ μž…μΆœλ ₯ μž₯μΉ˜μ—μ„œ 데이터λ₯Ό κ°€μ Έμ˜€λŠ” 방식이닀.
  • μž…μΆœλ ₯이 μ²˜λ¦¬λ˜λŠ” λ™μ•ˆ κΈ°λ‹€λ €μ•Ό ν•˜λŠ”λ°(CPUκ°€ 버퍼λ₯Ό 확인) μ‹œκ°„μ΄ 였래 걸리며 효율이 떨어진닀.

DMA

  • λ§Žμ€ μΈν„°λŸ½νŠΈλŠ” μ˜€λ²„ν—€λ“œλ₯Ό μ΄ˆλž˜ν•  수 있기 λ•Œλ¬Έμ— μž¦μ€ μΈν„°λŸ½νŠΈλ₯Ό λ°©μ§€ν•˜κΈ° μœ„ν•΄ DMA(Direct Memory Access)λ₯Ό μ‚¬μš©ν•œλ‹€.
  • DMA Controllerλ₯Ό ν†΅ν•΄μ„œ CPU와 λ©”λͺ¨λ¦¬ 간에 데이터λ₯Ό 직접 전솑할 수 μžˆλ‹€.
  • CPU의 κ°œμž… 없이 데이터λ₯Ό 전솑할 수 μžˆμ–΄ μ‹œμŠ€ν…œμ˜ μ²˜λ¦¬λŸ‰μ„ ν–₯μƒμ‹œν‚¬ 수 μžˆλ‹€. (CPUκ°€ 전솑 X)

동기식 I/O

ν•¨μˆ˜κ°€ 2개 μžˆλ‹€κ³  κ°€μ •ν•˜κ³  ν•˜λ‚˜μ˜ ν•¨μˆ˜κ°€ λ‹€λ₯Έ ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜κ³  μžˆλŠ” 상황이닀.

  • ν˜„μž¬ μž‘μ—…μ˜ μš”μ²­μ΄ μ „λΆ€ μ™„λ£Œν•˜μ—¬ 응닡을 λ¦¬ν„΄ν•œ 후에 λ‹€μŒ μž‘μ—…μ΄ κ°€λŠ₯ν•˜λ‹€.
  • λ™κΈ°λŠ” μ²˜λ¦¬λ˜λŠ” μž‘μ—…μ˜ μš”μ²­κ³Ό κ²°κ³Όκ°€ ν•œ μžλ¦¬μ—μ„œ μΌμ–΄λ‚œλ‹€.
  • λ™κΈ°λŠ” ν˜ΈμΆœν•˜λŠ” ν•¨μˆ˜κ°€ 호좜된 ν•¨μˆ˜μ˜ μž‘μ—…μ΄ μ™„λ£Œλ˜μ—ˆλŠ”μ§€λ₯Ό 계속 ν™•μΈν•œλ‹€. (순차적)

비동기식 I/O

동기식 I/O와 λ™μΌν•œ 2개의 ν•¨μˆ˜κ°€ μžˆλ‹€κ³  κ°€μ •ν•œλ‹€.

  • λΉ„λ™κΈ°λŠ” ν˜ΈμΆœν•˜λŠ” ν•¨μˆ˜κ°€ 호좜된 ν•¨μˆ˜μ˜ μž‘μ—… μ™„λ£Œ μ—¬λΆ€λ₯Ό ν™•μΈν•˜μ§€ μ•ŠλŠ”λ‹€.
  • ν˜ΈμΆœν•˜λŠ” ν•¨μˆ˜λŠ” ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•  λ•Œ, 콜백 ν•¨μˆ˜λ₯Ό 같이 μ „λ‹¬ν•˜κ³  μž‘μ—…μ΄ μ™„λ£Œλ˜λ©΄ 콜백 ν•¨μˆ˜κ°€ μ‹€ν–‰λœλ‹€.
  • 호좜된 ν•¨μˆ˜κ°€ μˆ˜ν–‰ 결과와 μ’…λ£Œλ₯Ό 직접 ν™•μΈν•˜κ³  μ²˜λ¦¬ν•œλ‹€. (λΉ„μˆœμ°¨μ )

0개의 λŒ“κΈ€