System Call Function VS Library Call Function

λ°˜μ‘ν˜•

였늘 ν¬μŠ€νŠΈλŠ” 개발자둜써 λ°˜λ“œμ‹œ 짚고 λ„˜μ–΄κ°€μ•Όν•  λΆ€λΆ„ 쀑에 ν•˜λ‚˜λ₯Ό 써보고자 ν•©λ‹ˆλ‹€.



ν•¨μˆ˜μ˜ μ‚¬μš©

μš°λ¦¬λŠ” μ½˜μ†” 화면에 μ–΄λ–€ λ¬Έμžμ—΄μ„ 좜λ ₯ν•˜κ±°λ‚˜ νŒŒμΌμ— μž…μΆœλ ₯을 ν•œλ‹€κ±°λ‚˜ λ¬Έμžμ—΄μ„ μž…λ ₯λ°›κ²Œ ν•˜κ³  싢을 λ•Œ 각각 μ‚¬μš©ν•˜λŠ” ν•¨μˆ˜λ₯Ό μ‚¬μš©μ„ ν•©λ‹ˆλ‹€. κ·Έλž˜μ„œ κ·Έ ν•¨μˆ˜κ°€ κ΅¬ν˜„λ˜μ–΄ μžˆλŠ”λŒ€λ‘œ μΈμžκ°’μ„ λ„£κ³ , κ·Έ μΈμžκ°’μ„ λ„£μ€λŒ€λ‘œ 코딩을 ν•˜λ©΄ 좜λ ₯ κ²°κ³Όκ°€ λ‚˜μ˜€κ²Œ λ©λ‹ˆλ‹€.


그런데, 이 ν•¨μˆ˜μ—λ„ 두 κ°€μ§€μ˜ 쑴재둜 λ‚˜λ‰©λ‹ˆλ‹€.


κ°€λ Ή 예λ₯Ό λ“€μ–΄λ³΄μžλ©΄....


이런 μ½”λ“œκ°€ μžˆμŠ΅λ‹ˆλ‹€. μœ„ μ½”λ“œλŠ” λ§Œμ•½ 파일이 μ‘΄μž¬ν•˜μ§€ μ•ŠμœΌλ©΄ 였λ₯˜λ₯Ό λ‚˜νƒ€λ‚΄κ³ , ν”„λ‘œκ·Έλž¨μ„ μ’…λ£Œν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. λ™μ‹œμ— 였λ₯˜ μ½”λ“œλ₯Ό 좜λ ₯ν•˜κ³  있죠.


λ‹€λ₯Έ μ†ŒμŠ€ μ½”λ“œλ₯Ό ν•œ 번 λ³΄κ² μŠ΅λ‹ˆλ‹€. 이 μ½”λ“œλ„ μ—­μ‹œ νŒŒμΌμ„ μ°Ύμ•„μ„œ 읽고, ν•΄λ‹Ή 파일의 λ‚΄μš©μ„ 좜λ ₯ν•˜λŠ” μ†ŒμŠ€ μ½”λ“œμ΄μ£ .

λΆ„λͺ… ν•˜λŠ” 일은 같은 μ†ŒμŠ€ μ½”λ“œμ§€λ§Œ, μ½”λ“œ λ‚΄μš©μ€ λ‹€λ¦…λ‹ˆλ‹€. μ–΄λ–€ 차이가 μžˆλŠ” κ±ΈκΉŒμš”?


μ € 두 μ†ŒμŠ€ μ½”λ“œμ˜ Key PointλŠ” λ°”λ‘œ νŒŒμΌμ„ 읽기 μœ„ν•΄ μ‚¬μš©ν•œ ν•¨μˆ˜μž…λ‹ˆλ‹€. μ „μžμ˜ μ½”λ“œλŠ” CreateFileμ΄λΌλŠ” ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ˜€κ³ , ν›„μžλŠ” fopen이라고 ν•˜λŠ” ν•¨μˆ˜λ₯Ό μ‚¬μš©ν–ˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ νŒŒμΌμ΄λΌλŠ” λŒ€μƒμ΄ μ „μžλŠ” HANDLE ꡬ쑰체이고, ν›„μžλŠ” FILE κ΅¬μ‘°μ²΄μž…λ‹ˆλ‹€.


