하드웨어, 운영 체제, 프로세스, 스레드 컴퓨터가 국가라면 운영체제는 '정부조직', 스레드는 국민(개인), 프로세스는 '가족', 하드웨어는 '영토'
[응용 프로그램] ↓ [Windows API 호출] ↓ [API가 내부적으로 시스템 콜 준비] ↓ [사용자 모드 → 커널 모드 전환] ↓ [커널에서 시스템 콜 처리] ↓ [커널이 결과 반환 (커널 → 사용자 모드 전환)] ↓ [API가 결과 반환] ↓ [응용 프로그램 결과 확인 및 처리]
구분
API
시스템 콜
정의
소프트웨어와 운영 체제 간 상호작용을 위한 고수준 함수 집합
응용 프로그램이 커널에 직접 요청을 보내는 저수준 인터페이스
역할
프로그래머가 쉽게 운영 체제 기능을 사용하도록 추상화
커널에서 실제 작업(파일 I/O, 메모리 관리 등)을 수행
실행 위치
사용자 모드에서 실행
커널 모드에서 실행
추상화 수준
고수준 (사용자 친화적)
저수준 (운영 체제 내부 구조와 밀접하게 연관)
예시 함수
Windows API:CreateFile, POSIX API:open
Windows:NtCreateFile, Linux:sys_open
호출 방식
시스템 콜을 감싸는 래퍼(wrapper)로 동작
CPU 명령어(syscall,int)로 사용자 모드에서 커널 모드로 전환
API는 시스템 콜 위에서 동작하는 경우가 많습니다.
예를 들어, Windows API의CreateProcess는 내부적으로NtCreateProcess라는 시스템 콜을 호출합니다.
하지만 모든 API가 시스템 콜을 호출하지는 않습니다.
예: 문자열 처리 함수(strcpy)는 단순히 사용자 모드에서만 실행되며, 커널과 상호작용하지 않습니다.