본문 바로가기
운영체제

[OS] 시스템 콜(System Call)

by 개발LOG 2024. 8. 24.

시스템 콜(System Call)은 운영체제의 커널이 제공하는 서비스에 응용 프로그램이 접근할 수 있도록 하는 인터페이스입니다. 응용 프로그램이 파일 시스템 접근, 네트워크 통신, 메모리 관리 등의 시스템 리소스를 사용하고자 할 때, 직접적으로 하드웨어를 조작하는 대신 시스템 콜을 통해 운영체제에 요청을 하게 됩니다. 이를 통해 운영체제는 안전하고 효율적으로 시스템 리소스를 관리할 수 있습니다.

시스템 콜의 주요 기능

  1. 프로세스 관리: 프로세스의 생성, 실행, 종료 등을 관리합니다. 예를 들어, fork(), exec(), exit() 등의 시스템 콜이 이에 해당합니다.
  2. 파일 조작: 파일 생성, 읽기, 쓰기, 삭제 등 파일 시스템과 관련된 작업을 수행합니다. open(), read(), write(), close() 등이 포함됩니다.
  3. 디바이스 관리: 하드웨어 장치에 대한 접근과 조작을 가능하게 합니다. 예를 들어, 프린터 사용이나 디스크 읽기/쓰기 작업이 여기에 속합니다.
  4. 정보 유지: 시스템 날짜와 시간 설정, 시스템 데이터 통계 등을 조회하고 설정하는 기능을 제공합니다.
  5. 통신: 프로세스 간 통신(IPC) 또는 네트워크 통신을 위한 기능을 제공합니다. socket(), send(), receive() 등이 여기에 해당합니다.
  6. 메모리 관리: 프로세스에 메모리 할당 및 해제를 관리합니다. malloc(), free()와 같은 라이브러리 함수가 내부적으로 시스템 콜을 사용합니다.

시스템 콜의 작동 방식

응용 프로그램이 시스템 콜을 사용하고자 할 때, 다음과 같은 단계를 거칩니다:

  1. 응용 프로그램은 시스템 콜을 호출합니다.
  2. 호출된 시스템 콜은 사용자 모드에서 커널 모드로 전환을 요청합니다.
  3. 운영체제 커널은 요청된 서비스를 수행합니다.
  4. 작업이 완료되면, 커널은 결과를 응용 프로그램에 반환하고 사용자 모드로 다시 전환합니다.

시스템 콜을 통해 운영체제는 시스템 리소스의 안전한 관리와 추상화된 인터페이스를 제공하며, 응용 프로그램은 하드웨어에 대한 직접적인 접근 없이 필요한 기능을 사용할 수 있게 됩니다.

 

https://minchul.net/self-learning-cs/system_calls/syscalls.html

 

https://minchul.net/self-learning-cs/system_calls/syscalls.html

리눅스 시스템 호출 정리 이하 문서는 리눅스의 시스템 콜(x86)을 일부 정리한 문서입니다. 시스템 호출의 이름(Name)을 클릭하면 해당 시스템 호출에 대한 자세한 정보를 안내하는 공식 페이지로

minchul.net

 

'운영체제' 카테고리의 다른 글

[OS] 프로세스 스케줄링  (0) 2024.08.29
[OS] 문맥 교환(Context Switch), PCB  (0) 2024.08.24
[OS] 프로세스 상태 전이  (0) 2024.08.24
[OS] 프로세스  (0) 2024.08.24