2008-09-24 1 views
0

시스템 호출의 좋은 입문서 또는 기술 설명을 찾고 있는데, 이는 "open", "read", "write"등과 같은 기능을 호출하기 위해 사용자 공간에서 커널로 전환하기 위해 운영 체제에서 사용되는 메커니즘입니다. 기타 ...OSes에서 사용되는 "시스템 호출"메커니즘에 대한 설명이 있습니까?

Wikipedia 항목 외에 다른 항목이 있습니까? 웹 사이트, pdf, 서적, 소스 코드, 모두 환영합니다. :)

답변

1

글쎄, 소스 코드에는 많은 다이빙 소스 커널이 있습니다.

도서의 경우 리눅스 커널의 Robert Love's book은 매우 유익합니다.

1

미닉스 커널을보고 싶을 수도 있습니다. 이것은 오픈 소스이며, 단순하게 설계되어 많은 Uni-level OS 코스에서 사용됩니다. /usr/src/kernel/proc.c에서 특히 sys_call 함수와 주변 기능을 살펴보십시오. minix는 마이크로 커널이기 때문에 익숙한 것들과 약간 다른 것들이있을 수 있습니다.

1

* nix 프로그래밍에 매우 유용한 책을 구입하려는 경우. Stevens and Rago의 "UNIX 환경에서의 고급 프로그래밍"을 권하고 싶습니다. 깊이있는 설명과 코드 예제가 있습니다.

2

정확한 방법은 프로세서 아키텍처와 커널 모드로 전송하기 위해 정의 된 작업에 따라 다릅니다. 한 가지 접근법과 x86의 전통적인 접근 방식은 소프트웨어 인터럽트를 사용하는 것이 었습니다. 일반적인 경우에는 그렇게 빠르지 않았으므로 인텔은 SYSCALL을 추가했으며 AMD는 SYSENTER을 추가했습니다. Windows XP 이상에서는 부팅시 플랫폼에 적합한 시스템 호출 기법을 선택합니다.

특정 기능에는 특정 소프트웨어 인터럽트 번호를 사용하도록 선택할 수 있지만 일반적으로 프로세서에는 모든 시스템 기능을 포괄 할 수있는 충분한 인터럽트가 없으므로 레지스터 중 하나에 필요한 기능 번호가 포함되도록해야합니다. 어쨌든 그렇게한다면, 하나의 시스템 호출 기능 만 사용하는 것이 그리 어렵지 않습니다.

버전 6.0 이전의 Windows CE는 실제로 프로세스가 서로 직접 호출 할 수있게 해주는 side-by-side 프로세스 가상 주소 모델을 사용합니다. 페이지 보호가 설정되면 액세스 위반 오류가 발생합니다 : 커널이 제어를 받고, 프로세스 주소 공간을 수정하고 (호출 된 프로세스를 슬롯 0으로 이동), 슬롯 0 기반 인수를 지점으로 수정합니다 호출 프로세스에 전달하고 사용자 모드로 돌아갑니다. 반환 주소가 다른 프로세스에 있기 때문에 함수 호출이 반환 될 때 역 프로세스가 발생합니다. 불행히도이 모델은 각 프로세스 (32MB) 및 프로세스 수 (32)에 대해 매우 작은 가상 주소 공간 만 허용하므로 Windows CE 6.0은보다 일반적인 시스템 호출 모델로 되돌아갑니다.

0

Linux의 시스템 호출에 대한 자세한 설명은 샘플 장치 드라이버 을 참조하십시오.

0

아키텍처에 따라 다르며 컴퓨터 아키텍처에 대한 이해가 필요합니다. Tanenbaum의 "Structured Computer Organization"은 시스템 호출의 기초를 잘 요약하고 있습니다. 자세한 내용은 운영 체제 디자인에 대한 모든 교과서를 읽으십시오.

관련 문제