상세 컨텐츠

본문 제목

2.3 시스템 호출(system call)

Computer Science/OS Concepts

by RACC8N 2020. 4. 4. 19:42

본문

시스템 호출(system call)

- 운영체제가 제공하는 서비스에 대한 프로그래밍 인터페이스 제공

- 운영체제 프로그래밍 인터페이스 

  > 대개 C/C++와 같은 고급 언어 루틴 형태로 제공 (프로그래머가 시스템 호출에 대한 C/C++ 함수를 호출하여 사용

  > 저수준의 작업은 시스템 호출 명령어를 포함하는 어셈블리 프로그램으로 작성

  > MS-DOS는 직접 시스템 호출 명령어를 사용하여 운영체제 서비스를 요청하도록 되어 잇음 -> 어셈블리 프로그램

 

시스템 호출 명령어 = 소프트웨어 인터럽트 명령어

- 오퍼랜드 숫자는 소프트웨어 인터럽트의 종류를 구분하는 데 사용

 

API (Application Programming Interface)

- 응용 프로그래머에서 사용 가능한 함수의 집합을 지정

- API 함수에서는 응용 프로그래머를 대신하여 필요한 실제 시스템 호출들을 호출함

 

시스템 호출보다 API를 더 많이 사용하는 이유

- 프로그램 이식성 (portability)

- 사용하기 쉬움

 

대표적인 API

- Windows API

- POSIX API - Unix, Linux Mac OS X

- Java API - Java Virtual Machine (JVM)

 

[ EXAMPLE SYSTEM CALL ] copy()

[EXAMPLE API]

시스템 호출의 구현

각 시스템 호출에 번호가 부여됨

- OS 커널에서 시스템 호출 처리 루틴의 주소 테이블의 인덱스로 이 번호를 사용함

EX) mov ah, 5

    int 80

시스템 호출 인터페이스

- 매개 변수 전달 받음

- 관련된 시스템 호출을 호출

- status와 반환 값 반환

 

운영체제 인터페이스의 상세 내용은 API에 의해서 숨겨짐

- 대개 run-time support library에 의해서 관리됨

- 사용자는 API매개변수 규칙을 준수하고, 시스템 호출의 결과로 OS가 수행하는 작업에 대해서 이해하면 됨

 

시스템 호출의 OS 내에서의 처리

표준 C라이브러리 함수 동작 예

 

C프로그램이 printf() 함수를 호출하려면, printf() 함수에서 write()시스템 호출을 호출함

 

시스템 호출 매개변수 전달 방법

- 레지스터 : 레지스터에 매개변수 저장, 개수 제한

  > 매개변수가 많으면 블록을 사용하여 추가 전달

- 블록 : 메모리 블록에 매개변수를 저장하고, 블록의 주소를 레지스터를 통해 전달

- 스택 : 응용 프로그램이 시스템 스택에 push, 운영체제에서 pop

  > 실제로는 pop없이 스택을 접근하여 매개변수를 참조함

 

'Computer Science > OS Concepts' 카테고리의 다른 글

2.5 시스템 프로그램  (0) 2020.04.04
2.4 시스템 호출의 유형  (0) 2020.04.04
2.2 사용자 운영체제 인터페이스  (0) 2020.04.04
2.1 운영체제 서비스  (0) 2020.04.04
1.11 컴퓨팅 환경  (0) 2020.04.04

관련글 더보기

댓글 영역