Skip to content

Latest commit

Β 

History

History
82 lines (53 loc) Β· 6.59 KB

File metadata and controls

82 lines (53 loc) Β· 6.59 KB

ν”„λ‘œμ„ΈμŠ€ (Process)

ν”„λ‘œμ„ΈμŠ€κ°€ 무엇인지 μ„€λͺ…ν•΄λ³΄μ„Έμš”.

  • ν”„λ‘œμ„ΈμŠ€λŠ” μ‹€ν–‰ 쀑인 ν”„λ‘œκ·Έλž¨μœΌλ‘œ λ””μŠ€ν¬λ‘œλΆ€ν„° λ©”λͺ¨λ¦¬μ— μ μž¬λ˜μ–΄ CPU의 할당을 받을 수 μžˆλŠ” μƒνƒœλ₯Ό λ§ν•©λ‹ˆλ‹€. ν”„λ‘œμ„ΈμŠ€λŠ” μš΄μ˜μ²΄μ œλΆ€ν„° μ£Όμ†Œκ³΅κ°„, 파일, λ©”λͺ¨λ¦¬ 등을 ν• λ‹Ή λ°›μŠ΅λ‹ˆλ‹€.

ν”„λ‘œμ„ΈμŠ€μ˜ λ©”λͺ¨λ¦¬κ΅¬μ‘°λŠ” μ–΄λ–»κ²Œ μƒκ²Όλ‚˜μš”?

  • μŠ€νƒ μ˜μ—­ : μ§€μ—­λ³€μˆ˜, λ§€κ°œλ³€μˆ˜, 리턴값 등이 μž„μ‹œλ‘œ μ €μž₯λ˜λŠ” κ³ μ •λœ 크기의 κ³΅κ°„μž…λ‹ˆλ‹€. 주둜 ν•¨μˆ˜κ°€ λΆˆλ Έμ„ λ•Œ 데이터λ₯Ό μ €μž₯ν–ˆλ‹€κ°€ ν•¨μˆ˜κ°€ μ’…λ£Œλ  λ•Œ 데이터λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.
  • νž™ μ˜μ—­ : ν”„λ‘œμ„ΈμŠ€κ°€ λ™μž‘ 쀑에 λ™μ μœΌλ‘œ 데이터λ₯Ό ν• λ‹Ήν•˜λŠ” κ³΅κ°„μž…λ‹ˆλ‹€.
  • 데이터 μ˜μ—­ : 데이터 μ˜μ—­μ—λŠ” ν”„λ‘œκ·Έλž¨μ΄ μ‹œμž‘λ  λ•Œ μƒμ„±λ˜λŠ” μ „μ—­λ³€μˆ˜, μ •μ λ³€μˆ˜ 등이 μ €μž₯λ©λ‹ˆλ‹€.
    • Blocked State Symbol μ˜μ—­ : 데이터 μ˜μ—­μ—λŠ” BSS μ˜μ—­μ΄ ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. BSS μ˜μ—­μ€ μ΄ˆκΈ°ν™” λ˜μ§€ μ•Šμ€ μ •μ λ³€μˆ˜μ™€ μ „μ—­λ³€μˆ˜κ°€ μ €μž₯λ©λ‹ˆλ‹€. μ΄ˆκΈ°ν™” λ˜μ§€ μ•Šμ€ λ³€μˆ˜λ“€μ€ 값을 μ €μž₯ν•  ν•„μš”κ°€ μ—†κΈ° λ•Œλ¬Έμ— κ³΅κ°„μ˜ λ‚­λΉ„λ₯Ό 쀄이기 μœ„ν•΄ BSS μ˜μ—­μ„ κ΅¬λΆ„ν•©λ‹ˆλ‹€.
  • μ½”λ“œ : μ½”λ“œμ˜μ—­μ€ ν”„λ‘œκ·Έλž¨μ˜ λͺ…령을 μ €μž₯ν•©λ‹ˆλ‹€.

