OS에 사용되는 "시스템 호출"메커니즘에 대한 좋은 설명이 있습니까? [닫은

StackOverflow https://stackoverflow.com/questions/126976

문제

나는 좋은 프라이머 또는 기술적 설명을 찾고 있습니다. 시스템 호출 운영 체제가 사용자 공간에서 커널로 전환하여 "Open", "Read", "Write"등과 같은 기능을 호출하기 위해 사용하는 메커니즘 ...

다른 것이 있습니까? 위키 백과 기입? 웹 사이트, PDF, 서적, 소스 코드, 모두 환영합니다 :)

도움이 되었습니까?

해결책

소스 코드의 경우, 오픈 소스 커널이 많이 있습니다.

책은 로버트 러브의 책 Linux에서 커널은 매우 유익합니다.

다른 팁

정확한 방법은 프로세서 아키텍처와 커널 모드로 전송하기 위해 정의하는 작업에 따라 다릅니다. X86의 전통적인 방법은 소프트웨어 인터럽트를 사용하는 것이 었습니다. 일반적인 경우에는 이것이 빠르지 않은 것으로 밝혀 졌으므로 나중에 인텔이 덧붙였습니다. SYSCALL AMD가 추가되었습니다 SYSENTER. Windows XP 및 나중에는 플랫폼에 적합한 시스템 호출 기술을 선택합니다.

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

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

Minix 커널을보고 싶을 수도 있습니다. 오픈 소스이며 간단하게 설계되었으며 많은 Uni-Level OS 코스에서 사용됩니다. /usr/src/kernel/proc.c, 특히 sys_call 함수 및 주변 기능을 파헤쳐보십시오. 미니 닉스는 마이크로 커널이므로 일부는 익숙한 것과 미묘 할 수 있습니다.

*닉스 프로그래밍에 매우 유용한 책을 구매하려면. Stevens와 Rago의 "Unix 환경에서의 고급 프로그래밍"을 추천합니다. 깊이있는 설명과 코드 예제가 있습니다.

Linux에서 시스템 호출에 대한 좋은 설명을 보려면 샘플 장치 드라이버를보십시오. 리눅스 장치 드라이버.

아키텍처 의존적이며 컴퓨터 아키텍처에 대한 이해가 필요합니다. Tanenbaum의 "구조화 된 컴퓨터 조직"은 시스템 호출의 기본 사항을 잘 요약했습니다. 자세한 내용은 운영 체제 설계에 관한 교과서를 읽으십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top