1.4 운영체제의 ꡬ쑰


Multiprogramming

λ©€ν‹° ν”„λ‘œκ·Έλž˜λ°μ€ CPUκ°€ μˆ˜ν–‰ν•  μž‘μ—…(μ½”λ“œμ™€ 데이터)을 항상 ν•˜λ‚˜ 가지도둝 μž‘μ—…μ„ κ΅¬μ„±ν•˜μ—¬ CPU 이용λ₯ μ„ μ¦κ°€μ‹œν‚¨λ‹€. 즉, μ—¬λŸ¬ ν”„λ‘œκ·Έλž¨μ„ λ©”λͺ¨λ¦¬μ— λ‘œλ“œν•˜κ³  ν•œ ν”„λ‘œμ„ΈμŠ€(ex.IO)λ₯Ό κΈ°λ‹€λ¦¬λŠ” λ™μ•ˆ λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€μ˜ μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” μ‹œμŠ€ν…œμ΄λ‹€.

λ©€ν‹° ν”„λ‘œκ·Έλž˜λ°μ˜ μ•„μ΄λ””μ–΄λŠ” λ‹€μŒκ³Ό κ°™λ‹€. OSλŠ” ν•œ λ²ˆμ— μ—¬λŸ¬ μž‘μ—…μ„ λ©”λͺ¨λ¦¬μ— μ μž¬ν•œλ‹€. 이 μž‘μ—…μ€ μ²˜μŒμ— λ””μŠ€ν¬μ˜ μž‘μ—… ν’€(pool)에 μœ μ§€λ˜μ–΄ 메인 λ©”λͺ¨λ¦¬μ˜ 할당을 κΈ°λ‹€λ¦°λ‹€. Job scheduling에 μ˜ν•΄ ν•˜λ‚˜μ˜ μž‘μ—…μ΄ μ„ νƒλ˜κ³  μ‹€ν–‰λœλ‹€. μ„ νƒλœ μž‘μ—…μ€ μž…μΆœλ ₯의 μ’…λ£Œλ₯Ό κΈ°λ‹€λ¦¬λŠ” λ“±κ³Ό 같이 μ–΄λ–€ 일을 κΈ°λ‹€λ €μ•Ό ν•  λ•Œ λ‹€λ₯Έ μž‘μ—…μœΌλ‘œ μ „ν™˜ν•΄ μž‘μ—…μ„ μˆ˜ν–‰ν•¨μœΌλ‘œμ¨ CPUκ°€ 쉬지 μ•Šκ²Œ ν•œλ‹€.

  • Multiprogramming: OS ꡬ쑰
  • Multiprocessing: 컴퓨터 ꡬ쑰

TimeSharing(multitasking)

μ‹œλΆ„ν•  μ‹œμŠ€ν…œμ€ λ©€ν‹° ν”„λ‘œκ·Έλž˜λ°μ˜ ν™•μž₯으둜, ν”„λ‘œμ„ΈμŠ€λ§ˆλ‹€ μž‘μ—… μ‹œκ°„μ„ 정해두고 λ²ˆκ°ˆμ•„κ°€λ©΄μ„œ μž‘μ—…ν•˜λŠ” 방식이닀. CPUκ°€ λ‹€μˆ˜μ˜ μž‘μ—…μ„ κ΅λŒ€λ‘œ μˆ˜ν–‰ν•˜μ§€λ§Œ, 맀우 λΉˆλ²ˆν•˜κ²Œ κ΅λŒ€κ°€ μΌμ–΄λ‚˜ ν”„λ‘œκ·Έλž¨μ΄ μ‹€ν–‰λ˜λŠ” λ™μ•ˆ μ‚¬μš©μžλŠ” λ™μ‹œμ— μž‘μš©ν•˜λŠ” κ²ƒμ²˜λŸΌ λŠλ‚€λ‹€. ν”„λ‘œμ„ΈμŠ€λŠ” λ©”λͺ¨λ¦¬μ— μ μž¬λ˜μ–΄ 있고, μ‹€ν–‰λ˜κ³  μžˆλŠ” ν”„λ‘œκ·Έλž¨μ„ λœ»ν•˜λ©° μžμ‹ μ΄ μ’…λ£Œλ˜κ±°λ‚˜ μž…μΆœλ ₯을 μˆ˜ν–‰ν•  ν•„μš”κ°€ μžˆμ„ λ•ŒκΉŒμ§€ μ•„μ£Ό 짧은 μ‹œκ°„ λ™μ•ˆλ§Œ μ‹€ν–‰λœλ‹€.

