본문 바로가기

728x90

ComputerScience

(329)
멀티코어컴퓨팅 - 10. OpenMP OpenMP multi-processing을 위한 framework이다. c/c++을 지원한다. pthread에서 사용했던 thread 라이브러리보다는 더 사용이 쉬운 high level api이다. openMP는 thread를 생성해서 작업을 할당한다. 작업들은 반드시 독립적인 작업이어야 한다. 병렬 처리 할 부분을 compiler directives로 나타낸다. master thread가 소스를 실행하다 parallel region을 마주치면 thread들이 동시에 그 구역의 작업을 처리한다. region 끝에서 쓰레드들이 대기하게 되고 모든 쓰레드가 도착하면 master thread는 다음 코드를 실행한다. #pragma = open MP directives라고 한다. 컴파일러에게 아래 블럭이 pa..
멀티코어컴퓨팅 - 9. C++ Threads 기본예제 #include #include #include #include void f1(int n) { for (int i = 0; i < 5; ++i) { std::cout
소프트웨어공학 - 16. UML Communication Diagrams 1. interaction diagram 종류 - 우리가 이제까지 배운 sequence diagram은 interaction을 표현하기 위한 방법이였다. - 표기법만 다른, 동일한 목적과 역할을 수행하는 diagram도 있다. 서로 정확하게 대응이 가능하다. - communication diagram이라고 한다. Interaction diagram의 한 종류이다. - timing diagram이라고 한다. 역시 Interaction diagram의 한 종류이다. - 각 개체의 state를 고려한 interaction을 표현할 때 유리하다. - activity diagram과 sequence diagram을 합한 모습이다. - Interaction overview diagram이라고 한다. 역시 Inter..
소프트웨어공학 - 15. MVC Architecture pattern 1. Model View Controller Pattern - 소프트웨어 설계 패턴이다. - Model : 데이터가 저장되거나, 비지니스 로직이 돌아가는 부분 - View : 화면에 직접 보이는 GUI 파트, 그림을 그리는 것에만 집중 - Controller : 사용자와 UI의 상호작용을 정의하는 부분. 사용자에 요청에 따라 model값을 변경하는 api를 요청한다. - 이렇게 세 부분으로 프로젝트의 구조를 구분하여 개발하는 것을 말한다. - 하위 레이어인 Non-UI Layer는 절대 상위 레이어에 의존하지 않는다. - UI Layer가 하위 Non-UI Layer로 interface를 통해 접근한다.이 의존은 어쩔수 없는 것이지만 그 반대의 경우의 의존 관계가 있어서는 안된다. - 그래야 자주 UI의..
패턴인식 - 7. Decision tree (2) 1. Decision tree 만들기 예제 - class, 기다린다, 안기다린다 = { yes, no } - feature = {alt, bar, fri, ..., est} 내가 배고픈 정도, 식당의 여건 등등 - X, 식당 = {x1, x2, ..., x12} - 식당이 input으로 들어왔을 때 기다릴지 말지를 결정하는 decision tree를 만들어보자. - Information Gain을 최대로 할 수 있는 attribute를 선택해서 split해보자. - 첫번째 attribute로 Type을 골랐을때, Patrons을 골랐을때 split되는 결과는 다르다. - 각각의 경우 IG를 구해보면 다음과 같다. IG(patrons)가 더 크기 때문에 더 좋은 tree라고 선택한다. - 분류가 아직 덜된..
TCP - 4. congestion control 평소처럼 웹사이트에 접속하려는데 오늘따라 유독 접속이 느렸던 경험이 있을 것이다. 수강신청처럼 사람이 갑자기 몰리는 상황에 특히 그렇다. 서버 자체가 많은 사용자의 요청을 처리하는데 시간이 많이 걸리는 것일 수 있고 네트워크가 혼잡해서 drop이 발생하거나 queueing delay가 큰 것 일수도 있다. 이런 상황을 congestion collapse라고 한다. 정리하면 congestion은 너무 많은 사용자가 너무 많은 데이터를 네트워크가 감당하기 힘들정도로 보내는 것을 말한다. 이 문제를 해결하려면 sender가 패킷을 보내는 속도를 제한해야 한다. * 참고로 congestion control은 신뢰성 있는 전송을 위해서도 필요하다. 네트워크가 혼잡할수록 reliable data transfer가 ..
TCP - 3. flow control, connection management 1. flow control 통신을 필요로하는 application은 socket을 통해 os와 소통한다. 위 그림은 sender로 부터 패킷을 수신하는 과정을 나타낸다. tcp socket을 만들면 자동으로 할당되는 receive buffers에 payload(메시지)가 저장된다. application layer에서 receive()로 버퍼에 저장된 메시지를 읽어오게 된다. 그런데 만약 receiver가 저 버퍼에서 메시지를 읽는 속도보다 버퍼에 메시지가 쌓이는 속도가 더 빠르면 버퍼를 꽉 채우고 남은 메시지들은 그냥 버리게 된다. 그래서 receiver는 overflow를 피하도록 sender가 패킷을 보내는 속도를 통제한다. 이게 flow control이다. flow control 방식은 다음과 같..
How does Skype work? 1. Multimedia networking 크게 세가지 응용이 있다. 1. streaming audio, video ex) netflix, youtube 스트리밍이랑 전체 파일을 다 다운받지 않더라도 play를 할 수 있는 것을 말한다. piece를 연속적으로 다운 받아 빠른 play가 가능하도록 한다. 네트워크가 많이 바빠서 latency가 크다면 버퍼링 등을 활용하여 더 좋은 품질을 제공할 수 있다. 2. streaming live audio, videa 실시간의 경우는 quality를 희생하더라도 빠른 응답시간이 매우 중요하다. 3. conversational voice/video over ip ex) skype, kakao audio call 위의 1,2는 단방향 통신이였지만 이 경우는 양방향 ..

728x90