728x90
반응형

전체 글 147

[컴퓨터구조] #10 데이터패스(파이프라인)

버퍼 큐(원형 큐) - 버퍼로 사용 스택 - 함수호출(인자 전달, 리턴)에 사용 버퍼 사용 이유 입출력 속도에 차이가 있을 때 사용 서버가 터지지 않도록 조절 - 시스템 안정성 증가 동기식 시스템의 단점 보안 - 모든 구성 요소가 동일한 클럭 속도로 작동해야 함, 버퍼를 사용해 보완 CPU 성능 향상 슈퍼스칼라 한 번에 여러 개의 명령어를 동시에 실행시킬 방법 - 파이프마다 실행하는 명령어 간의 연관관계없어야 함(병렬성) 슈퍼스칼라 사용 이유: 프로그램이 시작할 때 파이프라인을 채우기까지 시간이 걸림 하이퍼스레드 물리적으로 하나의 실행 장치를 가지고 있는 CPU에 가상 실행 장치를 두 개 할당 파이프라인 분기 비교문/반복문에서 조건 분기 발생 - 조건에 따라 파이프라인 지연 발생 분기 비용 줄이기 분기 ..

[컴퓨터구조] #9 해저드

해저드(Hazzard) 명령어가 파이프라인에서 정상적으로 실행되지 않는 상황 실행불가(stall 발생) - 파이프라인 버블(bubble) 유형 구조적 해저드 같은 클럭사이클에서 동시에 실행하도록 원하는 명령어의 조합을 지원하지 않음 데이터 해저드 명령어를 실행하기 위한 데이터가 준비가 되지 않아 생기는 지연 -> 전방전달/우회전달 제어 해저드 조건에 따른 실행(if)일 경우 어떤 상황이냐에 따라 밀어 넣은 명령어가 의미 없어지는 경우 prediction/speculation예측을 통한 실행 필요 지연분기(delated branch) 데이터 해저드 명령어를 실행하기 위한 데이터가 준비되지 않아 생기는 지연 add에서 $s0의 값을 넣으려면 WB단계를 거쳐야 함 sub에서 $s0을 참조하는 단계는 ID단계 ..

[객체지향프로그래밍][Java] Nested Classes

