2025. 3. 5. 10:35ㆍ정보기술/운영체제 (OS)
1. 시스템 콜이란?
시스템 콜(System Call)은 프로그램이 운영체제의 기능을 요청하는 메커니즘입니다.
일반적인 애플리케이션은 사용자 모드(User Mode)에서 실행되며, 운영체제의 핵심 기능(파일 시스템, 프로세스 관리, 메모리 관리 등)을 사용하려면 커널 모드(Kernel Mode)로 전환해야 합니다.
이때 시스템 콜을 통해 운영체제에게 요청을 전달합니다.
✅ 사용자 프로그램 → 시스템 콜 호출 → 커널 모드 전환 → 요청 처리 → 사용자 모드 복귀
2. 시스템 콜의 종류와 예제
📌 주요 시스템 콜 종류
1️⃣ 파일 조작 (File Management)
- open() : 파일 열기
- read() : 파일 읽기
- write() : 파일 쓰기
- close() : 파일 닫기
2️⃣ 프로세스 관리 (Process Management)
- fork() : 새로운 프로세스 생성
- exec() : 실행 중인 프로세스를 다른 프로그램으로 교체
- exit() : 프로세스 종료
- wait() : 자식 프로세스 종료 대기
3️⃣ 메모리 관리 (Memory Management)
- mmap() : 파일을 메모리에 매핑
- brk() : 힙 메모리 크기 변경
4️⃣ 입출력 관리 (I/O Management)
- read() : 키보드 입력 읽기
- write() : 화면 출력
5️⃣ 네트워크 및 통신 (Networking & IPC)
- socket() : 네트워크 소켓 생성
- bind(), listen(), accept() : 서버 소켓 설정 및 클라이언트 요청 처리
3. 시스템 콜이 실행되는 과정
1️⃣ 사용자 모드에서 시스템 콜 호출
2️⃣ 시스템 콜 번호를 레지스터에 저장 및 트랩(Trap) 발생
3️⃣ 커널 모드 전환 (Context Switching 발생)
4️⃣ 시스템 콜 핸들러 실행 (System Call Table 참조)
5️⃣ 요청 처리 후 결과 반환 및 사용자 모드 복귀
✅ 트랩(Trap) : 예상된 이벤트(시스템 콜, 예외) 처리
✅ 인터럽트(Interrupt) : 예상치 못한 이벤트(하드웨어, I/O 등) 처리
4. 보안 이슈와 해결 방법
📌 시스템 콜 보안 이슈
🔹 악성 코드 및 권한 상승 공격 (예: CVE-2020-28588)
🔹 불필요한 시스템 콜 호출로 인한 보안 위험
🔹 메모리 조작을 통한 커널 침투 가능성
📌 보안 강화 방법
✅ seccomp(Secure Computing Mode) 활용 → 허용된 시스템 콜만 실행
✅ 샌드박싱(Sandboxing) → 특정 프로세스의 시스템 콜 제한
✅ 커널 업데이트 및 취약점 패치 적용
5. 성능 이슈 및 최적화 방법
📌 시스템 콜이 성능 저하를 일으키는 이유
🔹 커널 모드 전환(Context Switching) 비용 발생
🔹 입출력(I/O) 시스템 콜 호출 시 높은 오버헤드
🔹 네트워크 및 파일 시스템 관련 작업의 지연(latency)
📌 성능 최적화 방법
✅ mmap() 활용 → read()보다 빠른 메모리 매핑 방식 사용
✅ 비동기 I/O (io_uring) 활용 → 시스템 콜 호출 횟수 감소
✅ 배치 처리 (Batching) → 한 번에 많은 요청을 처리
6. 시스템 콜 벤치마크: mmap() vs read()
// 성능 비교: read() vs mmap()
void benchmark_read();
void benchmark_mmap();
방법 | 실행 시간 (100MB 파일) |
read() | 280 ms |
mmap() | 45 ms |
✅ mmap()은 한 번만 시스템 콜을 호출하므로 read()보다 약 6배 빠름
✅ 하지만 랜덤 접근(Random Access) 환경에서는 read()가 더 유리할 수도 있음
7. 최신 운영체제에서의 시스템 콜 최적화 기법
✅ io_uring : 최신 리눅스 커널에서 비동기 I/O 성능을 극대화
✅ 시스템 콜 병렬 처리 : 멀티코어 CPU 활용하여 시스템 콜 속도 향상
✅ 가상화(Virtualization) 최적화 : 가상머신(VM) 환경에서 시스템 콜 속도 개선
🚀 최종 요약 및 학습 목표
✅ 시스템 콜은 운영체제가 제공하는 서비스에 접근하기 위한 메커니즘
✅ 보안과 성능 최적화를 고려해야 함 (예: seccomp 필터링, mmap() 활용 등)
✅ 최신 운영체제는 io_uring 등 성능 최적화 기법을 도입
'정보기술 > 운영체제 (OS)' 카테고리의 다른 글
운영체제 락 개념과 동기화 기법 (마무리: 락(Lock)과 동기화 정리) (0) | 2025.02.26 |
---|---|
운영체제 락 개념과 동기화 기법 (4. OS 내부 락과 문제 해결) (0) | 2025.02.26 |
운영체제 락 개념과 동기화 기법 (Mutex, RLock, RWLock, 스핀락, 세마포어 비교 요약 정리) (0) | 2025.02.26 |
운영체제 락 개념과 동기화 기법 (3. 고급 락(Spinlock & Semaphore) / 스핀락(Spinlock)과 세마포어(Semaphore)) (0) | 2025.02.26 |
운영체제 락 개념과 동기화 기법 (2. 기본 락(Lock) / 2-3. 읽기-쓰기 락(Read-Write Lock, RWLock)) (0) | 2025.02.26 |