μ‚¬μš©μžλŠ” ν‚€λ³΄λ“œλ‚˜ 마우슀 같은 μž…λ ₯μž₯치λ₯Ό μ΄μš©ν•΄ λͺ…λ Ήν•˜κ³  좜λ ₯ μž₯치의 즉각적인 응닡을 기닀리기 λ•Œλ¬Έμ— μ‘λ‹΅μ‹œκ°„(Response Time)이 짧아야 ν•œλ‹€. μ‹œλΆ„ν•  μ‹œμŠ€ν…œμ—μ„œ λ™μž‘κ³Ό λͺ…령은 λŒ€μ²΄λ‘œ 짧기 λ•Œλ¬Έμ— 짧은 μ‹œκ°„λ™μ•ˆλ§Œ CPU μ‹œκ°„μ΄ ν•„μš”ν•˜λ‹€. μ μ ˆν•œ μ‘λ‹΅μ‹œκ°„μ€ μŠ€μ™€ν•‘μ— μ˜ν•΄ λ‹¬μ„±λ˜λŠ”λ°, μŠ€μ™€ν•‘μ€ μ£Ό λ©”λͺ¨λ¦¬μ—μ„œ λ””μŠ€ν¬λ‘œ μ μ ˆν•˜κ²Œ μŠ€μ™‘μΈ, μŠ€μ™‘μ•„μ›ƒ μ‹œν‚¨λ‹€. μ‘λ‹΅μ‹œκ°„μ„ 더 ν•©λ¦¬μ μœΌλ‘œ 보μž₯ν•˜κΈ° μœ„ν•΄ 가상메λͺ¨λ¦¬(Virtual Memory) λ₯Ό μ‚¬μš©ν•œλ‹€. ν”„λ‘œκ·Έλž¨μ΄ μ‹€μ œλ©”λͺ¨λ¦¬(Physical Mememory)보닀 크기가 더 컀도 되며 9μž₯μ—μ„œ 닀룬닀.

  • μ‹œλΆ„ν•  μ‹œμŠ€ν…œμ—μ„œ 파일 μ‹œμŠ€ν…œμ€ λ‹€μˆ˜μ˜ λ””μŠ€ν¬ 상에 μ‘΄μž¬ν•˜λ―€λ‘œ, λ””μŠ€ν¬ 관리 기법이 λ°˜λ“œμ‹œ μ œκ³΅λ˜μ–΄μ•Όν•¨(12μž₯)
  • μžμ›μ„ λ³΄ν˜Έν•˜λŠ” 기법을 μ œκ³΅ν•΄μ•Ό 함(14μž₯)
  • μž‘μ—…μ΄ μ§ˆμ„œμ •μ—°ν•˜κ²Œ μ‹€ν–‰λ˜κΈ° μœ„ν•΄ μ‹œλΆ„ν•  μ‹œμŠ€ν…œμ€ μž‘μ—… 동기화와 톡신 기법을 μ œκ³΅ν•΄μ•Ό 함(6μž₯)
  • μž‘μ—…μ΄ λ°λ“œλ½μ— 걸리지 μ•Šκ²Œ ν•΄μ•Ό 함(7μž₯)

Scheduling

