728x90

전체 글 715

24.09.06 CSAPP, CS

CSAPP9.9.8 가용블록의 분할할당기가 크기가 맞는 가용 블록을 찾은 후에 가용 블록의 어느정도를 할당할지에 대해 정책적 결정을 내려야 한다. 한 가지 옵션은 이 가용 블록 전체를 사용하는 것이다. 비록 간단하고 빠르지만, 큰 단점은 내부 단편화가 생긴다는 것이다. 만일 배치 정책으로 인해 크기가 잘 맞는다면, 일부 추가적인 내부 단편화는 수용할 수도 있다.그렇지만 크기가 잘 안맞는다면, 할당기는 대개 가용 블록을 두 부분으로 나누게 된다. 첫 번째 부분은 할당한 블록이 되고, 새로운 가용 블록이 된다.9.9.9 추가적인 힙 메모리 획득하기할당기가 요청한 블록을 찾을 수 없다면, 메모리에서 물리적으로 인접한 가용 블록들을 합쳐서(연결해서) 더 큰 가용 블록을 만들어 본다. 이렇게 해도 충분히 큰 블록..

24.09.05 CSAPP복습 ,C++

CSAPP8.1.2 예외의 종류예외상황은 네 가지 종류로 구분 할 수 있다.인터럽트트랩오류 Fault중단 abort인터럽트인터럽트는 프로세서 외부에 있는 입출력 디바이스로부터 시그널의 결과로 비동기적으로 발생한다. 하드웨어 인터럽트는 비동기적이며, 즉 특정 인스트럭션을 실행해서 발생하는 것이 아니라는 의미에서 그렇다. 하드웨어 인터럽트를 위한 예외 핸들러는 종종 인터럽트 핸들러 라고 부른다.네트워크 어댑터, 디스크 컨트롤러, 타이머 칩 같은 입출력 디바이스들은 프로세서 칩의 핀에 시그널을 보내서 인터럽트를 발생시키고, 인터럽트를 발생시킨 디바이스를 식별하는 예외번호를 시스템 버스에 보낸다.현재의 인스트럭션이 실행을 완료한 후에, 프로세서는 인터럽트 핀이 high로 올라갔다는 것을 발견하고 시스템 버스에서..

24.09.04 CS, C++

C++스마트 포인터스마트 포인터(smart pointer)는 C++에서 동적 메모리 관리를 자동화하기 위해 사용되는 클래스 템플릿이다.스마트 포인터는 객체를 포인터처럼 사용하면서도 메모리 해제를 자동으로 처리하여 메모리 누수(memory leak)를 방지하는 데 도움을 준다. C++11부터 표준 라이브러리에서 제공하는 스마트 포인터에는 std::unique_ptr, std::shared_ptr, std::weak_ptr 등이 있다.1. 스마트 포인터의 필요성C++에서는 동적 메모리를 할당할 때 new 연산자를 사용하고, 할당된 메모리는 delete 연산자로 해제해야 한다. 하지만 메모리 해제를 깜빡하거나 예외가 발생할 경우, 메모리 누수가 발생할 수 있다. 스마트 포인터는 이러한 문제를 해결하기 위해 고..

24.09.03 CS, C++

24.09.03 CS, C++CS추상 팩토리(Abstract Factory)추상 팩토리 패턴은 연관성이 있는 객체 군이 여러개 있을 경우 이들을 묶어 추상화하고, 어떤 구체적인 상황이 주어지면 팩토리 객체에서 집합으로 묶은 객체 군을 구현화 하는 생성 패턴이다. 클라이언트에서 특정 객체를 사용할 때 팩토리 클래스만을 참조하여 특정 객체에 대한 구현부를 감추어 역할과 구현을 분리시킬 수 있다.즉, 추상 팩토리의 핵심은 제품군 집합을 타입 별로 찍어낼 수 있다는 점이 포인트이다. 복잡하게 묶이는 제품군들을 관리와 확장하기 용이하게 패턴화 한 것이 추상 팩토리이다.추상 팩토리 패턴 구조AbstractFactory최상위 공장 클래스. 여러개의 제품들을 생성하는 여러 메소드들을 추상화 한다.ConcreteFact..

24.09.02 CS, 언리얼