λŒ€μΆ© μ•„μ‹œλŠ” 뢄듀은 μ € 두 μ½”λ“œκ°€ Windows의 μ½”λ“œμ΄λƒ, Unix μ½”λ“œμ΄λƒλ₯Ό κ°€λ¦¬λŠ” 것이라고 생각할 κ²ƒμž…λ‹ˆλ‹€.



Library Call Function

μ—¬λŸ¬λΆ„λ“€μ΄ λ‹¨μˆœν•˜κ²Œ μ‚¬μš©ν•˜λŠ” fopen, fclose λ“±μ˜ C ν‘œμ€€ ν•¨μˆ˜λ“€μ€ λ°”λ‘œ 일반 라이브러리 ν•¨μˆ˜μž…λ‹ˆλ‹€. 라이브러리 ν•¨μˆ˜λ“€μ—λŠ” ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ—μ„œ μ œκ³΅ν•˜λŠ” κΈ°λ³Έ ν•¨μˆ˜λ“€κ³Ό 컴파일러 λ³„λ‘œ μΆ”κ°€μ μœΌλ‘œ μ œκ³΅ν•˜λŠ” API듀이 보톡 라이브러리 ν•¨μˆ˜μ— μ†ν•©λ‹ˆλ‹€.


λ•Œλ¬Έμ— ν”„λ‘œκ·Έλž¨ λ‚΄λΆ€μ—μ„œ λ©”λͺ¨λ¦¬ ν• λ‹Ή/ν•΄μ œκ°€ κ°€λŠ₯ν•©λ‹ˆλ‹€. 즉, malloc ν•¨μˆ˜ 등을 μ΄μš©μ„ν•΄μ„œ λ©”λͺ¨λ¦¬μ˜ ν• λ‹Ήκ³Ό ν•΄μ œκ°€ μžμœ λ‘­λ‹€λŠ” μ΄μ•ΌκΈ°μ§€μš”.

κ·Έλž˜μ„œ, ν›„μžμ˜ μ½”λ“œμ—λŠ” νŒŒμΌμ„ μ—΄ λ•Œ, 포인터가 λ‚΄λΆ€μ—μ„œ μ‚¬μš©λ©λ‹ˆλ‹€.



System Call Function

μœ„μ—μ„œ μ‚¬μš©ν•œ μ „μžμ˜ μ½”λ“œλŠ” System Call ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•œ κ²ƒμž…λ‹ˆλ‹€. 


System Call ν•¨μˆ˜λŠ” μ‘μš© ν”„λ‘œκ·Έλž¨μ—μ„œ μš΄μ˜μ²΄μ œμ—κ²Œ μ–΄λ– ν•œ μžμ›μ„ μš”κ΅¬ν•˜λŠ” ν•˜λ‚˜μ˜ μˆ˜λ‹¨μž…λ‹ˆλ‹€. μ»΄ν“¨ν„°μ—λŠ” μ—¬λŸ¬ 가지 μžμ›μ΄ μžˆμŠ΅λ‹ˆλ‹€. ν”„λ‘œμ„Έμ„œ, λ©”λͺ¨λ ˆ, ν•˜λ“œλ””μŠ€ν¬ .... ν•˜μ§€λ§Œ μš°λ¦¬κ°€ 컴퓨터λ₯Ό 켜자마자 λ‚˜μ˜€λŠ” 것은 BIOS, 그리고 κ·Έ λ‹€μŒμ€ μš΄μ˜μ²΄μ œμž…λ‹ˆλ‹€.


