πŸ€ Knowledge/운영체제(OS)

[운영체제] ν”„λ‘œμ„ΈμŠ€μ˜ κΈ°λ³Έ κ°œλ… μ•Œμ•„λ³΄κΈ°

TIlearn 2024. 3. 9. 10:00

 

 

 

ν”„λ‘œμ„ΈμŠ€λž€?

 

ν”„λ‘œμ„ΈμŠ€λž€ μ‹€ν–‰ 쀑인 ν”„λ‘œκ·Έλž¨μ΄λ‹€. xxx.exeλŠ” ν”„λ‘œκ·Έλž¨μ΄μ§€λ§Œ, ν”„λ‘œμ„ΈμŠ€λŠ” μ•„λ‹ˆλ‹€. 이 ν”„λ‘œκ·Έλž¨μ„ λ”λΈ”ν΄λ¦­ν•˜μ—¬ μ‹€ν–‰μ‹œμΌœμ•Όλ§Œ ν”„λ‘œμ„ΈμŠ€λΌκ³  ν•˜λŠ” 것이닀.

 

 

쑰금 더 μ •ν™•ν•˜κ²Œ λ§ν•˜μžλ©΄,

일련의 λͺ…λ Ήμ–΄μ˜ μ‹€ν–‰, ν˜Ήμ€ μƒνƒœλ‘œ νŠΉμ •μ§€ μ–΄μ§€λŠ” μ‹€ν–‰μ˜ λ‹¨μœ„μ΄λ‹€.

 

 

그러면 λˆ„κ°€ ν”„λ‘œμ„ΈμŠ€λ₯Ό λ§Œλ“€κΉŒ? κ²°κ΅­ 두 κ°€μ§€ 쀑 ν•˜λ‚˜κ°€ λ§Œλ“€κ²Œ λ˜λŠ”λ°, 첫 λ²ˆμ§ΈλŠ” 인간이닀. 인간이 GUI ν˜Ήμ€ Command Line을 ν†΅ν•˜μ—¬ ν”„λ‘œκ·Έλž¨μ„ μ‹œν‚¨λ‹€. 두 λ²ˆμ§ΈλŠ” ν”„λ‘œμ„ΈμŠ€μ— μ˜ν•΄μ„œλ‹€. μ΄λ•Œμ˜ 경우 OS process ν˜Ήμ€ User Processκ°€ ν”„λ‘œμ„ΈμŠ€λ₯Ό λ§Œλ“€κ²Œ λœλ‹€.

 

 

 

 

 

 

 

 

 

ν”„λ‘œμ„ΈμŠ€μ˜ ꡬ성 μš”μ†Œ?

 

  • μ‹€ν–‰ν•  수 μžˆλŠ” ν”„λ‘œκ·Έλž¨(code, text)
  • ν”„λ‘œκ·Έλž¨μ— μ‚¬μš©λ˜λŠ” 데이터
  • 기타 싀행을 μœ„ν•œ 운영체제의 μžμ›(Execution Context)

 

 

 

 

 

 

 

 

 

ν”„λ‘œμ„ΈμŠ€μ˜ μƒνƒœ

 

 

 

Main Memoryμ—μ„œ 0~5000κΉŒμ§€λŠ” OS κΈ°λŠ₯을 λͺ¨μ•„놓은 컀널이고, κ·Έ μ•ˆμ— _Dispatcher_λΌλŠ” ν•¨μˆ˜κ°€ μžˆλ‹€. _Dispatcher_λŠ” ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€μ—μ„œ λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€λ‘œ ν”„λ‘œμ„Έμ„œλ₯Ό λ³€κ²½(Switch)ν•˜λŠ” 역할을 ν•œλ‹€.

 

 

 

ν”„λ‘œμ„ΈμŠ€ AλŠ” 5000~5012κΉŒμ§€μ΄κ³ , ν”„λ‘œμ„ΈμŠ€ BλŠ” 8000~8005, ν”„λ‘œμ„ΈμŠ€ CλŠ” 12000 ~ 12011κΉŒμ§€λΌκ³  ν•΄λ³΄μž. μ΄λŸ¬ν•œ μƒν™©μ—μ„œ μ°¨λ‘€λŒ€λ‘œ μ½”λ“œκ°€ 싀행될 것이닀.

 

 

