본문 바로가기

프로그래밍 기초29

[Java8] Default Method와 Static method Default Method Java8 이전까지 Interface의 추상 메소드는 반드시 클래스에서 구현해야 하고, Interface에 새로운 메소드가 추가되면, 구현 클래스를 반드시 수정해야하는 바이너리 호환성에 이슈가 생길 수 있었다. 하지만 Java8 이후에는 Interface에 default method를 생성하게 되면 Interface 내에서 구현이 가능하고 구현 클래스에서 반드시 수정할 필요가 없다. 즉, default 메소드는 구현하는 모든 클래스들이 동일한 기능을 사용할 수 있도록 하면서 Interface에 변경이 생기더라도 바이너리 호환성을 유지할 수 있게 되었다. Static Method Interface에서 static method 사용이 가능해졌다. Factory method를 Int.. 2017. 6. 20.
[Java8] 함수형 프로그래밍 함수형 프로그래밍(Functional Programming)이란? 계산을 수학적 함수의 평가로 취급하고 상태와 가변 데이터를 멀리하는 프로그래밍 패러다임이다.*Side Effect(부수효과)를 제거할 경우에 프로그램의 동작을 이해하고 예측하는 것이 훨씬 쉬워지기 때문에 Side Effect가 없는 Pure Function(순수 함수)들로만 작성 되어진다. *Side Effect(부수효과)란?- 변수를 수정하거나, 객체의 필드를 설정하는 것- 예외(Exception)를 던지거나 오류를 내면서 실행을 중단하는 것- 콘솔에 출력하거나 사용자의 입력을 읽어 들이는 것- 파일에 기록하거나 파일에서 읽어 들이는 것 함수형 프로그래밍(Functional Programming)의 기본 원리들 1. 변경 불가능한 값을 .. 2017. 6. 20.
메모리 단편화(Memory Fragmentation) 메모리 단편화(Memory Fragmentation)란? 주 기억장치에서 메모리의 공간이 작은 조각으로 나뉘어져서, 사용하기에 충분한 양의 메모리가 존재는 하지만 사실상 사용이 불가능한 경우 메모리 단편화가 발생했다고 한다. 메모리 단편화는 내부 단편화와 외부 단편화로 구분할 수 있다. 내부 단편화(Internal Fragmentation)필요한 양보다 더 큰 메모리가 할당이 되어서 할당 된 메모리 내부에 사용하는 메모리 공간 이외에 사용하지 않는 메모리 공간이 발생했을 때를 말한다. 외부 단편화(External Fragmentation)메모리가 할당이 되고 해제가 되는 작업이 반복될 때 작은 단위의 메모리가 띄엄띄엄 존재하게 되는데 빈 메모리의 전체 공간은 충분한 양이지만 실제로 사용할 수 없는 경우를.. 2017. 6. 19.
주 기억장치 - 2 단일 프로그래밍 시스템 시스템 내에 하나의 프로세스만 존재하는 것 문제점- 프로세스의 크기가 유저 영역보다 클 수 있다. (프로세스를 나누어서 사용)- 유저 영역에 놀다가 맘대로 커널영역으로 들어갈 수 있다. (경계 레지스터로 판별 가능)- 자원 낭비가 심하다. (성능 저하) 고정 분할 다중 프로그래밍 (FPM - Fixed Partition Multi-programming) - 기억장치 할당 중 가장 간단한 방법.- 기억 장치를 여러 개의 고정된 크기로 분할하는 것.- 경계 레지스터로 분할된 메모리의 경계를 구분한다.- 정적 분할 다중 프로그래밍이라고도 한다. * 결정해야 할 사항1. 분할 영역의 크기- 시스템의 부하를 분석하여, 어느 정도의 크기를 가진 영역을 몇 개 선정할 것인가를 결정2. 영역의 .. 2017. 6. 16.
주 기억장치 - 1 주 기억장치 구성 정책 1. 프로세스의 수- 단일 프로세스인가 다중 프로세스인가 2. 주 기억장치의 양(용량)- 동일하게 나눌 것인가(고정분할) 다르게 나눌 것인가(가변분할) 3. 각 프로세스에 할당 된 분할 영역의 교체 가능성- 자신에게 할당 된 영역만 사용할 것인가 자신에게 할당되지 않은 영역도 사용할 수 있을 것인가 4. 주 기억장치의 인접성- 주 기억장치의 할당 영역이 연속적인가 비 연속적인가 주 기억장치 관리 기법 1. 호출 기법- 생성된 프로세스에게 주 기억장치를 언제 할당할 것인가 2. 배치 기법- 프로세스에게 어떤 메모리 블록을 할당할 것인가 3. 교체 기법- 메모리블록이 꽉 차 있을 때 새로운 프로세스가 들어올 경우, 메모리 블록을 사용하고 있는 어떤 프로세스와 교체할 것인가 4. 할당 .. 2017. 6. 16.