λΆ€νŒ… μˆœμ„œμ— λŒ€ν•΄μ„œ μ•Œκ³  계신 뢄듀이라면, μ•„λ§ˆ μ»΄ν“¨ν„°μ˜ λͺ¨λ“  μžμ›μ€ μš΄μ˜μ²΄μ œμ—μ„œ κ΄€λ¦¬ν•˜κ³  μžˆλ‹€λŠ” 것을 μ•„μ‹€ κ²ƒμž…λ‹ˆλ‹€. κ·Έλž˜μ„œ ν”„λ‘œκ·Έλž¨μ—μ„œ μ–΄λ–€ μžμ›μ„ 가지고 올 λ•Œλ„ 운영체제 즉, μ»€λ„μ—μ„œ 가져와야 ν•©λ‹ˆλ‹€.


System Call Function을 μ‚¬μš©ν•΄μ•Ό ν•˜λŠ” κ²½μš°λŠ” μžμ›μ˜ ν• λ‹Ήλ³΄λ‹€λŠ” 사싀 μ–΄λ–€ μš΄μ˜μ²΄μ œμ—μ„œμ˜ νŠΉμ •ν•œ μžμ›μ„ 가지고 싢을 λ•Œ 주둜 μ‚¬μš©ν•©λ‹ˆλ‹€. Windows의 경우, μžμ‹ μ΄ λ§Œλ“  ν”„λ‘œκ·Έλž¨μ„ 쀑볡 μ‹€ν–‰ν•˜κ²Œ ν•˜κ³ μ‹Άμ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 그러기 μœ„ν•΄μ„œλŠ” ν˜„μž¬ Windowsμ—μ„œ ν”„λ‘œμ„ΈμŠ€μ˜ 정보λ₯Ό 가져와 λ‚˜μ™€ 같은 μ΄λ¦„μ˜ ν”„λ‘œμ„ΈμŠ€λ₯Ό 가지고 μžˆλ‹€λ©΄, ν˜„μž¬ ν˜ΈμΆœν•œ ν”„λ‘œκ·Έλž¨μ„ μ’…λ£Œν•˜λŠ” λ°©λ²•μœΌλ‘œ κ΅¬ν˜„μ„ ν•΄μ•Όν•©λ‹ˆλ‹€.


λΉ„μŠ·ν•˜κ²ŒλŠ”, μ–΄λ–€ 온라인 κ²Œμž„μ—μ„œ μœ μ €μ˜ ν•΅ 싀행을 λ°©μ§€ν•˜κΈ° μœ„ν•΄ μ–΄λ–€ νŠΉμ •ν•œ λ””λ²„κ±°μ˜ ν”„λ‘œκ·Έλž¨ 싀행을 λ°©μ§€ν•˜κ±°λ‚˜ νŠΉμ • λ³΄μ•ˆ ν”„λ‘œκ·Έλž¨μ˜ 경우, μ–΄λ–€ ν”„λ‘œμ„ΈμŠ€λ₯Ό μ‹€ν–‰ν•˜λ©΄ 그에 λ°˜ν•˜λŠ” ν”„λ‘œμ„ΈμŠ€λ₯Ό μ£½μ΄λŠ” ν”„λ‘œκ·Έλž¨μ„ 많이 봀을 κ²ƒμž…λ‹ˆλ‹€. 이 λ˜ν•œ μœ„μ™€ 같은 λ°©λ²•μœΌλ‘œ κ΅¬ν˜„ν•΄μ•Ό ν•©λ‹ˆλ‹€.


