전체 글 592

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

에릭 프리먼 님의 "헤드퍼스트 디자인 패턴" 책을 정리한 포스팅 입니다 1. 오리 시뮬레이션 게임Duck 클래스를 슈퍼클래스로 생성각 오리 종류를 서브클래스로 두어 Duck 클래스를 상속함 (MallardDuck, RedheadDuck, RubberDuck) 심각한 문제 발생슈퍼클래스에 추상메서드 추가 시, 모든 서브클래스에서 구현이 강제됨몇몇 서브클래스에만 적용되어야 할 메서드일 경우, 논리적으로 오류가 발생함 예: fly()더보기// 상위 클래스abstract class Duck { public abstract void fly(); // 👈 모든 Duck에게 fly() 강제 public abstract void quack();}// MallardDuck는 날 수 있음class Malla..

Java/Design Pattern 2024.12.16

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

조성호 님의 "쉽게 배우는 운영체제" 책을 정리한 포스팅 입니다 1. 파일논리적인 데이터 집합여러 개의 블록으로 구성됨제 2 저장장치에 저장됨 블록일정한 크기의 데이터 단위파일은 블록 단위로 나뉘어 저장됨 UnitMemory: byteHDD: ClusterFile System: 4KB (ext4, NTFS) 속성파일 헤더구성 요소설명첫 블록 주소파일의 첫 번째 데이터 블록의 주소를 나타냄name파일 이름type파일 유형 (예: 텍스트, 이진 등)size파일 크기 (바이트 단위)time파일 생성, 수정, 접근 시간location파일이 저장된 위치 (디스크 상의 물리적 위치)accessibility파일의 접근 권한 (읽기, 쓰기, 실행 등)owner파일 소유자파일 테이블에서 관리됨 파일 디스크립터파일 식별자..

OS 2024.12.14

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

조성호 님의 "쉽게 배우는 운영체제" 책을 정리한 포스팅 입니다 가져오기 정책: 프로세스가 필요로 하는 데이터를 언제 메모리로 가져올지 결정 1. 요구 페이징사용자가 요구할 때 해당 페이지를 메모리로 가져오는 것 미리 가져오기앞으로 필요할 것이라고 예상되는 페이지를 미리 가져오는 방식고속의 캐시 메모리에 가져다놓음으로써 시스템의 성능을 향상시킴 지역성기억장치에 접근하는 패턴이 특정 영역에 집중되는 성질지역성 유형설명공간 지역성현재 위치에서 가까운 데이터에 접근할 확률이 높음시간 지역성현재를 기준으로 가장 가까운 시간에 접근한 데이터가 다시 접근할 확률이 높음순차적 지역성여러 작업이 순서대로 진행되는 경향이 있음 페이지 테이블 엔트리 구조필드설명페이지 번호가상 주소의 페이지 번호프레임 번호물리 메모리에서 ..

OS 2024.12.13

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

조성호 님의 "쉽게 배우는 운영체제" 책을 정리한 포스팅 입니다1. 개요메모리의 크기는 컴퓨터마다 다름OS가 물리 메모리의 크기에 의존한다면, 메모리 크기별로 프로그램이 동작하지 않을 수 있음 가상 메모리물리 메모리의 크기와 관계없이 프로세스에 큰 메모리 공간을 제공하는 기술프로세스는 특별한 고려 없이 메모리를 사용할 수 있습니다 (물리 메모리 크기, 위치 등)  프로세스 가상 주소프로세스는 0번지부터 시작하는 연속된 메모리 공간을 가집니다.자신이 어느 위치에 있는지 신경쓰지 않아도 됩니다. 메모리 분할 방식운영체제를 제외한 나머지 메모리 영역을 일정한 크기로 나누어 프로세스에게 할당함ex) 페이징, 세그먼테이션, 세그먼테이션-페이징 혼용 메모리 관리자메모리 자원을 효율적으로 관리하고 프로세스들이 요구하..

OS 2024.12.12

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

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

OS 2024.12.12

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

조성호 님의 "쉽게 배우는 운영체제" 책을 정리한 포스팅 입니다1. 개요교착 상태2개 이상의 프로세스가 다른 프로세스의 작업이 끝나기만 기다리는 무한루프에 빠진 상태여러 프로세스가 함께 작업을 수행하다 보니 자연스럽게 일어나는 문제OS는 감시를 하다 교착상태가 발생하면 강압적으로 해결해야 함 발생구분설명시스템 자원다른 프로세스와 공유할 수 없는 자원(예: 프린터, 레코더 등)을 사용할 경우, 한 프로세스가 자원을 점유한 상태에서 다른 프로세스가 해당 자원을 기다리면 교착 상태 발생 가능공유 변수공유 변수가 적절히 동기화되지 않으면, 특정 프로세스가 무한 대기 상태에 빠질 수 있음 (예: 잘못된 락 관리로 인한 데드락)응용 프로그램데이터베이스에서 특정 데이터에 락을 걸어 다른 트랜잭션이 접근하지 못하는 경..

