하나마루여신
Bronze개인인증
팔로워3 팔로우
소개
등록된 소개글이 없습니다.
전문분야 공학/기술
판매자 정보
학교정보
입력된 정보가 없습니다.
직장정보
입력된 정보가 없습니다.
자격증
  • 입력된 정보가 없습니다.
판매지수
전체자료 23
검색어 입력폼
  • 연세대학교 전기전자공학부 18-2학기 운영체제론 과제
    2018년도 2학기 연세대학교 전기전자공학부 운영체제론 과목 Assignment 2: System Call 자료입니다. 점수는 20/20입니다.
    프로그램소스| 2020.08.18| 2,000원| 조회(243)
    미리보기
  • 연세대학교 전기전자공학부 18-2학기 운영체제론 과제
    2018년도 2학기 연세대학교 전기전자공학부 운영체제론 과목 Assignment 1: Process 자료입니다. 점수는 20/20입니다.
    프로그램소스| 2020.08.18| 2,000원| 조회(266)
    미리보기
  • 연세대학교 전기전자공학부 18-2학기 운영체제론 과제
    2018년도 2학기 연세대학교 전기전자공학부 운영체제론 과목 Assignment 0: xv6 Installation 자료입니다. 점수는 10/10입니다.
    프로그램소스| 2020.08.18| 2,000원| 조회(259)
    미리보기
  • 연세대학교 전기전자공학부 19-2학기 네트워크실험 프로젝트 결과 보고서
    2019년도 2학기네트워크실험결과 보고서 #10(프로젝트 2)센서 네트워크 구축 프로젝트교수님:분반:수요일 1 - 5교시조:학번 및 이름:제출일:2019년 12월 11일목차Ⅰ. 실험 목표Ⅱ. 이론Ⅲ. 실험 결과Ⅳ. 결과 분석Ⅴ. DiscussionⅥ. ReferenceⅠ. 실험 목표무선 센서 네트워크를 위해 개발된 OS인 TinyOS에서는 이에 최적화된 nesC라는 언어를 이용하여 무선 센서 네트워크를 구현한다. 무선 센서 네트워크는 MAC protocol을 이용하여 센서 nodes끼리 data를 주고받으며 통신을 한다. data는 중간에 다른 node들을 거치기도 하면서 source에서 destination까지 전송된다. 네트워크 내에 임의로 분포되어 있는 nodes에서 source와 destination이 정해지면 이 네트워크는 정해진 어떠한 알고리즘에 의해 source에서 destination까지의 경로를 결정한다. nesC를 이용하여 주어진 조건 하에서 data를 성공적으로 전송시키고 그 결과를 PC를 통해 확인하는 프로그램을 구현한다.Ⅱ. 이론(1) routing다음 그림과 같이 한 네트워크 안에 여러 개의 nodes가 흩어져 있다. 어떤 node에서 다른 node로 data를 전송하기 위해서는 다른 node를 거치지 않고 한 번에 바로 보낼 수도 있지만, 보통 두 node 간 직접적인 link가 없는 경우가 많기 때문에 여러 다른 node들을 거쳐 최종 destination에 도착한다. 이때 네트워크마다 정해진 어떤 알고리즘에 의해 한 node에서 다른 node로 전송되는 경로가 결정되는데 이러한 알고리즘을 routing 알고리즘이라고 한다.그림 1 routing 경로를 결정할 때에는 data가 전송되는 데 드는 cost가 가장 작은 경로를 설정한다. 이 cost를 결정하는 요소로는 router 사이의 distance, RTT(round trip time), hop count, throughputs, availability, reliability 등essage packet을 제대로 전송받지 못하였다고 가정하자. 그러면 1번 node는 2번 node로 보낸 message에 대한 acknowledgement를 1초 안에 전송받지 못할 것이므로 3번 node에게 message를 재전송한다. 이때 재전송하는 packet은 ack, sendNodeID, srcNodeID, dstNodeID, trace와 hopCount는 처음에 보냈던 packet과 그대로이지만 recvNodeID 값만 3으로 달라진다. 1번에서 2번 node로 보낸 후, 1번 node가 3번 node에게 재전송한 packet이 destination 4번 node에 전달되고 이것이 PC로 전달되는 과정에서 packet의 내용을 살펴보면 다음과 같다.그림 3 1번, 3번, 4번 nodes에서의 message packet과 acknowledgement packet위 그림에서처럼 먼저 1번 node는 2번 node에게 message packet을 보내지만 1초 안에 message에 대한 acknowledgement를 받지 못한다. 따라서 recvNodeID를 3으로 증가시켜 3번 node에게 message packet을 재전송한다. 1번 node는 3번 node로부터 acknowledgement packet을 정상적으로 수신한다. 3번 node는 4번 node에게 다음 packet을 보내고 4번 node는 PC에 최종 packet을 전달한다. 최종 packet의 trace는 1,3,4, hopCount는 2로 2번 node가 포함된 경우에서 trace는 2가 빠지고, hopCount는 1만큼 더 작은 것을 확인할 수 있다. 만약 2번 node에게 message packet을 보낸 1번 node가 2번 node로부터 acknowledgement를 받지 못해 3번 node로 message를 재전송하였는데 3번 node로부터도 acknowledgement를 받지 못한다면 4번 node에게 재전송한다. 따라서 이 경우에 4번 node는 이 packet을 곧바edgement를 받지 않기 때문이다. green LED는 packets을 전송할 때마다 on/off 상태를 변경하도록 하였다. 따라서 1번, 2번, 3번, 4번 nodes 모두 green LED는 toggle할 수 있다. 마지막으로 yellow LED는 message를 받을 때마다 on/off 상태를 변경하도록 하였다. 1번 node는 messages를 전송하기만 하지 messages를 받지는 않으므로 1번 node를 제외한 2번, 3번, 4번 nodes만이 yellow LED를 toggle시킬 수 있다.구성한 알고리즘에 의하면 1번 node는 5초 간격으로 message를 반복하여 2번 node에게 전송한다. messages를 받는 2번, 3번, 4번 nodes는 messages를 받고 0.1초 후에 messages를 보낸 nodes에게 acknowledgements를 전송하여 응답하며, acknowledgements를 보내고 0.1초 후에 다음 nodes에게 messages를 보낸다. 따라서 어떤 node가 이전 node로부터 messages를 받으면 yellow LED가 toggle하고 0.1초 후에 acknowledgements를 보내면서 green LED가 toggle하고 0.1초 후에 다음 nodes로 messages도 보낸다. 보낸 messages에 대한 acknowledgements를 수신하면 red LED가 toggle한다. 즉 2번, 3번 node는 yellow LED, green LED, red LED가 순서대로 toggle한다. 1번 node는 message를 받지 않으므로 yellow LED는 항상 그대로이고, 5초마다 green LED가 먼저 toggle한 직후에 acknowledgements를 받아 red LED가 toggle한다. 4번 node는 acknowledgements를 받지 않으므로 red LED는 항상 그대로이고 messages를 수신할 때마다 이를 받아 yellow LED가 toggle하며 곧바로 PC에게 messagendMsg as DataMsg; //interface SendMsg를 DataMsg로 선언interface ReceiveMsg as ResetCounterMsg; //interface ReceiveMsg를 ResetCounterMsg로 선언}}implementation{struct YonseiMsg *pack; //structure YonseiMsg의 pointer pack 선언(보내는 messages를 위함.)struct YonseiMsg *pack_received; //structure YonseiMsg의 pointer pack_received 선언(받는 messages를 위함.)struct YonseiAck *pack_ack; //structure YonseiAck의 pointer pack_ack 선언(보내는 acknowledges를 위함.)struct YonseiAck *pack_ack_received; //structure YonseiAck의 pointer pack_ack_received 선언(받는 acknowledges를 위함.)TOS_Msg msg; //TOS_Msg msg 선언(보내는 messages를 위함.)TOS_Msg msg2; //TOS_Mst msg2 선언(보내는 acknowledges를 위함.)uint8_t srcNodeID; //variable srcNodeID 선언uint8_t dstNodeID; //variable dstNodeID 선언uint8_t sendNodeID; //variable sendNodeID 선언uint8_t recvNodeID; //variable recvNodeID 선언uint8_t switch01; //variable switch01 선언(acknowledgements를 받았는지 여부 확인에 이용)uint8_t recvNumber; //variable recvNumber 선언uint8_t i; //variable srcNodeID 선언(for문을 위함)uint8_t TOSNodeID; //variable sendNodeID에 보냄.}call Timer4.start(TIMER_ONE_SHOT, 100); //Timer4.start를 100ms 후에 callreturn SUCCESS; //SUCESS를 return}event result_t Timer4.fired() { //event Timer4.fired 정의if (pack_received->dstNodeID!=sendNodeID) { //pack_received->dstNodeID가 sendNodeID가 아니면atomic {pack = (struct YonseiMsg *)msg.data; //pack에 msg.data를 structure YonseiMsg의 pointer type으로 할당pack->srcNodeID = srcNodeID; //pack->srcNodeID에 srcNodeID를 할당pack->dstNodeID = dstNodeID; //pack->dstNodeID에 dstNodeID를 할당pack->sendNodeID=sendNodeID; //pack->sendNodeID에 sendNodeID를 할당pack->recvNodeID=sendNodeID+1; //pack->recvNodeID에 sendNodeID+1을 할당for(i=0;isendNodeID-1;i++) //i는 0부터 1씩 증가하며 pack->sendNodeID-1보다 작을 때 계속 반복pack->trace[i]=pack_received->trace[i]; //pack->trace[i]에 pack_received->trace[i]를 할당pack->trace[pack->sendNodeID-1] = pack->sendNodeID; //pack->trace[pack->sendNodeID-1]에 pack->sendNodeID를 할당pack->hopCount = pack_received->hopCount+1; //pack->hopCount에 pack_received->hopCount+1을 할당}if (call DataMsg.send(pack->다.
    공학/기술| 2020.08.18| 16페이지| 5,000원| 조회(155)
    미리보기
  • 연세대학교 전기전자공학부 19-2학기 네트워크실험 10주차 결과 보고서
    2019년도 2학기네트워크 실험결과레포트 #8무선 통신 프로토콜교수님:분반:수요일 1 - 5교시학번 및 이름:제출일:2019년 11월 20일1. 실험 목적무선 센서 네트워크에서 자주 사용되는 프로토콜인 무선 센서 MAC 프로토콜에 대해 학습한다. 무선 센서 MAC 프로토콜의 기능과 특징에 대해 알아본다. TinyOS에서 무선 센서 MAC 프로토콜을 이용하여 RF 무선 통신을 구현해 본다. 통신 과정에서 불필요한 에너지의 낭비를 줄이기 위해 무선 센서 MAC 프로토콜이 어떠한 장치들을 이용하는지 살펴본다. nesC 코드를 수정하면서 센서 node에 특정 기능이 발동하도록 하여 무선 센서 MAC 프로토콜의 작동 원리를 이해한다.2. 실험 결과 & 결과 분석(1) 패킷 항목 채우기먼저 cigwin 리눅스 에뮬레이터를 통해 다음 디렉토리에 있는 nc 파일들을 컴파일한다./opt/tinyos-1.x/contrib/zigbex/BasicMAC이 애플리케이션은 두 개의 센서 node를 이용하여 서로간의 통신을 할 수 있게 한다. 0번 센서는 조도 센서를 통해 조도를 측정하여 이를 1번 센서에게 보낸다. 1번 센서는 0번 센서가 보낸 조도 정보를 무선 통신으로 받는다. 1번 센서가 받은 정보를 컴퓨터 화면에 출력하기 위해 1번 센서에는 다음 경로에 있는 애플리케이션을 다운로드한다./opt/tinyos-1.x/contrib/zigbex/TOSBase각각의 node의 ID를 구분하기 위해 nc 파일을 컴파일한 후, node의 ID 정보를 담은 파일을 생성하기 위해 다음 명령어를 이용하여 한 번 더 컴파일하여야 한다. 먼저 BasicMAC은 1번 센서에 다운로드할 것이므로 다음 명령어를 이용한다.make zigbex reinstall.11번 센서에 다운로드할 TOSBase는 다음 명령어를 이용한다.make zigbex reinstall.0이렇게 해서 생성된 각각의 hex 파일을 각각의 센서 node에 다운로드 받은 후 결과를 확인할 수 있다. 한편 컴파일하기 전에 0번 센서와 1e StdControl 선언uses {interface Timer; //interface Timer 선언interface Leds; //interface Leds 선언interface StdControl as SensorControl; //interface StdControl을 SensorControl로 선언interface ADC; //interface ADC 선언interface StdControl as CommControl; //interface StdControl을 CommControl로 선언interface SendMsg as DataMsg; //interface SendMsg을 DataMsg로 선언interface ReceiveMsg as ResetCounterMsg; //interface ReceiveMsg를 ResetCounterMsg로 선언}}implementation{ struct BasicMAC_Msg *pack; //BasicMAC_Msg structure의 pointer pack 선언(보낼 packet)TOS_Msg msg; //TOS_Msg msg variable 선언uint8_t recvNumber; //8bit의 부호 없는 정수형 variable recvNumber 선언uint16_t seqNumber; //16bit의 부호 없는 정수형 variable seqNumber 선언(packet의 seq를 위한 variable)command result_t StdControl.init() { //StdControl.init() command를 정의call Leds.init(); //Leds.init() function을 call하여 LED들을 초기화call Leds.yellowOff(); call Leds.redOff(); call Leds.greenOff(); //yellow LED, red LED, green LED를 모두 off함.call SensorControl.init(); //SensorControl.init() function 다시 컴파일해 1번 센서에 다운로드하고, 0번 센서에는 TOSBase 애플리케이션을 컴파일한 후 0번 센서의 ID를 넣어 다시 컴파일해 다운로드하였다. 먼저 BasicMAC.nc 파일에서는 이 애플리케이션에서 사용하는 여러 components와 이들간의 연결이 정의되어 있다. BasicMACM.nc 파일에서는 이 애플리케이션에서 일어날 동작들을 구체적으로 기술하고 있다. BasicMACM module을 선언한 후 이 module에서 필요한 여러 interfaces들을 정의한다. 그 후 implementation에서 실행될 동작들을 설명하고 있는데, 먼저 필요한 variables을 정의하였다. 여기서는 기본 코드의 variables에 추가적으로 seqNumber라는 variable을 더해 packet의 seq 값을 측정할 수 있도록 하였다. 먼저 StdControl.init()이 제일 처음에 실행된다. 이 function에서는 LED들의 상태를 초기화하고 variables 값들도 초기화한다. seq로 사용할 variable인 seqNumber는 0으로 초기화한다. 그 다음으로 StdControl.start()를 부르는데, 여기에서는 SensorControl과 CommControl components를 시작시키고 5000ms마다 반복하여 Timer.fired() event가 실행되도록 한다. 원래 코드에서 1000ms마다 반복하여 1000이라고 쓰여 있던 부분을 5000으로 수정하였다. 아래에 event인 Timer.fired()가 정의되어 있다. Timer.fired()에서는 green LED를 toggle시키고 yellow LED를 on한 후 ADC.getData() function을 호출하여 조도 센서에서 조도 값을 읽는다. 그러면서 seqNumber 값을 1 증가시켜 Timer.fired()가 호출될 때마다 seq 값이 1씩 증가할 수 있도록 한다. 그 후 ADC.dataReady function이 호출되는데, 여기에서는 BasicMAC_Msg struc/component GenericComm을 Comm으로 선언Main.StdControl -> BasicMACM; //Main의 interface StdControl을 BasicMACM의 interface StdControl에 wiringMain.StdControl -> TimerC; //Main의 interface StdControl을 TimerC의 interface StdControl에 wiringBasicMACM.Timer -> TimerC.Timer[unique("Timer")]; //BasicMACM의 interface Timer를 TimerC의 interface Timer에 wiringBasicMACM.Leds -> LedsC; //BasicMACM의 interface Leds를 LedsC의 interface Leds에 wiringBasicMACM.SensorControl -> Sensor; //BasicMACM의 interface SensorControl을 Sensor의 interface SensorControl에 wiringBasicMACM.ADC -> Sensor; //BasicMACM의 interface ADC를 Sensor의 interface ADC에 wiringBasicMACM.CommControl -> Comm; //BasicMACM의 interface CommControl을 Comm의 interface CommControl에 wiringBasicMACM.ResetCounterMsg -> Comm.ReceiveMsg[AM_BMACMSG];//BasicMACM의 interface ResultCounterMsg를 Comm의 interface ReceiveMsg에 wiringBasicMACM.DataMsg -> Comm.SendMsg[AM_BMACMSG]; //BasicMACM의 interface DataMsg를 Comm의 interface SendMsg에 wiring}BasicMACM.ncincludes BMAC;module BasicMACMllowOff(); //yellow LED를 off함return SUCCESS; //SUCCESS를 반환}event result_t Timer.fired() { //Timer.fired event를 정의call Leds.greenToggle(); //green LED를 toggle함.call Leds.yellowOn(); //yellow LED를 on함.if (call DataMsg.send(TOS_BCAST_ADDR, sizeof(struct BasicMAC_Msg), &msg)){ //DataMsg.send function을 call하여 packet 송신dbg(DBG_USR1, "DATA send SUCCESS!!!!!n");}return SUCCESS; //SUCCESS를 반환}event TOS_MsgPtr ResetCounterMsg.receive(TOS_MsgPtr m) { //ResetCounterMsg.receive event를 정의dbg(DBG_USR1, "DATA is receivedn");atomic {pack_received = (struct BasicMAC_Msg *)m->data; //pack에 msg의 data를 할당pack = (struct BasicMAC_Msg *)msg.data; //pack에 msg의 data를 할당pack->data[0] = pack_received->seq; //pack의 data[0]에 data를 할당(packet의 메시지에 조도 값을 할당)pack->seq = pack_received->seq; //pack의 seq에 seqNumber를 할당pack->SenderID = 2; //pack의 SenderID에 1을 할당}call Leds.redToggle(); //red LED를 toggle함.recvNumber++; //recvNumber를 1 증가시킴.call Timer.start(TIMER_ONE_SHOT, 1000); //Timer.fired()를 1000ms 뒤에 callreturn m; //다.
    공학/기술| 2020.08.18| 10페이지| 2,000원| 조회(169)
    미리보기
