CS 공부

시스템 호출(System Call) 본문

CS공부/운영체제

시스템 호출(System Call)

kluiop1 2021. 7. 5. 02:17

시스템 호출이란

시스템 호출은 응용 프로그램에서 운영체제에게 어떠한 기능을 수행 해달라고 하는 하나의 수단

 

시스템 호출이 필요한 이유

운영체제는 커널 모드와 사용자 모드로 나누어서 구동되는데

운영체제에서 프로그램이 구동되는데 있어 파일을 읽어 오거나, 파일을 쓰거나, 혹은 화면에 메시지를 출력하는 등 많은 부분이 커널 모드를 사용한다.

 

이때 사용자 모드에 있는 프로그램이 커널 함수를 직접 호출 할 수 없으므로 따로 프로그램이 커널 호출을 요청하는 시스템을 만들어서 커널이 처리해야할 일을 프로그램으로부터 받아서 커널 영역의 기능을 사용자 모드가 사용 가능하게, 즉 프로세스가 하드웨어에 직접 접근해서 필요한 기능을 사용할 수 있게 해준다.

 

시스템 콜이 없으면 사용자 모드에서 아무것도 할 수 없게 된다.

 

시스템 호출의 작동방식

사용자 프로세스가 시스템 콜을 요청하면 제어가 커널로 넘어옴(사용자 모드 -> 커널 모드)

커널은 내부적으로 각각의 시스템 콜을 구분하기 위해 기능별로 고유 번호를 할당하고 그 번호에 해당하는 제어루틴을 커널 내부에 정의

커널은 요청받은 시스템 콜에 대응하는 기능번호를 확인

커널은 그 번호에 맞는 서비스 루틴을 호출

서비스 루틴을 모두 처리하고 나면 커널 모드에서 사용자 모드로 다시 전환

 

시스템 콜의 종류는 다음과 같다

프로세스 제어

파일 조작

장치 관리

시스템 정보 및 자원 관리

통신 관련

 

참고: https://namu.wiki/w/%EC%8B%9C%EC%8A%A4%ED%85%9C%20%EC%BD%9C

'CS공부 > 운영체제' 카테고리의 다른 글

인터럽트(+트랩)  (0) 2021.07.06
스레드(Thread) + 프로세스 VS 스레드  (0) 2021.07.05
PCB와 Context Switching, IPC  (0) 2021.07.05
프로세스  (0) 2021.07.05
운영체제란?  (0) 2021.07.03