system call에 대하여 설명해주세요
- 0012 Career 💼#
system call은 커널코드를 간접적으로 호출할 수 있게 만들어주는 인터페이스로, read, write, seek, fork, exec 등이 있습니다.
시스템 콜이 없으면 어떻게 되나요?
마이크로소프트 DOS 운영체제는 시스템 콜이 따로 없는걸로 알고 있는데요, 그 결과 하드웨어 드라이버를 누구나 건들일 수 있어 이를 악용해 해킹을 시도하는 등 많은 문제가 있던 걸로 알고 있습니다.
시스템 콜을 구현해보시면서 가장 어려웠던 부분이 무엇인가요?
fork 할때 부모의 레지스터를 복제하는 과정에서 유저랜드가 아닌, 커널모드 레지스터를 복제하는 바람에 자식 프로세스가 커널영역 코드를 실행하는 것이 가장 골치아팠습니다. 유저가 fork를 한 지점의 레지스터를 스레드 구조체에 백업하고, 부모의 컨텍스트를 복제하는 과정에 이를 활용하는 방법으로 문제를 해결했습니다.
2024-01-17 추가 topics#
- cs:app에서 Exceptional Control Flow 파트
- (fault, trap, abort), interrupt 간의 차이 exception의 종류와 차이점을 알려주세요
- 프로세서의 Protection Ring에 따른 명령어 권한
Protection ring(보호 링)은 운영 체제에서 프로세스와 자원 간의 보안 및 권한 관리를 위한 메커니즘 중 하나입니다. 이는 주로 CPU 아키텍처와 관련이 있습니다. Protection ring은 일반적으로 0부터 3까지의 숫자로 표현되며, 낮은 번호일수록 높은 권한을 가집니다. 일반적으로 다음과 같은 세 가지 주요 링이 사용됩니다:
-
Ring 0 (커널 모드 또는 슈퍼바이저 모드):
- 가장 높은 권한을 가진 링으로, 운영 체제의 커널이 실행되는 곳입니다.
- 시스템 레벨의 작업을 수행하며 모든 자원에 대한 접근 권한을 가집니다.
-
Ring 1 및 Ring 2 (유저 모드):
- 사용자 모드에서 실행되는 응용 프로그램이나 서비스를 위한 낮은 권한 링입니다.
- 시스템 콜이나 특정 권한이 필요한 작업을 수행할 때, 유저 모드에서 커널 모드로 전환될 수 있습니다.
-
Ring 3 (유저 모드):
- 가장 낮은 권한을 가진 링으로, 대부분의 응용 프로그램이 실행되는 곳입니다.
- 기본적인 응용 프로그램 코드가 이 링에서 실행되며, 이 링에서 직접 시스템 레벨 작업을 수행할 수 없습니다.
Protection ring은 다중 사용자 환경에서의 보안을 강화하고, 커널과 응용 프로그램 간의 상호작용을 통제함으로써 안정성을 유지합니다. 커널은 높은 권한을 갖고 있어 시스템 레벨의 작업을 수행할 수 있지만, 응용 프로그램은 낮은 권한을 가지고 있어 보안상 중요한 작업을 수행하지 못하도록 제한됩니다. 이러한 구조는 컴퓨팅 시스템에서 안전하고 효율적인 운영을 가능하게 합니다.