ComputerScience (329) 썸네일형 리스트형 TCP - 2. Reliable data transfer 1. Reliable data trasfer tcp는 best effort 방식의 비신뢰성 ip위에서 동작한다고 했다. timeout 발생, 중복 ack 수신 시에 sender는 재전송을 시도한다. timer는 한 stream(여러 segement들로 구성)에 대해 한번 설정된다. 가장 oldest unacked segment를 시작점으로 설정된다. timeout내에 ack가 도달하지 않아 재전송할때는 기존 timeout 해제 -> 재전송 -> timeout길이를 두배로 다시 설정한다. 이렇게 하는 이유는 network를 더 혼잡하게 만들지 않도록 하기 위해서다. 즉 좀 더 천천히 재전송하기 위해 이렇게 한다. 만약 ack가 timeout내에 도달하면 해당 세그먼트를 전송완료 체크하고 윈도우를 이동하는 .. TCP - 1. connection-oriented-transport tcp는 internet protocol의 표준으로 채택되었고 계속해서 발전해 왔다. 지금까지 계속해서 tcp에 대해 설명해왔지만 이번 장에서는 TCP의 특징들에 대해 더 자세히 알아본다. 1. Attributes connection-oriented : 데이터 전달 전에 logial end-to-end 연결이 필요하다. 이를 위해 control message를 주고 받는 것을 handshaking이라고 한다. point-to-point : 한명의 sender, 한명의 receiver간의 연결이다. full duplex data : 한 connection을 두고 양방향으로 통신이 가능하다. flow controlled : 송신자는 수신자의 버퍼 크기를 초과해서 보내지 않는다. (서로 연결할 때 내용을 전달.. 멀티코어컴퓨팅 - 8. Pthread Programming process vs thread 너무 중요해서 한번 더 설명하겠다. process는 독립된 메모리 공간을 갖기 때문에 각각 1000번지는 서로 다른 실제 메모리 주소를 갖는다. 반면 thread t1, t2 에서 1000번지라함은 서로 동일한 실제 메모리 공간을 나타낸다. 쓰레드는 프로세스보다 더 lightweight하다. 따라서 생성뿐만 아니라 쓰레드간 communication이 프로세스간 communication보다 부하가 적다. Pthread pthread는 unix 계열 환경에서 C언어로 사용할 수 있는 쓰레드 관련 함수들의 모음(라이브러리)이다. 일반적으로 리눅스같은 유닉스 계열 운영체제에서 많이 이용된다. 크게 세 카테고리로 함수를 분류할 수 있다. 1. Thread Management - f.. 소프트웨어공학 - 14. Object-Oriented Paradigm 1. Abstract Data Type - 추상 자료형이다. 최대한 encapsulation한 것을 말한다. - 실제 구현 내용은 생략하고 data, operation만 정의한다. 2. OOP - OOP의 정수 class는 ADT + 상속 + 다형성이라고 정의할 수 있다. - 상속을 통해 코드의 재사용성을 높일 수 있다. - 또한 상속 관계에서 부모 클래스 인스턴스가 자식 클래스 인스턴스들을 가리킬 수 있다. 실제 누구를 가리키고 있는지는 런타임에 결정될 수 있다. (다형성) 3. Inheritance - 자식 클래스는 부모 클래스의 모든 메서드, 데이터를 상속받아 온다. - Y는 X의 모든 것을 사용할 수 있다. - Y is X라고 표현할 수 있다. 즉 X 인스턴스는 X인스턴스 뿐만 아니라 Y 인스턴스.. 소프트웨어공학 - 13. Logical Architecture 1. Logical Architecture - non-functional requirement는 주로 supplimentary specification에 속한다. - supplimentary specification이 Logical Architecture에 input으로 들어간다. - 한번 결정되면 번복하기 어려운, 아주 fundamental한 내용들이 Logical Architecture이다. - 이 아키텍쳐 설계에 대한 내용들은 UML package diagram으로 표현한다. - 상위 layer는 하위 layer의 서비스들의 호출이 가능하지만 그 반대는 불가능 하다. - strict layered architecture : 상위 레이어는 인접한 하위 레이어의 서비스만 호출 가능 - relaxed l.. 패턴인식 - 6. Decision tree (1) - 지난 시간에 PW, k-NN을 활용하여 분류기를 설계하는 방법을 배웠다. 이번 시간에는 결정 트리를 이용해서 분류기를 만드는 방법을 알아본다. 1. Decision Tree - 분류를 위한 tree를 만드는 것이다. - 오렌지와 레몬을 구분할 특징 벡터 [height, width]가 있다고 하자. - Decision tree의 각 step에서 feature값의 정도에 따라 child를 선택해 내려가면 분류 결과에 도달하게 된다. - 위의 예시는 판단오류에 해당한다. - 이렇게 tree에 노드를 더 추가하면 지금 당장은 완벽하게 오류를 0으로 만들 수 있지만 트리를 탐색하는데 더 많은 시간이 필요하다. - 즉 decision tree는 features를 통해 class에 따른 특징 공간을 나누는 것이다.. Computer vision - RANSAC (line fitting) 1. Fitting - 데이터에 잘 맞는 모델의 파라미터를 찾는 것. - 그림처럼 n개의 데이터를 대표하는 line을 fitting한다고 해보자. - 그럼 cost 함수를 정의하고 그 값이 최소가 되도록 fitting이 수행될 것이다. - 위 예시에서는 y값과 Line의 함수값 차이를 loss로 정의했고 이 값이 최소가 되는 m,b를 찾는다. 이게 fitting이다. - 행렬식을 풀면 m,b가 나온다. - 이번에는 cost function을 점과 직선의 거리의 합으로 정의했다. - E가 최소가 되는 지점을 구하는 것이 fitting이다. - 저 행렬식은 SVD를 통해 구할 수 있다. - 하지만 이런 방법들은 outlier의 영향을 크게 받는다. - 얘는 outlier가 있어도 robust한 fitting.. 멀티코어컴퓨팅 - 7. Divide-and-Conquer for Parallelization Divide-and-Conquer for Parallelization 총 네개의 쓰레드로 각각 구간의 합을 구해서 마지막에 메인 쓰레드가 결과들을 취합해 ans를 도출했다고하자. 만약 쓰레드가 1000개라면 메인쓰레드는 결과 취합을 위해 1000번의 덧셈을 수행해야 한다. 그리고 구간을 공평하게 나누는 일도 사실 모든 경우에 쉽지 않다. 설령 구간을 공평하게 나누었더라도 좀 더 쉬운 부분을 할당받은 쓰레드는 쉬는 경우가 생길 수 있다. 그래서 divide conquer 알고리즘을 적용해서 더 현실적이고 효율적인 parallel summation을 수행해보자. 메인 쓰레드가 구간을 반으로 쪼갠다 -> 쓰레드 두 개 t1, t2 생성 -> t1, t2가 가져오는 결과를 합산 t1이 구간을 반으로 쪼갠다 ->.. 이전 1 ··· 7 8 9 10 11 12 13 ··· 42 다음