μ‹œλΆ„ν• κ³Ό λ©€ν‹°ν”„λ‘œκ·Έλž˜λ° λͺ¨λ‘ μ—¬λŸ¬ μž‘μ—…μ„ λ™μ‹œμ— λ©”λͺ¨λ¦¬μ— μ˜¬λ¦¬λŠ” 방식이닀.

  • Job Scheduling(μž‘μ—… μŠ€μΌ€μ₯΄λ§, 5μž₯):OSλŠ” λ©”λͺ¨λ¦¬μ— μžλ¦¬κ°€ μ—†λŠ” 경우λ₯Ό κ³ λ €ν•΄ μ–΄λ–€ 것을 μ‹€ν–‰ν•  지 선택해야 함
  • CPU Scduling(5μž₯): μ—¬λŸ¬ 개의 μž‘μ—…μ΄ λ™μ‹œμ— μ‹€ν–‰ μ€€λΉ„κ°€ λ˜μ–΄ 있으면 μ‹œμŠ€ν…œμ€ κ·Έλ“€ 쀑 ν•˜λ‚˜λ₯Ό 선택해야 함

λ©”λͺ¨λ¦¬μ— μ—¬λŸ¬ 개의 ν”„λ‘œκ·Έλž¨μ΄ λ™μ‹œμ— μžˆλŠ” 경우 λ©”λͺ¨λ¦¬ 관리가 ν•„μš”ν•œ 데 μ΄λŠ” 8μž₯,9μž₯μ—μ„œ 닀룬닀.


1.5 운영체제 μ—°μ‚°


ν˜„λŒ€μ˜ μš΄μ˜μ²΄μ œλŠ” μΈν„°λŸ½νŠΈ ꡬ동식(Interrupt Driven)이닀. EventλŠ” 항상 μΈν„°λŸ½νŠΈλ‚˜ νŠΈλž©μ„ λ°œμƒμ‹œμΌœ μ‹ ν˜Έλ₯Ό 보낸닀. 트랩(λ˜λŠ” μ˜ˆμ™Έ)은 였λ₯˜(0으둜 λ‚˜λˆ„κΈ°, out of index λ“±) λ˜λŠ” μ‚¬μš©μž ν”„λ‘œκ·Έλž¨μ΄ OS μ„œλΉ„μŠ€ μˆ˜ν–‰ μš”μ²­μ— μ˜ν•΄ μœ λ°œλ˜λŠ” μ†Œν”„νŠΈμ›¨μ–΄μ— μ˜ν•΄ μƒμ„±λœ μΈν„°λŸ½νŠΈμ΄λ‹€.


1.5.1 Dual-mode operation


OS의 μ μ ˆν•œ λ™μž‘μ„ 보μž₯ν•˜κ³  OSμ½”λ“œμ˜ μ‹€ν–‰κ³Ό μ‚¬μš©μž μ •μ˜ μ½”λ“œμ˜ 싀행을 κ΅¬λΆ„ν•˜κΈ° μœ„ν•΄ μ‚¬μš©μž λͺ¨λ“œμ™€ 컀널 λͺ¨λ“œ, 두 개의 λ…λ¦½λœ μ—°μ‚° λͺ¨λ“œλ₯Ό ν•„μš”λ‘œ ν•œλ‹€.

image

  • 컀널 λͺ¨λ“œμ˜ ν•˜λ“œμ›¨μ–΄ λͺ¨λ“œ λΉ„νŠΈ: 0
  • μ‚¬μš©μž λͺ¨λ“œμ˜ ν•˜λ“œμ›¨μ–΄ λͺ¨λ“œ λΉ„νŠΈ: 1

