분류 전체보기 420

[헤드퍼스트 디자인 패턴] 2. 옵저버 패턴

에릭 프리먼 님의 "헤드퍼스트 디자인 패턴" 책을 정리한 포스팅 입니다 1. 옵저버 패턴한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체에게 자동으로 통보되고, 변경 내용을 반영할 수 있도록 하는 디자인패턴일대다 형식으로 객체간 관계를 정의합니다. 요소Subject상태 관리상태가 변경될 때, 이를 옵저버들에게 통보옵저버 관리 ObserverSubject에 의존Subject의 상태 변화에 반응 느슨한 결합서로 강하게 연결되어 있지 않지만, 상호작용 할 수 있는 관계 추상화Subject는 Observer 인터페이스만 의존서로의 세부 구현 몰라도 됨 유연성변경 및 추가가 쉬움코드 변경이 일어나도 서로에게 영향 없음  재사용성Subject와 Observer는 서로 독립적으로 재사용 가능 사용이벤트 기반 프..

Java/Design Pattern 2024.12.16

[헤드퍼스트 디자인 패턴] 0. 디자인 패턴이란

에릭 프리먼 님의 "헤드퍼스트 디자인 패턴" 책을 정리한 포스팅 입니다1. 디자인 패턴객체지향 설계에서 자주 발생하는 문제에 대한 해결책코드의 재사용성, 관리 용이성, 유연성을 높일 수 있음 장점서로 이해할 수 있는 용어 제공표준화된 해결방법 제공유연성 및 유지보수 용이성구조 개선 2. 객체지향 기초객체와 클래스를 중심으로 소프트웨어를 설계하고 구현하는 방법론 주요 개념추상화중요한 정보는 드러내고 불필요한 세부 사항은 숨김 캡슐화데이터와 그 데이터를 처리하는 메서드를 하나로 묶어 객체를 만듬 다형성동일한 인터페이스를 통해 서로 다른 객체를 다룰 수 있게 해줌 상속기존 클래스를 확장하여 새로운 클래스를 정의상위 클래스의 속성이나 메서드를 하위 클래스에서 재사용 및 재정의 가능 3. 객체지향 원칙캡슐화변경이..

Java/Design Pattern 2024.12.16

[헤드퍼스트 디자인 패턴] 1. 전략 패턴

에릭 프리먼 님의 "헤드퍼스트 디자인 패턴" 책을 정리한 포스팅 입니다 1. 오리 시뮬레이션 게임Duck 클래스를 슈퍼클래스로 생성각 오리 종류를 서브클래스로 두어 상속을 활용함 (MallardDuck, RedheadDuck, RubberDuck) 심각한 문제 발생슈퍼클래스에 추상메서드 추가 시, 모든 서브클래스에서 구현이 강제됨몇몇 서브클래스에만 적용되어야 할 메서드일 경우, 논리적으로 오류가 발생함 ex: fly() 추가MallardDuck, RedheadDuck에는 가질 수 있는 행동RubberDuck에는 가져서는 안되는 행동 상속 생각하기해당 메서드를 구현할 서브클래스는 구현하고, 나머지는 공백으로 오버라이딩 해두기결국 모든 서브클래스에서 해당 메서드를 구현해야 해서, 올바른 방법이 아님 인터페이..

Java/Design Pattern 2024.12.16

[쉽게 배우는 운영체제] 11. 파일 시스템

조성호 님의 "쉽게 배우는 운영체제" 책을 정리한 포스팅 입니다 1. 파일논리적인 데이터 집합여러 개의 블록으로 구성됨제 2 저장장치에 저장됨 종류실행 파일직접 실행될 수 있는 프로그램 코드가 포함된 파일프로세스 생성 및 메모리 로드를 거쳐 실행됨유닉스에서는 접근 권한으로 실행 파 여부가 결정됨 (확장자로 구분 X ) 데이터 파일실행 파일이 작업하는데 필요한 데이터를 모아놓은 파일연결 프로그램해당 파일을 실행하면 적절한 실행 파일을 통해 자동으로 실행됨고유 헤더해당 파일이 어떤 형식인지어떤 프로그램으로 열어야 하는지파일을 복구하는데 유용하게 사용됨 이진 파일이진 형식으로 인코딩된 데이터텍스트 뿐만 아니라 이미지, 오디오, 비디오 등의 다양한 데이터가 포함될 수 있음컴퓨터가 데이터를 효율적으로 저장하고 처..

OS 2024.12.14

[쉽게 배우는 운영체제] 10. 입출력 시스템과 저장장치

조성호 님의 "쉽게 배우는 운영체제" 책을 정리한 포스팅 입니다 1. 입출력 시스템입출력 장치컴퓨터는 필수장치(CPU, Memory)와 주변장치(IO Device, Disk)로 구성됨각 장치는 메인보드에 있는 버스로 연결됨 저속 주변장치메모리와 주변장치 사이에 오고 가는 데이터 양이 적음 (키보드) 고속 주변장치메모리와 주변장치 사이에 대용량의 데이터가 오고 감 (GPU, HDD) 채널데이터가 지나다니는 하나의 통로여러 개의 버스를 묶어 사용 (버스를 1개만 사용하면 병목 현상 발생) 속도가 비슷한 장치끼리 묶어 사용함 2. 입출력 버스의 구조폴링 방식입출력장치에서 으로 폴링 방식으로 명령을 하여 데이터를 가져옴응답이 오기 전까지 대기해야 함 (계속해서 작업할 수 없음) 입출력 제어기 I/O Device..

