Page Fault 가상메모리에서 물리 메모리에 올려두지 않은 페이지에 대한 요청이 들어와 발생하는 예외 페이지 폴트가 발생하면 운영 체제는 그 데이터를 메모리로 가져와서 마치 페이지 폴트가 전혀 발생하지 않은 것처럼 프로그램이 계속적으로 작동하게 해준다. 원인 Major Page Fault 요청한 페이지가 물리 메모리로부터 page-out 되어 보조기억장치의 가상 메모리에 저장되어있다면 해당 페이지를 다시 물리 메모리로 page-in 해야 하는데 이것을 major page fault라고 한다. major page fault는 Disk I/O를 발생시킨다. Minor Page Fault 요청한 페이지가 물리 메모리에는 로드되었지만 MMU에는 로드되어있지 않다고 표시된 경우 이를 Minor page fau..
Virtual memory 프로세스 전체가 메모리에 올라와 있지 않아도 실행이 가능하도록 하는 기법 당장 실행에 필요한 부분만 주기억장치(RAM)에 저장하고, 나머지는 보조기억장치(HDD)에 두고 동작하도록 하는 방법. 프로세스의 일부 메모리만 올려서 전체 프로세스를 병렬적으로 돌리게 함. 물리적 메모리에 제약을 덜 받으며 더 많은 프로세스를 한꺼번에 돌릴 수 있다. 장점 프로그래밍 용이성 이용률, 처리율 상성 단점 메모리 디스크 간 이동량 증가 → 속도 떨어짐, 교체 공간 확보 필요 페이지 부재 시 처리 방법 필요 왜 필요한가 프로그램이 실행되려면 우선 주기억장치에 들어가야 하는데, 다음과 같이 크기 5의 프로그램이 실행을 위해 크기 10의 주기억장치로 들어갈 때는 아무런 문제가 발생하지 않는다. 하지..
아래 프로그래머스 문제를 풀다가 발견한 문제이다. 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 대충 나는 kruskal 알고리즘을 사용하였고, union find 부분의 함수를 구현하고 있었다. 그런데 분명 TC도 다 맞고 로직 상의 문제는 없었을 코드가 계속 정확도 50점이 나왔다. 문제가 될 부분이 union find 밖에 없었기 때문에 수정하기 위해 IDE로 옮겼더니 인텔리제이가 힌트를 줬다 ^^; // 문제에서 vertex의 번호가 0~N 범위 밖일 수 있기 때문에 parent 정보를 HashMap으로 만들어 저장했다. // key: vertex..
https://coding-insider.tistory.com/entry/Prim-vs-Dijkstra-%ED%94%84%EB%A6%BC-%EB%8B%A4%EC%9D%B5%EC%8A%A4%ED%8A%B8%EB%9D%BC-%EB%B9%84%EA%B5%90 Prim vs Dijkstra (프림 다익스트라 비교) 프림 알고리즘 (최소스패닝트리) 그래프상에 존재하는 모든 노드들을 최소비용으로 연결시키는 알고리즘 #include #include #include #include using namespace std; int visited[10001]; int V, E; int ans; vector map[10001]; coding-insider.tistory.com
Group by ~ Having 절 Group by: 특정 열을 기준으로 데이터를 그룹화. group by의 기준은 여러개가 될 수도 있다. Having: 집계 함수(예: COUNT, SUM, AVG)를 사용하여 그룹화된 데이터를 필터링. Having과 Where의 차이 HAVING Clause WHERE Clause The HAVING clause checks the condition on a group of rows. (한 그룹 내에서 조건을 확인 한다) The WHERE clause checks the condition on each individual row. (모든 행에 대해 각각 조건을 확인한다) The HAVING is used with aggregate functions. (집계 함수와 함..
Date 타입 원하는 형식으로 출력하기 date_format(date, format) 날짜 %Y 4자리 년도 (1999, 2023) %y 2자리 년도 (99, 23) %M 영문 월 (January, Feburary, ..., December) %b 짧은 영문 월 (Jan, Feb, ..., Dec) %m 월 (01, 02, 03, ..., 12) %c 월 (1, 2, 3, ..., 12) %d 일 (01, 02, 03, ..., 31) %e 일 (1, 2, 3, ..., 31) %W 영문 요일 (Sunday, ..., Saturday) %a 짧은 영문 요일 (Sun, ..., Sat) %w 일주일의 몇번째 요일인가 (0: 일, 1: 월, ..., 6: 토) 시간 %k 24시 형식의 시간 (00, 01, ..
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/12984 사용 언어 : JAVA 내 생각 초기 생각 // floor in [max_floor, 0] func(money, floor) { // 현재 floor를 기준으로 지형을 모두 메운다 // money1: floor까지 다 채우는 비용 money1 = fillFloor(floor); MIN = Math.min(MIN, money); // 현재 floor의 모든 지형을 삭제한다 // money2: floor를 다 삭제하는 비용 money2 = delFloor(floor); // 현재 층을 다 밀고 아래 층을 기준으로 func 반복 func(money + money2, floor-1);..
JVM (JAVA Virtual Machine) 정의 자바를 실행하기 위한 가상머신 ARM 아키텍쳐 같은 하드웨어는 레지스터 기반으로 동작하는데 비해 JVM은 스택기반으로 동작한다. 역할 자바 애플리케이션을 클래스 로더를 통해 읽어 들여 자바 API와 함께 실행 JAVA와 OS사이에서 중개자 역할을 수행하여 JAVA가 OS에 구애받지 않고 재사용을 가능하게 만듦 메모리관리, Garbage collection을 수행 구조 자바로 작성한 코드는 실행되기까지 크게 세단계를 거친다. 자바 소스코드(.java)가 작성됨 컴파일러가 소스코드(.java)를 바이트 코드(.class)로 변환 클래스 로더가 컴파일된 바이트 코드(.class)를 JVM의 실행 영역에 로드한 뒤 실행 더 구체적인 실행 과정은 접은 글을 참..
변수 데이터를 저장하기 위해 메모리에 공간을 만들어 할당하고, 이름을 부여한 것 클래스 변수 (Class variables) 클래스에서 선언된 변수. static 이 붙으면 클래스 변수, 클래스 메서드가 된다. (아무것도 없으면 인스턴스 변수, 인스턴스 메서드가 됨) 클래스가 로딩될 때 클래서 변수가 생성되고 JVM에 의해 클래스가 메모리에 올라가면 초기화 됨. 클래스 변수는 언제라도 바로 사용할 수 있고 프로그램 종료까지 유지된다. 모든 인스턴스가 공통된 값을 공유할 때, 인스턴스를 생성할 필요가 없는 값을 저장할 때 사용. JVM 메모리의 method 영역에 올라간다. 인스턴스 변수 (Instance variables) 클래스에서 선언된 변수. 클래스의 인스턴스를 생성할 때 만들어진다. 따라서 인스턴..
최소 신장 트리, MST (Minimum Spanning Tree) 개념 신장 트리(spanning tree): 그래프에서 모든 정점에 대한 최소한의 연결만을 남긴 최소 연결 부분 그래프. 최소 신장 트리(minimum spanning tree): 신장 트리 중 간선의 가중치 합이 가장 작은 트리 특징 (n-1)개의 간선만을 사용하며 간선의 가중치 합이 최소여야 한다. 사이클이 없어야 한다. (사이클이 존재 == 한 곳으로 도달하는 경우가 두 개 이상 존재 != 최소한의 연결) 그리디 기법으로 최적의 해를 구할 수 있다. 관련 알고리즘 Kruskal's Algorithm 작동 그래프의 모든 간선의 집합 E을 만든다. E가 비어있지 않을 때까지 아래를 반복한다. E의 간선들 중 가중치가 최소인 간선을 지운..