[컴퓨터구조] #13 가상메모리
·
전공/컴퓨터구조
가상메모리 가상메모리는 운영체제/하이퍼바이저와 HW의 지원 필요 가상 메모리의 메모리 보호 - 하이퍼바이저나 OS가 각 가상머신이나 프로세스의 메모리 영역을 보호 가상메모리의 역할 물리메모리보다 큰 프로그램 실행 가능하도록 메모리를 디스크/SSD의 캐시역할로 사용하도록 만드는 기술 프로그램마다 가상메모리주소공간 제공 가상메모리와 물리메모리 간의 변환과정 - 페이지(page) 개념을 사용 가상 메모리 시스템 주소 = 가상 페이지 번호 + 페이지 오프셋(offset) 페이지 부재(falut) 시 엄청난 사이클이 필요함 - 대응 페이지 크기가 커야 함 페이지 부재 발생률을 낮추는 구성 -> fully associative SW 알고리즘을 통해 개선 쓰기 방식은 Write-back사용 페이지 테이블 페이지 테이..
[컴퓨터구조] #12 가상머신/가상화/클라우드
·
전공/컴퓨터구조
가상머신 HW 지원 필요 System Mode/User Mode - OS의 커널 관련 이해 필요 Guest OS는 User Mode에서만 동작 - 가상화된 자원만 사용 가상화 컴퓨터의 자원(CUP, 메모리, 저장장치, 네트워크 등)의 추상화 서버의 리소스가 가상화를 통해서 하나의 서버에 여러 대의 OS를 동작시킬 수 있는 기술 가상화의 레벨 API(Application Programming Interface) - 응용프로그램 레벨의 함수/메소드 ABI(Application Binary Interface) - 플랫폼과 소프트웨어 사이의 인터페이스 정의 - API보다 낮은 레벨 - API는 유지되면서 ABI는 변경되는 경우: 코드는 유지하면서 재 컴파일 ISA(Interuction Set Architectu..
[컴퓨터구조] #11 메모리 계층 구조
·
전공/컴퓨터구조
메모리 계층 구조 비싸고 빠른 메모리 vs. 싸고 느린 메모리 두 메모리를 섞어서 더 빠른 쪽에 가까운 메모리의 속도가 나도록 하는 기법 메모리 속도에 따른 분류 어떻게 속도를 높일 것인가 지역성의 원리를 활용 - 시간적 vs. 공간적 시간적 지역성 - 한번 참조된 항목은 다시 참조되는 경향이 있음 공간적 지역성 - 어떤 메모리 참조 주변의 메모리 참조가 일어날 가능성 높음 프로그램에서 최대한 지역성을 활용해 성능 향상 도모 지역성(Locality) 히트(hit)/미스(miss) Hit - 대부분의 데이터를 캐시에서 참조 가능 Miss - 캐시 참조시간 + 메모리 직접 참조시간까지 필요 최근에는 캐시를 확인해서 메모리를 버스로 연결해 동시에 참조해 페널티를 줄이는 기술 도입 캐시 교체 정책 - 캐시의 내..
[컴퓨터구조] #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에서 만들어진 런들은 ..