🎈 | 일상/πŸ’‘ | μ •λ³΄μ²˜λ¦¬κΈ°λŠ₯사

[μ •λ³΄μ²˜λ¦¬κΈ°λŠ₯사 μ‹€κΈ°] 운영체제 기초 ν™œμš©(2)

immgga 2022. 4. 30. 20:59
λ°˜μ‘ν˜•

이전 ν¬μŠ€νŒ…

https://rkdrkd-history.tistory.com/16

 

[μ •λ³΄μ²˜λ¦¬κΈ°λŠ₯사 μ‹€κΈ°] 운영체제 기초 ν™œμš©(1)

1. 운영체제의 κ°œμš” 운영체제(OS, Operating System): 컴퓨터 μ‚¬μš©μžμ™€ ν•˜λ“œμ›¨μ–΄ κ°„μ˜ μΈν„°νŽ˜μ΄μŠ€λ‘œμ„œ λ™μž‘ν•˜λŠ” μ‹œμŠ€ν…œ μ†Œν”„νŠΈμ›¨μ–΄μ˜ 일쒅 μ—­ν•  컴퓨터λ₯Ό νŽΈλ¦¬ν•˜κ³ , ν•˜λ“œμ›¨μ–΄λ₯Ό 효율적으둜 μ‚¬μš©ν•  수

rkdrkd-history.tistory.com

 

4. ν”„λ‘œμ„ΈμŠ€ μŠ€μΌ€μ€„λ§

ν”„λ‘œμ„ΈμŠ€: μš΄μ˜μ²΄μ œκ°€ κ΄€λ¦¬ν•˜λŠ” μ‹€ν–‰μ˜ λ‹¨μœ„λ‘œ μ‹€ν–‰ 쀑인 ν”„λ‘œκ·Έλž¨μ΄λΌ ν•œλ‹€.

 

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

  • μ •μ˜: μš΄μ˜μ²΄μ œκ°€ ν”„λ‘œμ„ΈμŠ€μ— λŒ€ν•œ μ€‘μš”ν•œ 정보λ₯Ό μ €μž₯ν•΄ 놓을 수 μžˆλŠ” μ €μž₯ μž₯μ†Œ
  • 각 ν”„λ‘œμ„ΈμŠ€λŠ” 고유의 PCBλ₯Ό κ°€μ§„λ‹€.
  • ν”„λ‘œμ„ΈμŠ€κ°€ μƒμ„±λ λ•Œ 고유의 PCBκ°€ μƒμ„±λ˜κ³ , μ’…λ£Œλ˜λ©΄ PCBλŠ” μ œκ±°λœλ‹€.
  • PCB에 μ €μž₯λ˜λŠ” 정보: ν”„λ‘œμ„ΈμŠ€μ˜ ν˜„μž¬ μƒνƒœ, ν”„λ‘œμ„ΈμŠ€μ˜ μš°μ„ μˆœμœ„, CPU λ ˆμ§€μŠ€ν„° 정보 λ“±λ“±..

 

ν”„λ‘œμ„ΈμŠ€ μƒνƒœ 전이

ν”„λ‘œμ„ΈμŠ€ μƒνƒœ 전이도

  • μ€€λΉ„(Ready) μƒνƒœ: ν”„λ‘œμ„ΈμŠ€ μ€€λΉ„ νμ—μ„œ 싀행을 μ€€λΉ„ν•˜κ³  μžˆλŠ” μƒνƒœλ‘œ, CPUλ₯Ό ν• λ‹Ήλ°›κΈ° μœ„ν•΄ 기닀리고 μžˆλŠ” μƒνƒœ
  • μ‹€ν–‰(Running) μƒνƒœ: μ€€λΉ„ 큐에 μžˆλŠ” ν”„λ‘œμ„ΈμŠ€κ°€ CPUλ₯Ό ν• λ‹Ήλ°›μ•„ μ‹€ν–‰λ˜λŠ” μƒνƒœ
  • λŒ€κΈ°(Block) μƒνƒœ: ν”„λ‘œμ„ΈμŠ€κ°€ μž…/좜λ ₯ μ²˜λ¦¬κ°€ ν•„μš”ν•˜λ©΄ ν˜„μž¬ μˆ˜ν–‰ 쀑인 ν”„λ‘œμ„ΈμŠ€κ°€ μž…/좜λ ₯을 μœ„ν•΄ λŒ€κΈ° μƒνƒœλ‘œ μ „μ΄λœλ‹€.

 

