πŸ–₯ 운영체제(기초)에 λŒ€ν•΄μ„œ

PurpleΒ·2021λ…„ 11μ›” 25일
0

TIL

λͺ©λ‘ 보기
62/73

1. 운영체제

1-1. μ‹œμŠ€ν…œ μžμ› 관리

  • μš΄μ˜μ²΄μ œλŠ” μ‘μš© ν”„λ‘œκ·Έλž¨μ΄ ν•˜λ“œμ›¨μ–΄μ—κ²Œ 일을 μ‹œν‚¬ 수 μžˆλ„λ‘ 도와쀀닀. ν•˜λ“œμ›¨μ–΄λ₯Ό κ΅¬μ„±ν•˜λŠ” 일을 ν•˜λŠ” CPU, 자료λ₯Ό μ €μž₯ν•˜λŠ” RAM, λ””μŠ€ν¬ λ“±μ˜ μ‹œμŠ€ν…œ μžμ›μ„ κ΄€λ¦¬ν•˜λŠ” 주체가 μš΄μ˜μ²΄μ œμ΄λ‹€.

1-2. μ‘μš© ν”„λ‘œκ·Έλž¨ 관리

  • λͺ¨λ“  μ‘μš© ν”„λ‘œκ·Έλž¨μ΄ μ‹œμŠ€ν…œμ˜ μžμ›μ„ λ§ˆμŒλŒ€λ‘œ μ‚¬μš©ν•˜λ©΄, 곡격에 λ¬΄λ°©λΉ„ν•œ μƒνƒœκ°€ λœλ‹€. λ”°λΌμ„œ μ‘μš© ν”„λ‘œκ·Έλž¨μ€ κΆŒν•œμ— λŒ€ν•œ 관리가 ν•„μš”ν•˜λ‹€.

2. μ‘μš© ν”„λ‘œκ·Έλž¨

  • μ‘μš© ν”„λ‘œκ·Έλž¨μ΄ 운영체제λ₯Ό 톡해 μ»΄ν“¨ν„°μ—κ²Œ 일을 μ‹œν‚€λ €λ©΄, 컴퓨터λ₯Ό μ‘°μž‘ν•  수 μžˆλŠ” κΆŒν•œμ„ 운영체제둜 λΆ€ν„° λΆ€μ—¬λ°›μ•„μ•Όν•œλ‹€. κΆŒν•œμ„ λΆ€μ—¬λ°›κ³  λ‚œ 후에, μš΄μ˜μ²΄μ œκ°€ μ œκ³΅ν•˜λŠ” κΈ°λŠ₯을 μ΄μš©ν•  수 μžˆλ‹€. μ‘μš© ν”„λ‘œκ·Έλž¨μ΄ μš΄μ˜μ²΄μ œμ™€ μ†Œν†΅ν•˜κΈ° μœ„ν•΄μ„œλŠ” μš΄μ˜μ²΄μ œκ°€ μ‘μš© ν”„λ‘œκ·Έλž¨μ„ μœ„ν•΄ μΈν„°νŽ˜μ΄μŠ€ (API)λ₯Ό μ œκ³΅ν•΄μ•Όν•œλ‹€. μ‘μš© ν”„λ‘œκ·Έλž¨μ΄ μ‹œμŠ€ν…œ μžμ›μ„ μ‚¬μš©ν•  수 μžˆλ„λ‘, 운영체제 μ°¨μ›μ—μ„œ λ‹€μ–‘ν•œ ν•¨μˆ˜λ₯Ό μ œκ³΅ν•˜λŠ” 것을 μ‹œμŠ€ν…œ 콜(system call)이라고 λΆ€λ₯Έλ‹€.

