전공 지식/운영체제 (Operating System)

[운영체제] 3. 가상 머신, 시스템 호출의 종류

Thov 2023. 8. 7. 23:04

이중 모드는 커널 모드와 사용자 모드를 지원하는 실행 모드인데, 현대 CPU는 가상화를 지원한다.

이때 가상 머신을 통해서 지원하는데, 이 경우 두 가지 모드 이상을 지원할 수 있다.

 

우선 가상 머신이란 이름 그대로 소프트웨어적으로 만들어낸 가상의 컴퓨터다. 가상 머신을 설치하면 새 OS와 응용 프로그램을 설치하고 실행할 수 있다. 일반적으로는 윈도우 컴퓨터에 리눅스 가상 머신을 설치해서 사용하는 경우가 많다.

컴퓨터에 가상 머신을 설치하고 실행했다면 이것은 우선 사용자 모드로 작동한다. 왜냐하면 가상 머신도 응용 프로그램이기 때문이다.

그렇다는 것은 가상 머신의 응용체제도 사용자 모드로 작동하는 것이다.

그렇다면 가상 머신에 설치된 응용 프로그램이 운영체제 서비스를 제공받으려면 커널 모드로 전환해야 하는데, 이 응용 프로그램이 설치된 운영체제도 사용자 모드에서 실행되고 있으면 어떻게 커널 모드로 전환할 수 있을까?

이런 경우를 대비해서 가상화를 지원하는 CPU는 커널 모드와 사용자 모드뿐만 아니라 가상 머신을 위한 하이퍼바이저 모드를 제공하고 있다. 이를 통해 가상 머신에서 작동하는 응용 프로그램들은 하이퍼바이저 모드로써 가상 머신에 설치된 운영체제로부터 운영체제 서비스를 받을 수 있는 것이다.

 

시스템 호출은 지난 포스트에서 다뤘듯 운영체제 서비스를 제공받기 위한 요청이다.

앞으로 이 시스템 호출에 대해 더 자세히 배울 예정이지만, 우선 POSIX 운영체제(리눅스, 유닉스 등) 시스템 호출의 종류를 대략적으로 정리해보면 다음과 같다.

종류 시스템 호출 설명
프로세스 관리 fork 자식 프로세스 생성
execve 프로세스 실행
(메모리 공간을 새로운 프로그램의 내용으로 덮어씀)
exit 프로세스 종료
waitpid 자식 프로세스가 종료할 때까지 대기
파일 관리 open 파일 열기
close 파일 닫기
read 파일 읽기
write 파일 쓰기
stat 파일 정보 얻기
디렉토리 관리 chdir 작업 디렉토리 변경
mkdir 디렉토리 생성
rmdir (비어 있는) 디렉토리 삭제
파일 시스템 관리 mount 파일 시스템 마운트
umount 파일 시스템 마운트 해제

개발자가 작성하는 프로그래밍 언어들은 내부적으로 위와 같은 시스템 호출을 통해 실행된다. 우리가 알고 있는 printf, scanf같은 C언어 코드도 전부 시스템 호출을 통해 실행되는 것이다.