μ‹œμŠ€ν…œ λΆ€νŠΈ μ‹œ, ν•˜λ“œμ›¨μ–΄λŠ” 컀널 λͺ¨λ“œμ—μ„œ μ‹œμž‘ν•œλ‹€. κ·Έ ν›„ OSκ°€ 적재되고, μ‚¬μš©μž λͺ¨λ“œμ—μ„œ μ‚¬μš©μž ν”„λ‘œμ„ΈμŠ€κ°€ μ‹œμž‘λœλ‹€. νŠΈλž©μ΄λ‚˜ μΈν„°λŸ½νŠΈκ°€ λ°œμƒν•  λ•Œλ§ˆλ‹€ ν•˜λ“œμ›¨μ–΄λŠ” μ‚¬μš©μž λͺ¨λ“œμ—μ„œ 컀널 λͺ¨λ“œλ‘œ μ „ν™˜ν•œλ‹€. ν•˜λ“œμ›¨μ–΄λŠ” 컀널 λͺ¨λ“œμΌ λ•Œλ§ˆλ‹¨ 특ꢌ λͺ…λ Ή(priviledged instruction)을 μ‹€ν–‰ν•œλ‹€. μ‚¬μš©μž λͺ¨λ“œμ—μ„œ 이λ₯Ό μˆ˜ν–‰ν•˜λ €κ³  μ‹œλ„ν•˜λ©΄ ν•˜λ“œμ›¨μ–΄λŠ” OS둜 νŠΈλž©μ„ 건닀. 특ꢌ λͺ…λ Ήμ—λŠ” 컀널 λͺ¨λ“œμ˜ μ „ν™˜, IO μ œμ–΄, 타이머 관리, μΈν„°λŸ½νŠΈ 관리λ₯Ό μœ„ν•œ λͺ…령어듀이닀.

μ‹œμŠ€ν…œ 호좜(System call)
μ‚¬μš©μžκ°€ 컀널 λͺ¨λ“œμ˜ κΈ°λŠ₯을 ν˜ΈμΆœν•˜κΈ° μœ„ν•œ λ°©λ²•μœΌλ‘œ, μ‚¬μš©μž ν”„λ‘œκ·Έλž¨μ΄ μžμ‹ μ„ λŒ€μ‹ ν•΄ OSκ°€ μˆ˜ν–‰ν•˜λ„λ‘ μ§€μ •λœ μž‘μ—…μ„ OSμ—κ²Œ μš”μ²­ν•  수 μžˆλŠ” 방법을 μ œκ³΅ν•œλ‹€. ν˜ΈμΆœμ€ Trap, Syscall λͺ…λ Ήμ–΄λ₯Ό 톡해 μΈν„°λ ™νŠΈ λ²‘ν„°μ˜ νŠΉμ • μœ„μΉ˜λ‘œ νŠΈλž©μ„ κ±°λŠ” ν˜•νƒœλ‘œ 이루어진닀. μ‹œμŠ€ν…œ 호좜이 μˆ˜ν–‰λ˜λ©΄ μ‹œμŠ€ν…œ ν˜ΈμΆœμ€ ν•˜λ“œμ›¨μ–΄μ— μ˜ν•΄ ν•˜λ‚˜μ˜ μ†Œν”„νŠΈμ›¨μ–΄ μΈν„°λŸ½νŠΈλ‘œ μ·¨κΈ‰λ˜λ©°, μ œμ–΄κ°€ μΈν„°λŸ½νŠΈ 벑터λ₯Ό 톡해 OSλ‚΄μ˜ μ„œλΉ„μŠ€ λ£¨ν‹΄μœΌλ‘œ μ „λ‹¬λ˜κ³  λͺ¨λ“œ λΉ„νŠΈκ°€ 컀널 λΉ„νŠΈλ‘œ μ„€μ •λœλ‹€.


1.5.2 Timer