ν”„λ‘œμ„ΈμŠ€κ°€ κ°€μ§€λŠ” μƒνƒœλ₯Ό λͺ¨λ‘ μ„€λͺ…ν•΄λ³΄μ„Έμš”.

  • NEW : μƒˆλ‘­κ²Œ μƒμ„±λœ ν”„λ‘œμ„ΈμŠ€κ°€ κ°€μ§€λŠ” μƒνƒœμž…λ‹ˆλ‹€.
  • READY : μ€€λΉ„ νμ—μ„œ μš΄μ˜μ²΄μ œμ— μ˜ν•΄ CPU에 λ‘œλ“œλ˜κΈΈ κΈ°λ‹€λ¦¬λŠ” μƒνƒœμž…λ‹ˆλ‹€.
  • RUNNING : CPU에 λ‘œλ“œλ˜μ–΄ μ‹€ν–‰ 쀑인 μƒνƒœμž…λ‹ˆλ‹€.
  • WAITING : I/O μ΄λ²€νŠΈκ°€ λ°œμƒν–ˆμ„ λ•Œ ν•΄λ‹Ή μ΄λ²€νŠΈκ°€ μ²˜λ¦¬λ˜λŠ” λ™μ•ˆ, ν˜Ήμ€ μ–΄λ–€ 이벀트λ₯Ό 기닀릴 λ•Œ Device queue μ—μ„œ λŒ€κΈ°ν•˜λŠ” μƒνƒœ μž…λ‹ˆλ‹€.
  • TERMINATED : ν”„λ‘œμ„ΈμŠ€κ°€ μ’…λ£Œλ˜κ³  CPU μ—μ„œ μ œκ±°λ˜μ—ˆμ„ λ•Œμ˜ μƒνƒœμž…λ‹ˆλ‹€.

μΈν„°λŸ½νŠΈμ™€ 트랩의 μ°¨μ΄λŠ”?

  • μΈν„°λŸ½νŠΈλŠ” ν•˜λ“œμ›¨μ–΄μ— μ˜ν•΄ λ°œμƒλ©λ‹ˆλ‹€. ν•˜λ“œμ›¨μ–΄ μž₯μΉ˜κ°€ CPUλ₯Ό μ‚¬μš©ν•΄μ•Όν•  λ•Œ, μΈν„°λŸ½νŠΈλ₯Ό λ°œμƒμ‹œν‚΅λ‹ˆλ‹€.
  • νŠΈλž©μ€ μ†Œν”„νŠΈμ›¨μ–΄μ— μ˜ν•΄ λ°œμƒλ©λ‹ˆλ‹€. μ–΄λ–€ μ†Œν”„νŠΈμ›¨μ–΄κ°€ CPUμ—κ²Œ μ†Œν”„νŠΈμ›¨μ–΄ λ™μž‘μ— ν•„μš”ν•œ λ™μž‘μ„ μš”κ΅¬ν•  λ•Œ νŠΈλž©μ„ λ°œμƒμ‹œν‚΅λ‹ˆλ‹€.

그럼 μ‹œμŠ€ν…œ μ½œμ€ 뭔지 μ•Œμ•„μš”?

  • μ‹œμŠ€ν…œ μ½œμ€ ν”„λ‘œμ„ΈμŠ€κ°€ νŠΈλž©μ„ λ°œμƒμ‹œν‚¬ 수 μžˆλ„λ‘ ν•˜κΈ°μœ„ν•΄ OSμ—μ„œ μ œκ³΅ν•˜λŠ” μΈν„°νŽ˜μ΄μŠ€μž…λ‹ˆλ‹€.
  • ν”„λ‘œμ„ΈμŠ€λŠ” μ‹œμŠ€ν…œ μ½œμ„ λ°œμƒμ‹œμΌœ μžμ‹ μ΄ 직접 μΈν„°λŸ½νŠΈ μž‘μ—…μ„ μˆ˜ν–‰ν•˜μ§€ μ•Šκ³  μš΄μ˜μ²΄μ œκ°€ 이 μž‘μ—…μ„ μˆ˜ν–‰ν•˜λ„λ‘ ν•©λ‹ˆλ‹€. μš΄μ˜μ²΄μ œλŠ” μš”μ²­λ°›μ€ μ‹œμŠ€ν…œ μ½œμ„ ISR(Interrupt Service Routine) μ—μ„œ μ°Ύμ•„ 미리 μ •μ˜λœ μ‹œμŠ€ν…œ 콜 처리 μž‘μ—…μ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€.