그러기 μœ„ν•΄μ„œ Windowsμ—λŠ” Kernel Objectκ°€ μ‘΄μž¬ν•˜κ³ , 이λ₯Ό C Languageλ‚˜ C++ Language와 같은 κ³ κΈ‰ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ—μ„œ μ‚¬μš©ν•˜κΈ° μœ„ν•΄ HANDLE μ΄λΌλŠ” ꡬ쑰체λ₯Ό μ‚¬μš©ν•΄ 이 μ˜€λΈŒμ νŠΈμ— μ ‘κ·Όν•  수 μžˆμŠ΅λ‹ˆλ‹€. 그리고 ν•¨μˆ˜λ₯Ό ν†΅ν•΄μ„œ ν”„λ‘œκ·Έλž¨μ—μ„œ μ›ν•˜λŠ” Action을 μ·¨ν•  μˆ˜κ°€ 있겠죠.


λΉ„μŠ·ν•˜κ²Œ μ½”λ“œλ‘œ ν•œ 번 κ΅¬ν˜„μ„ ν•΄λ΄€μŠ΅λ‹ˆλ‹€. Windows kernelμ—μ„œ μ œκ³΅ν•˜λŠ” System Call ν•¨μˆ˜μΈ Process32First ν•¨μˆ˜μ™€ Process32Next ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•΄ ν”„λ‘œμ„ΈμŠ€ λͺ©λ‘μ—μ„œ 각 ν”„λ‘œμ„ΈμŠ€λ₯Ό κ²€μƒ‰ν•˜κ³ , ν•΄λ‹Ήν•˜λŠ” μ΄λ¦„μ˜ ν”„λ‘œμ„ΈμŠ€λ₯Ό λ°œκ²¬ν•˜λ©΄, Kill, 그렇지 μ•ŠμœΌλ©΄ ν”„λ‘œμ„ΈμŠ€κ°€ μ‹€ν–‰ 쀑이지 μ•ŠμŒμ„ μ½˜μ†” 화면에 ν‘œμ‹œν•˜κ²Œ ν•˜μ˜€μŠ΅λ‹ˆλ‹€.


이처럼 System Call ν•¨μˆ˜λŠ” μ–΄λ–€ ν•˜λ“œμ›¨μ–΄ μž₯μΉ˜λ‚˜ μš΄μ˜μ²΄μ œμ— λŒ€ν•œ Low-Level ν”„λ‘œκ·Έλž˜λ° νŠΉμ§•μ„ λͺ°λΌλ„, μ»€λ„μ—μ„œ μ œκ³΅ν•˜λŠ” ν•¨μˆ˜λ§Œ μ•Œλ©΄, μ‰½κ²Œ μ‚¬μš©ν•  수 μžˆμ–΄ ꡉμž₯히 νŽΈν•˜κ²Œ μ½”λ”©ν•  수 μžˆλŠ” μž₯점을 가지고 μžˆμŠ΅λ‹ˆλ‹€.



System Call vs Library Call

λŒ€μΆ© μ‹œμŠ€ν…œ 콜 ν•¨μˆ˜μ™€ 라이브러리 콜 ν•¨μˆ˜μ— λŒ€ν•΄ μ–΄λŠ μ •λ„λŠ” μ΄ν•΄ν•˜μ…¨μ„ 것이라 μƒκ°ν•©λ‹ˆλ‹€. 그러면, μœ„μ— 처럼 μš΄μ˜μ²΄μ œκ°€ 가지고 μžˆλŠ” μ–΄λ–€ νŠΉμ •ν•œ 정보λ₯Ό 가지고 싢을 λ•Œ System Call ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λ©΄ λ©λ‹ˆλ‹€. 


κ·Έλ ‡λ‹€λ©΄, 파일과 같은 λ¦¬μ†ŒμŠ€λ₯Ό 가지고 코딩을 ν•˜μ˜€μ„ λ•Œ, System Call ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λŠ” 것과 라이브러리 ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λŠ” 것에 μ–΄λ– ν•œ 차이점이 μžˆμ„κΉŒμš”?