μ‚¬μš©μž ν”„λ‘œκ·Έλž¨μ΄ λ¬΄ν•œλ£¨ν”„μ— λΉ μ§€κ±°λ‚˜ μ‹œμŠ€ν…œ μ„œλΉ„μŠ€ ν˜ΈμΆœμ— μ‹€νŒ¨ν•΄ μ œμ–΄κ°€ OS둜 λ³΅κ·€ν•˜μ§€ μ•ŠλŠ” 경우 λ“± ν”„λ‘œμ„Έμ„œμ˜ μžμ› μ†Œλͺ¨ 방지λ₯Ό μœ„ν•΄ CPU에 λŒ€ν•œ μ œμ–΄ μœ μ§€λ₯Ό 보μž₯ν•  λ•Œ μ‚¬μš©λœλ‹€. νƒ€μ΄λ¨ΈλŠ” μ§€μ •λœ μ‹œκ°„ ν›„ 컴퓨터λ₯Ό μΈν„°λ‘­νŠΈν•˜λ„λ‘ μ„€μ •ν•œλ‹€. 타이머가 μΈν„°λŸ½νŠΈλ₯Ό λ°œμƒν•˜λ©΄, μ œμ–΄λŠ” μžλ™μ μœΌλ‘œ OSμ—κ²Œ λ„˜μ–΄κ°„λ‹€.


1.6 ν”„λ‘œμ„ΈμŠ€ 관리


  • ν”„λ‘œκ·Έλž¨: λ””μŠ€ν¬μ— μ €μž₯된 파일의 λ‚΄μš©κ³Ό 같이 μˆ˜λ™μ (passive) 개체
  • ν”„λ‘œμ„ΈμŠ€: λ©”λͺ¨λ¦¬μ— λ‘œλ“œλœ μ‹€ν–‰ 쀑인 ν”„λ‘œκ·Έλž¨. λ‹€μŒ μˆ˜ν–‰ν•  λͺ…령을 μ§€μ •ν•˜λŠ” ν”„λ‘œκ·Έλž¨ μΉ΄μš΄ν„°λ₯Ό 가진 λŠ₯동적인(active) 개체
  • μŠ€λ ˆλ“œ: ν”„λ‘œκ·Έλž¨μ˜ 흐름을 μ—¬λŸ¬ 개둜 μͺΌκ°¬. μŠ€λ ˆλ“œλ§ˆλ‹€ PCλ₯Ό 가짐

ν”„λ‘œκ·Έλž¨μ€ ν•˜λ‚˜μ§€λ§Œ ν”„λ‘œμ„ΈμŠ€λŠ” μ—¬λŸ¬ 개일 수 μžˆλ‹€. μ‹±κΈ€ μŠ€λ ˆλ“œ ν”„λ‘œμ„ΈμŠ€λŠ” ν•˜λ‚˜μ˜ PCλ₯Ό 가지고 있으며 λ©€ν‹° μŠ€λ ˆλ“œ ν”„λ‘œμ„ΈμŠ€λŠ” μ—¬λŸ¬ 개의 PCλ₯Ό κ°€μ§ˆ 수 μžˆλ‹€. ν•œ ν”„λ‘œμ„ΈμŠ€λŠ” ν•œ μ‹œμŠ€ν…œ λ‚΄μ˜ μž‘μ—…μ˜ λ‹¨μœ„μ΄λ‹€. μ΄λŸ¬ν•œ μ‹œμŠ€ν…œμ€ ν”„λ‘œμ„ΈμŠ€μ˜ μ§‘ν•©μœΌλ‘œ κ΅¬μ„±λ˜λŠ”λ°, ν”„λ‘œμ„ΈμŠ€λ“€ 쀑 μΌλΆ€λŠ” OS ν”„λ‘œμ„ΈμŠ€λ“€μ΄λ©°, λ‚˜λ¨Έμ§€λŠ” μ‚¬μš©μž ν”„λ‘œμ„ΈμŠ€λ“€μ΄λ‹€. 이 λͺ¨λ“  ν”„λ‘œμ„ΈλŠ” κ·Έλ“€ 간에 ν•˜λ‚˜μ˜ CPUλ₯Ό λ©€ν‹°ν”Œλ ‰μ‹±(multiplexing)ν•¨μœΌλ‘œμ¨ 병행 μˆ˜ν–‰λ  수 μžˆλ‹€.(3μž₯, 6μž₯) μš΄μ˜μ²΄μ œλŠ” ν”„λ‘œμ„ΈμŠ€ 관리에 λŒ€ν•΄ λ‹€μŒκ³Ό 같은 μ±…μž„μ„ 진닀.

  • CPU ν”„λ‘œμ„ΈμŠ€μ™€ μŠ€λ ˆλ“œλ₯Ό μŠ€μΌ€μ€„ν•˜κΈ°
  • μ‚¬μš©μž ν”„λ‘œμ„ΈμŠ€μ™€ μ‹œμŠ€ν…œ ν”„λ‘œμ„ΈμŠ€μ˜ 생성과 제거
  • ν”„λ‘œμ„ΈμŠ€μ˜ μΌμ‹œ 쀑지와 μž¬μˆ˜ν–‰
  • ν”„λ‘œμ„ΈμŠ€ 동기화/ 톡신을 μœ„ν•œ 기법 제곡