PCB(Process Control Block)에 λŒ€ν•΄μ„œ μ„€λͺ…ν•΄λ³΄μ„Έμš”.

  • PCBλŠ” ν”„λ‘œμ„ΈμŠ€μ— λŒ€ν•œ 정보λ₯Ό λ‹΄κ³ μžˆλŠ” 자료ꡬ쑰 μž…λ‹ˆλ‹€. μš΄μ˜μ²΄μ œλŠ” 이 PCBλ₯Ό μ‚¬μš©ν•΄μ„œ ν”„λ‘œμ„ΈμŠ€λ₯Ό κ΄€λ¦¬ν•©λ‹ˆλ‹€. PCBλŠ” ν”„λ‘œμ„ΈμŠ€μ˜ 생성과 ν•¨κ»˜ λ§Œλ“€μ–΄μ§‘λ‹ˆλ‹€.
  • PCBλŠ” λ‹€μŒκ³Ό 같은 정보λ₯Ό λ‹΄κ³  μžˆμŠ΅λ‹ˆλ‹€.
  1. ν”„λ‘œμ„ΈμŠ€ ID
  2. ν”„λ‘œμ„ΈμŠ€ μƒνƒœ
  3. ν”„λ‘œκ·Έλž¨ μΉ΄μš΄ν„°
  4. 계정정보
  5. μŠ€μΌ€μ€„λ§ 정보
  6. λΆ€λͺ¨ ν”„λ‘œμ„ΈμŠ€μ™€ μžλ…€ ν”„λ‘œμ„ΈμŠ€μ— λŒ€ν•œ 포인터
  7. λ ˆμ§€μŠ€ν„° 정보
  8. μž…μΆœλ ₯ μƒνƒœ

μ»¨ν…μŠ€νŠΈ μŠ€μœ„μΉ˜μ— λŒ€ν•΄μ„œ μ„€λͺ…ν•΄λ³΄μ„Έμš”.

  • μ»¨ν…μŠ€νŠΈ μŠ€μœ„μΉ˜λŠ” CPUλ₯Ό μ μœ ν•˜λ˜ ν”„λ‘œμ„ΈμŠ€κ°€ μΈν„°λŸ½νŠΈμ— μ˜ν•΄ λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€λ‘œ ꡐ체할 λ•Œ, κΈ°μ‘΄ ν”„λ‘œμ„ΈμŠ€μ˜ λ ˆμ§€μŠ€ν„° 값을 μ €μž₯ν•˜κ³  μƒˆλ‘œμš΄ ν”„λ‘œμ„ΈμŠ€μ˜ λ ˆμ§€μŠ€ν„°κ°’μ„ CPU λ ˆμ§€μŠ€ν„°λ‘œ λ‘œλ“œν•˜λŠ” 것을 λ§ν•©λ‹ˆλ‹€.
  • μ΄λ•Œ λ ˆμ§€μŠ€ν„° 값을 μ €μž₯ν•˜κ³  μƒˆλ‘œμš΄ κ°’μœΌλ‘œ λ ˆμ§€μŠ€ν„°λ₯Ό μ±„μš°λŠ” λ™μ•ˆ CPUλŠ” λ‹€λ₯Έ μž‘μ—…μ„ ν•  수 μ—†μœΌλ―€λ‘œ 큰 μ˜€λ²„ν—€λ“œ κ°€ λ°œμƒν•©λ‹ˆλ‹€.