3. ν”„λ‘œμ„ΈμŠ€(Process)λž€?

  • μš΄μ˜μ²΄μ œμ—μ„œλŠ” μ‹€ν–‰ 쀑인 ν•˜λ‚˜μ˜ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ ν”„λ‘œμ„ΈμŠ€λΌκ³  λΆ€λ₯Έλ‹€. μ‚¬μš©μžκ°€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ‹€ν–‰ν•˜λ©΄, μš΄μ˜μ²΄μ œλ‘œλΆ€ν„° 싀행에 ν•„μš”ν•œ λ©”λͺ¨λ¦¬λ₯Ό ν• λ‹Ήλ°›μ•„ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ½”λ“œλ₯Ό μ‹€ν–‰ν•œλ‹€. μ΄λ•Œ μ‹€ν–‰λ˜λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ ν”„λ‘œμ„ΈμŠ€λΌκ³  λΆ€λ₯Έλ‹€. 예λ₯Ό λ“€μ–΄ chrome λΈŒλΌμš°μ €λ₯Ό 2개 μ‹€ν–‰ν•˜λ©΄ 2개의 ν”„λ‘œμ„ΈμŠ€κ°€ μƒμ„±λœλ‹€.

4. μŠ€λ ˆλ“œ(Thread)λž€?

  • ν•˜λ‚˜μ˜ μŠ€λ ˆλ“œλŠ” μ½”λ“œκ°€ μ‹€ν–‰λ˜λŠ” ν•˜λ‚˜μ˜ 흐름이기 λ•Œλ¬Έμ—, ν•œ ν”„λ‘œμ„ΈμŠ€ 내에 μŠ€λ ˆλ“œκ°€ 2개라면 μ½”λ“œκ°€ μ‹€ν–‰λ˜λŠ” 흐름이 2개 생긴닀.
  • μŠ€λ ˆλ“œμ˜ νŠΉμ§•
    • ν”„λ‘œμ„ΈμŠ€ λ‚΄μ—μ„œ μ‹€ν–‰λ˜λŠ” νλ¦„μ˜ λ‹¨μœ„μ΄λ‹€.
    • 각 μŠ€λ ˆλ“œ λ§ˆλ‹€ call stacked μ‘΄μž¬ν•œλ‹€.(call stackμ΄λž€ μ‹€ν–‰ 쀑인 μ„œλΈŒλ£¨ν‹΄μ„ μ €μž₯ν•˜λŠ” 자료 ꡬ쑰)
    • μŠ€λ ˆλ“œλŠ” λ‹€λ₯Έ μŠ€λ ˆλ“œμ™€ λ…λ¦½μ μœΌλ‘œ λ™μž‘ν•œλ‹€.

5. λ©€ν‹° νƒœμŠ€ν‚Ή(Multi-tasking)μ΄λž€?

  • λ©€ν‹° νƒœμŠ€ν‚Ήμ€ 두가지 μ΄μƒμ˜ μž‘μ—…μ„ λ™μ‹œμ— μ²˜λ¦¬ν•˜λŠ” 것을 μ˜λ―Έν•œλ‹€. μš΄μ˜μ²΄μ œλŠ” λ©€ν‹° νƒœμŠ€ν‚Ήμ„ ν•  수 μžˆλ„λ‘, ν”„λ‘œμ„ΈμŠ€λ§ˆλ‹€ CPU 및 λ©”λͺ¨λ¦¬ μžμ›μ„ 적절히 ν• λ‹Ήν•˜κ³  λ³‘λ ¬λ‘œ μ‹€ν–‰ν•œλ‹€. 예λ₯Όλ“€μ–΄ μ›Œλ“œλ‘œ λ¬Έμ„œμž‘μ—…μ„ ν•˜λ©΄μ„œ, λ™μ‹œμ— chrome λΈŒλΌμš°μ €μ—μ„œ μŒμ•…μ„ 듀을 수 μžˆλ‹€.
  • κ·ΈλŸ¬λ‚˜ λ©€ν‹° νƒœμŠ€ν‚Ήμ€ κΌ­ λ©€ν‹° ν”„λ‘œμ„ΈμŠ€λ₯Ό μ˜λ―Έν•˜λŠ” 것은 μ•„λ‹ˆλ‹€. ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€ λ‚΄μ—μ„œ λ©€ν‹° νƒœμŠ€ν‚Ήμ„ ν•  수 μžˆλ„λ‘ λ§Œλ“€μ–΄μ§„ μ• ν”Œλ¦¬μΌ€μ΄μ…˜λ„ μžˆλ‹€. 이것이 κ°€λŠ₯ν•œ μ΄μœ λŠ” λ©€ν‹° μŠ€λ ˆλ“œ λ•Œλ¬Έμ΄λ‹€.