1.7 λ©”λͺ¨λ¦¬ 관리


메인 λ©”λͺ¨λ¦¬λŠ” CPU와 IOμž₯μΉ˜μ— μ˜ν•΄ κ³΅μœ λ˜λŠ” λΉ λ₯Έ 접근이 κ°€λŠ₯ν•œ λ°μ΄ν„°μ˜ μ €μž₯μ†Œμ΄λ‹€. 폰 λ…Έμ΄λ§Œ λ°©μ‹μ˜ μ»΄ν“¨ν„°μ—μ„œλŠ” λ‹€μŒκ³Ό 같이 λ™μž‘ν•œλ‹€.

  • λͺ…λ Ήμ–΄ 인좜 μ£ΌκΈ°(instruction fetch-cycle): λ™μ•ˆ 메인 λ©”λͺ¨λ¦¬λ‘œλΆ€ν„° λͺ…λ Ήμ–΄λ₯Ό 읽음
  • 자료 인좜 μ£ΌκΈ°(data fetch-cycle): λ™μ•ˆ 메인 λ©”λͺ¨λ¦¬λ‘œλΆ€ν„° 데이터λ₯Ό 읽고 씀

ν”„λ‘œκ·Έλž¨μ΄ μˆ˜ν–‰λ˜κΈ° μœ„ν•΄μ„œ λ°˜λ“œμ‹œ μ ˆλŒ€ μ£Όμ†Œλ‘œ λ§€ν•‘λ˜κ³ , λ©”λͺ¨λ¦¬μ— μ μž¬λ˜μ–΄μ•Ό ν•œλ‹€. λ©”λͺ¨λ¦¬ 곡간을 ν• λ‹Ήν•˜κ³  ν•΄μ œν•˜λŠ” 것은 운영체제의 역할이닀. (8μž₯, 9μž₯)


1.8 μ €μž₯μž₯치 관리


image

μš΄μ˜μ²΄μ œλŠ” μ €μž₯ μž₯치의 물리적 νŠΉμ„±μ„ μΆ”μƒν™”ν•˜μ—¬ 논리적인 μ €μž₯ λ‹¨μœ„μΈ νŒŒμΌμ„ μ •μ˜ν•œλ‹€. μš΄μ˜μ²΄μ œλŠ” νŒŒμΌμ„ 물리적 맀체둜 λ§€ν•‘ν•˜λ©°, μ €μž₯ μž₯치λ₯Ό 톡해 이듀 νŒŒμΌμ— μ ‘κ·Όν•œλ‹€.


1.8.1 파일 μ‹œμŠ€ν…œ 관리


