자유롭게 게시물을 올릴수있는 게시판입니다.
  • 유년추억
  • 학교생활
  • 입시준비
  • 대학생활
  • 군생활
  • 알바생활
  • 취업준비
  • 직장생활
  • 원룸생활
  • 연애중
  • 결혼준비
  • 집안살림
  • 자녀교육
  • 창업준비
  • 이민유학
  • 노후생활
  • 전체보기


Arx에서의 사용자 수준 입출력

 


사용자 수준 입출력은 이를 통해 프로그래머가 주변 기기에 대하여 유연하고 효율적인 디바이스 드라이버를 작성할 수 있도록 해주기 때문에 내장형 실시간 응용 프로그램에서 점차 그 중요성이 더해지고 있다. 내장형 시스템에서 사용자 수준 입출력을 지원하기 위해서는 운영체제가 입출력 디바이스로 부터 프로세스로 예측 가능하고 효율적인 방법으로 외부 인터럽트를 전달하는 메커니즘을 제공해야 한다. Arx에서는 효율적인 새롭게 설계된 사용자 수준 시그날 메커니즘에 기반을 둔 사용자 수준 입출력 스킴을 제공한다. 가상 쓰레드나 스케쥴링 이벤트 업콜과 같은 커널의 다중 쓰레드 아키텍쳐를 잘 활용한 이러한 스킴은 기존의 전통적인 시그날 구현의 문제점들을 극복할 수 있다.

사용자 수준 입출력을 지원하는 응용 프로그램 인터페이스(API)가 아래와 같다.

uio_request(ioa_start, ioa_end, [type]): 이 함수는 사용자 프로세스가 ioa_start부터 ioa_end까지의 입출력 주소를 접근할 수 있는 권한을 얻게 해준다. 이 영역의 주소가 memory-mapped 디바이스들 에 해당한다면 반드시 page-align되어 있어야 한다. 마이크로 프로세서가 입출력 디바이스들에 대하여 I/O mapped와 memory-mapped 주소를 동시에 지원한다면 주소의 타입이 type 퍼라미터에 IOMAP이나 MEMORYMAP 중의 하나로 반드시 명시되어야 한다. 커널은 사용자 프로세스들에게 권한을 부여한 주소 쌍들의 리스트들을 관리한다. 호출되어지면, 리스트를 사용하여 사용자 수준 입출력 충돌을 검사한다. 충돌이 발견되지 않으면 승인된 주소를 나타내는 integer handle을 리턴한다. 그렇지 않으면 0을 리턴한다. Arx 커널은 기반의 마치크로 프로세서의 메모리 보호 메커니즘으로 입출력 주소 보호를 실현한다. 만약 한 개의 페이지가 몇 개의 다른 디바이스들의 메모리 주소들을 처리한다면, 한개의 프로세스가 다른 프로세스들에 의하여 소유되는 디바이스들을 접근할 가능성이 있다. 따라서 uio_request는 memory-mapped 디바이스들이 page-aligned이기를 요구한다.
uio_release(handle): 이 함수는 handle로 나타내어지는 디바이스의 주소들에 대한 접근 권한을 해제한다.
uio_int_request(irq, handler, type, flag): 이 함수는 사용자 인터럽트 핸들러를 등록한다. type 인자는 KERNEL_DISPATCH나 USER_DISPATCH 중의 하나가 될 수 있다. USER_DISPATCH가 선택되면 이 함수는 인터럽트를 SIGRTMIN과 SIFGRTMAX사이에서 선택된 비어있는 시그날 번호를 할당한다. 만약 호출한 프로세스가 다중 쓰레드 응용 프로그램이라면, 이 함수는 handler 쓰레드를 생성한다. flag 인자가 0이라면 인터럽트를 막은 상태에서 리턴한다. 이 함수가 성공적으로 수행을 마치면 irq 번호와 시그날 번호 및 쓰레드 식별자를 포함하는 irq_info 구조체를 리턴한다. 그렇지 않으면, error를 암시하며, 0을 리턴한다. 쓰레드 식별자는 프로세스가 우선순위 같은 handler 쓰레드의 속성을 제어할 수 있도록 하기 위하여 필요한다.
uio_int_release(irq, flag): 이 함수는 사용자 인터럽트 핸들러의 등록을 해제한다. flag 인자가 1이면, 연관된 handler 쓰레드도 취소시킨다.
uio_int_enable(irq), uio_int_disable(irq): 이 함수는 인터럽트를 가능하게 하거나 막는다. 만약 등록된 핸들러가 시그날 기반 핸들러라면, 실제의 인터럽트를 막지 않고 단지 관련된 시그날을 mask하거나 unmask한다.
본 실험실에서는 Arx에서의 사용자 수준 입출력의 성능을 증명하기 위하여 다방면에서 실험을 해왔다. 실험들은 명백하게 Arx의 사용자 수준 입출력 스킴이 적은 오버헤드로 외부 인터럽트의 예측가능한 전달을 가능하게 함을 보여준다.

자세한 내용은 다음의 문서를 참고하기 바란다.



Efficient User-Level I/O in the ARX Real-Time Operating System.
1998 ACM Workshop on Languages, Compilers, and Tools for Embedded Systems. pp. 162-171, Monteal, Canada, June 1998.
Y. Seo, J. Park, and S. Hong.


2003-05-08 00:28:23
509 번 읽음
  총 1 개의 댓글이 있습니다.
  1. 1. 칼로스 '03.5.8 12:58 AM 신고
    :-D*프로그램 게시판으로 이동합니다 ↓댓글에댓글
☞ 로그인 후 의견을 남기실 수 있습니다
 캐시선물





365ch.com 128bit Valid HTML 4.01 Transitional and Valid CSS!
태그