이쀑λͺ¨λ“œ(Dual Mode)와 μ‹œμŠ€ν…œν˜ΈμΆœ(System Call)

2023. 10. 28. 14:17·컴퓨터 ꡬ쑰 & 운영체제

 

이쀑λͺ¨λ“œ(Dual mode)

운영체제의 μ΄μ€‘λͺ¨λ“œ(dual mode)λŠ” μ»΄ν“¨ν„° μ‹œμŠ€ν…œμ—μ„œ μ‚¬μš©μž ν”„λ‘œκ·Έλž¨κ³Ό μš΄μ˜μ²΄μ œ(OS) κ°„μ˜ λ³΄μ•ˆκ³Ό μ•ˆμ „성을 μœ μ§€ν•˜κΈ° μœ„ν•œ κΈ°μˆ μ μΈ κ΅¬μ‘°λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€. μ΄μ€‘λͺ¨λ“œλŠ” λ˜ν•œ μ‹œμŠ€ν…œ μžμ›μ„ νš¨μœ¨μ μœΌλ‘œ κ΄€λ¦¬ν•˜κ³  ν”„λ‘œμ„ΈμŠ€ κ°„ μΆ©λŒμ„ λ°©μ§€ν•˜λ©° μ‹œμŠ€ν…œ μ „λ°˜μ˜ μ•ˆμ •성을 λ³΄μž₯ν•˜λŠ” λ° μ€‘μš”ν•œ μ—­ν• μ„ ν•©λ‹ˆλ‹€.

μš΄μ˜μ²΄μ œλŠ” 일반적으둜 두 κ°€μ§€ λͺ¨λ“œλ‘œ λ™μž‘ν•©λ‹ˆλ‹€.

1. μ‚¬μš©μž λͺ¨λ“œ(User Mode):
   - μ‚¬μš©μž ν”„λ‘œκ·Έλž¨μ΄ μ‹€ν–‰λ˜λŠ” ν™˜κ²½μž…λ‹ˆλ‹€.
   - μ‚¬μš©μž λͺ¨λ“œμ—μ„œλŠ” μΌλ°˜μ μΈ μ‘μš© ν”„λ‘œκ·Έλž¨λ“€μ΄ μ‹€ν–‰λ˜λ©°, μ΄ ν”„λ‘œκ·Έλž¨λ“€μ€ μ‹œμŠ€ν…œ μžμ›μ— μ§μ ‘μ μœΌλ‘œ μ ‘κ·Όν•  μˆ˜ μ—†μŠ΅λ‹ˆλ‹€.
   - μ‚¬μš©μž ν”„λ‘œκ·Έλž¨μ΄ μ§μ ‘ ν•˜λ“œμ›¨μ–΄ μžμ›μ— μ ‘κ·Όν•˜λ €κ³  ν•  λ•Œ λ°œμƒν•  μˆ˜ μžˆλŠ” μ˜€λ₯˜λ‚˜ λ³΄μ•ˆ μœ„ν˜‘μœΌλ‘œλΆ€ν„° μ‹œμŠ€ν…œμ„ λ³΄ν˜Έν•©λ‹ˆλ‹€.