μŠ€λ ˆλ“œ(Thread)의 κ°œλ…

  • μ œμ–΄μ˜ 흐름을 μ˜λ―Έν•˜λ©° ν”„λ‘œμ„ΈμŠ€μ—μ„œ μ‹€ν–‰μ˜ κ°œλ…λ§Œμ„ λΆ„λ¦¬ν•œ κ²ƒμœΌλ‘œ ν”„λ‘œμ„ΈμŠ€μ˜ 일뢀 νŠΉμ„±μ„ κ°–κ³  있기 λ•Œλ¬Έμ— κ²½λŸ‰(light weight) ν”„λ‘œμ„ΈμŠ€λΌκ³ λ„ ν•œλ‹€.
  • ν”„λ‘œμ„ΈμŠ€μ˜ μ‹€ν–‰ 뢀뢄을 λ‹΄λ‹Ήν•¨μœΌλ‘œμ¨ 싀행을 κΈ°λ³Έ λ‹¨μœ„κ°€ λœλ‹€.
  • μ†Œμ†λœ ν”„λ‘œμ„ΈμŠ€μ˜ μžμ›κ³Ό λ©”λͺ¨λ¦¬λ₯Ό κ³΅μœ ν•œλ‹€.
  • 닀쀑 μŠ€λ ˆλ“œλŠ” ν”„λ‘œμ„ΈμŠ€μ˜ μƒμ„±μ΄λ‚˜ λ¬Έλ§₯ κ΅ν™˜ λ“±μ˜ μ˜€λ²„ν—€λ“œλ₯Ό 쀄여 운영페제의 μ„±λŠ₯을 κ°œμ„ ν•œλ‹€.

 

ν”„λ‘œμ„ΈμŠ€ μŠ€μΌ€μ€„λ§

1. ν”„λ‘œμ„ΈμŠ€ μŠ€μΌ€μ€„λ§μ˜ κ°œλ…

  • ν”„λ‘œμ„ΈμŠ€μ˜ 생성 및 싀행에 ν•„μš”ν•œ μ‹œμŠ€ν…œμ˜ μžμ›μ„ ν•΄λ‹Ή ν”„λ‘œμ„ΈμŠ€μ— ν• λ‹Ήν•˜λŠ” μž‘μ—…μ„ λœ»ν•œλ‹€.
  • μŠ€μΌ€μ€„λ§μ˜ 기법은 비선점 기법과 선점 κΈ°λ²•μœΌλ‘œ κ΅¬λΆ„λœλ‹€.

2. ν”„λ‘œμ„ΈμŠ€ μŠ€μΌ€μ€„λ§μ˜ λͺ©μ 

  • λͺ¨λ“  μž‘μ—…λ“€μ— λŒ€ν•œ 곡정성을 μœ μ§€ν•˜κΈ° μœ„ν•œ 방법
  • λ‹¨μœ„ μ‹œκ°„λ‹Ή μ²˜λ¦¬λŸ‰μ„ μ΅œλŒ€ν™”, 응닡 μ‹œκ°„, λ°˜ν™˜ μ‹œκ°„, λŒ€κΈ° μ‹œκ°„ 및 μ˜€λ²„ν—€λ“œ μ΅œμ†Œν™”

3. 비선점(Non-preemptive) μŠ€μΌ€μ€„λ§

  • CPU에 ν• λ‹Ήλ°›μœΌλ©΄ 닀릉 ν”„λ‘œμ„ΈμŠ€κ°€ CPUλ₯Ό κ°•μ œμ μ„ λΉΌμ•—μ„μˆ˜ μ—†λŠ” 방식이닀.