μš΄μ˜μ²΄μ œλŠ” ν…Œμ΄ν”„μ™€ λ””μŠ€ν¬μ™€ 같은 λŒ€λŸ‰ μ €μž₯ 맀체와 그것을 μ œμ–΄ν•˜λŠ” μž₯치λ₯Ό κ΄€λ¦¬ν•¨μœΌλ‘œμ¨ 파일의 좔상적인 κ°œλ…μ„ κ΅¬ν˜„ν•œλ‹€. λ˜ν•œ νŒŒμΌμ€ μ‚¬μš©μ„ μ‰½κ²Œ ν•˜κΈ° μœ„ν•΄ λ””λ ‰ν† λ¦¬λ“€λ‘œ κ΅¬μ„±λœλ‹€. μš΄μ˜μ²΄μ œλŠ” 파일 관리λ₯Ό μœ„ν•΄ λ‹€μŒκ³Ό 같은 일을 λ‹΄λ‹Ήν•œλ‹€. (10μž₯, 11μž₯)

  • 파일/ λ””λ ‰ν† λ¦¬μ˜ 생성 및 제거
  • νŒŒμΌμ„ 보쑰 μ €μž₯ μž₯치둜 맀핑
  • 파일과 디렉토리 μ‘°μž‘μ„ μœ„ν•œ ν”„λ¦¬λ―Έν‹°λΈŒ 제곡
  • μ•ˆμ •μ μΈ λΉ„νœ˜λ°œμ„± μ €μž₯ 맀체에 νŒŒμΌμ„ λ°±μ—…


1.8.2 λŒ€μš©λŸ‰ μ €μž₯ μž₯치 관리


컴퓨터 μ‹œμŠ€ν…œμ€ λ°˜λ“œμ‹œ 메인 λ©”λͺ¨λ¦¬ λ‚΄μš©μ„ μ €μž₯ν•˜κΈ° μœ„ν•΄ 보쑰 μ €μž₯ μž₯치λ₯Ό μ œκ³΅ν•΄μ•Ό ν•œλ‹€. μš΄μ˜μ²΄μ œλŠ” λ””μŠ€ν¬ 관리λ₯΄ μœ„ν•΄ λ‹€μŒκ³Ό 같은 κΈ°λŠ₯을 λ‹΄λ‹Ήν•œλ‹€.

  • 자유 곡간(free-space)의 관리
  • μ €μž₯ μž₯μ†Œ ν• λ‹Ή
  • λ””μŠ€ν¬ μŠ€μΌ€μ€„λ§


1.8.3 캐싱(caching)


μΊμ‹œλŠ” 맀우 λΉ λ₯΄κ³  μž‘μ€ μ €μž₯μž₯치이며, μΊμ‹œ λ©”λͺ¨λ¦¬λ₯Ό μ‚¬μš©ν•΄ μ»΄ν“¨ν„°μ˜ 속도λ₯Ό 높인닀. νŠΉμ • 정보가 ν•„μš”ν•œ 경우 μΊμ‹œμ— λ¨Όμ € μ ‘κ·Όν•΄ 정보가 μžˆλŠ”μ§€ μ‘°μ‚¬ν•˜κ³ , 있으면 μΊμ‹œλ‘œλΆ€ν„° 직접 μ‚¬μš©ν•˜μ§€λ§Œ μ—†λ‹€λ©΄ 메인 λ©”λͺ¨λ¦¬μ—μ„œ κ·Έ 정보λ₯Ό 가져와 μ‚¬μš©ν•œλ‹€. 이 μ •λ³΄λŠ” 또 λ‹€μ‹œ μ‚¬μš©λ  κ°€λŠ₯성이 λ†’κΈ° λ•Œλ¬Έμ— μΊμ‹œμ— μ €μž₯λœλ‹€. 캐싱은 μ§€μ—­μ„±μ˜ 원리λ₯Ό μ‚¬μš©ν•œλ‹€.

  • μ‹œκ°„ 지역성(Temporal Locality): ν•œ 번 μ ‘κ·Όν•œ 데이터에 λ‹€μ‹œ μ ‘κ·Όν•  ν™•λ₯ μ΄ λ†’μŒ
  • 곡간 지역성(Spatial Locality): νŠΉμ • 데이터와 κ°€κΉŒμš΄ λ©”λͺ¨λ¦¬ μ£Όμ†Œμ— μžˆλŠ” λ‹€λ₯Έ λ°μ΄ν„°λ“€μ—κ²Œλ„ μ ‘κ·Όν•  κ°€λŠ₯성이 λ†’μŒ