2. 컀널 λͺ¨λ“œ(Kernel Mode):
   - μš΄μ˜μ²΄μ œμ˜ ν•΅μ‹¬ λΆ€λΆ„, μ¦‰ μ»€λ„μ΄ μ‹€ν–‰λ˜λŠ” ν™˜κ²½μž…λ‹ˆλ‹€.
   - μ»€λ„ λͺ¨λ“œμ—μ„œλŠ” μš΄μ˜μ²΄μ œμ˜ ν•΅μ‹¬ κΈ°λŠ₯ λ° μ‹œμŠ€ν…œ μžμ›μ— λŒ€ν•œ μ ‘근이 ν—ˆμš©λ©λ‹ˆλ‹€.
   - μš΄μ˜μ²΄μ œλŠ” μ΄ λͺ¨λ“œμ—μ„œ ν•˜λ“œμ›¨μ–΄ μžμ›μ„ μ§μ ‘ μ œμ–΄ν•˜κ³  μ‚¬μš©μž ν”„λ‘œκ·Έλž¨λ“€ κ°„μ˜ μΆ©λŒμ„ κ΄€λ¦¬ν•©λ‹ˆλ‹€.
   - μ‚¬μš©μž ν”„λ‘œκ·Έλž¨μ΄ μ‹œμŠ€ν…œ ν˜ΈμΆœ(system call)을 ν†΅ν•΄ μš΄μ˜μ²΄μ œ μ„œλΉ„μŠ€λ₯Ό μš”μ²­ν•  λ•Œ, μ΄ μš”청은 μ‚¬μš©μž λͺ¨λ“œμ—μ„œ μ»€λ„ λͺ¨λ“œλ‘œ μ „ν™˜λ˜μ–΄ μ²˜λ¦¬λ©λ‹ˆλ‹€. μ΄λ ‡κ²Œ ν•¨μœΌλ‘œμ¨ μš΄μ˜μ²΄μ œλŠ” μ‚¬μš©μž ν”„λ‘œκ·Έλž¨μ— ν•„μš”ν•œ μ„œλΉ„μŠ€λ₯Ό μ œκ³΅ν•˜λ©΄μ„œλ„ μ•ˆμ „성을 μœ μ§€ν•  μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.

이쀑λͺ¨λ“œλŠ” μ‹œμŠ€ν…œμ˜ μ•ˆμ •μ„±κ³Ό λ³΄μ•ˆμ„ ν™•λ³΄ν•˜κΈ° μœ„ν•œ μ€‘μš”ν•œ λ³΄μ•ˆ κΈ°λŠ₯ μ€‘ ν•˜λ‚˜μ΄λ©°, μ»΄ν“¨ν„° μ‹œμŠ€ν…œμ΄ μ•ˆμ •μ μœΌλ‘œ λ™μž‘ν•˜κ³  μ™ΈλΆ€ κ³΅κ²©μœΌλ‘œλΆ€ν„° μ•ˆμ „ν•˜κ²Œ λ³΄ν˜Έλ˜λ„둝 λ„μ™€μ€λ‹ˆλ‹€.

 

 

 

μ‹œμŠ€ν…œ 호좜(System Call)

운영체제의 μ‹œμŠ€ν…œ ν˜ΈμΆœ(System Call)은 μ‚¬μš©μž ν”„λ‘œκ·Έλž¨μ΄ μš΄μ˜μ²΄μ œμ˜ μ„œλΉ„μŠ€λ₯Ό μš”μ²­ν•˜λŠ” μΈν„°νŽ˜μ΄μŠ€μž…λ‹ˆλ‹€. μ‚¬μš©μž ν”„λ‘œκ·Έλž¨μ΄ μ§μ ‘ ν•˜λ“œμ›¨μ–΄ μžμ›μ— μ ‘κ·Όν•˜λŠ” κ²ƒμ€ ν—ˆμš©λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λŒ€μ‹ , μ‹œμŠ€ν…œ ν˜ΈμΆœμ„ ν†΅ν•΄ μš΄μ˜μ²΄μ œμ—κ²Œ νŠΉμ • μž‘업을 μˆ˜ν–‰ν•΄λ‹¬λΌκ³  μš”μ²­ν•  μˆ˜ μžˆμŠ΅λ‹ˆλ‹€. μ‹œμŠ€ν…œ ν˜ΈμΆœμ€ μ‚¬μš©μž λͺ¨λ“œ(User Mode)μ—μ„œ μ‹€ν–‰ μ€‘인 ν”„λ‘œκ·Έλž¨μ΄ μ»€λ„ λͺ¨λ“œ(Kernel Mode)둜 μ „ν™˜λ  μˆ˜ μžˆκ²Œ ν•΄μ€λ‹ˆλ‹€. μ΄λ ‡κ²Œ ν•¨μœΌλ‘œμ¨ μš΄μ˜μ²΄μ œλŠ” ν”„λ‘œκ·Έλž¨μ˜ μš”청을 λ°›μ•„듀이고 μ•ˆμ „ν•˜κ²Œ μ‹€ν–‰ν•  μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.

 