4. 선점(Preemptive) μŠ€μΌ€μ€„λ§

  • ν•œ ν”„λ‘œμ„ΈμŠ€κ°€ CPUλ₯΄ ν• λ‹Ήλ°›μ•„ μ‹€ν–‰ 쀑이라도 μš°μ„ μˆœμœ„κ°€ 높은 λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€κ°€  CPUλ₯Ό κ°•μ œμ μœΌλ‘œ 빼앗을 수 μžˆλŠ” 방식이닀.

 

비선점 μŠ€μΌ€μ€„λ§ μ’…λ₯˜

기법 μ„€λͺ…
FCFS(First Come First Service) μ€€λΉ„μƒνƒœ 큐에 λ„μ°©ν•œ μˆœμ„œλŒ€λ‘œ CPUλ₯Ό ν• λ‹Ήν•˜λŠ” 기법
SJF(Shortest Job First) λŒ€κΈ°ν•˜λŠ” ν”„λ‘œμ„ΈμŠ€λ“€ μ€‘μ—μ„œ μ‹€ν–‰μ‹œκ°„μ΄ κ°€μž₯ 짧은 ν”„λ‘œμ„ΈμŠ€μ—κ²Œ λ¨Όμ € CPUλ₯Ό ν• λ‹Ήν•˜λŠ” 기법
HRN(Highest Response-ratio Next) μ–΄λ–€ μž‘μ—…μ΄ μ„œλΉ„μŠ€ 받을 μ‹œκ°„κ³Ό κ·Έ μž‘μ—…μ΄ μ„œλΉ„μŠ€λ₯Ό κΈ°λ‹€λ¦° μ‹œκ°„μœΌλ‘œ κ²°μ •λ˜λŠ” μš°μ„ μˆœμœ„μ— 따라 CPUλ₯Ό ν• λ‹Ήν•˜λŠ” 기법
κΈ°ν•œλΆ€(Deadline) μž‘μ—…μ΄ μ£Όμ–΄μ§„ νŠΉλ³„ν•œ μ‹œκ°„μ΄λ‚˜ λ§Œλ£Œμ‹œκ°„ μ•ˆμ— μ™„λ£Œλ˜λ„λ‘ ν•˜λŠ” 기법
μš°μ„ μˆœμœ„(Priority) λŒ€κΈ°ν•˜λŠ” ν”„λ‘œμ„ΈμŠ€μ—κ²Œ λΆ€μ—¬λœ μš°μ„ μˆœμœ„κ°€ κ°€μž₯ 높은 ν”„λ‘œμ„ΈμŠ€μ—κ²Œ λ¨Όμ € CPUλ₯Ό ν• λ‹Ήν•˜λŠ” 기법

 

선점 μŠ€μΌ€μ€„λ§ μ’…λ₯˜

 

