728x90
반응형

컴퓨터과학 63

운영체제 핵심 개요

운영체제 핵심 개요 운영체제란? 컴퓨터 하드웨어 바로 윗단에 설치되는 소프트웨어를 의미 🤔 운영체제 같은 대형 프로그램을 모두 메모리에 올리면 메모리가 낭비되는 것 아닌가요? 맞습니다.!! 운영체제처럼 규모가 큰 소프트웨어를 모두 메모리 올린다면, 메모리 낭비가 심합니다. 따라서 이러한 메모리 낭비를 고려하여, 운영체제 중 필요한 부분만 컴퓨터 전원이 켜짐과 동시에 메모리에 올려놓고, 그렇지 않은 부분은 필요할 때만 메모리에 올려서 사용합니다. 🤔 운영체제 하면 항상 커널 이야기가 나오는데 커널은 뭐죠? 메모리에 항상 올라가 있는 운영체제의 부분을 커널이라고 부릅니다. (커널은 운영체제 코드 중에서 핵심적인 부분을 의미) 운영체제의 기능 운영체제는 컴퓨터 하드웨어와 사용자 또는 소프트웨어 사이에 존재합니..

[소프트웨어 아키텍처] 16. 브릿지 패턴(Bridge Pattern -java)

브릿지 패턴(Bridge Pattern) 객체의 확장성을 향상하기 위한 패턴으로, 동작을 처리하는 구현부와 확장을 위한 추상부로 분리합니다. 즉, 구현과 더불어 추상화 부분까지 변경해야 한다면 브릿지 패턴을 사용하면 됩니다.! 🌉 브릿지 패턴을 사용하면 추상화된 부분과 구현 부분을 서로 다른 클래스 계층구조로 분리해서 그 둘을 모두 변경할 수 있습니다. 여러 플랫폼에서 사용해야 하는 그래픽스와 윈도우 처리 시스템에서 유용하게 사용됩니다. 다시말하면, 인터페이스와 실제 구현할 부분을 서로 다른 방식으로 변경해야 할 때 유용하게 사용됩니다. 브릿지 패턴 구조 Abstraction 기능 계층의 최상위 클래스 ConcreteAbstraction 기능 계층에서 새로운 부분을 확장한 클래스 Implementor a..

[소프트웨어 아키텍처] 15. 어댑터 패턴, 퍼사드 패턴(Adapter Pattern, Facade Pattern -java)

어댑터 패턴(Adapter Pattern) 데코레이터 패턴이 기억나시나요? 객체를 래퍼로 감싸서 새로운 역할을 부여했습니다. StarBeverage beverage = new Americano(); beverage = new Ice(beverage); //이런식으로 말이죠! 어댑터 패턴은 조금 다릅니다.! 이번에는 실제와 다른 인터페이스를 가진 것처럼 보이도록 객체를 감싸겠습니다. 어댑터 패턴을 사용하면 특정 인터페이스가 필요한 디자인을 다른 인터페이스를 구현하는 클래스에 적응시킬 수 있습니다. 어댑터 패턴은 특정 클래스 인터페이스를 클라이언트에서 요구하는 다른 인터페이스로 변환합니다. 인터페이스가 호환되지 않아 같이 사용할 수 없었던 클래스를 사용할 수 있게 도와줍니다. 어댑터 패턴 구조 어댑터 패턴은..

[소프트웨어 아키텍처] 14. 데코레이터 패턴(Decorator Pattern -java)

데코레이터 패턴(Decorator Pattern) 기존 클래스 코드를 변경하지 않고 객체에 새로운 작업을 추가할 수 있는 패턴 데코레이터 패턴을 사용하면 객체에 추가 요소를 동적으로 더할 수 있습니다. 또한, 서브클래스를 만들 때보다 훨씬 유연하게 기능을 확장할 수 있습니다. 데코레이터의 슈퍼클래스는 자신이 장식하고 있는 객체의 슈퍼클래스와 같습니다. 한 개체를 여러 개의 데코레이터로 감쌀 수 있습니다. 데코레이터는 자신이 감싸고 있는 객체와 같은 슈퍼클래스를 가지고 있기에, 원래 객체(싸여 있는 객체)가 들어갈 자리에 데코레이터 객체를 넣어도 무관합니다. 데코레이터는 자신이 장식하고 있는 객체에게 어떤 행동을 위임하는 일 말고도 추가 작업을 수행할 수 있습니다. 객체는 언제든지 감쌀 수 있으므로 실행 ..

[소프트웨어 아키텍처] 13. 프로토타입 패턴(Prototype Pattern -java)

프로토타입 패턴(Prototype Pattern) 클래스의 인스턴스를 생성할 때 자원과 시간이 많이 들거나 복잡하다면 프로토타입 패턴을 사용하면 됩니다. 프로토타입 패턴을 사용하면 기존 인스턴스를 복사하기만 해도 새로운 인스턴스를 만들 수 있습니다.(java 에서는 clone() 메소드를 사용하거나 역직렬화를 하면 됩니다.^^) 본래의 객체를 새로운 객체에 복사하여 우리의 필요에 따라 수정하는 메커니즘을 제공합니다. 프로토타입 패턴을 가장 큰 특징은 클라이언트에서 어떤 클래스의 인스턴스를 만드는지 전혀 모르는 상태에서도 새로운 인스턴스를 만들 수 있다는 점 입니다. 프로토 타입 패턴 구조 깊은 복사, 얇은 복사 깊은 복사와 얇은 복사에 대해서 들어본적이 있으신가요? 먼저, 우리는 모든 데이터 타입은 값 ..