전체보기
받은후기 2
2개 리뷰 평점
  • A+최고예요
    2
  • A좋아요
    0
  • B괜찮아요
    0
  • C아쉬워요
    0
  • D별로예요
    0
전체보기
해캠 AI 챗봇과 대화하기
챗봇으로 간편하게 상담해보세요.
2026년 05월 04일 월요일
AI 챗봇
안녕하세요. 해피캠퍼스 AI 챗봇입니다. 무엇이 궁금하신가요?
6:06 오전
문서 초안을 생성해주는 EasyAI
안녕하세요 해피캠퍼스의 20년의 운영 노하우를 이용하여 당신만의 초안을 만들어주는 EasyAI 입니다.
저는 아래와 같이 작업을 도와드립니다.
- 주제만 입력하면 AI가 방대한 정보를 재가공하여, 최적의 목차와 내용을 자동으로 만들어 드립니다.
- 장문의 콘텐츠를 쉽고 빠르게 작성해 드립니다.
- 스토어에서 무료 이용권를 계정별로 1회 발급 받을 수 있습니다. 지금 바로 체험해 보세요!
이런 주제들을 입력해 보세요.
- 유아에게 적합한 문학작품의 기준과 특성
- 한국인의 가치관 중에서 정신적 가치관을 이루는 것들을 문화적 문법으로 정리하고, 현대한국사회에서 일어나는 사건과 사고를 비교하여 자신의 의견으로 기술하세요
- 작별인사 독후감