분류 전체보기
-
[자바의 정석] 12장 : 지네릭스, 열거형, 애너테이션책/자바의 정석 3판 2024. 2. 18. 21:35
1. 지네릭스 (Generics) 지네릭스란? 다룰 객체의 타입을 미리 명시해줌으로써 형변환을 줄여줌 지네릭 클래스의 선언 class Box 와 같이 선언 T는 임의의 문자도 상관없고, 처럼 여러개 해도 됨 단, 이는 임의의 참조형 타입을 의미 → 원래는 원시 타입은 안됨 Box 과 Box는 별도의 클래스를 의미하는 것이 아님 → 타입 매개변수이므로 add(1,2)와 add(3,4)가 다른 함수가 아니라는 것으로 이해하면 됨 제한 static 멤버에는 T 사용 불가 → 인스턴스 변수로 간주하므로 new T[] 불가 → 컴파일 타입에 타입을 추정할 수 없으므로 지네릭 클래스의 객체 생성과 사용 Apple이 Fruit의 자손인 경우 Box box = new Box(); 불가능하다 그러나 지네릭 클래스 자체의..
-
[자바의 정석] 7장 : 객체지향 프로그래밍 II책/자바의 정석 3판 2024. 2. 18. 21:31
1. 상속 (inheritance) 상속의 정의와 장점 extends 키워드로 가능 부모 클래스의 모든 멤버 변수와 메서드를 상속받음 private 또는 default인 멤버들은 상속되지 않는게 아니라 상속은 되는데 접근이 안되는 것 코드의 중복을 최소화할 수 있음 클래스간의 관계 - 포함관계 (composite) 클래스의 멤버변수로 다른 클래스 타입의 참조변수를 선언하는 것 클래스간의 관계 설정하기 is - a → 상속 has - a → 포함 단일 상속 자바에서는 다중 상속을 허용하지 않음 → 단일 상속만 가능 Object 클래스 - 모든 클래스의 조상 누군가에게 상속받지 않는 클래스는 모두 자동적으로 extends Object가 붙는다. 2. 오버라이딩 (overriding) 오버라이딩이란? 조상 클..
-
[자바의 정석] 6장 : 객체지향 프로그래밍 I책/자바의 정석 3판 2024. 2. 18. 21:29
1. 객체지향언어 역사 기본 개념 : 실제 세계는 사물(객체)로 이루어져 있고, 사물간의 상호작용으로 모든 사건이 발생한다 객체지향 코드의 재사용성이 높고 유지보수 편함 처음에는 기능 구현에 초점을 맞추고, 객체지향적으로 바꾸는 게 좋음 2. 클래스와 객체 클래스와 객체의 정의와 용도 클래스 : 설계도 (TV 설계도) 객체 : 실제 사물 (TV) 객체와 인스턴스 클래스 → 객체 과정을 인스턴스화(instantiate) 라고 함 클래스로부터 만들어진 객체를 인스턴스(instance)라고 함 객체의 구성 요소 - 속성과 기능 객체는 속성과 기능으로 구성 객체가 가지고 있는 속성과 기능을 객체의 멤버라고 함 속성 : 멤버변수(member variable), 특성(attribute), 상태(state) 기능 :..
-
[운영체제] Virtual Memory강의/운영체제-반효경 2024. 2. 17. 22:58
Demand Paging 요청이 있으면 page를 메모리에 올리는 것 I/O 감소 Memory 사용량 감소 빠른 응답 시간 더 많은 사용자 수용 Valid bit의 사용 Invalid : 사용되지 않은 주소 영역이거나, 페이지가 물리적 메모리에 없는 경우 처음에는 모든 page entry 가 invalid 로 초기화 address translation 시에 invalid bit이 되어 있으면 → Page Fault Page Fault invalid page 접근 시 MMU 가 trap을 발생시킴 순서 비정상적 메모리 요청 감지 → 만약 그러면 abort 빈 페이지 프레임을 가져옴 → 없으면 뺏어옴 해당 페이지를 disk에서 메모리로 읽어옴 페이지 테이블에 해당 페이지 저장 Free Frame이 없는 경우..
-
[운영체제] Memory Management강의/운영체제-반효경 2024. 2. 17. 22:56
Logical vs Physical address 논리 주소 (virtual address) 0번지부터 시작하는 프로세스마다의 독립적인 주소 공간 CPU가 보는 주소 물리 주소 메모리에 실제 올라가는 위치 주소 바인딩 : 주소를 결정하는 것 Symbolic → Logical → Physical 주소 바인딩 컴파일 타임에 컴파일 시점에 이미 물리 주소가 결정되는 것 비효율적 로드 타임에 메모리에 올라갈 때 물리 주소 결정 컴파일러가 재배치 가능 코드 생성 (relocatable code) 컴파일까지는 논리 주소로 매핑되어있음 실행 시작 중간에 (runtime binding) 메모리에 올라갈 때 물리 주소 결정은 동일 실행 도중에 물리 주소가 바뀔 수 있음 MMU 지원이 필요함 MMU (Memory Mana..
-
[운영체제] Deadlock강의/운영체제-반효경 2024. 2. 17. 22:55
Deadlock 교착 상태 (deadlock) 프로세스들이 서로가 가진 자원을 기다리며 block 된 상태 리소스 (자원) 하드웨어, 소프트웨어 등을 포함하는 개념 I/O device, CPU cycle 등 데드락 발생의 4가지 조건 Mutual Exclusion (상호 배제) 매 순간 하나의 프로세스만이 자원 사용 가능 No Preemption (비선점) 자원을 스스로 내놓고 강제로 뺴앗기지 않음 Hold and Wait (보유 대기) 보유 자원을 놓지 않고 계속 가지고 있음 Circular Wait (순환 대기) 자원을 기다리를 프로세스간에 사이클이 형성됨 자원 할당 그래프 (Resource-Allocation Graph) 동그라미 : 프로세스 네모 : 자원 p → R : 프로세스가 해당 자원을 요청..
-
[운영체제] Process Synchronization강의/운영체제-반효경 2024. 2. 17. 22:54
데이터의 접근 데이터를 읽어와 연산 후 결과를 다시 저장함 데이터를 읽기만 하면 문제 없음 근데 쓰면 누가 먼저 쓰냐가 중요해짐 Race Condition 스토리지의 값을 여러 프로세스가 읽어오고 수정 시 문제가 발생 가능 공유 자원을 여러 프로세스가 동시에 읽어오는 상황 Process Synchronization 문제 공유 데이터의 동시 접근 시 데이터 불일치 문제 발생 가능 일관성 유지를 위해서는 실행 순서를 정해줘야함 동기화가 되어야 한다. Critical Section 공유 데이터를 접근하는 코드 하나의 프로세스가 critical section 에 있을 때 다른 프로세스는 들어갈 수 없어야 함 문제를 해결하기 위한 초기 접근 do { entry section critical section exit..
-
[운영체제] CPU Scheduling강의/운영체제-반효경 2024. 2. 17. 22:52
CPU Scheduling CPU Burst CPU를 사용하는 단계 I/O Burst I/O 작업하는 단계 CPU bound job : CPU를 많이 사용하는 작업 I/O bound job : I/O를 많이 사용하는 작업 CPU 스케줄링이 필요한 이유 I/O 가 CPU 사이에 자주 끼기 때문 CPU Scheduler와 디스패처 스케줄러 : ready 상태 프로세스 중 CPU를 줄 프로세스를 고름 디스패처 : CPU 의 제어권을 스케줄러로부터 선택된 프로세스에게 넘김 이 과정을 context switch라고 함 CPU 스케줄링 언제 필요? Running → Blocked (I/O) Running → Ready (할당 시간 만료 timer interrupt) Blocked → Ready (I/O 완료 후 인..