시스템 호출: 두 판 사이의 차이
내용 삭제됨 내용 추가됨
비문 수정 |
맞춤법 수정 |
||
7번째 줄:
시스템 호출이란 프로그래밍 언어에서 지원하지 않는 기능에 대하여 운영 체제의 루틴을 호출하여 이용하는 것을 말한다. 시스템 호출의 세 가지 기능은 다음과 같다.
# 사용자 모드에 있는 응용 프로그램이 커널의 기능을 사용할 수 있도록 한다.
# 시스템 호출을
# 커널에서 시스템 호출을 처리하면 커널 모드에서 사용자 모드로
시스템 호출의 유형
20번째 줄:
[[명령어 인터프리터]] 또는 [[셸]]을 통해 입력된 명령을 수행하는 과정에서 새로운 [[프로세스]]를 시작하기 위해서는 시스템 호출을 해야 한다. 예를 들어 [[유닉스]] 시스템에서는 새로운 프로세스를 시작하기 위해 [[exec]] 시스템 호출 이후 [[fork]] 시스템 호출이 뒤따른다. exec 호출이 호출 프로세스 위로 다른 실행가능한 새로운 프로세스를 띄우는 동안, fork 호출은 현재 실행 중인 프로세스를 복제한다.
[[리눅스]]의 [[커널]]은 권한수준이 최고수준(x86, Ring 0)에서 실행되며 하드웨어 제어 및 응용 프로그램의 스케줄링 및 시분할 실행을 하도록 제어한다. 하드웨어 제어를 하는 모든 권한을 커널에서 가지고 있기 때문에
=== 리눅스 커널의 장치 드라이버와 시스템 호출 예 ===
줄 71 ⟶ 70:
다음과 같은 절차로 응용 프로그램 함수가 커널의 함수와 연결된다:
# 응용 프로그램에서 open(...) 함수를 실행하면 libc에서 제공한 open
# 소프트웨어 인터럽트에 의해 ISR(Interrupt Service Routine)이 있는 커널의 인터럽트 처리 위치를 찾아 해당 주소로 실행을 옮긴다. 이때
# 많은 시스템 호출
# mydrv_open()함수의 '''return'''에 따라 커널의 함수 호출이 완료되고, 커널은 다시 해당 응용 프로그램을 스케줄링에 의해 활성화하고 해당 [[프로세서]]로 전환한다. 이 때 CPU의 권한수준은 다시
만약
== 같이 보기 ==
|