Key Idea - 소비자(consumer)가 두 버퍼 중 어느 하나를 비우고 있는 동안 생산자(producer)가 다른 버퍼를 애울 수 있도록 하는 것.
첫 번째 버퍼가 공백이 되었을 때 두 번째 버퍼는 이미 가득 차 있어야 한다.(그렇지 않을 경우 Idle time이 생긴다.) 소비자는 이 두 번째 버퍼를 다시 비울 수 있고, 반면에 생산자는 첫 번째 것을 다시 채울 수 있는데 이중 버퍼링은 이 과정의 반복이다.
※ flag - 버퍼의 체워짐 상태.
버퍼가 체워지고 있거나 비어 있다면 0,
버퍼가 비워지고 있거나 체워져 있다면 1의 값을 가진다.
※ rec_ctr - 버퍼 레코드 카운트, 버퍼에 있는 레코드를 카운트 하는 변수
※ pfill - 체워지고 있거나 체워질 버퍼를 가리키는 포인터
※ pempty - 비워지고 있거나 빌 버퍼를 가리키는 포인터
생산자(producer)
code
1 loop:if (pfill->flag == 1) goto loop;
2 issue start-I/O command to control unit;
3 wait while pfill->buffer is being filled;
4 pfill->rec_ctr = 1;
5 pfill->flag = 1;
6 pfill = pfill->next;
7 goto loop;
해석
1 현재 버퍼의 flag가 0이 될 때(버퍼가 다 빌때)까지 루프를
돌면서 기다린다. flag가 1이 아니면 다음문장 수행.
2 제어장치에 input/output의 시작 명령을 내린다.
3 버퍼가 다 찰때까지 기다린다.
4 현재 버퍼의 rec_ctr를 1로 세팅 한다.
5 현재 버퍼의 flag를 1로 세팅 한다.
6 현재 버퍼를 가리키고 있는 pfill포인터를 다음 버퍼를
가리키게 해 준다.
7 다음 버퍼를 가리키고 있는 pfill포인터를 갖고 다시 맨
처음 문장으로 돌아 간다.
생성 시스템과 추론 1. 생성 시스템의 구조
1.1 생성 시스템의 구성
(1) 생성 메모리 (production memory) : 생성 규칙들의 모임.
(2) 작업 메모리 (working memory) : 현재의 상태를 나타내는 버퍼(buffer)와 비슷한
데이터 ..
[파일처리론] C 언어 파일 관련 함수 조사 정리 파일처리론
제목 : C 언어 파일 관련 함수 조사 정리
1. 고수준, 저수준 I/O Function의 종류와 특징 비교
저수준과 고수준의 분류방법은 Computer Language와 마찬가지로 기계와 사람중 어디에 더 가까운지, 즉..
A+ 현대피엔에스 신입 제어기술1팀 자기소개서 제전공과 경험을 바탕으로, 효율적이고 안정적인 제어시스템을 개발하고, 현업에서 발생할 수 있는 다양한 기술적 문제를 해결하는데 기여하고 싶습니다.
자율주행차 개발 프로젝트에서 실시간 제어시스템을 설계..
임베디드 리눅스 과제나 수업자료 준비 시 도움이 될 것입니다.
목차
1. 임베디드 리눅스 정의
2. 임베디드 리눅스가 갖춰야 할 요구사항
3. 임베디드 시스템에 리눅스를 채택하는 이유
4. 임베디드 시스템에 리눅스를 채택하기 어..
2025 보스반도체 Embedded SW 자기소개서 지원서와 면접자료 디버깅 과정에서 가장 어려웠던 문제와 해결 방식은 무엇인가
보스반도체는 반도체 기반 기술을 중심으로 소프트웨어와 하드웨어가 결합된 제품을 개발하는 기업입니다.
Em beddedSW는 결국 하드웨어의 실제 제약..