3 min read

OSTEP 04 Process

Table of Contents

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

ν”„λ‘œμ„ΈμŠ€λŠ” μ‹€ν–‰ 쀑인 ν”„λ‘œκ·Έλž¨μ„ μ˜λ―Έν•œλ‹€.

그리고 ν”„λ‘œκ·Έλž¨μ€ λ””μŠ€ν¬μ— μ‘΄μž¬ν•˜λŠ” λͺ…령어와 정적 λ°μ΄ν„°μ˜ λ¬ΆμŒμ΄λ‹€. 이것을 μš°λ¦¬κ°€ μ‚¬μš© κ°€λŠ₯ν•˜λ„λ‘ μ‹€ν–‰ν•˜λŠ” 것이 운영체제의 λͺ©ν‘œμ΄λ‹€. ν”„λ‘œμ„ΈμŠ€μ˜ ꡬ성 μš”μ†Œλ₯Ό μ΄ν•΄ν•˜κΈ° μœ„ν•΄μ„œλŠ” ν•˜λ“œμ›¨μ–΄ μƒνƒœλ₯Ό 이해해야 ν•œλ‹€. ν”„λ‘œκ·Έλž¨μ΄ μ‹€ν–‰λ˜λŠ” λ™μ•ˆ ν•˜λ“œμ›¨μ–΄ μƒνƒœλ₯Ό μ½κ±°λ‚˜ κ°±μ‹ ν•  수 있기 λ•Œλ¬Έμ΄λ‹€. 그쀑 κ°€μž₯ μ€‘μš”ν•œ ν•˜λ“œμ›¨μ–΄ ꡬ성 μš”μ†ŒλŠ” λ©”λͺ¨λ¦¬μ΄λ‹€. λͺ…령어와 ν”„λ‘œκ·Έλž¨μ΄ 읽고 μ“°λŠ” λ°μ΄ν„°λŠ” λͺ¨λ‘ λ©”λͺ¨λ¦¬μ— μ €μž₯λœλ‹€. λ ˆμ§€μŠ€ν„°λ„ μ€‘μš”ν•œ ꡬ성 μš”μ†Œμ΄λ‹€. ν”„λ‘œκ·Έλž¨ μΉ΄μš΄ν„°λŠ” ν”„λ‘œκ·Έλž¨μ˜ μ–΄λ–€ λͺ…λ Ήμ–΄κ°€ μ‹€ν–‰ 쀑인지 μ•Œλ €μ€€λ‹€. μŠ€νƒ 포인터와 ν”„λ ˆμž„ ν¬μΈν„°λŠ” ν•¨μˆ˜μ˜ λ³€μˆ˜μ™€ 리턴 μ£Όμ†Œλ₯Ό μ €μž₯ν•˜λŠ” μŠ€νƒμ„ 관리할 λ•Œ μ‚¬μš©ν•˜λŠ” λ ˆμ§€μŠ€ν„°μ΄λ‹€. 또 ν”„λ‘œκ·Έλž¨μ€ 영ꡬ μ €μž₯μž₯μΉ˜μ— μ ‘κ·Όν•˜κΈ°λ„ ν•œλ‹€. 이 IO μ •λ³΄λŠ” ν”„λ‘œμ„ΈμŠ€κ°€ ν˜„μž¬ μ—΄μ–΄ 놓은 파일 λͺ©λ‘μ„ κ°€μ§€κ³  μžˆλ‹€.

2. ν”„λ‘œμ„ΈμŠ€ API

λ‹€μŒ μ±•ν„°μ—μ„œ μžμ„Ένžˆ λ‹€λ£° μ˜ˆμ •μ΄κΈ° λ•Œλ¬Έμ— μ–΄λ–€ μ’…λ₯˜κ°€ μžˆλŠ”μ§€λ§Œ 확인.

  • Create β†’ ν”„λ‘œμ„ΈμŠ€λ₯Ό μƒˆλ‘œ μƒμ„±ν•œλ‹€
  • Destroy β†’ ν”„λ‘œμ„ΈμŠ€λ₯Ό κ°•μ œλ‘œ μ’…λ£Œν•œλ‹€
  • Wait β†’ μ’…λ£Œ μ „ λŒ€κΈ°
  • Miscellaneous Control β†’ λŒ€κΈ°, μ’…λ£Œ 외에 μΌμ‹œμ •μ§€ 및 재개 λ“±
  • Status β†’ μ–Όλ§ˆλ‚˜ μ‹€ν–‰λλŠ”μ§€, μ–΄λ–€ μƒνƒœμΈμ§€

3. ν”„λ‘œμ„ΈμŠ€ 생성

