시스템 콜
- 커널에 접근하기 위한 인터페이스. 응용프로그램과 커널을 이어주는 역할임
- C/C++같은 하이레벨 언어로 작성된다
그 전에..
커널이 뭔데
- OS는 소프트웨어다
- 얘도 전원켜지면 메모리에 올라가야함
- 근데 운영체제처럼 사이즈가 큰 프로그램을 한번에 메모리에 올리면 공간낭비가 발생하겠지
- OS중 항상 필요한 부분만 메모리에 올려놓고. 필요한 부분은 나중에 메모리에 올려서 사용하기로 함 → 여기서 메모리에 올라가있는 OS가 커널
한 줄 요약 : 커널은 운영체제에서 핵심적인 부분
동작배경. 왜 시스템 콜이 필요한가?
- 프로그램의 작동 시 커널의 도움 필요
- 우리가 사용하는 대부분의 프로그램 → 응용프로그램
- 유저레벨보다 커널레벨에서 동작 필요 (시스템 자원에 접근해야할 때)
- 커널모드로의 접근 → 따라서 시스템 콜 사용
- 커널 영역의 기능을 사용자 모드가 사용가능하게끔
- 커널모드에 접근 → 권한 획득
- 굳이 이렇게 권한을 추가하는 이유?
- 검증받지 못한 외부로부터의 접근 제한하기 위함
- 사용자모드에서 하드웨어 제어 하려고하면 excepton 발생하게 된다
- 사실 직접적인 시스템 콜보다는 API로 호출이 많이 됨
- 윈도우에서는 Win32
- 리눅스와 MAC은 POSIX-API (MAC이 리눅스 기반OS라 같은 API를 사용하는듯)
- JVM에서는 Java API
동작방식