본문 바로가기

컴퓨터공학16

시분할 다중화, 주파수 분할 다중화, 통계적 다중화 시분할 다중화 ( STDM : Synchronous Time-Division Multiplexing ) 하나의 선을 활용하되, 각 노드가 돌아가며 같은 시간 동안 데이터를 전송하는 방법. 공평성 UP => 모든 노드가 동일한 시간 동안 해당 자원(선)을 사용하기 때문. 효율성 DOWN => 선을 사용하지 않아도 되는 노드도 자기 차례가 되면 일정 시간 동안 해당 선을 차지고 있기 때문. Round-Robin => 모든 노드가 순서대로 돌아가며 같은 시간동안 작업을 하는 방식 역시 컴퓨터는 진보와 보수 마냥 효율과 공평성 사이에서 밸런싱을 잘해야 한다. :) 주파수 분할 다중화 ( FDM : Frequency-Division Multiplexing ) 하나의 선을 활용하되, 각 노드가 서로 다른 주파수를 .. 2019. 10. 23.
round(1.555,2) 는 1.55이다? round() 함수를 시험하다가 사람 참 즐겁게 하는 결과를 만났다. (참고로 round()함수는 반올림을 해주는 python의 내장 함수다.) 다음을 보자. a = 1.2345 round(a,2) 1.23 round(a,3) 1.234 .....띠용? 아니 왜 1.235가 아니라 1.234일까? 반올림하면 1.235가 맞는데? 해서 검색해보니 나와 같은 짓을 한 외국인이 있었다. 결론은 이렇다. 원인은 floating point, 즉 부동 소수점이다. 컴퓨터의 아주 밑바닥까지 들어가면 값은 0과 1로 이루어져 있다. 즉, 2진수로 모든 값을 표현해야 한다. 그러니 위의 a 값이 컴퓨터에는 1.23449999999999999345234119999999........ 따위와 같은 수로 저장 된다는 것이다... 2019. 10. 19.
블록체인- 소프트 포크, 하드 포크 블록을 생성하다 보면 '충돌'이 발생하는 경우가 있다. A-B-C-D-E 이렇게 줄줄이 열차로 이어진 노드가 있다. 그런데 A와 E가 거의 동시에 블록을 생성하고 블록에 각자 내용을 기록해서 피어에 전송한다. 그러면 B는 A가 생성한 블록을 기록하고, D는 E가 생성한 노드를 기록할 것이다.(네트워크 상황 동일, 오류 없음 가정) 그리고 문제는 C다. C는 B가 전송한 블록체인과 D가 전송한 블록체인을 동시에 전달받는다. 이때 누구의 블록체인을 따를 것인가? 먼저, C는 둘 중 무거운 블록체 안을 따른다. '무겁다'라는 것은 블록이 더 길게 이어진 것, 더 많은 블록이 이어진 것을 따른다는 것이다. 한편, 이런 경우가 있다. A와 B가 있는데, A는 프로그램을 업데이트해서 과거에는 없던 새로운 규칙을 적.. 2019. 10. 18.
블록체인-해시 퍼즐, 작업증명 먼저 앞의 글에서 블록에 '기록'을 한다고 했는데, 이제 '누가'기록을 하는지 정해야 한다. 먼저 블록에 기록을 하려면 블록을 생성해야 한다. 이때 블록을 생성하는 작업은 어려워야 한다. 누구나 쉽게 블록을 생성한다면, (후에 좀 더 설명하겠지만)블록에 저장된 내용에 대한 신뢰도가 떨어지게 된다. 따라서 비트코인에서 택한 방법은 '해시 퍼즐'이라는 개념을 도입했다. '해시 퍼즐'이란 주어진 값보다 작은 값을 찾는 행위인데, 쉽게 생각하면 이런 것이다. 1~10까지 적혀 있는 공 중에서 10보다 작거나 같은 공을 찾을 확률은 100% 5보다 작거나 같은 공을 찾을 확률은 50% 1보다 작거나 같은 공을 찾을 확률은 10% 이다. 이처럼 매번 블록을 생성할 때마다 목표값이 주어지고, 각 개인은 특정한 식에 .. 2019. 10. 18.