μ‹œμŠ€ν…œ 호좜의 μ˜ˆμ‹œλ‘œλŠ” λ‹€μŒκ³Ό 같은 μž‘μ—…μ΄ 포함될 수 μžˆμŠ΅λ‹ˆλ‹€.

1. 파일 관리(File Management): νŒŒμΌμ„ μ—΄κ³  λ‹«λŠ” 것, 읽고 μ“°λŠ” 것, 파일과 디렉토리λ₯Ό μƒμ„±ν•˜κ±°λ‚˜ μ‚­μ œν•˜λŠ” λ“±μ˜ 파일 κ΄€λ ¨ μž‘μ—…μ„ μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

2. ν”„λ‘œμ„ΈμŠ€ μ œμ–΄(Process Control): μƒˆλ‘œμš΄ ν”„λ‘œμ„ΈμŠ€λ₯Ό μƒμ„±ν•˜κ±°λ‚˜ 기쑴의 ν”„λ‘œμ„ΈμŠ€λ₯Ό μ’…λ£Œν•˜λŠ” μž‘μ—…, ν”„λ‘œμ„ΈμŠ€ κ°„ 톡신을 μœ„ν•œ κΈ°λŠ₯ 등이 ν¬ν•¨λ©λ‹ˆλ‹€.

3. μž₯치 관리(Device Management): μž…μΆœλ ₯ μž₯μΉ˜μ™€μ˜ 톡신을 μœ„ν•œ κΈ°λŠ₯, 예λ₯Ό λ“€μ–΄ ν”„λ¦°ν„°λ‘œ 좜λ ₯ν•˜κ±°λ‚˜ ν‚€λ³΄λ“œμ—μ„œ μž…λ ₯을 λ°›λŠ” μž‘μ—… 등이 μžˆμŠ΅λ‹ˆλ‹€.

4. 톡신(Communication): ν”„λ‘œμ„ΈμŠ€ κ°„μ˜ 톡신을 μœ„ν•œ μž‘μ—…, 예λ₯Ό λ“€μ–΄ μ†ŒμΌ“μ„ μ—΄μ–΄ λ„€νŠΈμ›Œν¬λ₯Ό ν†΅ν•œ 톡신을 ν•˜λŠ” μž‘μ—…μ΄ 여기에 μ†ν•©λ‹ˆλ‹€.

5. λ©”λͺ¨λ¦¬ 관리(Memory Management): λ©”λͺ¨λ¦¬λ₯Ό ν• λ‹Ήν•˜κ³  ν•΄μ œν•˜λŠ” μž‘μ—…, λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€μ™€μ˜ λ©”λͺ¨λ¦¬ 곡유 등이 여기에 ν¬ν•¨λ©λ‹ˆλ‹€.

μ‹œμŠ€ν…œ ν˜ΈμΆœμ€ μΌλ°˜μ μœΌλ‘œ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ˜ ν‘œμ€€ λΌμ΄λΈŒλŸ¬λ¦¬ ν•¨μˆ˜λ₯Ό ν†΅ν•΄ μ ‘κ·Όλ©λ‹ˆλ‹€. μ΄ ν•¨μˆ˜λ“€μ€ μ‚¬μš©μž ν”„λ‘œκ·Έλž¨μ΄ νŠΉμ • μš΄μ˜μ²΄μ œ κΈ°λŠ₯을 μ‚¬μš©ν•  μˆ˜ μžˆλ„둝 λ„와주며, λ‚΄λΆ€μ μœΌλ‘œλŠ” μ‹œμŠ€ν…œ ν˜ΈμΆœμ„ ν˜ΈμΆœν•˜μ—¬ μš΄μ˜μ²΄μ œμ—κ²Œ μž‘업을 μš”μ²­ν•©λ‹ˆλ‹€. μ‹œμŠ€ν…œ ν˜ΈμΆœμ€ μš΄μ˜μ²΄μ œμ˜ ν•΅μ‹¬ κΈ°λŠ₯을 μ™ΈλΆ€μ— λ…ΈμΆœν•˜μ§€ μ•ŠμœΌλ©΄μ„œλ„ μ•ˆμ „ν•˜κ²Œ μ‚¬μš©μž ν”„λ‘œκ·Έλž¨κ³Ό μš΄μ˜μ²΄μ œ κ°„μ˜ μƒν˜Έμž‘μš©μ„ κ°€λŠ₯μΌ€ ν•©λ‹ˆλ‹€.

 

 

 