기법 μ„€λͺ…
SRT(Shortest Remaining Time) μ‹€ν–‰ 쀑인 ν”„λ‘œμ„ΈμŠ€μ˜ 남은 μ‹œκ°„κ³Ό μ€€λΉ„μƒνƒœ 큐에 λ„μ°©ν•œ ν”„λ‘œμ„ΈμŠ€μ˜ μ‹€ν–‰ μ‹œκ°„μ„ λΉ„κ΅ν•΄μ„œ μ‹€ν–‰ μ‹œκ°„μ΄ 더 짧은 ν”„λ‘œμ„ΈμŠ€μ— CPUλ₯Ό ν• λ‹Ήν•˜λŠ” 기법
RR(Round Robin) μ£Όμ–΄μ§„ μ‹œκ°„ ν• λ‹ΉλŸ‰ μ•ˆμ— μž‘μ—…μ„ λ§ˆμΉ˜μ§€ μ•ŠμœΌλ©΄ μ€€λΉ„μ™„λ£Œ 리슀트의 κ°€μž₯ λ’€λ‘œ λ°°μΉ˜ν•˜λŠ” 기법
닀단계 큐(MQ, Multi-level Queue) ν”„λ‘œμ„ΈμŠ€λ“€μ„ μš°μ„ μˆœμœ„μ— 따라 단계별 μ€€λΉ„ 큐에 λ°°μΉ˜ν•˜λŠ” 기법
닀단계 ν”Όλ“œλ°± 큐(MFQ, Multi-level Feedback Queue) 각 μ€€λΉ„μƒνƒœ νλ§ˆλ‹€ λΆ€μ—¬λœ μ‹œκ°„ ν• λ‹ΉλŸ‰ μ•ˆμ— μ™„λ£Œν•˜μ§€ λͺ»ν•œ ν”„λ‘œμ„ΈμŠ€λŠ” λ‹€μŒ λ‹¨κ³„μ˜ μ€€λΉ„μƒνƒœ 큐둜 μ΄λ™ν•˜λŠ” 기법

 

 

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

  • ν˜„μž¬ CPU λ₯Ό μ‚¬μš©ν•˜μ—¬ μ‹€ν–‰λ˜κ³  μžˆλŠ” ν”„λ‘œμ„Έμ„œμ˜ μƒνƒœ 정보λ₯Ό μ €μž₯ν•˜κ³ ,μ•žμœΌλ‘œ 싀행될 ν”„λ‘œμ„ΈμŠ€μ˜ μƒνƒœ 정보λ₯Ό μ„€μ •ν•œ λ‹€μŒμ— μ€‘μ•™μ²˜λ¦¬μž₯치λ₯Ό ν• λ‹Ήν•˜μ—¬ 싀행이 λ˜λ„λ‘ ν•˜λŠ” μž‘μ—…

 

병행 ν”„λ‘œμ„ΈμŠ€

  • 두 개 이상을 ν”„λ‘œμ„ΈμŠ€λ“€μ΄ λ™μ‹œμ— μ‹€ν–‰ μƒνƒœμ— μžˆλŠ” 것을 μ˜λ―Έν•œλ‹€.
  • μ—¬λŸ¬ ν”„λ‘œμ„ΈμŠ€λ“€μ΄ λ…λ¦½μ μœΌλ‘œ μ‹€ν–‰λ˜λŠ” 것을 독립적 병행 ν”„λ‘œμ„ΈμŠ€λΌκ³  ν•˜λ©°, μ„œλ‘œ ν˜‘λ ₯ν•˜λ©° λ™μ‹œμ— μ‹€ν–‰λ˜λŠ” 것을 병행 ν”„λ‘œμ„ΈμŠ€λΌκ³  ν•œλ‹€.

 

ꡐ착 μƒνƒœ(DeadLock)

  • ꡐ착 μƒνƒœλŠ” μ„œλ‘œ λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€κ°€ μ μœ ν•˜κ³  μžˆλŠ” μžμ›μ„ μš”κ΅¬ν•˜λ©° λ¬΄ν•œμ • κΈ°λ‹€λ¦¬λŠ” ν˜„μƒμ΄λ‹€.
  • ꡐ착 μƒνƒœλŠ” μƒν˜Έλ°°μ œ, 점유 및 λŒ€κΈ°, 비선점, ν™˜ν˜• λŒ€κΈ°μ˜ 4κ°€μ§€ λ°œμƒ 쑰건을 λͺ¨λ‘ λ§Œμ‘±ν•΄μ•Όλ§Œ λ°œμƒν•œλ‹€.
  • ꡐ착 μƒνƒœλ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄μ„œλŠ” 예방, νšŒν”Ό, 발견, 회볡의 방법이 μžˆλ‹€

 

