시스템 호출: 두 판 사이의 차이
내용 삭제됨 내용 추가됨
16번째 줄:
[[명령어 인터프리터]] 또는 [[셸]]을 통해 입력된 명령을 수행하는 과정에서 새로운 [[프로세스]]를 시작하기 위해서는 시스템 호출을 해야 한다. 예를 들어 [[유닉스]] 시스템에서는 새로운 프로세스를 시작하기 위해 [[exec]] 시스템 호출 이후 [[fork]] 시스템 호출이 뒤따른다. exec 호출이 호출 프로세스 위로 다른 실행가능한 새로운 프로세스를 띄우는 동안, fork 호출은 현재 실행 중인 프로세스를 복제한다.
[[리눅스]]의 [[커널]]은 특권레벨이
결국 파일시스템인 응용프로그램은 커널로 넘어가서 실행되어야 하므로 시스템
=== 리눅스 커널의 디바이스 드라이버와 시스템 호출 예 ===
* 리눅스 커널의 디바이스 드라이버 예 (특권레벨 커널 공간(kernel space), x86 레벌 0)
<source lang="cpp">
40번째 줄:
와 같은 구조로 디바이스를 정의한다. 이 경우 각각의 함수는 응용프로그램의 요청에 따라 커널에서 실행된다.
* 응용 프로그램 예
- 리눅스 커널의 디바이스 드라이버 호출
<source lang="cpp">
char gbuff[100];
줄 60 ⟶ 61:
</source>
응용프로그램은 CPU의 특권레벨이
다음과 같은 절차로 응용프로그램 함수가 커널의 함수와 연결된다:
|