사싀 ν”„λ‘œκ·Έλž¨ λ‚΄λΆ€μ—μ„œ λ©”λͺ¨λ¦¬λ₯Ό ν• λ‹Ήν•˜λŠ” malloc ν•¨μˆ˜λ‚˜ memset ν•¨μˆ˜λŠ” λ‚΄λΆ€μ—μ„œ System Call Function을 μ‚¬μš©ν•©λ‹ˆλ‹€. κ·Έλž˜μ„œ 차이둜 말씀을 λ“œλ¦¬μžλ©΄ λ§Žμ€ μ°¨μ΄λŠ” λ‚˜μ§€ μ•Šμ§€λ§Œ, μ‹€ν–‰ λ©΄μ—μ„œ λ³Έλ‹€λ©΄, λΆ„λͺ…ν•œ 차이가 μžˆμŠ΅λ‹ˆλ‹€.


λ°”λ‘œ μ‚¬μš©μž λͺ¨λ“œλ‘œ μ‹€ν–‰ν•˜λŠ” 것과 컀널 λͺ¨λ“œλ‘œ μ‹€ν–‰ν•˜λŠ” κ²ƒμΈλ°μš”. λΌμ΄λΈŒλŸ¬λ¦¬λŠ” μ‚¬μš©μž λͺ¨λ“œ 즉, νŒŒμΌμ— μ‘΄μž¬ν•˜κ³ , System Call ν•¨μˆ˜λŠ” 컀널에 μ‘΄μž¬ν•˜κΈ° λ•Œλ¬Έμ— ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν•˜λŠ” 데 μžˆμ–΄ κ·Έ λͺ¨λ“œκ°€ κ΅¬λΆ„λ©λ‹ˆλ‹€.


κ·Έλž˜μ„œ ν”„λ‘œμ„Έμ„œλŠ” System Call ν•¨μˆ˜λ₯Ό λ§Œλ‚˜λ©΄, 이λ₯Ό 컀널 λͺ¨λ“œλ‘œ λ°”κΎΈκ³ , 컀널 ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜κ²Œ λ©λ‹ˆλ‹€. System Call ν•¨μˆ˜μΈμ§€λ₯Ό κ΅¬λΆ„ν•˜κΈ° μœ„ν•΄ EAX λ ˆμ§€μŠ€ν„°(κ³ κΈ‰ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄λ‘œ λ§ν•˜μžλ©΄ return κ°’)λ₯Ό μ‚¬μš©ν•˜κ²Œ λ©λ‹ˆλ‹€.


μš°λ¦¬κ°€ ν”„λ‘œκ·Έλž˜λ°ν•  λ•Œ 처음으둜 μ‚¬μš©ν•˜λŠ” ν•¨μˆ˜μΈ main ν•¨μˆ˜λ„ System Call ν•¨μˆ˜μ— μ†ν•˜λ©°, System Call ν•¨μˆ˜λŠ” return type이 int이며, 였λ₯˜λŠ” -1이고, 정상이면 0 ν˜Ήμ€ μ–‘μ˜ μ •μˆ˜λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€. (ν•˜μ§€λ§Œ exit ν•¨μˆ˜λŠ” System Call function이 μ•„λ‹™λ‹ˆλ‹€!)


또 ν•œκ°€μ§€ 차이점은 Library Call ν•¨μˆ˜μ—μ„œ fopenμ΄λ‚˜, scanf 등을 μ‚¬μš©ν•  λ•Œ, μ €μž₯μ†Œλ‘œ μ‚¬μš©ν•˜λŠ” 것이 있죠. λ°”λ‘œ Bufferλ₯Ό μ‚¬μš©ν•œλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.