μ‹œμŠ€ν…œ 호좜의 μ’…λ₯˜

μ‹œμŠ€ν…œ ν˜ΈμΆœμ˜ μ’…λ₯˜λŠ” μš΄μ˜μ²΄μ œλ§ˆλ‹€ μ‘°κΈˆμ”© λ‹€λ₯Ό μˆ˜ μžˆμ§€λ§Œ, μΌλ°˜μ μœΌλ‘œ μ‚¬μš©λ˜λŠ” λͺ‡ κ°€μ§€ μ‹œμŠ€ν…œ ν˜ΈμΆœμ˜ μ’…λ₯˜λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€

1. νŒŒμΌ μ‹œμŠ€ν…œ κ΄€λ ¨ μ‹œμŠ€ν…œ ν˜ΈμΆœ
   - open() νŒŒμΌμ„ μ—΄ λ•Œ μ‚¬μš©λ˜λŠ” μ‹œμŠ€ν…œ ν˜ΈμΆœ.
   - close() νŒŒμΌμ„ λ‹«μ„ λ•Œ μ‚¬μš©λ˜λŠ” μ‹œμŠ€ν…œ ν˜ΈμΆœ.
   - read() νŒŒμΌμ—μ„œ λ°μ΄ν„°λ₯Ό μ½μ„ λ•Œ μ‚¬μš©λ˜λŠ” μ‹œμŠ€ν…œ ν˜ΈμΆœ.
   - write() νŒŒμΌμ— λ°μ΄ν„°λ₯Ό μ“Έ λ•Œ μ‚¬μš©λ˜λŠ” μ‹œμŠ€ν…œ ν˜ΈμΆœ.
   - create() μƒˆλ‘œμš΄ νŒŒμΌμ„ μƒμ„±ν•  λ•Œ μ‚¬μš©λ˜λŠ” μ‹œμŠ€ν…œ ν˜ΈμΆœ.
   - delete() νŒŒμΌμ„ μ‚­μ œν•  λ•Œ μ‚¬μš©λ˜λŠ” μ‹œμŠ€ν…œ ν˜ΈμΆœ.

2. ν”„λ‘œμ„ΈμŠ€ μ œμ–΄ κ΄€λ ¨ μ‹œμŠ€ν…œ ν˜ΈμΆœ
   - fork() ν˜„μž¬ ν”„λ‘œμ„ΈμŠ€λ₯Ό λ³΅μ œν•˜μ—¬ μƒˆλ‘œμš΄ ν”„λ‘œμ„ΈμŠ€λ₯Ό μƒμ„±ν•  λ•Œ μ‚¬μš©λ˜λŠ” μ‹œμŠ€ν…œ ν˜ΈμΆœ.
   - exec() μƒˆλ‘œμš΄ ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν•  λ•Œ μ‚¬μš©λ˜λŠ” μ‹œμŠ€ν…œ ν˜ΈμΆœ.
   - exit() ν˜„μž¬ ν”„λ‘œμ„ΈμŠ€λ₯Ό μ’…λ£Œν•  λ•Œ μ‚¬μš©λ˜λŠ” μ‹œμŠ€ν…œ ν˜ΈμΆœ.
   - wait() μžμ‹ ν”„λ‘œμ„ΈμŠ€κ°€ μ’…λ£Œλ  λ•ŒκΉŒμ§€ λŒ€κΈ°ν•  λ•Œ μ‚¬μš©λ˜λŠ” μ‹œμŠ€ν…œ ν˜ΈμΆœ.

