System Call

dragonappear·2023년 5월 19일
0

Operating System 101

목록 보기
1/10


운영체제가 제공하는 서비스

  • 사용자 인터페이스
  • 프로그램 실행
  • 입출력 연산
  • 파일시스템 조작
  • 통신
  • 오류 탐지
  • 자원 할당
  • 회계
  • 보안

명령어 해석기

CLI로 인터페이스를 제공할 때는 명령어 해석기가 필요하다.

명령어 해석기가 뭔데요

  • 윈도우와 유닉스 같은 운영 체제는 명령어 해석기를 작업이 시작되거나 처음 로그인 할 때 실행하는 특수한 프로그램으로 취급한다.
  • 선택할 수 있는 여러 명령어 해석기를 제공하는 시스템에서는 이러한 명령어 해석기를 이라고도 불린다.

명령어 해석기 역할

사용자가 지정한 명령을 가져와서, 메모리에 적재한 후, 그것을 실행한다.

ex) rm file.txt

  1. rm 이라고 불리는 파일(프로그램)을 찾는다.
  2. 그 파일(프로그램)을 메모리에 적재한다.
  3. 매개변수 file.txt를 전달한다.
  4. 실행한다.

명령어 해석기 구현

  • 명령 해석기 자체가 명령을 실행할 코드를 가지는 경우
    • 명령 해석기가 자신의 코드를 분기하면 된다.
    • 명령어 개수만큼 명령어 해석기의 크기가 커진다.
  • 시스템 프로그램에서 명령을 구현한 경우
    • 명령 해석기는 명령을 알지 못해도 된다.
    • 그냥 메모리에 명령어를 적재하고 실행시키면 된다.

시스템 콜

시스템 콜이 뭔데요

운영체제가 제공하는 서비스의 인터페이스

응용/시스템 프로그램은 운영체제가 제공하는 서비스를 사용하려면 시스템 콜을 호출해야 한다.

시스템콜 유형

  • 프로세스 제어
  • 파일 조작
  • 장치 조작
  • 정보 유지
  • 통신
  • 보호

표준 C 라이브러리

표준 C 라이브러리는 많은 버전의 유닉스, 리눅스를 위한 시스템콜 인터페이스를 제공한다.

여기에서 말하는 라이브러리는 시스템콜 인터페이스이다.
라이브러리에서 구현한 함수를 호출하면 내부에서 시스템콜을 호출한다.

아래와 같은 프로그램을 실행할 때

#include<stdio.h>

int main(){
	print("Greetings");
}
  1. 라이브러리에서 제공하는 printf() 함수를 호출한다.
  2. printf() 내부에서 시스템콜을 호출한다.
  3. 사용자 모드에서 커널 모드로 전환된다.
  4. 시스템콜이 실행된다.

라이브러리의 목적: 시스템콜 추상화

라이브러리의 구체적인 동작 방식

위 그림에서 handler, table 등 너무 자세한 내용은 제외하고 살펴보면

  1. 사용자 프로그램에서 라이브러리 함수를 호출한다.
  2. 함수 내부에서 시스템콜을 호출한다.
  3. 커널에서 관리하는 시스템콜 관련 테이블을 살펴본다.
    • 테이블에는 각 시스템콜의 번호와 시스템콜 함수에 대한 포인터를 관리한다.
  4. 테이블에 매핑된 함수를 호출한다.

크게 보면 위와 같은 방식으로 동작한다.

시스템콜 파라미터를 전달하는 방식

  1. 파라미터를 레지스터 내에 전달
  2. 파라미터가 레지스터보다 더 많은 경우, 메모리 내의 블록이나 테이블에 파라미터를 저장하고, 블록의 주소가 레지스터 내에 매개변수로 전달됨
  3. 프로그램에서 스택에 매개변수를 넣고, 운영체제가 스택에서 매개변수를 꺼내는 방법

시스템 프로그램

시스템 프로그램은 프로그램 개발과 실행을 위해 보다 편리한 환경을 제공한다.
그들 중 몇몇은 단순히 시스템콜 인터페이스이다.

시스템 프로그램 분류

  • 파일 관리 프로그램
    • 파일을 조작하고 관리하는 프로그램
  • 상태 정보
    • 날짜, 시간, 사용 가능 메모리 등 상태 정보를 제공하는 프로그램
  • 파일 변경
  • 프로그래밍 언어 지원
    - 컴파일러, 어셈블러, 디버거 및 해석기와 같은 프로그램
  • 프로그램 적재와 실행
  • 통산 프로그램
  • 백그라운드 서비스 프로그램

0개의 댓글

관련 채용 정보