본 글은 시스템 호출에 정리하고자 다른 레퍼런스를 참고하여 작성한 글입니다.
시스템 호출이란?
시스템 호출 혹은 시스콜(syscall)은 운영체제의 커널이 응용프로그램의 요청에 따라
커널에 접근하기 위한 인터페이스입니다.
응용 프로그램들과 커널은 CPU의 권한수준, 하드웨어의 접근 능력이 다르기때문에
운영체제에게 부탁하여 처리하는 것입니다.
커널은 CPU 시스템의 물리주소가 일치하는 특정 메모리 위치에서 동작하고 모든 주소는
물리주소로 고정되어 컴파일되고 로드되어 실행됩니다.
즉 부팅 과정에서 일정부분을 점유하여 동작하기에 하드웨어의 접근이 가능해집니다.
하지만 응용프로그램들은 사용자에 요청에 따라 각기 다른 위치를 점유하고 실행되어
물리주소를 확정 지을 수가 없습니다.
즉 논리주소를 사용하는 것인데 MMU를 이용해 논리주소를 물리주소로 변환해 링크하기에
커널과는 권한수준등이 다르게 정의되어 특정한 기계어 명령어 실행이 불가능합니다.
이러한 상황으로 응용프로그램은 파일 시스템을 사용하는 여러 상황에서 커널을 의존해야
하는 상황이고 이때 커널의 서비스를 사용하는 방법이 시스템호출 이라고 합니다.
시스템 호출의 기능
시스템 호출은 응용프로그램에서 지원하지 않는 기능을 커널에 의존해 호출하여 이용하는 것을
말하는데 이때 세가지의 기능을 합니다.
1. 사용자 모드에 있는 응용프로그램이 커널의 기능을 사용할 수 있게한다.
2. 시스템 호출을 사용시 사용자 모드에서 커널 모드로 변경된다.
3. 커널에서 시스템 호출을 처리하면 커널 모드는 다시 사용자 모드로 돌아가 작업을 이어간다.
그러면 이러한 호출로써 무엇이 가능한지는 크게
프로세스 제어, 파일 조작, 장치 관리, 정보 유지, 통신로 5가지가 존재합니다.
위의 내용을 토대로 정리하면 시스템 호출은 응용 프로그램이 커널 서비스를 이용하기 위해 요청하는 것을 말하는 것이고,
명령어 실행은 응용 프로그램이 가지고 있는 값들을 실행하는 것이기에 엄연히 권한수준과 하드웨어의 접근능력등이
다르니 두개를 혼동하지 말고 확실히 구분하는 것이 필요하다.
Reference
1. https://ko.wikipedia.org/wiki/%EC%8B%9C%EC%8A%A4%ED%85%9C_%ED%98%B8%EC%B6%9C
'Reference' 카테고리의 다른 글
(Python) MRO - Method Resolution Order (0) | 2022.09.02 |
---|