그리고 이전에 배운 time share system에 λ”°λΌμ„œ 각 ν”„λ‘œμ„ΈμŠ€λ“€μ€ μΌμ •ν•œ time slice에 따라 λ²ˆκ°ˆμ•„ κ°€λ©΄μ„œ ν”„λ‘œμ„ΈμŠ€λ₯Ό μ§„ν–‰ν•œλ‹€. μ—¬κΈ°μ„œ μ€‘μš”ν•œ 것은 Time out이 됨에 따라 ν•˜λŠ˜μƒ‰μ˜ 좔가적인 μ½”λ“œκ°€ 더해짐을 μ•Œ 수 μžˆλ‹€.

 

 

이 μ½”λ“œλ“€μ€ 100λ²ˆλŒ€μ— ν•΄λ‹Ήλ˜λŠ” μ½”λ“œλ“€λ‘œ, OS κΈ°λŠ₯을 μˆ˜ν–‰ν•˜λŠ” ν•¨μˆ˜μ΄λ‹€. 그리고 이전 그림을 μžμ„Ένžˆ λ³΄μ•˜λ‹€λ©΄ 이것이 무엇인지 눈치챌 수 μžˆμ„ 것이닀. μ΄λŠ” _Dispatcher_ν•¨μˆ˜μ΄λ‹€. 즉, ν”„λ‘œμ„ΈμŠ€ κ°„μ˜ Switchλ₯Ό μœ„ν•΄μ„œ μ‚½μž…λœ 것이닀.

 

 

κ·Έλ ‡λ‹€λ©΄, ν”„λ‘œμ„ΈμŠ€ Aμ—μ„œ ν”„λ‘œμ„ΈμŠ€ B둜의 Switchκ°€ 일어났닀. ν•˜μ§€λ§Œ ν”„λ‘œμ„ΈμŠ€ BλŠ” μ‚¬μš©μžμ˜ μž…λ ₯을 λ°›λŠ” I/O Reqeustκ°€ μΌμ–΄λ‚œ 상황이닀. 이에 따라 ν”„λ‘œμ„Έμ„œλŠ” μ•„λ¬΄λŸ° 일을 ν•  수 μ—†μœΌλ―€λ‘œ, ν”„λ‘œμ„ΈμŠ€λ₯Ό Switch ν•΄μ•Ό ν•œλ‹€. λ”°λΌμ„œ ν”„λ‘œμ„ΈμŠ€ C둜 Switch ν•œλ‹€.

 

 

μ΄λŸ¬ν•œ νλ¦„λŒ€λ‘œ μ½”λ“œκ°€ μ§„ν–‰λœλ‹€λ©΄ ν”„λ‘œμ„ΈμŠ€ A, B, C, A, C... 순으둜 진행됨을 μ•Œ 수 μžˆλ‹€. μ€‘μš”ν•œ 것은 ν”„λ‘œμ„Έμ„œλŠ” μ‹€ν–‰ν•  수 μžˆλŠ” ν”„λ‘œμ„ΈμŠ€ν•œν…Œ κ°„λ‹€λŠ” 것이닀.

 

 

λ˜ν•œ OS κΈ°λŠ₯을 μˆ˜ν–‰ν•˜λŠ” ν•¨μˆ˜κ°€ λ°±κ·ΈλΌμš΄λ“œμ—μ„œ λŒμ•„κ°€λŠ” 것이 μ•„λ‹ˆλΌ 일반 ν”„λ‘œμ„ΈμŠ€λ“€κ³Ό ν•¨κ»˜ 순차적으둜 μ‹€ν–‰λœλ‹€.

 

 

 

 

 

 

 

 

 

 

Two-State Process Model

 

 

 

_State trasition diagram_은 μ•žμ„œ λ§ν•œ ν”„λ‘œμ„ΈμŠ€μ˜ 흐름을 μ•Œμ•„λ³΄κΈ° μ‰½κ²Œ λ„μ‹ν™”ν•œ 것이닀. 각 ν”„λ‘œμ„ΈμŠ€λ“€μ€ 각자 _State trasition diagram_을 μ§€λ‹ˆκ³  있으며, _Dispatch_ν•¨μˆ˜λ₯Ό 톡해 _Running_μƒνƒœκ°€ λ˜κ±°λ‚˜ _Pause_에 μ˜ν•˜μ—¬ _Not Running_λ˜λŠ” μƒνƒœλ₯Ό κ°€μ§„λ‹€.

 

 

 

 

 

 

 

 

 

 