OS 2024.12.13

[쉽게 배우는 운영체제] 9. 가상 메모리 관리

조성호 님의 "쉽게 배우는 운영체제" 책을 정리한 포스팅 입니다 가져오기 정책: 프로세스가 필요로 하는 데이터를 언제 메모리로 가져올지 결정 1. 요구 페이징사용자가 요구할 때 해당 페이지를 메모리로 가져오는 것 미리 가져오기앞으로 필요할 것이라고 예상되는 페이지를 미리 가져오는 방식고속의 캐시 메모리에 가져다놓음으로써 시스템의 성능을 향상시킴 페이지 테이블 엔트리의 구조유효 비트페이지 테이블에는 페이지가 메모리에 있는지, 스왑영역에 있는지 표시함 PTE (Page Table Entry)페이지 번호프레임 번호 (주소 필드)플래그 비트접근 비트: 사용된 적이 있는지 나타내는 비트변경 비트: 수정된 적이 있는지 나타내는 비트유효 비트: 실제 메모리에 있는지 나타내는 비트0 - 페이지가 메모리에 있음 (주소 ..

OS 2024.12.13

[쉽게 배우는 운영체제] 8. 가상 메모리의 기초

조성호 님의 "쉽게 배우는 운영체제" 책을 정리한 포스팅 입니다1. 개요메모리의 크기는 컴퓨터마다 다름OS가 물리 메모리의 크기에 의존한다면 메모리 크기별로 프로그램이 동작하지 않을 수 있음 가상 메모리물리 메모리의 크기와 상관없이 프로세스에 커다란 메모리 공간을 제공하는 기술프로세스는 운영체제가 어디있는지, 물리 메모리의 크기가 어느 정도인지 신경 쓰지 않고 메모리를 마음대로 사용할 수 있음 프로세스 가상 주소0번지부터 시작하는 연속된 메모리 공간을 가짐 (자신이 어느 위치에 있는지 상관 X) 메모리 관리자스왑 영역: 물리 메모리의 부족한 부분을 스왑 영역으로 보충동적 주소 변환: 물리 메모리와 스왑 영역을 합쳐 프로세스가 사용하는 가상 주소를 실제 메모리의 물리 주소로 변환함 메모리 분할 방식운영체제..

OS 2024.12.12

[쉽게 배우는 운영체제] 7. 물리 메모리 관리

조성호 님의 "쉽게 배우는 운영체제" 책을 정리한 포스팅 입니다1. 개요메모리 관리의 복잡성CPU메모리의 내용을 가져오거나, 작업 결과를 메모리에 저장하기 위해 MAR을 사용함MAR에 필요한 메모리 주소를 넣으면 데이터를 가져오거나 기록할 수 있음 시분할 시스템모든 응용 프로그램이 메모리에 올라와 실행되므로 메모리 관리가 복잡함 이러한 복잡한 메모리 관리는 메모리 관리 시스템(MMS)에서 담당함 메모리 관리의 이중성프로세스 입장에서는 메모리를 독차지하려 하고, 메모리 관리자 입장에서는 되도록 효율적으로 쓰고싶어 하는 것 메모리 관리자메모리가 부족할 경우, 새로운 공간을 확보하기 위해 옆의 프로세스를 밀어냄더 큰 공간으로 해당 프로세스를 옮겨줌빈 공간이 생기면 합쳐서 하나의 큰 공간을 만듬 fetch프로세..

OS 2024.12.12

[쉽게 배우는 운영체제] 6. 교착상태

조성호 님의 "쉽게 배우는 운영체제" 책을 정리한 포스팅 입니다1. 개요교착상태2개 이상의 프로세스가 다른 프로세스의 작업이 끝나기만 기다리는 무한루프에 빠진 상태여러 프로세스가 함께 작업을 수행하다 보니 자연적으로 일어나는 문제OS는 감시를 하다 교착상태가 발생하면 강압적으로 해결해야 함 발생시스템 자원: 다른 프로세스와 공유할 수 없는 자원을 사용할 경우 (printer, recorder)공유 변수: 제대로 동기화되지 않아 무한 대기 발생응용 프로그램: 데이터베이스의 특정 데이터 락을 걸어 다른 트랜잭션이 접근하지 못할 경우 자원 할당 그래프프로세스가 어떤 자원을 사용중이고 어떤 자원을 기다리고 있는지를 방향성이 있는 그래프로 표현한 것 2. 필요조건상호 배제한 프로세스가 사용하는 자원은 다른 프로세..

OS 2024.12.12

[쉽게 배우는 운영체제] 5-1. 프로세스 동기화

조성호 님의 "쉽게 배우는 운영체제" 책을 정리한 포스팅 입니다 1. 프로세스 간 통신종류스레드간 통신같은 호스트에서 프로세스 간 통신공유 메모리의 참조 변수파일파이프운영체제가 제공하는 동기화 통신 방식파일 입출력과 같이 open()으로 file descriptior를 얻어 씀단방향 통신동기 방식송신자가 write() 하는 순간 동기화가 이루어짐 다른 호스트에서 프로세스 간 통신 (네트워크)Socket네트워크 상에서 두 프로세스가 데이터를 주고받기 위해 사용하는 endpoint (OS가 제공하는 API)양방향 통신동기 방식RPC (Remote Procedure Call)다른 호스트에 있는 프로세스의 함수를 호출하는 매커니즘추상화를 제공하여 쉽게 사용할 수 있으며, 원격 서버에서 실제 호출됨서로 다른 플랫..

OS 2024.12.12