[소프트웨어 아키텍처] 12. 빌더 패턴(Builder Pattern -java)

빌더 패턴(Builder Pattern) 짜장면을 여러 단계로 나누어서 먹을수 있도록 먹는 방법을 캡슐화하고 싶다면…? 짜잔! 빌더 패턴을 사용하면 됩니다.!! 반복자 패턴을 기억하시나요? 반복자 패턴을 사용하면 컬렉션의 구현방법을 노출하지 않으면서 집합체 내의 모든 항목에 접근할 수 있습니다. 쉽게 이야기 하면, 반복 작업을 별도의 객체로 캡슐화해서 컬렉션의 내부 구조를 클라이언트로부터 보호할 수 있습니다. 빌더 패턴도 동일한 아이디어를 적용합니다.! 빌더를 캡슐화해서 클라이언트가 빌더에게 구조를 만들어 달라고 요청하는 것 입니다...! 빌터 패턴 구조 AbstractBuilder 빌더패턴의 대상이 되는 클래스 ConcreteBuilder AbstractBuilder에 필요한 메소드를 구현한 클래스 빌..

[소프트웨어 아키텍처] 11. 싱글톤 패턴(Singleton Pattern -java)

싱글톤 패턴(Singleton Pattern) 인스턴스가 하나뿐인 특별한 객체 싱글톤 패턴은 클래스 인스턴스를 하나만 만들고, 그 인스턴스로의 전역 접근을 제공합니다. 다른 클래스에서는 싱글톤으로 구현한 클래스 인스턴스를 만들지 못하도록 해야합니다. 싱글톤 패턴을 실제로 적용할 때는 클래스에서 하나뿐인 인스턴스를 관리하도록 만들면 됩니다. 그리고 다른 클래스에서도 자신의 인스턴스를 추가로 만들지 못하게 해야합니다. 이말은 인스턴스가 필요하다면 반드시 클래스 자신을 거치도록해야함을 의미합니다. 어디서든 해당 인스턴스에 접근할 수 있도록 전역 접근 지점을 제공합니다. 언제든 인스턴스가 필요하면 클래스에 요청할 수 있게 만들어 놓고, 요청이 들어오면 하나뿐인 인스턴스를 건네주도록 만들어야 합니다. 여기서 싱글..

[소프트웨어 아키텍처] 10. 중재자 패턴(Mediator Pattern -java)

중재자 패턴(Mediator Pattern) 모든 클래스간의 복잡한 로직을 캡슐화하여 하나의 클래스에 위임하여 처리하는 패턴 N:M의 관계에서 N:1의 관계로 복잡도를 낮추어 유지보수 및 재사용의 확장성에 유리한 패턴 입니다. 객체 간의 메시지를 전달할 일이 있을 때도 중재자를 두고 전달할 수 있다. 서로 관련된 객체 사이의 복잡한 통신과 제어를 한곳으로 집중하고 싶을 때 사용합니다. 주로 UI 프로그래밍에서 많이 사용되는 방법으로 Widget 간의 상호 처리를 서로간에 처리하는 것이 아니라 한 객체가 전담하여 처리하도록 하는 방식입니다. Facade Pattern, Observer Pattern과 유사하다. 중재자 패턴 구조 Mediator 여러 Colleague를 중재하는 인터페이스 Colleague..

[소프트웨어 아키텍처] 9. 책임 연쇄 패턴(CoR: Chain of Responsibility Pattern -java)

책임 연쇄 패턴(CoR: Chain of Responsibility Pattern) 책임 연쇄 패턴은 핸들러들의 체인(사슬)을 따라 요청을 전달할 수 있게 해주는 행동 디자인 패턴 입니다. 각 핸들러는 요청을 받으면 요청을 처리할지, 다음 핸들러로 전달할지 결정 합니다. 쉽게 이야기하면, 1개의 요청을 2개 이상의 객체에서 처리해야 한다면?! 책임 연쇄 패턴을 사용하면 좋습니다.!! 요청을 처리할지 다음 핸들러로 전달할지 결정하면 되기 때문이죠! CoR은 윈도우 시스템에서 마우스 클릭과 키보드 이벤트를 처리할 때 흔히 사용됩니다. 책임 연쇄 패턴 구조 Handler 모든 구상 핸들러에 공통적인 인터페이스 일반적으로 요청을 처리하기 위한 단일 메소드만 포함 체인의 다음 핸들러를 세팅하기 위한 다른 메소드를..

[소프트웨어 아키텍처] 8. 팩토리 메소드 패턴, 추상 팩토리 패턴(Factory Method Pattern, Abstract Factory Pattern -java)

팩토리 메소드 패턴(Factory Method Pattern) 구상 형식 인스턴스를 만드는 작업을 캡슐화 합니다. 객체의 인스턴스를 만드는 작업이 항상 공개되어야 하는 것은 아닙니다. 오히려 공개했을 경우 결합 문제가 발생할 수도 있습니다. 이러한 불필요한 의존성을 없애서 결합 문제를 해결하는 방법이 바로 팩토리 패턴 입니다. 객체를 생성할 때 필요한 인터페이스를 만듭니다. 어떤 클래스의 인스턴스를 만들지는 서브클래스에서 결정합니다. 팩토리 메소드 패턴을 사용하면 클래스 인스턴스를 만드는 작업을 서브클래스에게 맡기게 됩니다. 사용하는 서브클래스에 따라 생산되는 객체 인스턴스가 결정됩니다. Factory factory = new SeoulFactory(); new를 사용하면 구상 클래스의 인스턴스가 만들어..

728x90
반응형