Caching 한정된 빠른 공간(Cache)에 요청된 데이터를 저장해 두었다가 후속 요청시 캐쉬로부터 직접 서비스하는 방식 program system외에도 cache memory, buffer caching, web caching등 다양한 분야에서 사용하고 있다. 캐쉬 운영의 시간 제약 교체 알고리즘에서 삭제할 항목을 결정하는 일에 지나치게 많은 시간이 걸리는 경우 실제 시스템에 적용하기가 어렵다. 마지노선 (log N) 빠르게 데이터를 가져오기 위해 사용하는 것인데, 메모리에 올리기위해 공간확보에 시간을 오래쓰게 되면 비효율적이다. Buffer caching & Web caching의 경우 → O(1) ~ O (log N) 정도까지 허용한다. 여기서 LRU, LFU 알고리즘이 사용된다. Paging S..
Demanding Page 실제로 필요할 때, page를 메모리에 올리는 기법으로 아래와 같은 장점이 있다 I/O 양의 감소 Memory 사용량 감소 빠른 응답 시간 더 많은 사용자 수용 Vaild / Invalid bit의 사용 invalid의 의미는? → 사용되지 않는 주소영역인 경우 (참고로 가상 메모리 대부분은 사용하지 않는 공간이다) → Page가 현재 물리적 메모리에 없는 경우 (Swap Area에 있는 경우일 것이다) 처음에는 모든 Page Entry가 invaild로 초기화 되어있다 address translation 시에 invaild bit가 set되어 있으면? → "Page Fault" 즉, 현재 메모리에 올라와 있지 않은 것이므로, swap area에서 메모리에 올려야하는 것이고, ..
Data Link Layer 유/무선의 Physical Layer를 통해 송/수신하는 데이터들에 대해서 reliable한 통신을 위한 link를 제공한다. 통신과정에서 필연적으로 error등의 잡음이 발생할 수 밖에 없는데 이를 제어해준다. Network Layer가 Router to Router 간 통신이였다면 Data Link Layer는 데이터가 hop by hop으로 전송되는 모든 단일 링크를 관리한다. 라우터 사이에도 여러 node가 존재할 수 있으며 각 링크를 책임지게 된다. 따라서 출발지에 도착지로 패킷을 보낼 때 IP주소는 그대로인 반면 MAC 주소는 계속해서 변하게 된다. Alice -> Bob으로 데이터를 송신할 때 Alice는 먼저 Bob의 IP주소를 DNS 프로토콜을 이용해서 알아낸..
Host의 IP 주소의 할당 방식은 두가지가 존재한다. 고정 IP 주소 방식으로 직접 IP, 서브넷 마스크, 게이트웨이를 설정하는 방식이다. DHCP를 이용해서 동적으로 필요할 때 IP 주소를 할당받는 방식이다. 일반 사용자들은 대부분 2번을 사용하며 학교나 관공서에서 1번을 사용한다. 1번을 사용하면 IP추적을 통해 특정 컴퓨터를 특정할 수 있다. DHCP 프로토콜 사용의 장점 사용을 할 때만 할당받아서 사용하게 된다. 고정적으로 컴퓨터마다 일일히 IP를 구성해줄 필요가 없다. 호스트(노트북, 폰) 등의 이동성을 지원해준다. 이동한 위치에서 새로 IP를 발급해주면 된다. DHCP host가 네트워크 망에 접속할 DHCP 서버와의 통신을 통해서 사용 가능한 IP를 묻고 사용 가능한 IP 주소를 받아서 H..
Network Layer 프로토콜 Routing Protocol - 경로 탐색 및 설정, Autonomous System 내 라우팅 프로토콜, AS 간 라우팅 프로토콜 제공 IP 프로토콜 - Addressing Convention 정의, Datagram 구조 정의, 패킷 핸들링 convention 정의 ICMP 프로토콜 - error 리포팅, router signaling IP 프로토콜 IP는 인터넷 프로토콜 아키텍쳐의 중심 허리에 해당하는 부분으로 상위 프로토콜, 하위 프로토콜 사이에 존재한다. 네트워크 계층에 존재하는 오직 하나의 프로토콜로 현대 인터넷 구조를 TCP/IP 계층이라고도 한다. 기능 IP 프로토콜은 Unrealiable, Connectionless, Best effort 한 특징이 있다..
Network Layer 기능 Packetizing 출발지에서 네트워크 계층의 패킷안에 payload를 Encapsulation 한다. 도착치에서 네트워크 계층의 패킷에서 payload를 Decapsulation 한다. payload를 출발지 -> 도착지로 전달할 때 해당 내용물을 사용하거나 변경하지 않는다. 이는 마치 우편물을 배송할 때 중간에 내용물을 확인하거나 바꾸지 않는것과 동일하다. Routing/Forwarding Routing: 출발지로부터 도착지까지 패킷이 이동할 경로를 결정한다. Fowarding: 라우터의 input 적절한 라우터의 output으로 패킷을 이동시킨다. 서울에서 부산까지의 경로가 여러개 존재한다. 이때 특정 분기점에 위치했을때 경부고속도로로 보낼지, 다른 고속도로로 보낼지..
12. Template Method Pattern 목적 알고리즘의 뼈대를 정의하고 일부를 서브 클래스에 위임한다. 이렇게 함으로서 알고리즘의 구조를 변경하지 않고 알고리즘의 일부 내용을 서브 클래스에서 재정의 할 수 있도록 한다. 많은 방식의 알고리즘을 각각 캡슐화시키면서 중복되는 코드가 여러 클래스에 존재하게 된다. -> 중복 코드의 문제. 이를 해결하기 위해 알고리즘의 중복되는 부분을 부모 클래스에 캡슐화시키고 달라지는 부분만 서브클래스에서 구현하게 한다. 결과적으로 중복되는 코드를 줄일 수 있고, 한 곳에서 관리하게 되므로 유지 보수에 유리하다. 예 카페 예시 카페에서 커피를 만드는 것과 차를 만드는 과정을 봐보자. 물을 끓이고 -> 뜨거운 물에 (차, 커피)를 우려내고 -> (차, 커피)를 (일회..
Multilevel Paging and Performance Address Space가 더 커지면 다단계 페이지 테이블이 필요하다. 각 단계의 페이지 테이블은 물리 메모리에 page로서 존재하므로 logical address의 physical address 변환에 더 많은 메모리 접근이 필요하게 된다. TLB를 사용함으로서 메모리 접근 시간을 줄일 수 있다. 4단계 페이지 테이블을 사용하는 경우 접근 시간 계산 (메모리 접근 시간이 100ns, TLB 접근 시간이 20ns, TLB hit ratio가 98%인 경우로 가정한다.) 0.98 * (20 + 100)ns + 0.02 * (20 + 400 + 100)ns ⇒ ( 120 * 0.98 + 520 * 0.02 )ns 98%는 TLB 접근시간 20ns와..
State Pattern 상태(State)란? 하나의 오브젝트가 시점에 따라 특정 상태에 있어야 한다. 처음에 가지게 되는 초기 상태 또는 상황에 따라 여러 상태 중 하나의 상태를 가질 수 있다. 한 상태에서 다른 상태로 전환하는 것을 전이(Transition) 이라고 한다. 예를들어 게임 캐릭터의 경우 걷기, 뛰기, 멈추기, 공격하기, 방어하기 등이 있고, 가전제품의 경우 on, off, sleep 등이 있을 수 있다. 이러한 다양한 상태를 if 문으로 상태를 통제하는 방식은 추가적인 상태가 생기거나 구현의 변경이 발생했을 때 여러곳의 코드가 변경될 수 있다는 문제가 있다. 이를 해결하기 위해 상태를 한 곳에서 관리하기 위한 패턴이 상태 패턴이다. 설명 두개의 인자와 한개의 연산자를 받고 "="을 입력..
Command Pattern 요구사항(요청, 명령)을 객체로 캡슐화 시킨다. 이렇게 함으로써 주어진 여러 기능을 실행할 수 있는 재사용성 이 높은 클래스를 설계할 수 있다. 이벤트가 발생했을 때 실행될 기능이 다양하면서도 변경이 필요한 경우에 이벤트를 발생시키는 클래스를 변경하지 않고 재사용할 때 유용하다. 요구사항 (기능)을 캡슐화 함으로써 기능의 실행을 요구하는 호출자 클래스와 실제 기능을 실행하는 수신자 클래스 간의 의존성을 분리할 수 있다. 결과적으로 다양한 기능이 추가되어도 호출자는 수정없이 기능을 사용할 수 있다. 예시 계산기 숫자 버튼과 연산자 버튼, = 버튼 등 버튼마다 다른 기능을 갖고 있다. 통합 리모콘 티비 on/off, 전등 on/off, 에어컨 on/off 을 통합으로 관리하는 리..
Adapter Pattern 클래스의 인터페이스를 클라이언트가 원하는 형태의 또 다른 인터페이스로 변환한다. Adapter는 호환되지 않는 인터페이스 때문에 동작하지 않는 클래스를 동작할 수 있게 만들어준다. Object Wrapping의 역활을 해서 서로 호환되지 않는 인터페이스를 연결할 수 있게 해준다. 설명 문제: 사용 객체의 API가 서로 다른 경우 해결: 함수를 변환하는 객체를 중간에 넣어줌으로서 변경을 최소화한다. 예시 배열과 리스트에 대한 다른 사용 메소드가 있다. 배열 arr[10]으로 선언 arr[0]로 접근 length()로 크기 얻음 중간 삽입 시 새로운 배열 선언 후 앞 뒤에 기존 값을 넣어줌 중간 값 삭제 시 새로운 배열 선언 후 제거한 값을 제외하고 넣어줌 리스트 LinkedLi..
DAO Pattern Refactoring with Generic Generic을 사용하여 DAO 인터페이스와 DaoImpl 클래스를 구현 클래스와 분리한다. DAO 인터페이스와 DaoImpl 클래스를 일반화하여 사용할 수 있다. 따라서 다른 클래스에서도 상속하여 원하는 대로 함수를 오버라이드하여 사용할 수 있다. DAO 인터페이스 abstract 메소드를 사용한다. 하위 클래스와 철저하게 분리하여 작성해야한다. public abstract class DaoImpl implements DAO { String dbTableName; // 추상 메소드 public abstract Statement getStatement(); public abstract String getInstanceValueQuery(D..
- Total
- Today
- Yesterday