Orphan ν”„λ‘œμ„ΈμŠ€μ™€ Zombie ν”„λ‘œμ„ΈμŠ€μ— λŒ€ν•΄ μ„€λͺ…ν•΄λ³΄μ„Έμš”.

  • Orphan ν”„λ‘œμ„ΈμŠ€λŠ” μžλ…€ ν”„λ‘œμ„ΈμŠ€κ°€ μ’…λ£Œλ˜κΈ° 전에 λΆ€λͺ¨ ν”„λ‘œμ„ΈμŠ€κ°€ wait μ‹œμŠ€ν…œ 콜둜 기닀리지 μ•Šκ³  μ’…λ£Œλœ μƒνƒœλ₯Ό λ§ν•©λ‹ˆλ‹€. λ¦¬λˆ…μŠ€ 운영체제의 κ²½μš°μ—λŠ” Orphan ν”„λ‘œμ„ΈμŠ€λ₯Ό 막기 μœ„ν•΄ λΆ€λͺ¨ ν”„λ‘œμ„ΈμŠ€κ°€ λ¨Όμ € μ’…λ£Œλœ μžλ…€ ν”„λ‘œμ„ΈμŠ€λ₯Ό 루트 ν”„λ‘œμ„ΈμŠ€μΈ init ν”„λ‘œμ„ΈμŠ€μ˜ μžμ‹μœΌλ‘œνŽΈμž…μ‹œν‚€κ³  주기적으둜 wiat μ‹œμŠ€ν…œμ½œμ„ ν˜ΈμΆœν•˜μ—¬ μžλ…€ ν”„λ‘œμ„ΈμŠ€λ“€μ˜ μƒνƒœλ₯Ό νšŒμˆ˜ν•©λ‹ˆλ‹€.
  • Zombie ν”„λ‘œμ„ΈμŠ€λŠ” μžλ…€ ν”„λ‘œμ„ΈμŠ€κ°€ μ’…λ£Œλ˜μ—ˆμ§€λ§Œ λΆ€λͺ¨ ν”„λ‘œμ„ΈμŠ€κ°€ ν•΄λ‹Ή ν”„λ‘œμ„ΈμŠ€λ₯Ό νšŒμˆ˜ν•˜μ§€ λͺ»ν•œ 경우λ₯Ό λ§ν•©λ‹ˆλ‹€. μžλ…€ ν”„λ‘œμ„ΈμŠ€λŠ” μ’…λ£Œλμ§€λ§Œ λΆ€λͺ¨ ν”„λ‘œμ„ΈμŠ€κ°€ wait 을 ν•˜μ§€ μ•ŠλŠ” μƒνƒœμ—μ„œ λ°œμƒν•©λ‹ˆλ‹€.

μ’€λΉ„ ν”„λ‘œμ„ΈμŠ€κ°€ μ™œ 문제인 것 κ°™μ•„μš”?

  • μ’€λΉ„ ν”„λ‘œμ„ΈμŠ€λŠ” μ’…λ£Œλœ ν”„λ‘œμ„ΈμŠ€μ΄κΈ° λ•Œλ¬Έμ— CPUλ₯Ό μ‚¬μš©ν•˜μ§€λŠ” μ•Šμ§€λ§Œ 더 이상 μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” λ¦¬μ†ŒμŠ€λ₯Ό λ°˜ν™˜ν•˜μ§€ μ•Šκ³  μ»€λ„μ˜ ν”„λ‘œμ„ΈμŠ€ ν…Œμ΄λΈ”μ— κ΄€λ¦¬λ˜μ–΄ λΆˆν”Όμš”ν•œ 곡간을 μ°¨μ§€ν•˜κ²Œ λ©λ‹ˆλ‹€.

ν”„λ‘œμ„ΈμŠ€ κ°„ 톡신방법을 λ§ν•΄λ³΄μ„Έμš”.

  • μ—¬λŸ¬ ν”„λ‘œμ„ΈμŠ€κ°€ μ„œλ‘œ ν†΅μ‹ ν•˜κΈ° μœ„ν•΄μ„œλŠ” κ³΅μœ λ©”λͺ¨λ¦¬ λ°©λ²•μ΄λ‚˜ 메세지 νŒ¨μ‹± 방법을 μ‚¬μš©ν•΄μ•Όν•©λ‹ˆλ‹€.
  • κ³΅μœ λ©”λͺ¨λ¦¬λŠ” ν•œ ν”„λ‘œμ„ΈμŠ€μ— 곡유 λ©”λͺ¨λ¦¬λ₯Ό μ„€μ •ν•˜κ³  λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€λ“€μ΄ ν•΄λ‹Ή λ©”λͺ¨λ¦¬μ— μ ‘κ·Όν•˜μ—¬ 버퍼λ₯Ό 톡해 데이터λ₯Ό κ³΅μœ ν•˜λŠ” λ°©μ‹μž…λ‹ˆλ‹€.
  • 메세지 νŒ¨μ‹± 방법은 컀널 μ˜μ—­μ— 톡신을 μœ„ν•œ 메일 λ°•μŠ€λ₯Ό λ§Œλ“€μ–΄λ‘κ³  이곳을 λ²„νΌλ‘œ μ‚Όμ•„ ν”„λ‘œμ„ΈμŠ€λ“€μ΄ 데이터λ₯Ό μ£Όκ³ λ°›μŠ΅λ‹ˆλ‹€.

