본문 바로가기

분류 전체보기103

[백준] 15685번 : 드래곤 커브 (C++) https://www.acmicpc.net/problem/15685 15685번: 드래곤 커브 첫째 줄에 드래곤 커브의 개수 N(1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 드래곤 커브의 정보가 주어진다. 드래곤 커브의 정보는 네 정수 x, y, d, g로 이루어져 있다. x와 y는 드래곤 커 www.acmicpc.net 삼성 SW 역량 테스트 기출문제이다. 드래곤 커브의 방향은 다음과 같다. 0 (동쪽) 1 (북쪽) 2 (서쪽) 3 (남쪽) 그리고 각 세대의 드래곤 커브는 일정한 방향 규칙을 갖는다. 0세대 : 0 1세대 : 0 1 2세대 : 0 1 2 1 3세대 : 0 1 2 1 2 3 2 1 4세대 : 0 1 2 1 2 3 2 1 2 3 0 3 2 3 2 1 N세대 : (N-1)세대.. 2021. 8. 29.
Docker(도커)란 무엇인가? 도커란 무엇인가? 도커란 Go언어로 작성된 컨테이너 기반 오픈소스 가상화 플랫폼이다. 여기서 컨테이너란, 플랫폼에 상관없이 어플리케이션을 실행할 수 있는 기술을 의미한다. 컨테이너를 사용하면 환경에 구애받지 않고 어디서든 똑같은 실행환경을 구축할 수 있다. 도커를 사용하면 운영체제가 실제로 컴퓨터 호스트에 설치되지 않고 독립된 환경에서 돌아가기 때문에, 가상머신과 비교 시 메모리 점유율, 성능면에서 이점이 있다. 가상머신(Virtual Machine)과 도커(Docker) 비교 가상머신은 하드웨어를 가상화하는 방식이고, 도커는 운영체제를 가상화하는 방식이다. 가상머신(VM, Virtual Machine) Hypervisor를 이용해 하나의 Host OS에서 여러개의 Guest OS를 사용하는 방식이다. .. 2021. 8. 29.
[백준] 5557번 : 1학년 (C++) https://www.acmicpc.net/problem/5557 5557번: 1학년 상근이가 1학년 때, 덧셈, 뺄셈을 매우 좋아했다. 상근이는 숫자가 줄 지어있는 것을 보기만 하면, 마지막 두 숫자 사이에 '='을 넣고, 나머지 숫자 사이에는 '+' 또는 '-'를 넣어 등식을 만들며 놀 www.acmicpc.net 숫자가 주어졌을 때, +나 -를 끼워서 만들수 있는 올바른 등식의 개수를 출력하는 문제이다. 문제에서 등식의 개수는 2^63-1 이하라고 명시되어 있으므로 long long형을 이용해야한다. 이 문제는 처음에 일차원 dp로 구현하였다. dp[i] : 현재 시점에서 계산값이 i가 나오는 경우의 수 n : 지금 입력받은 수 dp[i]>0 면, dp_copy[i+n]+=dp[i] or dp_co.. 2021. 8. 28.
[운영체제 OS] Virtual Memory Management Virtual Memory 실제 메모리보다 더 큰 용량을 사용하기 위해 논리주소와 물리주소를 매핑하여 메모리 관리하는 방식 마치 메모리가 무한대인 것처럼 동작하게 하는 Swapping이 핵심이며 여기서는 Paging단위를 사용 Demand Paging 프로세스의 모든 페이지가 아닌 순간순간 필요한 페이지만 메인 메모리에 적재하고, 나머지는 모두 가상 메모리에 적재하는 방식 페이지가 메인 메모리(물리적 메모리)에 적재되어 있는 않은 상태를 Invalid로 표시 Page Fault 지금 필요한 페이지가 실제 메모리에 올라와있지 않을때 발생 과정 1. 논리적 주소 요청이 들어온다. 2. 페이지 테이블에 접근해서 Valid/Invalid 확인했더니 Invalid여서, Trap을 걸어 운영체제에게 요청한다. 3... 2021. 8. 25.
[운영체제 OS] Memory Management (2) Paging 프로세스 단위로 메모리에 적재하는 것이 아닌 더 작은 단위(페이지 단위)로 메모리에 적재하는 방식 장점 연속적이지 않은 공간도 사용가능하므로 외부 단편화 문제를 해결 단점 프로세스 적재시 결국 페이지라는 특정단위로 관리하므로 내부 단편화 문제 발생 페이지 단위를 작게하여 내부 단편화 문제도 해결할 수 있지만, 페이지 매핑과정이 많아져 오버헤드 증가 Segmentation 고정 단위로 메모리에 적재하는 것이 아닌 가변크기의 논리적 단위인 세그먼트 단위로 메모리에 적재하는 방식 장점 가변 크기로 할당하므로 내부에서 낭비되는 공간이 없어 내부 단편화 문제를 해결 단점 서로 다른 크기의 세그먼트들이 메모리에 적재되고 제거되는 일이 반복되다보면 결국 외부 단편화 문제 발생 위 방법들의 문제를 해결하기.. 2021. 8. 25.
[운영체제 OS] Memory Management (1) Swapping이란? 메인메모리에 적재된 프로세스를 하드디스크나 SSD에 내리고, 다른 하나를 메인메모리에 올리는 것 프로세스를 메인메모리에서 내리는 것이 Swap out, 올리는 것이 Swap in Context Switch가 많이 일어나지만 부족한 메모리 공간을 효율적으로 사용 가능 (마치 메모리가 무한대인 것처럼 동작하며 Virtual Memory Management에서의 핵심) 메모리 단편화란? (Memory Fragmentation) 프로세스들이 메모리에 적재되고 제거되는 일이 반복되다보면, 프로세스들이 차지하는 메모리 틈 사이에 사용 하지 못할 만큼의 작은 자유공간들을 의미한다. 크게 외부단편화와 내부단편화로 나뉜다. 외부단편화 자유공간들을 모두 합치면 충분한 공간이 있지만, 그것들이 작게 분.. 2021. 8. 25.