2014/07

    [DesignPattern] Singleton Pattern

    [DesignPattern] Singleton Pattern

    싱글톤 패턴! 단 하나만 존재하는 유일무이한 객체를 만들기 위한 패턴! 싱글톤 패턴을 정의하면 아래와 같습니다. 세상에서 단 하나뿐인 특별한 객체 단 하나뿐인 객체와 왜 필요하냐고 물으실 수 있으십니다. 하지만 용도는 무궁무진합니다. 디바이스를 위한 디바이스드라이버나 로그 기록용 객체, 대화상자, 스레드 풀 등등... 이런 형식의 객체는 2개 이상 만들게 되면 무엇인가 문제가 생기지요. 프로그램 상의 문제나 아니면 불필요하게 메모리만 덩그러니 차지하게 되는 그런 상황 말입니다. 사람들은 묻습니다. 그럼 전역변수를 쓰면 되지 않냐고요.하지만 싱글톤 패턴을 사용하는것이 전역변수를 사용하는 것보다 훨씬! 프로그램에 좋습니다. 전역변수를 사용하게 되면 프로그램이 시작되자마자 메모리 상에 생성되게 됩니다. 하지만..

    [Design Pattern] Observer Pattern

    [Design Pattern] Observer Pattern

    Design Pattern 중 이번 시간은 Observer Pattern 에 대해서 알아보겠습니다. Observer란 이름은 많이 친숙하시지 않으신가요? 한 번쯤 스타크래프트 란 게임에서 보이지 않은 상태에서 탐색을 위한 비행체로 나오는데요. Observer Pattern은 무엇일까요?? Observer는 관찰자, 관측자, 목격자 등의 뜻을 가지고 있는데요. Observer들도 마찬가지 입니다. 주제 객체를 바라보고 있는 놈들이죠. Observer Pattern은 크게 주제 객체와 옵저버 객체로 나눠져 있습니다. 그럼 한번 제대로 알아보죠. Observer Pattern의 개요는 아래와 같습니다. " 객체들에게 연락망을 돌립시다 " Head First Design Pattern에서는 Observer 패턴..

    [Linux Kernel] 프로세스 상태 분석

    [Linux Kernel] 프로세스 상태 분석

    리눅스에서 프로세스의 상태를 한번 알아보겠습니다. 프로세스에 대해서는 앞에서도 간단히 설명 드렸습니다. 실행중인 프로그램이라고 단순히 설명 할 수 있습니다. 이러한 프로세스들은 여러가지의 상태를 가지게 되는데, 이 상태들에 대해 오늘 한번 알아보겠습니다. 구글에 검색해 보면 많은 사람들이 자료를 블로깅해 놓았을텐데, 보면 다들 분류하는 상태의 갯수가 다른 것 처럼 보입니다. 하지만 크게 보시면 시스템의 프로세스는 5가지의 상태를 가지게 됩니다. 1179 struct task_struct { 1180 volatile long state; /* -1 unrunnable, 0 runnable, >0 stopped */ 1181 void *stack; 1182 atomic_t usage; 1183 unsigne..

    [Design Pattern] Strategy pattern

    [Design Pattern] Strategy pattern

    Strategy Pattern에 대해 한번 알아봅시다. Strategy Pattern의 기본적인 정의는 아래와 같습니다.알고리즘 군을 정의하고 각각을 캡슐화 하여 교환해서 사용할 수 있도록 만든 패턴으로 알고리즘을 사용하는 클라이언트와는 독립적으로 알고리즘이 변경 가능하다. 말이 쉬우면서도 어렵다. 알고리즘 군을 정의하고 그것을 캡슐화(?)하여 교환해서 사용하도록 만든 것이라고 한다.이걸 좀 더 쉽게 풀어서 생각하여 보자. 알고리즘 군이란 것이 무엇일까? 우리가 어떠한 클래스를 설계할 때 변경되는 부분이라고 생각하면 쉽다. 클래스 설계 시 기능(Method명)은 같지만 표현방식(구현/알고리즘)이 다른 Method들이 있다. 예를 들어 Animal이라는 클래스가 있고, 이 클래스에 cry라는 method가..

    [Java] Static Method(정적 메소드)

    어떠한 클래스의 인스턴스 없이 함수를 호출하는 방법이 있을까? 정적 메소드는 객체 레퍼런스 변수 대신 클래스 명을 이용하여 호출한다. 특정 인스턴스 변수값에 의존하지 않는 유틸리티 메소드는 정적 메소드로 만드는 것이 좋다정적 메소드에서는 특정 인스턴스와는 연관되지 않기 때문에 어떤 인스턴스 변수값도 사용할수 없다정적 메소드가 아닌 메소드는 보통 인스턴스 변수 상태와 연관 되어있기 때문에 정적 메소드에서는 정적 메소드가 아닌 메소드는 사용할수 없다 정적 메소드만 들어 있는 클래스가 있다면 그 클래스의 인스턴스를 만들필요가 없기 때문에 그 생성자를 private 로 지정하는 것이 좋다

    [Linux Kernel] Process - Task struct(프로세스 서술자)

    프로세서에 대해 간단히 설명했었다.이번 시간에는 프로세스 서술자에 대해서 한번 알아보기로 한다.커널은 프로세스들을 task_list라고 부르는 환형 양방향 링크드리스트를 이용하여 관리, 저장한다.서로서로 연결되어 있다면?? 현재 실행중인 프로세스에서 다른 프로세스 서술자의 정보를 확인할 수 있다는 것인가? 그 부분에 대해서는 아래에서 알아보도록 하자. task_list의 각 항목을 프로세스 서술자라고 하며 에 struct task_struct 형식으로 되어있다. 아래가 task_struct가 가진 정보들이다. 1179 struct task_struct { 1180 volatile long state; /* -1 unrunnable, 0 runnable, >0 stopped */ 1181 void *sta..