pintos project 2: USER PROG - Syscall handler

Jifrozen·2024년 10월 6일

Syscall handler


운영체제는 하드웨어와 가장 밀접하게 상호작용하는 소프트웨어로, 하드웨어 자원(예: CPU, 메모리, 입출력 장치 등)을 관리하고 제어하는 역할을 담당한다. 이러한 운영체제의 기능은 하드웨어를 직접 동작시키거나 제어할 수 있는 기능을 포함하고 있다. 그러나 이러한 기능들을 사용자가 직접적으로 제어할 수 있도록 허용한다면, 이는 시스템 안정성과 보안에 있어 심각한 문제를 초래할 수 있다.

예를 들어, 메모리를 임의로 변경하거나 입출력 장치를 무분별하게 제어하면 다른 프로그램이 정상적으로 동작하지 않을 수 있고, 심지어 시스템 전체가 불안정해질 가능성도 있다. 이러한 이유로 운영체제는 하드웨어에 대한 접근 권한을 엄격하게 제한한다.

운영체제는 보안성과 안정성을 보장하기 위해 사용자 영역(User Space)커널 영역(Kernel Space)을 구분한다.

커널 영역은 운영체제가 하드웨어를 제어하고, 자원 관리와 같은 핵심적인 기능을 수행하는 곳으로, 직접적으로 하드웨어와 상호작용한다. 이 영역은 운영체제만이 접근할 수 있는 보호된 공간이며, 사용자가 임의로 접근하거나 변경할 수 없다.
반면, 사용자 영역은 일반적인 응용 프로그램이 실행되는 공간이다. 사용자가 작성한 프로그램은 이 사용자 영역에서 실행되며, 직접적으로 하드웨어 자원에 접근할 수 없다.
만약 사용자가 커널의 기능을 사용하고자 할 때, 즉 하드웨어 자원을 사용하거나 운영체제의 중요한 기능을 필요로 할 경우에는 시스템 콜(System Call)이라는 특별한 메커니즘을 통해서만 가능하다.

시스템 콜은 사용자 영역에서 커널 영역의 기능을 요청하는 인터페이스로, 운영체제의 기능을 안전하게 호출할 수 있도록 한다.
사용자가 시스템 콜을 호출하면, 프로세스의 실행 모드가 사용자 모드에서 커널 모드로 전환되고, 이를 통해 운영체제는 요청받은 작업을 수행할 수 있다. 작업이 완료된 후에는 다시 사용자 모드로 돌아와서 프로그램 실행을 계속한다.
이렇게 사용자 모드와 커널 모드를 분리하고, 시스템 콜을 통한 간접적인 접근을 통해 운영체제는 보안과 안정성을 유지하면서도 사용자가 필요한 기능을 사용할 수 있게 된다. 이를 통해 시스템의 핵심 자원들이 무분별하게 남용되는 것을 방지하고, 다른 사용자 프로그램들 간의 충돌을 피하며, 시스템 전체의 안전성과 신뢰성을 보장할 수 있다.

현재 pintos는 시스템 콜 핸들러가 구현되어 있지 않아 시스템 콜이 호출될 수 없으므로 응
용 프로그램이 정상적으로 동작하지 않는다

다음은 핀토스에서 시스템콜 호출과정을 보여준다.

0개의 댓글