시스템 콜을 설명하기 앞서 운영체제는 시스템을 보호하기 위해 이중 동작 모드로 동작합니다.
이중 동작 모드는 사용자 모드와 커널 모드로 나눠집니다.
사용자 모드는 접근할 수 있는 메모리 영역이 사용자에게 허용된 정도로 제한되어 있고, 하드웨어에 직접적으로 접근할 수 없습니다.
커널 모드는 모든 시스템 메모리와 CPU Instruction에 접근 가능하고, 하드웨어에 직접적으로 접근 할 수 있습니다.
커널 모드가 사용자 모드보다 높은 권한을 가져 사용자 모드에서 유저 애플리케이션의 필요에 따라 커널 모드로 변환하여 시스템 영역에 접근할 수 있습니다.
이렇게 사용자 모드에서 커널 모드로 전환하기 위해 필요한 인터페이스를 시스템 콜이라고 합니다.
가장 큰 이유는 유저 애플리케이션(ex. 우리가 흔히 개발하여 실행하는 자바 애플리케이션)이 운영체제의 치명적인 데이터를 수정/삭제하는 권한을 막기 위해서 입니다. 직접적인 하드웨어 요청이나 기타 시스템요청은 OS가 제공하는 System call을 통해 호출하도록 제공해줍니다.
만약 유저 애플리케이션이 System call을 호출하여 사용하면, 해당 애플리케이션은 커널모드로 잠시 전환되는 작업을 거치게 됩니다.
1) 프로세스 제어(Process Control)
프로세스 실행, 생성, 대기 등
2) 파일 조작(File manipulation)
파일 열기, 읽기, 쓰기 등
3) 장치 관리(Device management)
디바이스 부착, 분리, 읽기, 쓰기 등
4) 정보 유지(Information maintenance)
날짜, 시간 설정등
5) 통신(Communication)
통신 연결 생성, 제거, 상태 정보 전달 등
피드백 및 개선점은 댓글을 통해 알려주세요😊