μΊμ‹œ 일관성 λ¬Έμ œλŠ” CPUκ°€ μ—¬λŸ¬ 개의 ν”„λ‘œμ„ΈμŠ€λ“€ μ‚¬μ΄μ—μ„œ 이리 저리 μ „ν™˜λ˜λŠ” λ©€ν‹° νƒœμŠ€ν‚Ή ν™˜κ²½μ—μ„œ λ°œμƒν•  수 μžˆλ‹€. μ—¬λŸ¬ 개의 ν”„λ‘œμ„ΈμŠ€κ°€ νŠΉμ • 값에 μ ‘κ·Όν•˜κΈ° μœ„ν•˜λŠ” 경우, 이듀 각 ν”„λ‘œμ„ΈμŠ€κ°€ κ°€μž₯ μ΅œκ·Όμ— κ°±μ‹ λœ ν•΄λ‹Ή 값을 얻을 수 μžˆλŠ” 것이 보μž₯λ˜μ§€ μ•Šμ•˜μ„ λ•Œ λ°œμƒν•˜λ©° ν•˜λ“œμ›¨μ–΄μ  λ¬Έμ œμ΄λ‹€.


1.8.4 μž…μΆœλ ₯ μ‹œμŠ€ν…œ(I/O System)


μž…μΆœλ ₯ μ‹œμŠ€ν…œμ€ λ‹€μŒκ³Ό 같이 κ΅¬μ„±λ˜μ–΄ μžˆλ‹€. μš΄μ˜μ²΄μ œλŠ” μ‚¬μš©μžμ—κ²Œ νŠΉμ • ν•˜λ“œμ›¨μ–΄ μž₯치의 νŠΉμ„±μ„ 숨기며 단지 μž₯치 λ“œλΌμ΄λ²„λ§Œμ΄ μžμ‹ μ—κ²Œ μ§€μ •λœ νŠΉμ • μž₯치의 νŠΉμ„±μ„ μ•Œκ³  μžˆλ‹€.

  • 버퍼링, 캐싱, μŠ€ν’€λ§μ„ ν¬ν•¨ν•œ λ©”λͺ¨λ¦¬ 관리 ꡬ성 μš”μ†Œ
  • 일반적인 μž₯치 λ“œλΌμ΄λ²„ μΈν„°νŽ˜μ΄μŠ€
  • νŠΉμ • ν•˜λ“œμ›¨μ–΄ μž₯μΉ˜λ“€μ„ μœ„ν•œ λ“œλΌμ΄λ²„


1.9 λ³΄ν˜Έμ™€ λ³΄μ•ˆ


보호의 κΈ°λŠ₯을 κ°–κ³  μžˆμ–΄λ„ 곡격을 λ‹Ήν•  수 μžˆλ‹€. κ·Έ λ•Œ ν•„μš”ν•œ 것이 λ³΄μ•ˆμ΄λ‹€.

  • 보호: μžμ›μ— μ ‘κ·Όν•˜λŠ” 것을 μ œμ–΄ (ex. λ“€μ–Ό λͺ¨λ“œ)
  • λ³΄μ•ˆ: μ‹œμŠ€ν…œμ„ λ§κ°€λœ¨λ¦¬λŠ” 것을 λ§‰μŒ