Nested Classes 중첩 클래스 다른 클래스의 범위 내에서 정의되는 클래스 클래스의 특성, 멤버의 특성 모두 가짐 접근 지정자 4가지 전부 사용 가능 class OuterClass { class InnerClass { //필드 // static 멤버 가질 수 없음 } static class StaticNestedClass { // 필드 // 모든 멤버 가질 수 있음 } } class OuterClass2 { // static InnerClass a = new InnerClass(); static StaticNestedClass b = new StaticNestedClass(); InnerClass c = new InnerClass(); StaticNestedClass d = new StaticNe..

[객체지향프로그래밍][Java] Exception Handling

Exception 종류 실행 중에 예기치 않은 상황이 발생할 때 사용 Exception 클래스와 그 하위 클래스 예외는 크게 두 가지 유형으로 분류 - Checked Exception, Unchecked Exception Checked Exception 컴파일러에 의해 강제로 처리해야 하는 예외 반드시 try-catch 블록이나 throws 절로 예외 처리 Unchecked Exception RuntimeException 클래스와 그 하위 클래스 프로그램의 실행 중에 예기치 않은 상황에 발생 예외가 발생하면 JVM이 예외를 캐치하여 적절한 예외 처리 코드를 실행하거나, 예외를 런타임 환경으로 전파하여 프로그램의 실행을 중단 예외 전파 main - f1 - f2 - f3 f3에서 예외 발생 시 f3은 비정..

[객체지향프로그래밍][Java] Object Cloning

clone() of Object 함수 원형 protected Object clone() throws CloneNotSupportedException Shallow Copy 객체를 복제할 때, 원본 객체와 복제 객체는 동일한 객체를 참조 즉, 객체 내부에 참조 타입 필드가 있는 경우, 해당 필드의 참조는 동일하게 유지 변경이 한쪽 객체에 영향을 미칠 수 있음 Deep Copy 객체를 복제할 때, 원본 객체와 복제 객체는 서로 독립적인 객체를 참조 즉, 참조 타입 필드의 복사본도 생성되어 변경이 한 쪽 객체에 영향을 주지 않음 Cloneable 인터페이스 Cloneable 인터페이스는 객체가 복제 가능함을 나타내기 위해 구현해야 함 이 인터페이스를 구현하지 않은 객체는 clone() 메서드를 호출할 때 Cl..

[객체지향프로그래밍][Java] Initialization (정적 초기화 블록, 인스턴스 초기화 블록)

정적 초기화 블록 static { // 정적 멤버 변수 초기화 코드 } 실행 타이밍: 정적 초기화 블록은 클래스가 로드될 때 한 번만 실행(해당 클래스의 첫 번째 인스턴스를 생성하기 전) 실행 순서: 클래스 내에 정의된 순서대로 정적 초기화 블록이 실행 예외 처리: 정적 초기화 블록 내에서 발생하는 예외는 명시적으로 처리해야 함 멤버 변수 초기화: 정적 초기화 블록은 주로 정적(static) 멤버 변수를 초기화하는 데 사용, 이 블록 내에서 정적 멤버 변수에 값을 할당할 수 있으며, 복잡한 초기화 로직이 필요한 경우에 유용하게 사용됨 예시 1 public class Main { public static void main(String[] args) { System.out.println("Cls.field1..

[자료구조] 정렬 2 (외부 정렬 - 합병 정렬)

외부 정렬 정렬하려는 리스트 전체가 컴퓨터의 메인 메모리에 모두 올라갈 수 없다면 내부 정렬 사용 불가 블록 - 한 번에 디스크로부터 읽거나 디스크에 쓸 수 있는 데이터 단위, 여러 개의 레코드들로 구성 판독/기록 시간에 영향을 미치는 요소 탐구 시간: 판독/기록 헤드가 디스크 상의 원하는 실린더로 이동하는데 걸리는 시간, 헤드가 가로질러야 하는 실린더 수에 따라 결정됨 회전지연 시간: 트랙의 해당 섹터가 판독/기록 헤드 밑으로 회전해 올 때까지 걸리는 시간 전송 시간: 디스크로 오는 디스크로부터 데이터 블록을 전송하는 데 걸리는 시간 합병 정렬 입력 리스트의 여러 세그먼트들을 좋은 내부 정렬 방법으로 정렬 런(run) - 정렬된 세그먼트들 런이 생성되면 외부 저장 장치에 기록됨 1에서 만들어진 런들은 ..

전공/자료구조 2023.06.06

[자료구조] 정렬 1 (내부 정렬 - 삽입 정렬, 퀵 정렬, 합병 정렬, 히프 정렬, 기수 정렬)

정렬 리스트를 오름차순, 내림차순 혹은 어떤 조건에 대해 순서대로 배열한 것 정렬에 필요성 빠른 탐색을 위해 사용 리스트의 엔트리를 비교하는 방법으로 사용 정렬 방법 내부 방법 - 정렬할 리스트가 작아서 전체적인 정렬이 메인 메모리 상에서 실행될 수 있을 때 사용 외부 방법 - 큰 리스트에 사용 삽입 정렬 template void Insert(const T &e, T *a, int i) { // e를 정렬된 리스트 a[1:i]에 삽입 // 리스트 a[1:i+1]도 정렬되게 함 // 배열 a는 적어도 i+2 원소를 포함할 공간 필요 a[0] = e; while (e < a[i]) { // 리스트의 맨 뒤부터 e가 삽입될 위치인지 탐색하며, a[i + 1] = a[i]; // 배열 a의 원소를 한칸씩 위로 ..

전공/자료구조 2023.06.06

[객체지향프로그래밍][Java] Generics 심화 내용

Generics 제네릭의 사용 이유 컴파일 시간 단축 캐스트의 제거 Generics class, interface // raw type Box class public class Box { private Object object; public void set(Object object) { this.object = object; } public Object get() { return object; } } // generic type Box class public class Box { private T t; public void set(T t) { this.t = t; } public T get() { return t; } } 클래스 또는 인터페이스의 이름 뒤에 를 통해 타입 매개변수를 지정할 수 있음 타입 ..

[객체지향프로그래밍][Java] Queue 심화 내용

Interface Queue Queue는 인터페이스 Collection 상속 메소드 기능 boolean add(E e) e를 큐에 삽입, 성공시 true 반환 용량을 초과한 경우 IllegalStateException 발생 E element() 큐의 head 반환 큐가 비어있으면 예외 발생 boolean offer(E e) e를 큐에 삽입, 성공시 true 반환 용량을 초과한 경우 false 반환 E peek() 큐의 head 검색 큐가 비어있으면 null반환 E poll() 큐의 head 검색 및 삭제 큐가 비어있으면 null 반환 E remove() 큐의 head 삭제 큐가 비어있으면 예외 발생 Queue는 선입선출 방식으로 원소를 저장 head에서는 remove, poll로 인해 삭제가 일어남 re..

728x90
반응형