OSTEP 04 Process-1687712572337.jpeg

  1. ν”„λ‘œκ·Έλž¨ μ½”λ“œμ™€ 정적 데이터λ₯Ό λ©”λͺ¨λ¦¬, ν”„λ‘œμ„ΈμŠ€μ˜ μ£Όμ†Œ 곡간에 λ‘œλ“œ.
    1. μš΄μ˜μ²΄μ œλŠ” λ””μŠ€ν¬μ˜ ν•΄λ‹Ή λ°”μ΄νŠΈλ₯Ό μ½μ–΄μ„œ λ©”λͺ¨λ¦¬μ˜ μ–΄λ”˜κ°€μ— μ˜¬λ €μ•Ό ν•œλ‹€.
    2. ν•„μš”ν•œ λΆ€λΆ„λ§Œ λ©”λͺ¨λ¦¬μ— νƒ‘μž¬ β†’ νŽ˜μ΄μ§•, μŠ€μ™€ν•‘ 이해 ν•„μš”. μ˜ˆμ „μ—λŠ” κ·Έλƒ₯ λ‹€ λ•Œλ €λ°•μŒ.
  2. μΌμ •λŸ‰μ˜ λ©”λͺ¨λ¦¬κ°€ ν”„λ‘œκ·Έλž¨μ˜ μ‹€ν–‰μ‹œκ°„ μŠ€νƒ (λŸ°νƒ€μž„ μŠ€νƒ) μš©λ„λ‘œ ν• λ‹Ήλ˜μ–΄μ•Ό 함.
  3. νž™μ„ μœ„ν•œ λ©”λͺ¨λ¦¬ μ˜μ—­λ„ ν• λ‹Ήλ˜μ–΄μ•Ό 함. (malloc, free)
  4. μž…μΆœλ ₯κ³Ό κ΄€κ³„λœ μ΄ˆκΈ°ν™” μž‘μ—… μˆ˜ν–‰ (STDIN, STDOUT, STDERR 3개의 파일 λ””μŠ€ν¬λ¦½ν„°) β†’ 3번째 뢀뢄인 μ˜μ†μ„±μ—μ„œ λ‹€λ£Έ
  5. μ‹€ν–‰μ€€λΉ„ μ™„λ£Œ. ν”„λ‘œκ·Έλž¨μ˜ μ‹œμž‘ 지점인 main()μ—μ„œλΆ€ν„° ν”„λ‘œκ·Έλž¨ μ‹€ν–‰. μš΄μ˜μ²΄μ œλŠ” CPUλ₯Ό μƒˆλ‘œ μƒμ„±λœ ν”„λ‘œμ„ΈμŠ€μ—κ²Œ ν• λ‹Ή. ν”„λ‘œκ·Έλž¨ μ‹€ν–‰ μ‹œμž‘.

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

ν”„λ‘œμ„ΈμŠ€λŠ” 3κ°€μ§€ μƒνƒœλ₯Ό κ°€μ§„λ‹€.

OSTEP 04 Process-1687712593825.jpeg

  1. μ‹€ν–‰(Running): ν”„λ‘œμ„ΈμŠ€λŠ” λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰ν•˜κ³  μžˆλ‹€.
  2. μ€€λΉ„(Ready): μ‹€ν–‰ν•  μ€€λΉ„κ°€ λ˜μ–΄ μžˆμ§€λ§Œ μš΄μ˜μ²΄μ œκ°€ λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€λ₯Ό μ‹€ν–‰ν•˜κ³  μžˆλŠ” λ“±μ˜ 이유둜 κΈ°λ‹€λ¦¬λŠ” 쀑
  3. λŒ€κΈ°(Blocked): ν”„λ‘œμ„ΈμŠ€κ°€ λ‹€λ₯Έ 사건을 κΈ°λ‹€λ¦¬λŠ” λ™μ•ˆ ν”„λ‘œμ„ΈμŠ€μ˜ μˆ˜ν–‰μ„ μ€‘λ‹¨μ‹œν‚€λŠ” μ—°μ‚°. ex) λ””μŠ€ν¬μ— λŒ€ν•œ μž…μΆœλ ₯ μš”μ²­ β†’ 순차적으둜 μ‹€ν–‰ν•΄μ•Ό ν•˜κΈ° λ•Œλ¬Έμ— λ‹€ μ™„λ£Œλ λ•ŒκΉŒμ§€ ν•΄λ‹Ή ν”„λ‘œμ„ΈμŠ€λŠ” 멈좰있음(blocked).

μš΄μ˜μ²΄μ œλŠ” μ–΄λ–€ ν”„λ‘œμ„ΈμŠ€λ₯Ό μ‹€ν–‰ν•  μ§€ μŠ€μΌ€μ₯΄λŸ¬λ₯Ό 톡해 결정을 λ‚΄λ¦°λ‹€.

5. 자료ꡬ쑰

μš΄μ˜μ²΄μ œλŠ” λ‹€λ₯Έ ν”„λ‘œκ·Έλž¨λ“€μ²˜λŸΌ 정보λ₯Ό μœ μ§€ν•˜κΈ° μœ„ν•œ 자료 ꡬ쑰λ₯Ό κ°€μ§€κ³  μžˆλ‹€. OSTEP 04 Process-1687712609999.jpeg

ν”„λ‘œμ„ΈμŠ€ μƒνƒœλ₯Ό νŒŒμ•…ν•˜κΈ° μœ„ν•œ ν”„λ‘œμ„ΈμŠ€ 리슀트 λ“±.

μš΄μ˜μ²΄μ œλŠ” μ΄λ ‡κ²Œ λ ˆμ§€μŠ€ν„° 및 ν”„λ‘œμ„ΈμŠ€μ˜ μƒνƒœλ₯Ό μ €μž₯ν•˜κ³ , 이λ₯Ό 톡해 ν”„λ‘œμ„ΈμŠ€ 싀행을 μž¬κ°œν•œλ‹€ (context switch)

참고: OSTEP ꡐ재