μ‹œμŠ€ν…œ μ½œμ΄λž€?

운영 체제의 컀널이 μ œκ³΅ν•˜λŠ” μ„œλΉ„μŠ€μ— λŒ€ν•΄,
μ‘μš© ν”„λ‘œκ·Έλž¨μ˜ μš”μ²­μ— 따라 컀널에 μ ‘κ·Όν•˜κΈ° μœ„ν•œ μΈν„°νŽ˜μ΄μŠ€μ΄λ‹€.

보톡 Cλ‚˜ C++κ³Ό 같은 κ³ κΈ‰ μ–Έμ–΄λ‘œ μž‘μ„±λœ ν”„λ‘œκ·Έλž¨λ“€μ€
직접 μ‹œμŠ€ν…œ ν˜ΈμΆœμ„ μ‚¬μš©ν•  수 μ—†κΈ° λ•Œλ¬Έμ—
κ³ κΈ‰ APIλ₯Ό 톡해 μ‹œμŠ€ν…œ ν˜ΈμΆœμ— μ ‘κ·Όν•˜κ²Œ ν•˜λŠ” 방법이닀.



βœ” μ‹œμŠ€ν…œ μ½œμ€ μ™œ ν•„μš”ν• κΉŒ?


μš°λ¦¬κ°€ 일반적으둜 μ‚¬μš©ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ€ 'μ‘μš©ν”„λ‘œκ·Έλž¨'이닀.

 

μœ μ €λ ˆλ²¨μ˜ ν”„λ‘œκ·Έλž¨μ€ μœ μ €λ ˆλ²¨μ˜ ν•¨μˆ˜λ“€ λ§ŒμœΌλ‘œλŠ” λ§Žμ€ κΈ°λŠ₯을 κ΅¬ν˜„ν•˜κΈ° νž˜λ“€κΈ° λ•Œλ¬Έμ—, 컀널(kernel)의 도움을 λ°˜λ“œμ‹œ λ°›μ•„μ•Ό ν•œλ‹€. μ΄λŸ¬ν•œ μž‘μ—…μ€ μ‘μš©ν”„λ‘œκ·Έλž¨μœΌλ‘œ λŒ€ν‘œλ˜λŠ” μœ μ € ν”„λ‘œμ„ΈμŠ€(User Process)μ—μ„œ μœ μ €λͺ¨λ“œμ—μ„œλŠ” μˆ˜ν–‰ν•  수 μ—†λ‹€.

 

λ°˜λ“œμ‹œ kernel에 κ΄€λ ¨λœ 것은 컀널λͺ¨λ“œλ‘œ μ „ν™˜ν•œ 후에야, ν•΄λ‹Ή μž‘μ—…μ„ μˆ˜ν–‰ν•  κΆŒν•œμ΄ 생긴닀. 컀널 λͺ¨λ“œλ₯Ό ν†΅ν•œ μ΄λŸ¬ν•œ μž‘μ—…μ€ λ°˜λ“œμ‹œ μ‹œμŠ€ν…œ μ½œμ„ 톡해 μˆ˜ν–‰ν•˜λ„λ‘ μ„€κ³„λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

 

 

 

 

 

 

βœ” μ‹œμŠ€ν…œ 콜의 컀널 λͺ¨λ“œμ™€ μ‚¬μš©μž λͺ¨λ“œ