ν”„λ‘œμ„ΈμŠ€λ₯Ό λ§Œλ“œλŠ” 경우

 

 

ν”„λ‘œμ„ΈμŠ€λ₯Ό λ§Œλ“œλŠ” κ²½μš°λŠ” μ—¬λŸ¬ κ°€μ§€κ°€ μžˆκ² μ§€λ§Œ, λ‹€μŒ μ„Έ κ°€μ§€λ₯Ό μ£Όμš” 이유둜 μ‚ΌλŠ”λ‹€.

 

  • User Command에 μ˜ν•΄ λ§Œλ“€μ–΄μ Έ μ‚¬μš©λ˜κΈ° μœ„ν•¨
    • foreground mode와 background mode둜 ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν•œλ‹€.
    • μ΄λ•Œ background mode(batch)μ—μ„œλŠ” OSλŠ” ν”„λ‘œκ·Έλž¨μ˜ 싀행을 쑰금 λŠ¦μΆ˜λ‹€.
  • OS에 μ˜ν•΄ μ‹€ν–‰λ˜λŠ” μ„œλΉ„μŠ€λ₯Ό μ‚¬μš©ν•˜κΈ° μœ„ν•¨
    • ν”„λ‘œκ·Έλž¨ λΆ€νŒ… μ‹œμ— OSκ°€ νŠΉμ • μž‘μ—…μ„ μœ„μž„ν•˜μ—¬ μ‹€ν–‰μ‹œν‚€κΈ° μœ„ν•¨μ΄λ‹€.
    • 이λ₯Ό 데λͺ¬ ν”„λ‘œμ„ΈμŠ€λΌκ³ λ„ ν•œλ‹€.
  • 이미 μ‘΄μž¬ν•˜λŠ” ν”„λ‘œμ„ΈμŠ€μ˜ μžμ‹ ν”„λ‘œμ„ΈμŠ€λ₯Ό λ§Œλ“€κΈ° μœ„ν•¨
    • ν”„λ‘œμ„ΈμŠ€μ˜ μž‘μ—…μ΄ λ³΅μž‘ν•œ 경우 ν•˜μœ„ μžμ‹ ν”„λ‘œμ„ΈμŠ€λ₯Ό λ§Œλ“€μ–΄ λΆ„λ‹΄ν•˜μ—¬ μ‚¬μš©ν•  수 μžˆλ‹€.

 

μ€‘μš”ν•œ 것은 λͺ¨λ‘ OS에 μ˜ν•΄ μƒμ„±λ˜λŠ” ν”„λ‘œμ„ΈμŠ€λΌλŠ” 점이닀.

 

 

 

 

 

 

 

 

 

ν”„λ‘œμ„ΈμŠ€λ₯Ό μ’…λ£Œμ‹œν‚€λŠ” 경우

 

 

  • 일반적인 μ’…λ£Œ(Normal completion)
    • μ •μƒμ μœΌλ‘œ _exit_ν•¨μˆ˜κ°€ μ‹€ν–‰λ˜μ–΄ μ’…λ£Œλœλ‹€.
  • κ·œμΉ™ μœ„λ°˜(Protection Error)
    • ν—ˆμš©λ˜μ§€ μ•Šμ€ λ©”λͺ¨λ¦¬μ— μ ‘κ·Όν•˜λ € ν•˜λŠ” 경우, μ’…λ£Œλœλ‹€.
  • λΆ€λͺ¨μ˜ μš”μ²­(Parent Request)
    • λΆ€λͺ¨κ°€ μžμ‹ ν”„λ‘œμ„ΈμŠ€λ₯Ό μ’…λ£Œμ‹œν‚€λŠ” κ²½μš°μ΄λ‹€.
  • 비정상적인 μ—λŸ¬
    • Divide by Zero, I/O μ‹€νŒ¨, μ •ν•΄μ§€μ§€ μ•Šμ€ λͺ…λ Ήμ–΄ μ‹€ν–‰ λ“±

 

 

μ—¬κΈ°μ„œ 정상적인 μ’…λ£ŒλŠ” 일반적인 μ’…λ£Œ, λΆ€λͺ¨μ˜ μš”μ²­μ— μ˜ν•œ μ’…λ£Œμ΄λ©° λ‚˜λ¨Έμ§€ 두 κ°œλŠ” λΉ„ 정상적인 μ’…λ£Œμ΄λ‹€.