CPU μŠ€μΌ€μ€„λŸ¬κ°€ 뭔지 μ•Œμ•„μš”?

  • CPU μŠ€μΌ€μ€„λŸ¬λŠ” Ready νμ—μ„œ CPU에 λ‘œλ“œλ˜κΈΈ κΈ°λ‹€λ¦¬λŠ” ν”„λ‘œμ„ΈμŠ€λ“€ 쀑 μ–΄λ–€ ν”„λ‘œμ„ΈμŠ€λ₯Ό λ‘œλ“œν•  것인지 κ²°μ •ν•©λ‹ˆλ‹€. 단기 μŠ€μΌ€μ€„λŸ¬λΌκ³ λ„ ν•©λ‹ˆλ‹€.

그럼 μž₯κΈ°μŠ€μΌ€μ€„λŸ¬λ„ μžˆμ„κΉŒμš”?

  • μž₯κΈ° μŠ€μΌ€μ€„λŸ¬λŠ” job μŠ€μΌ€μ€„λŸ¬λΌκ³  λΆ€λ¦…λ‹ˆλ‹€. λ©”λͺ¨λ¦¬μ— μžˆλŠ” ν”„λ‘œμ„ΈμŠ€ 쀑 μ–΄λ–€ ν”„λ‘œμ„ΈμŠ€λ₯Ό μ€€λΉ„ 큐에 넣을지 κ²°μ •ν•˜λŠ” μŠ€μΌ€μ€„λŸ¬μž…λ‹ˆλ‹€. λ˜ν•œ λ©”λͺ¨λ¦¬μ— μ˜¬λΌμ™€ μžˆλŠ” ν”„λ‘œμ„ΈμŠ€μ˜ 숫자λ₯Ό μ œμ–΄ν•΄μ„œ degree of multiprogramming 을 κ΄€λ¦¬ν•©λ‹ˆλ‹€.

λ‹€λ₯Έ μŠ€μΌ€μ€„λŸ¬λŠ” μ—†μ–΄μš”?

  • μ€‘κΈ°μŠ€μΌ€μ€„λŸ¬κ°€ μžˆμŠ΅λ‹ˆλ‹€. λ§Œμ•½ λ©”λͺ¨λ¦¬μ— λ„ˆλ¬΄ λ§Žμ€ ν”„λ‘œμ„ΈμŠ€κ°€ 올라였게 되면 쀑기 μŠ€μΌ€μ€„λŸ¬λŠ” λ©”λͺ¨λ¦¬μ— μžˆλŠ” ν”„λ‘œμ„ΈμŠ€λ₯Ό κ°•μ œλ‘œ λ””μŠ€ν¬μ˜ μŠ€μ™‘ μ˜μ—­μ— μ €μž₯ν•©λ‹ˆλ‹€. 이λ₯Ό swap-out 이라고 ν•©λ‹ˆλ‹€.

λ©€ν‹° νƒœμŠ€ν‚Ήκ³Ό λ©€ν‹° ν”„λ‘œμ„Έμ‹±μ˜ 차이가 λ­μ—μš”?

  • λ©€ν‹° νƒœμŠ€ν‚Ήμ€ ν•˜λ‚˜μ˜ ν”„λ‘œμ„Έμ„œ(CPU μ½”μ–΄)κ°€ 운영체제의 μŠ€μΌ€μ€„λ§μ„ λ°›μ•„ μ—¬λŸ¬ μž‘μ—…μ„ λΉ λ₯΄κ²Œ λ²ˆκ°ˆμ•„κ°€λ©΄μ„œ μ‹€ν–‰ν•˜λŠ” λ°©μ‹μž…λ‹ˆλ‹€.
  • λ©€ν‹° ν”„λ‘œμ„Έμ‹±μ€ μ—¬λŸ¬ ν”„λ‘œμ„Έμ„œκ°€ μ—¬λŸ¬ μž‘μ—…μ„ λ³‘λ ¬μ μœΌλ‘œ μˆ˜ν–‰ν•˜λŠ” 것을 λ§ν•©λ‹ˆλ‹€.