🔔 시스템 콜(system call)
💡 운영체제의 역할
- 운영체제는 사용자가 실행하는 응용 프로그램이 올바르게 실행되도록 돕고 필요한 자원을 할당해주는 프로그램이다.
- 운영체제는 문지기처럼 사용자가 실행하는 응용 프로그램이 하드웨어 자원에 직접 접근하는 것을 방지해 자원을 보호한다.
- 즉, 하드웨어 자원은 운영체제를 통해서만 접근할 수 있다.
💡 응용 프로그램이 자원에 접근하려면?
- 응용 프로그램이 자원에 접근하기 위해서는 운영체제에 도움을 요청해야 한다. 즉, 운영체제의 코드를 실행해야 한다.
- 응용 프로그램의 요청을 받은 운영체제는 응용 프로그램 대신 자원에 접근해 요청한 작업을 수행한다.
💡 CPU의 이중 모드(dual mode)
- 이중 모드는 CPU가 명령어를 실행하는 모드를 크게 사용자 모드와 커널 모드로 구분하는 방식이다.
- 플래그 레지스터의 슈퍼바이저 플래그를 통해 CPU가 어떤 모드인지 알 수 있다. → 이 플래그 변수를 modebit 라고 한다
- 0일 경우 커널 모드로 실행 중임을 의미하고 1일 경우 사용자 모드로 실행 중임을 의미한다.
- 사용자 모드(user mode)
- 운영체제 서비스를 제공받을 수 없는 실행 모드이다.
- 일반적인 응용 프로그램은 기본적으로 사용자 모드로 실행된다.
- 사용자 모드로 실행 중인 CPU는 입출력 명령어와 같이 하드웨어 자원에 접근하는 명령어를 실행할 수 없다.
- 커널 모드(kernel mode)
- 운영체제 서비스를 제공받을 수 있는 실행 모드이다.
- CPU가 커널 모드로 명령어를 실행하면 자원에 접근하는 명령어를 비롯한 모든 명령어를 실행할 수 있다.
💡 시스템 콜이란?
- 사용자 모드로 실행되는 프로그램이 자원에 접근하는 운영체제 서비스를 제공받으려면 운영체제에 요청을 보내 커널 모드로 전환되어야 한다.
- 이 때, 커널 모드로 전환하기 위한 요청을 시스템 콜이라고 한다.
- 시스템 콜은 일종의 인터럽트이다. (소프트웨어 인터럽트)
- 그래서 CPU가 시스템 콜을 처리하는 순서는 인터럽트 처리 순서와 유사하다.
- 시스템 콜을 발생시키는 명령어가 실행되면 CPU는 지금까지의 작업을 백업하고, 커널 영역 내에 시스템 콜을 수행하는 코드(인터럽트 서비스 루틴)을 실행한 뒤 다시 기존에 실행하던 응용 프로그램으로 복귀해 실행을 계속해 나간다.
- 일반적으로 응용 프로그램은 실행 과정에서 빈번하게 시스템 콜을 발생시키고 사용자 모드와 커널 모드를 오가며 실행한다.
💡 응용 프로그램이 하드 디스크에 데이터를 저장하는 과정
- 응용 프로그램은 하드 디스크에 데이터를 저장하는 시스템 콜을 발생시켜 커널 모드로 전환한다.
- 운영체제 내의 ‘하드 디스크에 데이터를 저장하는 코드’를 실행함으로써 하드 디스크에 접근할 수 있다.
- 응용 프로그램 대신 운영체제가 작업을 수행한다.
- 하드 디스크에 접근이 끝났다면 다시 사용자 모드로 복귀해 실행을 계속해 나간다.
- 출처
- 도서 [혼자 공부하는 컴퓨터구조 + 운영체제]
- 도서 [면접을 위한 CS 전공지식 노트]
'💾 CS' 카테고리의 다른 글
네트워크의 규칙: 프로토콜, 패킷, TCP/IP (0) | 2024.05.09 |
---|---|
LAN, MAN, WAN (0) | 2024.05.08 |
HTTP 상태 코드(HTTP Status Code) (0) | 2024.05.07 |
인터럽트(interrupt) (0) | 2024.05.07 |
유니캐스트, 멀티캐스트, 브로드캐스트 (0) | 2024.04.23 |