1. 컀널 λͺ¨λ“œ
ν”„λ‘œκ·Έλž¨ μΉ΄μš΄ν„°κ°€ μš΄μ˜μ²΄μ œκ°€ μ‘΄μž¬ν•˜λŠ” 뢀뢄을 가리킀고 μžˆλ‹€λ©΄, ν˜„μž¬ 운영체제의 μ½”λ“œλ₯Ό μˆ˜ν–‰ 쀑이며 CPUκ°€ 컀널 λͺ¨λ“œμ—μ„œ μˆ˜ν–‰ 쀑이라고 ν•œλ‹€.
2. μ‚¬μš©μž λͺ¨λ“œ
ν”„λ‘œκ·Έλž¨ μΉ΄μš΄ν„°κ°€ μ‚¬μš©μž ν”„λ‘œκ·Έλž¨μ΄ μ‘΄μž¬ν•˜λŠ” λ©”λͺ¨λ¦¬ μœ„μΉ˜λ₯Ό 가리킬 경우, μ‚¬μš©μž ν”„λ‘œκ·Έλž¨μ„ μˆ˜ν–‰ 쀑이며 CPUκ°€ μ‚¬μš©μž λͺ¨λ“œμ—μ„œ μˆ˜ν–‰ 쀑이라고 ν•œλ‹€.
  • 일반 λͺ…λ Ή : λ©”λͺ¨λ¦¬μ—μ„œ 자료λ₯Ό μ½μ–΄μ™€μ„œ CPUμ—μ„œ κ³„μ‚°ν•˜κ³  κ²°κ³Όλ₯Ό λ©”λͺ¨λ¦¬μ— μ“°λŠ” 일련의 λͺ…λ Ήλ“€. λͺ¨λ“  ν”„λ‘œκ·Έλž¨μ΄ μˆ˜ν–‰ν•  수 있음. (μ‚¬μš©μž λͺ¨λ“œ)
  • 특ꢌ λͺ…λ Ή : λ³΄μ•ˆμ΄ ν•„μš”ν•œ λͺ…λ ΉμœΌλ‘œ μž…μΆœλ ₯ μž₯치, 타이머 λ“± 각쒅 μž₯치λ₯Ό μ ‘κ·Όν•˜λŠ” λͺ…λ Ή.(컀널 λͺ¨λ“œ)
  • CPU 내에 λͺ¨λ“œ λΉ„νŠΈλ₯Ό 두어 두 λͺ…령을 μˆ˜ν–‰ν•œλ‹€.
  • μ‚¬μš©μž ν”„λ‘œκ·Έλž¨μ΄ λ””μŠ€ν¬μ˜ νŒŒμΌμ„ μ ‘κ·Όν•˜κ±°λ‚˜, 화면에 κ²°κ³Όλ₯Ό 좜λ ₯ν•˜λŠ” λ“±μ˜ μž‘μ—…μ΄ ν•„μš”ν•œ κ²½μš°κ°€ μžˆλ‹€. ν•˜μ§€λ§Œ, μ΄λŸ¬ν•œ μž‘μ—…μ€ 특ꢌ λͺ…λ Ήμ˜ μˆ˜ν–‰μ„ ν•„μš”λ‘œ ν•œλ‹€.
  • 이와 같은 경우, μ‚¬μš©μž ν”„λ‘œκ·Έλž¨μ€ 슀슀둜 특ꢌ λͺ…령을 μˆ˜ν–‰ν•  수 μ—†μœΌλ―€λ‘œ μš΄μ˜μ²΄μ œμ—κ²Œ 특ꢌ λͺ…λ Ήμ˜ λŒ€ν–‰μ„ μš”μ²­ν•œλ‹€. μ΄λŸ¬ν•œ μ„œλΉ„μŠ€ μš”μ²­μ€ μ‹œμŠ€ν…œ 콜이라고 λΆ€λ₯Έλ‹€. (즉, 특ꢌ λͺ…λ Ήμ˜ λŒ€ν–‰μ„ μš”μ²­ν•˜μ—¬ μ‚¬μš©μž ν”„λ‘œκ·Έλž¨μ΄ 컀널 μ˜μ—­μ˜ κΈ°λŠ₯을 μˆ˜ν–‰ν•˜κ²Œ ν•΄μ€€λ‹€.)

 

 

 

 

βœ” λ””μŠ€ν¬μ—μ„œ 자료λ₯Ό μ½μ–΄μ˜€λŠ” μ‹œμŠ€ν…œ 콜이라고 κ°€μ •!


  1. μ‚¬μš©μž ν”„λ‘œκ·Έλž¨μ΄ μ‹œμŠ€ν…œ μ½œμ„ ν•˜κ²Œ 되면 μš΄μ˜μ²΄μ œλŠ” μžμ‹ μ˜ 컀널 μ˜μ—­μ— μ •μ˜λœ μ‹œμŠ€ν…œ 콜 처리 μ½”λ“œλ₯Ό μˆ˜ν–‰ν•œλ‹€.
  2. CPUκ°€ 컨트둀 λ ˆμ§€μŠ€ν„°λ₯Ό μ„ΈνŒ…ν•΄ λ””μŠ€ν¬ μ»¨νŠΈλ‘€λŸ¬μ—κ²Œ 데이터λ₯Ό μ½μ–΄μ˜€λΌκ³  λͺ…λ Ήν•œλ‹€.
  3. λ””μŠ€ν¬ μ»¨νŠΈλ‘€λŸ¬λŠ” λ””μŠ€ν¬λ‘œλΆ€ν„° 데이터λ₯Ό μ½μ–΄μ™€μ„œ μžμ‹ μ˜ 둜컬 버퍼에 μ €μž₯ν•œλ‹€.
  4. μž‘μ—…μ΄ μ™„λ£Œλ˜λ©΄ λ””μŠ€ν¬ μ»¨νŠΈλ‘€λŸ¬κ°€ CPUμ—κ²Œ μΈν„°λŸ½νŠΈλ₯Ό λ°œμƒμ‹œμΌœ μž…μΆœλ ₯ μž‘μ—…μ΄ μ™„λ£Œλ˜μ—ˆμŒμ„ ν†΅μ§€ν•œλ‹€.