ν”νžˆ μš°λ¦¬κ°€ charν˜• 배열을 μ‚¬μš©ν•΄ λ¬Έμžμ—΄μ„ μž…λ ₯λ°›λ‹€κ°€ κ·Έ 곡간이 λ‚¨μœΌλ©΄, 계속 μž…λ ₯을 λ°›λŠ” μƒν™©μ΄λ‚˜ 띄어쓰기λ₯Ό ν•΄ λ¬Έμžμ—΄μ„ μž…λ ₯ 받을 경우, 띄어쓰기 ν•œ λ’· 뢀뢄은 μ§€λ €μ„œ 좜λ ₯이 λ˜λŠ” 경우λ₯Ό 많이 봀을 κ²ƒμž…λ‹ˆλ‹€. ν˜Ήμ€ λ°°μ—΄μ˜ 크기보닀 λ„ˆλ¬΄ λ§Žμ€ 문자 수λ₯Ό μž…λ ₯ν•΄ κ·Έ μž…λ ₯ν•œ 갯수λ₯Ό μ΄ˆκ³Όν•˜μ—¬ λ‹€μŒ μž…λ ₯ 버퍼에도 영ν–₯을 λΌμΉ˜λŠ” κ²½μš°κ°€ μžˆμ—ˆμ£ . κ·Έλž˜μ„œ μ‚¬μš©ν–ˆλ˜ ν•¨μˆ˜λ“€ μ€‘μ—λŠ” fflush ν•¨μˆ˜λ₯Ό 썼던 κ²½μš°λ„ μžˆμ—ˆμ„ κ²ƒμž…λ‹ˆλ‹€.


κ·Έλž˜μ„œ C ν‘œμ€€ ν•¨μˆ˜λ₯Ό ν”νžˆ Buffered I/O Function이라고 이야기듀을 많이 ν•©λ‹ˆλ‹€. λͺ¨λ‘ 버퍼λ₯Ό μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμ΄μ£ . 예λ₯Ό λ“€μ–΄, scanf ν•¨μˆ˜λ₯Ό μ΄μš©ν•΄μ„œ 문자 ν•˜λ‚˜μ”© 1 byte μ”© μ½λŠ”λ‹€κ³  κ°€μ •ν•  λ•Œ, μ»΄νŒŒμΌλŸ¬λŠ” μ»€λ„λ‘œλΆ€ν„° C 라이브러리 λ‚΄λΆ€μ μœΌλ‘œ μ •ν•œ 버퍼 크기만큼만 μš°μ„  μ½μ–΄μ˜€κ³ , 그리고 λ‹€μŒλ²ˆ μ½μ–΄μ˜¬ λ•ŒλŠ” 버퍼에 μžˆλŠ” 만큼의 μˆ˜κ°€ λ‚¨μ•˜λ‹€λ©΄ μ»€λ„μ—μ„œμ˜ μžμ›μ„ μ‚¬μš©ν•˜μ§€ μ•Šκ³ , C λΌμ΄λΈŒλŸ¬λ¦¬μ— μ‘΄μž¬ν•˜λŠ” λ²„νΌλ§Œ μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμ— μ‹œμŠ€ν…œμ˜ λ¦¬μ†ŒμŠ€ λΆ€λ‹΄λŸ‰μ„ 쀄여주기 λ•Œλ¬Έμ— 효율적이라고 λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.


ν•˜μ§€λ§Œ System Call ν•¨μˆ˜λŠ” μ‹€μ œ μ»΄ν“¨ν„°μ˜ λ¦¬μ†ŒμŠ€λ₯Ό μ‚¬μš©ν•˜λŠ” 것이기 λ•Œλ¬Έμ— λ°˜λ³΅μž‘μ—…μ„ ν• μˆ˜λ‘ 그만큼 μ‹œμŠ€ν…œμ— 무리가 κ°€κ²Œ λ©λ‹ˆλ‹€. ν•œλ§ˆλ””λ‘œ 이런 것이겠죠. μ‹œμŠ€ν…œ 콜 ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜λ‹€κ°€ μ’…λ£Œν•˜λ©΄ λ‹€μ‹œ λ¦¬μ†ŒμŠ€λ₯Ό λ°˜λ‚©ν•˜κ³ , 또 λΆ€λ₯΄λ©΄ 또 λΆˆλŸ¬μ„œ 썼닀가 λ‹€μ‹œ λ°˜λ‚©ν•˜κ³ , λŒ€μΆ© 이런 μ‹μž…λ‹ˆλ‹€.


