제이슨의 개발이야기

시스템 호출은 무엇인가? 어떻게 동작하는가? System Call 본문

운영체제

시스템 호출은 무엇인가? 어떻게 동작하는가? System Call

제이쓰은 2022. 10. 17. 19:27
728x90
반응형

안녕하세요

오늘은 System Call 에 대해서 공부해보고자 합니다!

 

저번 시간에 운영체제에 대해서 공부 했었습니다

그때 커널 모드와 사용자 모드가 있다는 것을 공부했는대

 

커널 모드사용자 모드에 대해서 좀 더 이야기 해보고자 합니다 

 

일단 커널 모드사용자 모드 두가지 모드로 나눈 이유는 

프로그램이 마음대로 CPU 자원을 쓰는 것을 막기 위해서 입니다

 

운영체제가 직접 어떠한 규칙과 순서에 맞춰서 프로그램에 자원을 배분해야지 프로그램 마음대로 자원을 쓰게 될 경우 

진짜 중요한 프로그램이 자원을 사용하지 못해 문제가 발생할 수 있기 때문입니다.

 

그래서 

 

사용자 모드로 실행되는 프로그램은 시스템 자원을 접근 할 수 없습니다

 

커널모드는 사용자 모드와 다르게 운영체제 서비스를 제공 받을 수 있습니다 즉 자원에 접근하는 명령어를 비롯한 모든 명령어를 실행 할 수 있는 모드 입니다 

 

여기까지 공부하게 되면 의문이 생깁니다

 

아니 그러면 우리가 사용하고자 하는 응용프로그램은 사용자모드에 있다고 했는대 그러면 어떻게 우리가 실행해서 사용할 수 있는거지?

커널모드로 모드가 바뀌는건가? 란 의문이 생기게될겁니다

 

맞습니다 우리가 사용하고자 하는 프로그램들은 우리가 사용하기 위해서 시스템호출(System Call) 이란 요청을 하게 됩니다 

정리하자면 시스템 호출(System Call)은 운영체제 서비스를 제공받기 위해 커널모드로 전환하는 방법입니다

 

 

 

이렇게 시스템 호출을 받게되면 CPU는 지금까지 작업(시스템 호출 받기전에 하던 일)을 백업 시키고 커널 영역 내에 시스템 호출을 수행하는 코드를 실행 한 뒤 다시 기존에 작업했던 프로그램으로 복귀 하여 게속 작업 합니다.

 

여기서 중요한 점은 시스템 호출한 프로그램이 커널모드로 전환 후  프로그램이 종료될때 까지 CPU자원을 사용하지 않습니다

어떤 프로그램이 자원을 사용 할수 있는 시간제한 , 혹은 지금 실행하고 있는 프로그램보다 더 우선순위가 높은 프로그램의 시스템 호출이 있을 경우 다시 사용자 모드로 복귀 후 다시 시스템 호출을 합니다 즉 시스템 호출과 시스템 호출 복귀가 반복적으로 일어나게됩니다 

 

메모리 안에서 시스템 호출과 복귀 모습
시스템 호출과 복귀가 반복되는 이미지

               시스템 호출의 종류는 여러가지가 있는대 대표적으로 

fork() : 자식 프로세스 생성

open() 파일 열기

write() 파일 쓰기

chdir() 작업 디렉터리 변경 

등이 있습니다.

 

 

최종으로 다시 정리하자면

 

시스템 호출(System Call)은 사용자모드(User process)에서 운영체제 서비스를 제공받기 위해 커널모드로 전환하는 방법

728x90
반응형