ioctl
으로 놀고 있었는데이 질문이 저에게 나왔습니다. 나는 시스템의 기본 동기 호출을 들었다왜 시스템 호출 수가 매우 제한적입니까?
-
배경은 허용 인터럽트 핸들러의 수는 매우 제한되어 있다는 점이다. 많은 OS들이 단지 하나의 인터럽트 번호 (리눅스의 경우
0x80
)를 차지하지만 요청에 따라 다른 기능을 제공하기 위해 추가 인수를 허용하는 시스템 호출 (a.k.a. trap)의 추상화를 구현합니다. - this thread은 실제로 시스템 호출 수가 너무 제한되어 있으므로 위에서 설명한 것과 동일한 이유가 다시 적용되어
ioctl
이라는 것을 나타냅니다.
내 질문에. 왜 OS는 단지 충분한 시스템 콜을 제공하지 않고 ioctl
을 제거하지 않습니까? (또는 그냥 더 나은 확장 성을 제공하기 위해 계층 적 구조를 만드는 것일뿐입니다)
나는 당신의 대답이 앞서 말한 게시물보다 더 의미가 있다고 생각합니다. 시스템 호출은 운영체제가 CPU와 상호 작용할 수있는 커스터마이징 가능한 핸들러와 같지만 OS 내의 'ioctl'은 사용자 공간 애플리케이션과 커널 간의 상호 작용을위한 커스터마이징 가능한 핸들러인가? – wlnirvana
시스템 호출 핸들러는 usermode와 kernelmode 사이의 통신 메커니즘으로 OS 커널에 의해 정의됩니다 (CPU는 사용자와 커널 모드를보다 쉽고 저렴하게 전환 할 수 있도록 특별한 지침을 제공함으로써 도움을 줄 수 있습니다). 개별 시스템 호출을 구현하는 고정 된 배열의 루틴). 'ioctl'과 몇 가지 다른 시스템 호출을 위해 생성 된 요청은 대개 ioctl 타겟을 담당하는 드라이버에게 보내 지므로'ioctl'은 개발자에 의해 (문서화 된 방식으로) 커스터마이징 될 수 있습니다. –