κ·ΈλŸ¬λ―€λ‘œ 같은 νŒŒμΌμ„ μ½μ–΄μ˜¨λ‹€κ³  ν•˜λ”λΌλ„, C ν‘œμ€€ ν•¨μˆ˜λ₯Ό μ“°λŠ” 것이 λ‹€λ₯Έ ν”Œλž«νΌμ΄λ‚˜ 운영체제의 ν˜Έν™˜μ„±λ„ 컴퓨터 μžμ› μ‚¬μš©μ˜ νš¨μœ¨μ„±λ„ 그만큼 λ†’λ‹€λŠ” 것이 증λͺ…이 λ©λ‹ˆλ‹€. (λ¬Όλ‘  상황에 λ”°λΌμ„œ λ‹€λ₯΄κΈ° λ•Œλ¬Έμ— λ°˜λ“œμ‹œ κ·Έλ ‡λ‹€λŠ” 것은 μ•„λ‹™λ‹ˆλ‹€.)



마치며....

μ—¬κΈ°κΉŒμ§€ System Call ν•¨μˆ˜, Library Call ν•¨μˆ˜μ— λŒ€ν•΄μ„œ μ•Œμ•„λ΄€μŠ΅λ‹ˆλ‹€.


μ•„λ§ˆ ν”„λ‘œκ·Έλž¨μ„ κ°œλ°œν•˜λ‹€λ³΄λ©΄, μ—¬λŸ¬κ°€μ§€ 방법이 μžˆμœΌμ…¨λ‹€λŠ” 것은 λ‹€λ“€ μ•„μ‹œλŠ” 이야기일 것이라 생각이 λ©λ‹ˆλ‹€. 특히 이제 Cλ‚˜ C++ μ–Έμ–΄λ₯Ό 가지고 μ‹œμŠ€ν…œ ν”„λ‘œκ·Έλž˜λ°μ„ ν•˜λ‹€λ³΄λ©΄ μ—¬λŸ¬ 가지 기쑴에 썼던 ν‘œμ€€ ν•¨μˆ˜μ™€ λ³„λ°˜ 차이 μ—†λŠ” ν•¨μˆ˜λ“€μ„ 많이 λ§Œλ‚˜μ‹€ν…λ°μš”.


λŒ€μΆ© 얼핏보면, κ·Έλ ‡κ²Œ μ–΄λ €μš΄ κ°œλ…μ€ μ•„λ‹™λ‹ˆλ‹€. (λ‚΄μš©μœΌλ‘œ 길게 μ“°λ‹€λ³΄λ‹ˆ... 쑰금 μ–΄λ ΅κ²Œ 느껴질 λΏμ΄μ§€λ§Œ.) 코딩을 ν•˜λ‹€λ³΄λ©΄, μ•„λ¬΄λž˜λ„ μžμ‹ μ΄ λ§Œλ“  ν”„λ‘œκ·Έλž¨μ΄ ν”Œλž«νΌ μœ„, 운영체제 μœ„μ—μ„œ λ™μž‘ν•˜λŠ” μ‘μš© ν”„λ‘œκ·Έλž¨μ΄κΈ° λ•Œλ¬Έμ—, κ·Έλ“€μ˜ λ¦¬μ†ŒμŠ€μ™€ νŠΉμ§•μ„ 잘 κ΅¬λ³„ν•΄μ„œ 코딩을 ν•˜λ©΄, 쒋은 ν”„λ‘œκ·Έλž¨μ΄ λ‚˜μ˜¬κ±°λΌκ³  μƒκ°ν•©λ‹ˆλ‹€.

λ°˜μ‘ν˜•
TAGS.

Tistory Comments