본문 바로가기

CS

(52)
멀티코어 컴퓨팅 - Introduce Moore's Law : Doubling of the number of transistors on integrated circuits roughly every two years Clock Speed is not. Currently, CPU clock speed is not increasing rapidly becuase power comsumption and heat genaration is too high to be tolerated in high clock speed CMP : Chip MutiProcessor SMP : Symmetric MultiProcessor Amdahl's law : Potential program speedup is defined by the fraction of code ..
멀티코어 컴퓨팅 - Important Concepts in Concurrent Programming Concurrency / Parallelism : logically / Physically simutaneius processing 동시성/병렬성: 논리적/물리적으로 동시에 처리되는 것 Sychronization: coordication of simutaneous events(thread/ processes) in order to obtain correct runtime order and avoid unexpected race condition. 동기화: 올바른 실행 순서를 얻고 예기치 않은 경쟁 상태를 피하기 위해 동시적 이벤트(스레드/프로세스)를 조정하는 것 Mutual Exclusion : ensuring that no two processes or threads are in their critic..
멀티코어 컴퓨팅 - JAVA Thread Programming Thread 정의 - 프로그램 내에서 단일 순차적 흐름을 나타냄 - 스레드는 프로그램의 프로세스 내에서 실행되며 해당 프로세느와 환경에 할당된 자원을 활용합니다. 각 스레드의 구성요소 - Program counter - Register set - Stack 스레드간의 공유 Code section Data section OS resources such as open files 멀티 프로세스 vs 멀티 스레드 Process - 자식 프로세스는 부모의 프로세스를 동일하게 카피 - 상대적으로 비쌈 - 그러나 동시성을 고려하지 않아도됨 개꿀! thread - 자식과 부모는 자원을 공유함 - 상대적으로 쌈 - 동시성을 고려해야함 어려움 자바의 스레드 모델 자바는 내장 스레드를 가지고 있다. 응용 프로그램은 적어도 ..
멀티코어 컴퓨팅 - Performance of Parallel Programs Creating a Parallel Program 1. Decomposition - Decomposition 이란 작업물을 분할하는 것이다. 1~ 100 까지 숫자를 연산해야한다고 하면 1~ 10까지 11~20까지 등으로 작업물을 나누는 것이다. 이러한 작업물을 나누는 대는 두가지 방법이 있다. BLOCK : 쓰레드의 개수만큼 크게크게 나눈다. CYCLIC : 잘개 나누고 쓰레드에 할당한다. BLOCK을 사용하면 크게 나누지 않아 오버헤드가 적지만 로드밸런싱이 좋지 않고 CYCLIC은 로드밸런싱은 좋지만 오버헤드가 많다. 상황에 따라 다르지만 CYCLIC이 효과가 좋을 때가 많다. 이를 Domain Decomposition 이라한다. Functional Decomposition은 작업 유형에 따라 나누는..
객체지향 프로그래밍 - 상속 (java) 상속받은 자식 : 부모의 메소드 + 변수 상속의 장점 : 코드의 재사용, 유지성 향상 부모가 수정되면 자식도 수정된 방식을 따를 수 있음 자바는 다중 상속을 지원하지 않는다. 부모는 1개 . 자식을 생성할 경우 부모의 생성자는 자동으로 실행된다. 우리는 부모의 생성 파라미터가 있다면 그것도 충족해줘야한다. 메소드 오버라이딩 : 부모의 메소드를 자식에서 새로 정의 메소드 오버로딩 : 같은 클래스에서 같은 이름이지만 다른 파라미터를 받을 수 있음 오버라이딩시 선언이 자식 클래스이면 자식의 메소드를 따름. final 클래스는 자식을 가질 수 없음 protected : 자식 클래스에서만 접근할 수 있는 변수 같은 패키지에서는 접근이 가능
객체지향 프로그래밍 - Object, Class classname name = new classname() -> new 연산자는 클래스의 생성자를 call, name은 포인터로 classname으로 만들어진 객체를 가리킨다. 새로운 object가 생성된다. 각 자바 클래스당 메인은 한개 Main는 실행 클래스 아닌 다른 클래스는 모두 라이브러리 클래스로 불린다. Member in Class - 변수 - 메소드(function) - 생성자(Constructor) Local variable , public variable - 지역변수 : 오브젝트 종속 변수 - 필드 : 오브젝트(클래스)에 선언되어있는 변수 Overloading - 오버로딩은 같은 이름의 메소드인데 다른 파라미터를 받을 수 있는 방법이다. 이는 생성자, 메소드 모두 가능하다. 이는 다형성이..
머신러닝 - 최대우도법, 최대사후확률 데이터로부터 확률을 추정하는 것은 머신러닝의 기본이다. 여기에는 최대 우도 추정 MLE, 베이지안 추론 및 빈도 기반 방법을 포함하여 데이터에서 확률을 추정하는 방법 등이 있다. Ex) 동전을 던졌을 때 앞면 뒷면이 나올 확률 1. 편향성(bias) 당연히 상식적으로 생각하면 50퍼센트이지만 자연은 그렇지 않다. 10번을 던졌다면 앞 7번 뒤 3번 나올 가능성도 충분히 있다. 여기서 앞면이 나올 확률을 a 라하면 뒷면이 나올 확률은 1 - a 이다. 편향성을 추정하는 방법으로 베이즈 추정 방법이 있다. 베이즈 추정 방법은 사전 정보와 실제 결과를 결합하여 편향성을 추정하는 것이다. * 최대우도법(MLE) - 확률 분포 모델의 모수를 추정하는 방법 중 하나이다. MLE는 데이터의 Likelihood를 최대..
객체지향 프로그래밍 - 집합관계 : 완성품과 부품의 관계 ex) 자동차 , 엔진, 타이어 - 사용관계(의존성) : Object를 사용하는 주체 - 상속 : 부모와 자식, 자식은 부모의 속성을 갖는다. 상속은 코드의 재사용을 가능하게 한다. 코드의 유지보수 시간을 줄일 수있다. - 캡슐화 : 메소드와 변수를 바인딩. 사용자는 어떻게 작동하는지 알 필요가 없다. - 다형성 : 오버로딩, 오버라이딩을 이야기함. 오버로딩은 같은 이름의 받는 파라미터가 다름, 오버라이딩은 "부모"의 메소드를 변형하여 사용하는 것이다. 파라미터 타입과 함수 타입도 동일해야한다. - 클래스와 오브젝트 : 클래스는 설계도 오브젝트는 그 설계도로 만든 실제 구현물을 이야기한다. 오브젝트는 실제로 구현할 수 있는 모델을 뜻한다. ex) 자동차 그리고 인스턴..