OS 2024.12.12

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

조성호 님의 "쉽게 배우는 운영체제" 책을 정리한 포스팅 입니다 1. 프로세스 간 통신종류같은 호스트에서 프로세스 간 통신구분설명특징예시공유 메모리여러 프로세스가 같은 메모리 공간을 공유하여 데이터를 주고받는 방식- 빠른 속도 (커널 개입 없이 직접 접근 가능) - 동기화 필요 (뮤텍스, 세마포어 등)- 생산자-소비자 모델에서 공유 메모리를 이용해 데이터 전달 - POSIX shmget(), shmat() 사용파일프로세스가 파일을 읽고 쓰는 방식으로 데이터 공유- 지속성이 있음 (프로세스 종료 후에도 유지) - 속도가 느림 (디스크 입출력 필요)- 로그 파일을 여러 프로세스가 공유하여 기록 - open(), read(), write() 활용파이프한 프로세스가 데이터를 쓰면, 다른 프로세스가 읽는 방식 (..

OS 2024.12.12

[쉽게 배우는 운영체제] 4-2. CPU 스케줄링: 인터럽트 처리

조성호 님의 "쉽게 배우는 운영체제" 책을 정리한 포스팅 입니다 1. 이벤트 드리븐시스템이나 애플리케이션에서 발생하는 이벤트를 중심으로 동작하는 방식입출력 장치는 자신의 작업이 완료되면, 인터럽트 신호를 발생시켜 CPU에 작업을 요청함이벤트 발생 시, 콜백 함수가 호출되어 이벤트가 처리됨 비동기적 방식여러 이벤트가 동시에 발생해도, 각 이벤트를 각각의 스레드에서 처리함다른 이벤트에 영향을 미치지 않음 2. 인터럽트종류구분동기적 인터럽트비동기적 인터럽트설명실행 중인 명령어로 인해 발생하드웨어 오류 또는 입출력 장치에 의해 발생원인프로세스의 문제 또는 의도적 중단하드웨어 요청 또는 외부 이벤트발생 시점명령어 실행 중 특정 조건 충족 시프로그램 실행과 관계없이 트리거됨처리 방식명령어 실행과 밀접하게 연관됨실행..

OS 2024.12.12

[쉽게 배우는 운영체제] 4-1. CPU 스케줄링: 스케줄링

조성호 님의 "쉽게 배우는 운영체제" 책을 정리한 포스팅 입니다 1. 스케줄링 단계스케줄링 단계설명주요 역할고수준 스케줄링전체 작업 수 조절 및 동시에 실행 가능한 프로세스의 총 개수를 제한하는 단계실행 대기열에 추가할 프로세스 결정시스템의 작업 개수 조절중간 수준 스케줄링시스템의 활성 프로세스 수를 조절하는 단계메모리 자원 관리와 시스템 부하를 조절활성 프로세스 수 조절메모리 자원 관리스왑 처리저수준 스케줄링준비 상태에 있는 프로세스 중에서 어떤 프로세스를 실행할지 결정하는 단계스케줄링 알고리즘을 사용하여 CPU 자원을 최적화하며 상태 간 전환을 관리준비 상태 프로세스 선택CPU 자원 할당 최적화상태 간 전환 관리 2. 저수준 스케줄링종류스케줄링 종류설명특징선점형 스케줄링OS가 실행 중인 프로세스의 C..

OS 2024.12.12

[쉽게 배우는 운영체제] 3-2. 프로세스와 스레드: 스레드

조성호 님의 "쉽게 배우는 운영체제" 책을 정리한 포스팅 입니다 1. 스레드프로세스 내에서 실행되는 작업 단위같은 프로세스 내에서 메모리와 자원을 공유 (Light Weight Process)서로 간에 직접적으로 데이터를 주고받을 수 있음데이터를 공유하므로 메모리를 효율적으로 사용할 수 있음 2. 멀티 태스킹 vs 멀티 스레딩항목멀티 태스킹멀티 스레딩정의CPU 할당 시간을 시분할하여 여러 작업을 동시에 처리하는 기법 (시분할 시스템).단일 프로세스 내에서 여러 개의 스레드를 생성하여 병렬 처리하는 방식. (스레드 단위로 스케줄링이 이루어짐)목표여러 작업을 동시에 처리하는 것처럼 보이게 함.단일 프로세스 내에서 여러 스레드를 사용하여 병렬 처리.구현 방식운영체제가 여러 프로세스를 관리하며 각 프로세스에 시..

OS 2024.12.12