CS팩토리 메서드(Factory Method)팩토리 메소드 패턴은 객체 생성을 공장 클래스로 캡슐화 처리하여 대신 생성하게 하는 생성 디자인 패턴이다.즉, 클라이언트에서 직접 new 연산자를 통해 제품 객체를 생성하는 것이 아닌, 제품 객체들을 도맡아 생성하는 공장 클래스를 만들고, 이를 상속하는 서브 공장 클래스의 메서드에서 여러가지 제품 객체 생성을 각각 책임지는 것이다.또한 객체 생성에 필요한 과정을 템플릿처럼 미리 구성해놓고, 객체 생성에 관한 전처리나 후처리를 통해 생성 과정을 다양하게 처리하여 객체를 유연하게 정할 수 있는 특징도 있다.팩토리 메서드 패턴 구조Creator최상위 공장 클래스로서, 팩토리 메서드를 추상화하여 서브 클래스로 하여금 구현하도록 한다.객체 생성 처리 메서드(someOp..

24.08.30 CS, C++

CS상태(State) 패턴상태 패턴은 객체가 특정 상태에 따라 행위를 달리하는 상황에서, 상태를 조건문으로 검사해서 행위를 달리하는 것이 아닌, 상태를 객체화하여 행동을 할 수 있도록 위임하는 패턴을 말한다.객체 지향 프로그래밍에서의 클래스는 꼭 사물/생물 만을 표현하는 고체 형태의 데이터만 표현 할 수 있는게 아니다. 경우에 따라 무형태의 행위/동작도 클래스로 묶어 표현할 수 있다.그래서 상태를 클래스로 표현하면 클래스를 교체해서 상태의 변화를 표현할 수 있고, 객체 내부 상태 변경에 따라 객체의 행동을 상태에 특화된 행동들로 분리해 낼 수 있으며, 새로운 행동을 추가하더라도 다른 행동에 영향을 주지 않는다.여기서 상태란 객체가 가질 수 있는 어떤 조건이나 상황을 의미한다.이처럼 객체가 특정 상태에 따..

24.08.29 CS, C++

CS템플릿 메소드(Template Method)템플릿 메서드 패턴은 여러 클래스에서 공통으로 사용하는 메서드를 템플릿화 하여 상위 클래스에서 정의하고, 하위 클래스마다 세부 동작을 다르게 구현하는 패턴이다.즉, 변하지 않는 기능(템플릿)은 상위 클래스에 만들어두고 자주 변경되며 확장할 기능은 하위 클래스에서 만들도록 하여, 상위의 메소드 실행 동작 순서는 고정하면서 세부 실행 내용은 다양화 될 수 있는 경우에 사용된다.템플릿 메소드 패턴은 상속이라는 기술을 극대화하여, 알고리즘의 뼈대를 맞추는 것에 초점을 둔다. 이미 수많은 프레임워크에서 많은 부분에 템플릿 메소드 패턴 코드가 우리도 모르게 적용되어 있다.템플릿 메서드 패턴 구조AbstractClass(추상 클래스)템플릿 메소드를 구현하고, 템플릿 메소..

24.08.28 CS, C++

CS전략(Strategy) 패턴전략 패턴은 실행(런타임) 중에 알고리즘 전략을 선택하여 객체 동작을 실시간으로 바뀌도록 할 수 있게 하는 행위 디자인 패턴이다. 여기서 전략이란 일종의 알고리즘이 될 수도 있으며, 기능이나 동작이 될 수도 있는 특정한 목표를 수행하기 위한 행동 계획을 말한다.즉, 어떤 일을 수행하는 알고리즘이 여러가지 일때, 동작들을 미리 전략으로 정의함으로써 손쉽게 전략을 교체할 수 있는, 알고리즘 변형이 빈번하게 필요한 경우에 적합한 패턴이다.전략 패턴 구조전략 알고리즘 객체들알고리즘, 행위, 동작을 객체로 정의한 구현체전략 인터페이스모든 전략 구현체에 대한 공용 인터페이스컨텍스트(Context)알고리즘을 실행할 때마다 해당 알고리즘과 연결된 전략 객체의 메소드를 호출한다.클라이언트특..

언어/C++ 2024.08.28

24.08.27 CS, C++

CS객체 지향 설계의 5가지 원칙 - S.O.L.I.DSOLID 원칙이란 객체 지향 설계에서 지켜줘야 할 5개의 소프트웨어 개발 원칙을 말한다.SRP(Single Responsibility Principle) 단일 책임 원칙OCP(Open Closed Principle) 개방 폐쇄 원칙LSP(Listov Substitution Principle) 리스코프 치환 원칙ISP(Interface Segregation Principle) 인터페이스 분리 원칙DIP(Dependency Inversion Principle) 의존 역전 원칙SOLID 설계 원칙은 OOP의 4가지 특징(추상화, 상속, 다형성, 캡슐화)와 더불어, 객체 지향 프로그래밍의 단골 질문 중 하나이다.좋은 소프트웨어란 변화에 대응을 잘 하는 것을..

728x90