동일 문자디바이스를 사용하는 프로그램을 여러 프로세서에서 호출하여사용시 작동 과정
글쓴이: pwy1575 / 작성시간: 화, 2016/09/13 - 2:55오후
안녕하세요
문자디바이스장치를 가지고 프로그램을 만들다가 궁금한 점이 있어 문의 남깁니다.
/dev/ttyUSB1 이란 문자디바이스 장치(write로 명령어를 던지면 그에 해당하는 응답을 던져주는 장치입니다)를 COMPORT 오픈을 통해 이용하는 프로그램 A 를 작성 하였습니다.
nComDev(파일디스크립터) = open(devname, O_RDWR | O_NOCTTY | O_NONBLOCK | O_SYNC | O_DSYNC | O_RSYNC ); //옵션
이런경우 위 프로그램을 한번만 호출할 경우에는 문자디바이스장치 또한 한번만 사용하게 됩니다.
여기서 문의드릴 사항은,
다수의 프로세스에서(멀티프로세싱) 동일한 프로그램 A를 동시에 호출하게 된다면 nComDev(파일디스크립터)는 어떻게 할당받아 사용하는지 하나의 장치(/dev/ttyUSB1)를 어떤 방식으로 여러 프로세스에서 나눠 사용하게 되는지에 대한 것 입니다.
감사합니다.
Forums:
open 은 여러 프로세스에서 할 수 있습니다.
open 은 여러 프로세스에서 할 수 있습니다. tty 는 배타적인 동작을 하지 않습니다.
여러 프로세스가 제각각 open 한 다음에 제각각 read 할 경우 ttyUSB1 으로 들어온 데이타는 여러 프로세스로 *갈기갈기 찢겨서* 나뉘어 들어가고 어떤 프로세스가 몇 바이트를 read 할 것인지는 예측불가능합니다.
read 혹은 write 등의 I/O 를 전담할 특정 메인 프로세스를 정하고 나머지 프로세스들은 IPC 를 이용해서 메인 프로세스와 통신하게 만드는게 보통입니다.
댓글 달기