기아 상태 특정 프로세스의 우선 순위가 낮아서 원하는 자원을 계속 할당받지 못하는 상태이다. SJF, SRT, 우선순위 스케줄링, SPN, feed back 등의 스케줄링 방법에서 발생 가능하다. 기아 상태 해결 방법 에이징(Aging) 프로세스가 대기 큐에서 기다릴수록 우선순위를 증가시켜주는 방식이다. 이렇게 하면 오랫동안 기다린 프로세스가 결국에는 CPU를 할당받을 수 있다. 우선순위 기반의 스케줄링 알고리즘에서 주로 사용된다. 피드백(Feedback) 프로세스가 CPU를 사용할수록 우선순위를 감소시켜주는 방식입니다. 이렇게 하면 자주 CPU를 사용하는 프로세스가 낮은 우선순위로 밀려나게 되고, 오랫동안 기다린 프로세스가 높은 우선순위로 올라가게 된다. 다단계 큐(Multilevel Queue)나 다..
프로세스 프로그램 어떤 작업을 하기 위해 해야할 일들을 순서대로 나열한 것 컴퓨터에서 어떤 작업을 위해 실행할 수 있는 '정적인 상태'의 파일 프로세스 프로그램이 실행되서 돌아가고 있는 상태, 컴퓨터에서 연속적으로 실행되고 있는 '동적인 상태'의 컴퓨터 프로그램 프로세스는 운영체제가 메모리 등의 필요한 자원을 할당해준 '실행중인 프로그램' 프로그램을 실행하면 운영체제로부터 실행에 필요한 자원을 할당받아 '프로세스'가 되는 것 프로세스 문맥 프로세스가 현재 어떤 상태에서 수행되고 있는지 정확히 규명하기 위해 필요한 정보 시분할 시스템 환경에서 명령을 수행하기 위해서 이전에 어디까지 명령을 수행했는지 정확한 수행 시점과 상태를 재현할 수 있는 정보가 필요하고 이 정보가 프로세스 문맥 프로세스 문맥은 하드웨어..
개요 운영체제 컴퓨터의 하드웨어 바로 윗단에 설치되는 소프트웨어이다. 컴퓨터 시스템의 하드웨어 자원을 효율적으로 관리하는 역할을 한다. 주어진 자원으로 최대한의 성능을 내면서 특정 사용자 혹은 프로그램이 지나친 불이익을 받지 않도록 한다. 주요 역할 사용자에게는 편리한 인터페이스와 환경을 제공하는 역할을 한다. 운영체제 자신을 보호하는 역할을 가진다. (보안적인 측면) 운영체제의 분류 시분할 시스템 여러 작업을 수행할 때 컴퓨터의 처리 능력을 일정한 시간 단위로 분할해 사용하는 방식이다. 현대의 범용 컴퓨터는 대부분 시분할 방식을 사용한다. 다중 프로그래밍 방식과 결합하여 모든 작업이 동시에 진행되는 것처럼 대화식 처리가 가능하다. 다중 프로그래밍 시스템(multi-programming system) 하..
Join 두 개 이상의 테이블을 하나의 집합으로 만드는 연산 Join 기법들 대표적인 기법들만 소개할 예정 NL Join이 디폴트 기법 설명 Nested Loop Join (NL Join) 선행 테이블에서 액세스한 각 값을 후행 테이블과 조인하는 방식 Sort Merge Join (SM Join) 조인 컬럼을 기준으로 데이터를 정렬하여 조인을 수행하는 방식 Hash Join 해시 함수를 이용해서 데이터를 조인하는 방식 NL Join 프로그래밍에서 사용하는 중첩 반복문과 유사한 방식으로 조인 수행 반복문 외부의 테이블은 선행 테이블 혹은 외부 테이블(Outer Table) 이라 부른다. 반복문 내부에 있는 테이블은 후행 테이블 또는 내부 테이블(Inner Table) 이라 부른다. 선행 테이블 의 조건을 ..
사전 지식 (용어) DB Key란? 튜플들을 구별할 수 있는 기준이 되는 속성이다. 필요한 이유 하나의 릴레이션에는 수많은 튜플들이 존재한다. 각 튜플들 간에는 중복되는 속성값이 발생할 수 있다. 이 튜플들을 구분하기 위한 기준이 필요하고, Key가 그 기준이 된다. Key 의 종류 키의 종류로는 크게 슈퍼키, 후보키, 기본키, 대체키, 외래키 등이 있다. 최소성, 유일성 모든 키의 종류가 이 두개를 만족하는 것은 아님! 유일성 키를 통해 모든 튜플을 구별할 수 있는 특징 유일성을 만족하는 예시 회원 테이블 [주민등록번호] 혹은 [이메일] 과목 테이블 [강의 연도, 과목명, 교수명, 강의 교시] 유일성을 만족하지 않는 예시 회원 테이블 [취미] 최소성 키에 튜플을 식별하는데 불필요한 어트리뷰트가 없는 경..
조회한 빈이 모두 필요할 때, List, Map List 혹은 Map을 활용해 스프링 빈에 등록된 빈들을 한번에 주입이 가능하다. Map라 하면 String에는 빈 이름이 들어간다. public class AllBeanTest { @Test void findAllBean(){ ApplicationContext ac = new AnnotationConfigApplicationContext(AutoAppConfig.class, DiscountService.class); DiscountService discountService = ac.getBean(DiscountService.class); Member member = new Member(1L, "userA", Grade.VIP); int discountPr..
클라이언트에서 서버로 데이터 전송 HTTP 메서드 활용 클라이언트에서 서버로 데이터 전송 쿼리 파라미터를 통한 데이터 전송 GET 주로 정렬 필터(검색어) 메시지 바디를 통한 데이터 전송 POST, PUT, PATCH 회원 가입, 상품 주문, 리소스 등록, 리소스 변경 4가지 상황 (예시) 정적 데이터 조회 이미지, 정적 텍스트 문서 조회는 GET사용 일반적으로 쿼리 파라미터 없이 리소스 경로로 단순하게 조회 가능 동적 데이터 조회 주로 검색, 게시판 목록에서 정렬 필터(검색어) 조회 조건을 줄여주는 필터, 조회 결과를 정렬하는 정렬 조건에 주로 사용 HTML Form을 통한 데이터 전송 회원 가입, 상품 주문, 데이터 변경 HTML Form은 GET, POST 전송 가능 HTTP API를 통한 데이터 ..
다양한 DI 방법 생성자 Setter 필드 일반 메소드 생성자 주입 방식 (요즘 가장 많이 쓰는 방식) 불변(final)이면서 필수인 의존관계에서 주로 사용 생성자 1개만 있다면 Autowired를 생략해도 주입됨(Bean, Component 방식 모두 해당) final 필드를 this로 접근 가능한 생성자 사용 수정자 Setter 주입 선택, 변경이 가능성이 있는 의존관계에서 주로 사용 Autowired의 기본 동작은 주입할 대상이 없으며 오류가 발생하고, 주입할 동작이 없어도 동작하게 하려면 @Autowired(required = false) 로 지정하면 된다. 자바빈 프로퍼티 규약의 수정자 메서드 방식을 사용하는 방법 자바빈 프로퍼티 규약이란 필드를 외부에서 접근할 때 Getter, Setter로 ..