3. λ©”λͺ¨λ¦¬ κ΄€λ¦¬ κ΄€λ ¨ μ‹œμŠ€ν…œ ν˜ΈμΆœ
   - malloc() λ™μ μœΌλ‘œ λ©”λͺ¨λ¦¬λ₯Ό ν• λ‹Ήν•  λ•Œ μ‚¬μš©λ˜λŠ” μ‹œμŠ€ν…œ ν˜ΈμΆœ.
   - free() λ™μ μœΌλ‘œ ν• λ‹Ήλœ λ©”λͺ¨λ¦¬λ₯Ό ν•΄μ œν•  λ•Œ μ‚¬μš©λ˜λŠ” μ‹œμŠ€ν…œ ν˜ΈμΆœ.
   - brk() ν”„λ‘œμ„ΈμŠ€μ˜ λ©”λͺ¨λ¦¬ μ˜μ—­μ„ μ‘°μ •ν•  λ•Œ μ‚¬μš©λ˜λŠ” μ‹œμŠ€ν…œ ν˜ΈμΆœ.

4. ν†΅μ‹ κ³Ό λ„€νŠΈμ›Œν‚Ή κ΄€λ ¨ μ‹œμŠ€ν…œ ν˜ΈμΆœ
   - socket() μ†ŒμΌ“을 μƒμ„±ν•  λ•Œ μ‚¬μš©λ˜λŠ” μ‹œμŠ€ν…œ ν˜ΈμΆœ.
   - connect() μ†ŒμΌ“을 νŠΉμ • μ£Όμ†Œμ™€ μ—°κ²°ν•  λ•Œ μ‚¬μš©λ˜λŠ” μ‹œμŠ€ν…œ ν˜ΈμΆœ.
   - send() λ°μ΄ν„°λ₯Ό μ†ŒμΌ“을 ν†΅ν•΄ λ³΄λ‚Ό λ•Œ μ‚¬μš©λ˜λŠ” μ‹œμŠ€ν…œ ν˜ΈμΆœ.
   - recv() μ†ŒμΌ“을 ν†΅ν•΄ λ°μ΄ν„°λ₯Ό λ°›μ„ λ•Œ μ‚¬μš©λ˜λŠ” μ‹œμŠ€ν…œ ν˜ΈμΆœ.

5. μ‹œκ°„ κ΄€λ ¨ μ‹œμŠ€ν…œ ν˜ΈμΆœ
   - time() ν˜„μž¬ μ‹œκ°„을 κ°€μ Έμ˜¬ λ•Œ μ‚¬μš©λ˜λŠ” μ‹œμŠ€ν…œ ν˜ΈμΆœ.


μ΄λŸ¬ν•œ μ‹œμŠ€ν…œ ν˜ΈμΆœλ“€μ€ μš΄μ˜μ²΄μ œκ°€ μ œκ³΅ν•˜λŠ” μ„œλΉ„μŠ€μ— μ ‘κ·Όν•˜κΈ° μœ„ν•΄ μ‚¬μš©μž ν”„λ‘œκ·Έλž¨μ— μ˜ν•΄ ν˜ΈμΆœλ©λ‹ˆλ‹€. μ‚¬μš©μž ν”„λ‘œκ·Έλž¨μ€ μ΄λŸ¬ν•œ μ‹œμŠ€ν…œ ν˜ΈμΆœμ„ μ‚¬μš©ν•˜μ—¬ 운영체제의 κΈ°λŠ₯을 ν™œμš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 더 μžμ„Έν•œ μ‹œμŠ€ν…œ ν˜ΈμΆœμ€ https://chromium.googlesource.com/chromiumos/docs/+/master/constants/syscalls.mdμ—μ„œ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

 

Chromium OS Docs - Linux System Call Table