ν†΅μƒμ μœΌλ‘œ μ‹œμŠ€ν…œ μ½œμ€ μ—¬λŸ¬ μ’…λ₯˜μ˜ κΈ°λŠ₯으둜 λ‚˜λ‰˜μ–΄μ Έ μžˆλ‹€. 각 μ‹œμŠ€ν…œ μ½œμ—λŠ” λ²ˆν˜Έκ°€ ν• λ‹Ήλ˜κ³  μ‹œμŠ€ν…œ 콜 μΈν„°νŽ˜μ΄μŠ€λŠ” μ΄λŸ¬ν•œ λ²ˆν˜Έμ— 따라 μΈλ±μŠ€λ˜λŠ” ν…Œμ΄λΈ”μ„ μœ μ§€ν•œλ‹€. μ•„λž˜ 그림은 open() μ‹œμŠ€ν…œ μ½œμ„ ν˜ΈμΆœν–ˆμ„ λ•Œ, μš΄μ˜μ²΄μ œμ—μ„œ μ–΄λ–»κ²Œ μ²˜λ¦¬λ˜λŠ”μ§€λ₯Ό 보여쀀닀.

 

ν•„μš”ν•œ κΈ°λŠ₯μ΄λ‚˜ μ‹œμŠ€ν…œ ν™˜κ²½μ— 따라 μ‹œμŠ€ν…œ 콜이 λ°œμƒν•  λ•Œ, μ’€ 더 λ§Žμ€ 정보가 ν•„μš”ν•  μˆ˜λ„ μžˆλ‹€. κ·ΈλŸ¬ν•œ 정보가 λ‹΄κΈ΄ λ§€κ°œλ³€μˆ˜λ₯Ό μš΄μ˜μ²΄μ œμ— μ „λ‹¬ν•˜κΈ° μœ„ν•΄μ„œλŠ” λŒ€λž΅ 3가지 μ •λ„μ˜ 방법이 μžˆλ‹€.

  1. λ§€κ°œλ³€μˆ˜λ₯Ό CPU λ ˆμ§€μŠ€ν„° 내에 μ „λ‹¬ν•œλ‹€. 이 κ²½μš°μ— λ§€κ°œλ³€μˆ˜μ˜ κ°―μˆ˜κ°€ CPU λ‚΄μ˜ λ ˆμ§€μŠ€ν„° κ°―μˆ˜λ³΄λ‹€ λ§Žμ„ 수 μžˆλ‹€.
  2. μœ„μ™€ 같은 κ²½μš°μ— λ§€κ°œλ³€μˆ˜λ₯Ό λ©”λͺ¨λ¦¬μ— μ €μž₯ν•˜κ³  λ©”λͺ¨λ¦¬μ˜ μ£Όμ†Œκ°€ λ ˆμ§€μŠ€ν„°μ— μ „λ‹¬λœλ‹€. (μ•„λž˜ κ·Έλ¦Ό μ°Έκ³ )
  3. λ§€κ°œλ³€μˆ˜λŠ” ν”„λ‘œκ·Έλž¨μ— μ˜ν•΄ μŠ€νƒμœΌλ‘œ 전달될 μˆ˜λ„ μžˆλ‹€.\

* 2,3λ²ˆμ€ μ „λ‹¬λ˜λŠ” λ§€κ°œλ³€μˆ˜μ˜ κ°―μˆ˜λ‚˜ 길이에 μ œν•œμ΄ μ—†κΈ° λ•Œλ¬Έμ— λͺ‡λͺ‡ μš΄μ˜μ²΄μ œμ—μ„œ μ„ ν˜Έν•˜λŠ” 방식이닀.

 

 

 

 

 

βœ” μ‹œμŠ€ν…œ 콜의 μœ ν˜•


5κ°€μ§€μ˜ λ²”μ£Όλ‘œ λ‚˜λˆŒ 수 μžˆλ‹€.

  1. ν”„λ‘œμ„ΈμŠ€ μ œμ–΄ : ν”„λ‘œμ„ΈμŠ€ 특ꢌ λͺ¨λ“œλ₯Ό μ‚¬μš©ν•΄ μ§μ ‘μ μœΌλ‘œ ν”„λ‘œμ„ΈμŠ€ μ œμ–΄κ°€ κ°€λŠ₯
  2. 파일 μ‘°μž‘ : νŒŒμΌμ„ μƒμ„±ν•˜κ±°λ‚˜ μ‚­μ œ, 관리 λ“±
  3. μž₯치 관리 : μž₯치 μš”κ΅¬ 및 μž₯치 ν•΄μ œ, 읽기, μ“°κΈ°, 재배치 λ“±
  4. 정보 μœ μ§€ : μ‹œκ°„κ³Ό λ‚ μ§œμ˜ μ„€μ •κ³Ό νšλ“, μ‹œμŠ€ν…œ 자료의 μ„€μ •κ³Ό νšλ“
  5. 톡신 : 톡신 μ—°κ²°μ˜ 생성 및 제거, λ©”μ‹œμ§€μ˜ μ†‘μˆ˜μ‹ , μƒνƒœ 정보 전달 λ“±

 

 


Reference.

link1 link2 

+ Recent posts