5. ν™˜κ²½λ³€μˆ˜

  • μ‹œμŠ€ν…œ μ†Œν”„νŠΈμ›¨μ–΄μ˜ λ™μž‘μ— 영ν–₯을 λ―ΈμΉ˜λŠ” 동적인 κ°’λ“€μ˜ λͺ¨μž„이닀.
  • μ£Όμš” νŠΉμ§•: ꡬ성(λ³€μˆ˜λͺ…μ˜ κ°’), λ‚΄μš©(μ‹œμŠ€ν…œμ˜ κΈ°λ³Έ ꡬ성)

 

Windows μ£Όμš” ν™˜κ²½λ³€μˆ˜

- ν™˜κ²½λ³€μˆ˜λͺ… μ‚¬μš©μ‹œ λ³€μˆ˜λͺ… μ•žλ’€μ— '%' λ₯Ό μΆ”κ°€ν•œλ‹€.

 

UNIX/LINUX μ£Όμš” ν™˜κ²½λ³€μˆ˜

ν™˜κ²½λ³€μˆ˜λͺ… μ‚¬μš© μ‹œ λ³€μˆ˜λͺ… μ•žμ— '$'λ₯Ό μΆ”κ°€ν•œλ‹€.

 

6. 운영체제의 μ’…λ₯˜ 및 Shell Script

 

운영체제의 μ’…λ₯˜

1. windows

  • λ§ˆμ΄ν¬λ‘œμ†Œν”„νŠΈμ‚¬μ—μ„œ λ°œν‘œν•˜κ³  μžˆλŠ” 컴퓨터 운영체제
  • GUI(Graphic Usr Interface)이며, μ„ μ ν˜• λ©€νŒ‰μŠ€ν‚ΉμœΌλ‘œ μˆ˜ν–‰λœλ‹€.
  • PnP(Plug and Play)κ°€ μ§€μ›λœλ‹€.

 

2. MS-DOS(Microsoft Disk Operating System)

  • CUI(Charactor User Interface)이며, Single-User, Single-Task의 νŠΉμ§•μ„ κ°€μ§„λ‹€.
  • 트리 ꡬ쑰 파일 μ‹œμŠ€ν…œμ΄λ‹€.
  • λ‚΄λΆ€ λͺ…λ Ήμ–΄: λͺ…λ Ήμ–΄ 처리 루틴이 λ©”λͺ¨λ¦¬μ— μƒμ£Όν•˜λŠ” λͺ…λ Ήμ–΄(DIR, COPY, TYPE, CLS λ“±)
  • μ™ΈλΆ€ λͺ…λ Ήμ–΄: λ””μŠ€ν¬μ— 파일둜 μ €μž₯된 λͺ…λ Ήμ–΄(FORMAT, DISKCOPY, DISKCOMP λ“±)

 

3. μœ λ‹‰μŠ€(UNIX)

  • 이식성이 λ†’μœΌλ©°, λŒ€ν™”μ‹ μš΄μ˜μ²΄μ œμ΄λ‹€.
  • Cμ–Έμ–΄λΌλŠ” κ³ κΈ‰ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄λ‘œ μ»€λ„κΉŒμ§€ μž‘μ„±λœ μš΄μ˜μ²΄μ œμ΄λ‹€.
  • 파일 생성, μ‚­μ œ, 보호 κΈ°λŠ₯을 κ°€μ§€λ©°, 디렉터리 κ΅¬μ‘°λŠ” 트리 ꡬ쑰 ν˜•νƒœμ΄λ‹€.
  • λ©€ν‹°νƒœμŠ€ν‚Ή(Mulit-Tasking)κ³Ό λ©€ν‹° μœ μ €(Multi-User) μš΄μ˜μ²΄μ œμ΄λ‹€.

 

4. λ¦¬λˆ…μŠ€(LINUX)

  • ν—ˆκ°€κΆŒκ³Ό μ†Œμœ κΆŒμ„ κΆŒν•œμ„ κ°–λŠ”λ‹€.
  • λ©€ν‹°νƒœμŠ€ν‚Ή(Mulit-Tasking)κ³Ό λ©€ν‹° μœ μ €(Multi-User) 을 μ§€μ›ν•œλ‹€.
  • λŒ€μ†Œλ¬Έμžλ₯Ό κ΅¬λ³„ν•œλ‹€.
  • 파일 ν™•μž₯μžλΌλŠ” κ°œλ…μ΄ μ—†λ‹€.