Linux System Call Table These are the system call numbers (NR) and their corresponding symbolic names. These vary significantly across architectures/ABIs, both in mappings and in actual name. This is a quick reference for people debugging things (e.g. secc

chromium.googlesource.com

 

 

 

μ €μž‘μžν‘œμ‹œ (μƒˆμ°½μ—΄λ¦Ό)

'컴퓨터 ꡬ쑰 & 운영체제' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

ν”„λ‘œμ„ΈμŠ€ 계측 ꡬ쑰  (0) 2023.10.31
데λͺ¬(Deamon) ν”„λ‘œμ„ΈμŠ€λž€?  (1) 2023.10.28
[보쑰기얡μž₯치] RAID의 μ •μ˜μ™€ μ’…λ₯˜  (0) 2023.10.25
[보쑰기얡μž₯치] ν•˜λ“œ λ””μŠ€ν¬μ™€ ν”Œλž˜μ‹œ λ©”λͺ¨λ¦¬  (0) 2023.10.11
λ¬Όλ¦¬μ£Όμ†Œ(Physical Address)와 λ…Όλ¦¬μ£Όμ†Œ(Logical Address)  (0) 2023.10.11
'컴퓨터 ꡬ쑰 & 운영체제' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • ν”„λ‘œμ„ΈμŠ€ 계측 ꡬ쑰
  • 데λͺ¬(Deamon) ν”„λ‘œμ„ΈμŠ€λž€?
  • [보쑰기얡μž₯치] RAID의 μ •μ˜μ™€ μ’…λ₯˜
  • [보쑰기얡μž₯치] ν•˜λ“œ λ””μŠ€ν¬μ™€ ν”Œλž˜μ‹œ λ©”λͺ¨λ¦¬
μ„œμ•„λž‘πŸ˜ƒ
μ„œμ•„λž‘πŸ˜ƒ
Just Do ItπŸ’ͺ
  • μ„œμ•„λž‘πŸ˜ƒ
    G-Stack
    μ„œμ•„λž‘πŸ˜ƒ
  • 전체
    였늘
    μ–΄μ œ
    • 전체보기 (144)
      • ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄ (78)
        • C++ 기초 (28)
        • C++ μ‘μš© (18)
        • Python (18)
        • JavaScript & NodeJS (0)
        • Go (12)
        • React & NextJS (2)
        • Java (0)
      • AI (2)
      • 컴퓨터 ꡬ쑰 & 운영체제 (31)
      • μ•Œκ³ λ¦¬μ¦˜ (12)
      • λ°μ΄ν„°λ² μ΄μŠ€ (5)
      • λ„€νŠΈμ›Œν¬ (3)
      • λ””μžμΈνŒ¨ν„΄ (5)
      • μ„œλΉ„μŠ€ & 툴 (7)
      • νŠΈλ Œλ“œ&이슈 (1)
  • λΈ”λ‘œκ·Έ 메뉴

    • ν™ˆ
    • νƒœκ·Έ
    • λ°©λͺ…둝
  • 링크

  • 곡지사항

    • GμŠ€νƒμ˜ 기술 λΈ”λ‘œκ·Έ
  • 인기 κΈ€

  • νƒœκ·Έ

    pointer
    c
    νŒŒμΌμž…μΆœλ ₯
    component
    포인터
    ν•˜λ“œλ””μŠ€ν¬
    λ³€μˆ˜
    init
    cpu
    파이썬
    Thread
    λ””μžμΈνŒ¨ν„΄
    c++
    fork
    상속
    쑰건문
    컴퓨터
    STD
    가상메λͺ¨λ¦¬
    μ•Œκ³ λ¦¬μ¦˜
    go
    μž¬κ·€
    ν•¨μˆ˜
    반볡문
    RAM
    μŠ€νƒ
    λ°μ΄ν„°λ² μ΄μŠ€
    λ©”λͺ¨λ¦¬
    λ°°μ—΄
    νŒ¨ν‚€μ§€
  • 졜근 λŒ“κΈ€

  • 졜근 κΈ€

  • hELLOΒ· Designed Byμ •μƒμš°.v4.10.6
μ„œμ•„λž‘πŸ˜ƒ
이쀑λͺ¨λ“œ(Dual Mode)와 μ‹œμŠ€ν…œν˜ΈμΆœ(System Call)
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”