프로세스 몇개가 같이 도는 프로그램을 만드는데요...
글쓴이: 은영신랑 / 작성시간: 토, 2003/05/31 - 9:31오전
프로세스를 여러개 만들어서 돌리는 프로그램을 만드는데요,
이 프로세스들은 목적은 각각의 하드웨어 장치를 읽어들이고,
통신하고 그러는 것인데요. 3개가 있고요.
하나의 Digital Input에서 몇개의 값을 읽고,
다음 프로세스에서 그 값을 serial1 을 이용하여 write하고,
또 serial2를 이용하여 write하는것입니다.
우선 각각의 일을 프로세스로 정의하고, 공유메모리를 사용하여서
처음 입력이 잘되었으면 serial 1,2를 차례로 쓰게 해야 되구요.
각각의 일들이 처음에 초기화 과정을 거친후에는 계속해서 자기차례가 되면
그 일만 처리하면 될것 같습니다.
또 각각의 일들이 에러없이 잘 되었나, 에러가 생긴다면 임의의
파일에 에러 프로세스와 시간을 기록하는 모니터링 하는 프로세스를 두고 싶고요.
하나의 프로세스에서 fork -> execl을 통하여 각각의 프로세스를 실행하고, 순서는
각각 프로세스의 세마포어를 두어 서로 주고 받으면 어떨까 하는데요.
어떤 방식으로 해야하는지 하면 할수록 생각할께 많고 쉽지가 않네요.
방법좀 알려주시면 감사하겠네요.
Forums:
말씀하신 구조도 잘 되었지만, 실시간 모니터링을 하신다면 pip 통신
말씀하신 구조도 잘 되었지만,
실시간 모니터링을 하신다면 pip 통신을 하시는 것은 어떤지요,
한쪽은 생성하고 한쪽은 블락킹 모드로 대기를 하는 구조 입니다.
만일 반드시 fork -> execl 을 해야한고,
데이타의 양이 많이 않으시다면, message 를 이용하는 것도 좋습니다.
그럼, 참고하시기 바랍니다.
제 생각엔..
간단히 심심해서--; 그림을 그려보았습니다..
A Process에서 n개의 input에 polling을 하고 있다가..(poll or select)
input이 발생하면(event..) 공유메모리에 쓰고..
다 썻다고 pipe에 (named pipe를 쓰면 간단하겠죠..)
1바이트 정도 써주고..
B process는 pipe에 polling 하고 있다가 pipe에 무언가 써지면 읽고.
공유 메모리에 가서 Data를 읽어서
serial 1, serial2 등등에 써주면 되겠네요..
간단히 하면 fork()을 쓰실 필요는 없지만
굳이 쓴다면 A process에서 n개의 input에 대해 event 발생시
각각 fork 하여 각각의 pipe와 공유메모리 영역을 구분해서 쓸수도 있겠네여.
그러면 B process에서도 각각의 pipe에 대해서 fork하여 serial 을 구분해서
쓰는 것도 가능할테구요..
답변이 되었는지 모르겠습니다.
댓글 달기