UNIX의 κ°œμš”

1. UNIX의 νŠΉμ§•

  • λŒ€ν™”μ‹ μš΄μ˜μ²΄μ œμ΄λ‹€.
  • 높은 이식성과 ν™•μž₯성을 κ°€μ§„λ‹€.
  • λ„€νŠΈμ›Œν‚Ή μ‹œμŠ€ν…œμ΄λ‹€.
  • 계측적 파일 μ‹œμŠ€ν…œμ΄λ‹€

 

unix의 ꡬ쑰

2. 컀널(Kernel)

  • μœ λ‹‰μŠ€ μ‹œμŠ€ν…œμ˜ 쀑심뢀에 ν•΄λ‹Ήν•˜λ©° μ£ΌκΈ°μ–΅μž₯μΉ˜μ— 적재된 ν›„ μƒμ£Όν•˜λ©΄μ„œ μ‹€ν–‰λœλ‹€.
  • ν”„λ‘œκ·Έλž¨ 관리, κΈ°μ–΅μž₯치 관리, μž…μΆœλ ₯ 관리, 파일 관리, μ‹œμŠ€ν…œ 호좜 μΈν„°νŽ˜μ΄μŠ€ λ“±μ˜ κΈ°λŠ₯을 λ‹΄λ‹Ήν•œλ‹€.
  • ν•˜λ“œμ›¨μ–΄λ₯Ό μΊ‘μŠν™”ν•œλ‹€.
  • λŒ€λΆ€λΆ„μ΄ Cμ–Έμ–΄λ‘œ κ°œλ°œλ˜μ–΄ 이식성과 ν™•μž₯성이 λ›°μ–΄λ‚˜λ‹€.

 

3. μ‰˜(Shell)

  • λͺ…λ Ήμ–΄ 해석기이닀.
  • μ‚¬μš©μžμ™€ μ‹œμŠ€ν…œ κ°„μ˜ μΈν„°νŽ˜μ΄μŠ€ 역할을 ν•œλ‹€.

 

4. μœ ν‹Έλ¦¬ν‹°(Utility)

  • μ‚¬μš©μžμ˜ 편의λ₯Ό μœ„ν•œ ν”„λ‘œκ·Έλž¨μ„ μ œκ³΅ν•œλ‹€.
  • λ¬Έμ„œ νŽΈμ§‘κΈ°, 컴파일러, μ •λ ¬ κΈ°λŠ₯을 μ œκ³΅ν•œλ‹€.

 

Shell Script

  • μ‰˜(Shell): 컀널과 μœ μ €λ₯Ό μ΄μ–΄μ£ΌλŠ” λͺ…λ Ήμ–΄ 해석기
  • μ’…λ₯˜: BASH Shell, Bourne Shell, C Shell, Korn Shell
  • μ‰˜ 슀크립트(Shell Script)λŠ” μ‰˜μ—μ„œ μ‚¬μš©ν•  수 μžˆλŠ” λͺ…λ Ήμ–΄λ“€λ‘œ μž‘μ„±λœ μ‰˜ ν”„λ‘œκ·Έλž¨μ„ μ˜λ―Έν•œλ‹€.
  • μ‰˜ μŠ€ν¬λ¦½νŠΈλŠ” λͺ…λ Ήμ–΄, λ³€μˆ˜, μ œμ–΄λ¬Έ, 쑰건식, 메타 문자 λ“±μœΌλ‘œ κ΅¬μ„±λœλ‹€.
  • μ‰˜ μŠ€ν¬λ¦½νŠΈλŠ” c언어와 μœ μ‚¬ν•˜λ©° 슀크립트 언어이기 λ•Œλ¬Έμ— 컴파일이 ν•„μš”ν•˜μ§€ μ•Šλ‹€.

 

728x90
λ°˜μ‘ν˜•