6. λ©€ν‹° μŠ€λ ˆλ“œ(Multi-thread)λž€?

  • λ©€ν‹° ν”„λ‘œμ„ΈμŠ€κ°€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ λ‹¨μœ„μ˜ λ©€ν‹° νƒœμŠ€ν‚Ήμ΄λΌλ©΄, λ©€ν‹° μŠ€λ ˆλ“œλŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜ λ‚΄λΆ€μ—μ„œμ˜ λ©€ν‹° νƒœμŠ€ν‚Ήμ΄λΌκ³  ν•  수 μžˆλ‹€.
  • λ©€ν‹° μŠ€λ ˆλ“œλŠ” λŒ€μš©λŸ‰ λ°μ΄ν„°μ˜ μ²˜λ¦¬μ‹œκ°„μ„ 쀄이기 μœ„ν•΄ 데이터λ₯Ό λΆ„ν• ν•˜μ—¬ λ³‘λ ¬λ‘œ μ²˜λ¦¬ν•˜λŠ”λ° μ‚¬μš©ν•  수 있고, UIλ₯Ό 가지고 μžˆλŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ λ„€νŠΈμ›Œν¬ 톡신을 ν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•  μˆ˜λ„ μžˆλ‹€. 그리고 μ—¬λŸ¬ ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”μ²­μ„ μ²˜λ¦¬ν•˜λŠ” μ„œλ²„λ₯Ό κ°œλ°œν•  λ•Œλ„ μ‚¬μš©λœλ‹€.
  • λ©€ν‹° μŠ€λ ˆλ”©μ˜ μž₯점: ν”„λ‘œμ„ΈμŠ€λ₯Ό μ΄μš©ν•˜μ—¬ λ™μ‹œμ— μ²˜λ¦¬ν•˜λ˜ 일을 μŠ€λ ˆλ“œλ‘œ κ΅¬ν˜„ν•˜λ©΄, λ©”λͺ¨λ¦¬ 곡간과 μ‹œμŠ€ν…œ μžμ›μ˜ μ†Œλͺ¨κ°€ 쀄어든닀. μŠ€λ ˆλ“œ κ°„μ˜ 톡신이 ν•„μš”ν•œ κ²½μš°μ—λ„ λ³„λ„μ˜ μžμ›μ„ μ΄μš©ν•˜λŠ” 것이 μ•„λ‹ˆλΌ, μ „μ—­ λ³€μˆ˜μ˜ 곡간 λ˜λŠ” λ™μ μœΌλ‘œ ν• λ‹Ήλœ 곡간인 Heap μ˜μ—­μ„ μ΄μš©ν•œλ‹€. λ”°λΌμ„œ ν”„λ‘œμ„ΈμŠ€ κ°„ 톡신 방법(IPC)에 λΉ„ν•΄ μŠ€λ ˆλ“œ κ°„μ˜ 톡신 방법이 훨씬 κ°„λ‹¨ν•˜λ‹€. μ‹œμŠ€ν…œμ˜ μ²˜λ¦¬λŸ‰(Throughput)이 ν–₯μƒλ˜κ³  μžμ› μ†Œλͺ¨κ°€ 쀄어듀어 μžμ—°μŠ€λŸ½κ²Œ ν”„λ‘œκ·Έλž¨μ˜ 응닡 μ‹œκ°„μ΄ λ‹¨μΆ•λœλ‹€. 이런 μž₯점 λ•Œλ¬Έμ— μ—¬λŸ¬ ν”„λ‘œμ„ΈμŠ€λ‘œ ν•  수 μžˆλŠ” μž‘μ—…μ„ ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€μ—μ„œ μŠ€λ ˆλ“œλ‘œ λ‚˜λˆ  μˆ˜ν–‰ν•œλ‹€.
  • λ©€ν‹° μŠ€λ ˆλ”©μ˜ 문제점 : λ©€ν‹° ν”„λ‘œμ„ΈμŠ€ 기반의 ν”„λ‘œκ·Έλž˜λ°ν• λ•Œμ—λŠ” ν”„λ‘œμ„ΈμŠ€ κ°„ κ³΅μœ ν•˜λŠ” μžμ›μ΄ μ—†λ‹€. λ”°λΌμ„œ λ™μΌν•œ μžμ›μ— μ ‘κ·Όν•˜λŠ” 일이 μ—†μ—ˆμ§€λ§Œ, λ©€ν‹° μŠ€λ ˆλ”©μ„ 기반으둜 ν”„λ‘œκ·Έλž˜λ° ν• λ•Œμ—λŠ” κ³΅μœ ν•˜λŠ” μžμ›μ— λŒ€ν•˜μ—¬ 고민이 ν•„μš”ν•˜λ‹€. μ„œλ‘œ λ‹€λ₯Έ μŠ€λ ˆλ“œκ°€ 같은 데이터에 μ ‘κ·Όν•˜κ³ , νž™ μ˜μ—­μ„ κ³΅μœ ν•˜κΈ° λ•Œλ¬Έμ— μ„œλ‘œ λ‹€λ₯Έ μŠ€λ ˆλ“œκ°€ μ„œλ‘œ μ‚¬μš© 쀑인 λ³€μˆ˜λ‚˜ μžλ£Œκ΅¬μ‘°μ— μ ‘κ·Όν•˜μ—¬ μ—‰λš±ν•œ 값을 μ½μ–΄μ˜€κ±°λ‚˜ μˆ˜μ •ν•˜λŠ” 일이 λ°œμƒν•  수 μžˆλ‹€. μ΄λ•Œλ¬Έμ— λ©€ν‹°μŠ€λ ˆλ”© ν™˜κ²½μ—μ„œλŠ” 동기화 μž‘μ—…μ΄ ν•„μš”ν•˜λ‹€. 동기화λ₯Ό 톡해 μž‘μ—… 처리 μˆœμ„œλ₯Ό μ œμ–΄ν•˜κ³ , 곡유 μžμ›μ— λŒ€ν•œ 접근을 μ œμ–΄ν•΄μ•Όν•œλ‹€.
  • λ™μ‹œμ— 돌릴 수 μžˆλŠ” μŠ€λ ˆλ“œ μˆ˜λŠ” 컴퓨터에 μžˆλŠ” μ½”μ–΄ 갯수둜 μ œν•œλœλ‹€. 운영체제(λ˜λŠ” 가상 λ¨Έμ‹ )λŠ” 각 μŠ€λ ˆλ“œλ₯Ό μ‹œκ°„μ— 따라 λΆ„ν• ν•˜μ—¬, μ—¬λŸ¬ μŠ€λ ˆλ“œκ°€ 일정 μ‹œκ°„λ§ˆλ‹€ λŒμ•„κ°€λ©΄μ„œ μ‹€ν–‰λ˜λ„λ‘ ν•œλ‹€. 이런 방식을 μ‹œλΆ„ν• μ΄λΌκ³  ν•œλ‹€.
    • Concurrency(λ™μ‹œμ„±, 병행성): μ—¬λŸ¬ 개의 μŠ€λ ˆλ“œκ°€ μ‹œλΆ„ν•  λ°©μ‹μœΌλ‘œ λ™μ‹œμ— μˆ˜ν–‰λ˜λŠ” 거처럼 착각을 λΆˆλŸ¬μΌμœΌν‚¨λ‹€.
    • Parallelism(병렬성): λ©€ν‹° μ½”μ–΄ ν™˜κ²½μ—μ„œ μ—¬λŸ¬κ°œμ˜ μŠ€λ ˆλ“œκ°€ λ™μ‹œμ— μˆ˜ν–‰λ¨.
  • Context switchingμ΄λž€, λ‹€λ₯Έ ν…ŒμŠ€ν¬(ν”„λ‘œμ„ΈμŠ€, μŠ€λ ˆλ“œ)κ°€ μ‹œμž‘ν•  수 μžˆλ„λ‘ 이미 μ‹€ν–‰ 쀑인 ν…ŒμŠ€ν¬(ν”„λ‘œμ„ΈμŠ€, μŠ€λ ˆλ“œ)λ₯Ό λ©ˆμΆ”λŠ” 것이닀.
profile
λ‹€μ‹œ 보면, 더 λ§Žμ€ 것듀이 보인닀.

0개의 λŒ“κΈ€