인기 글

프로세스보다 스레드의 컨텍스트 스위칭이 더 빠른 이유
·
OS
1. Context Switching의 정의 및 개념컨텍스트 스위칭(Context Switching)이란 CPU나 코어에서 실행 중이던 프로세스나 스레드가 다른 프로세스나 스레드로 교체되는 과정을 말합니다.컨텍스트(Context): 프로세스나 스레드의 현재 상태 정보를 의미합니다. 여기에는 CPU 레지스터 상태(Program Counter, Stack Pointer 등)와 메모리 상태가 포함됩니다.주체: 운영체제의 커널(Kernel) 내 스케줄러가 이 과정을 관리하고 실행합니다.필수성: 멀티태스킹 시스템에서 여러 작업이 동시에 실행되는 것처럼 보이게 하여 사용자 응답성을 높이고 자원을 효율적으로 사용하기 위해 필수적입니다.2. Context Switching의 발생 원인컨텍스트 스위칭은 주로 다음과 같은..
Stack vs ArrayDeque 동기화 & 성능 비교
·
JAVA
1. 권장되지 않는 자료구조, Stack출처: https://icandooit.tistory.com/63알고리즘 문제에서 스택이 필요할 때 Stack을 쓰면 되지만, Java에서는 보통 ArrayDeque가 더 빠릅니다. 이는 Stack이 내부적으로 Vector의 동기화(synchronized) 설계를 그대로 물려받았기 때문입니다. 알고리즘 풀이는 대부분 단일 스레드에서 돌기 때문에 이 동기화 비용은 굳이 안 써도 되는 비용이고, 누적되면 성능 차이가 체감되기 시작합니다.실제로 Java 공식문서나 Stack의 내부 코드를 들어가보면 LIFO stack을 위해 ArrayDeque를 사용하는 것을 권장하고 있는 것을 볼 수 있습니다.그 이유는 무엇일까요? 이는 Stack이 가진 한계인 Vector 상속과 그..
[백준] 14916번: 거스름돈 자바(Java)
·
그리디
문제 14916번: 거스름돈N원을 최소 개수의 5원과 2원으로 거슬러 주는 프로그램을 작성하시오.www.acmicpc.net"> 14916번: 거스름돈N원을 최소 개수의 5원과 2원으로 거슬러 주는 프로그램을 작성하시오.www.acmicpc.net 접근법첫 접근 (잘못된 접근)처음 접근을 n이 홀수일 때와 짝수일 때를 나눠서 했다.n이 짝수일때는 5를 최대로 나눠도 나눈 나머지가 2로 항상 나누어 떨어지기 때문에 상관이 없다.하지만, n이 홀수일 때는 5로 나누는 순간 2로 나누어 떨어질수 없기 때문에, 5를 한번 덜 나누어 줬다. 무슨 말이냐면, 예를 들어 n=13일 때, 5로 나누게 되면 몫이 2이고, 나머지가 3이다. 3은 2로 나누어 떨어질 수 없기 때문에 5로 나눈 몫을 1로 바꾸고 나..
[백준] 2606번: 바이러스 자바(Java)
·
그래프
문제 2606번: 바이러스네트워크 상에서 컴퓨터 바이러스가 감염된 컴퓨터와 연결된 모든 컴퓨터를 감염시키는 과정을 시뮬레이션하는 프로그램을 작성하시오.www.acmicpc.net"> 2606번: 바이러스네트워크 상에서 컴퓨터 바이러스가 감염된 컴퓨터와 연결된 모든 컴퓨터를 감염시키는 과정을 시뮬레이션하는 프로그램을 작성하시오.www.acmicpc.net 접근법결국 그래프를 탐색하는 문제이기 때문에 DFS, BFS 둘중 하나를 선택해서 사용하면 되는 생각보다 쉬운 문제이다. 풀이import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.*;public class Ma..
[백준] 13305번: 주유소 자바(Java)
·
그리디
문제 13305번: 주유소도로와 주유소의 정보를 이용해 최소 비용으로 이동하는 방법을 구하는 프로그램을 작성하시오.www.acmicpc.net"> 13305번: 주유소도로와 주유소의 정보를 이용해 최소 비용으로 이동하는 방법을 구하는 프로그램을 작성하시오.www.acmicpc.net접근법리터당 가격이 가장 낮은 곳에서 최대한 많은 양의 기름을 채워야 한다.즉 리터당 기름 값이 ‘내림차순’일 경우에만 주유한다!!설명하기 쉽게 각 나라의 리터당 가격을 p라고 하겠다.순차적으로 왼쪽에서 오른쪽 나라로 이동한다고 한다고 가정하자.첫 나라에서 p를 읽어들이고 다음 나라로 순차적으로 이동 이동다음 p가 크거나 같으면 패스다음 p가 더 작다면 지금까지 온 모든 거리의 합에 가장 최근에 읽은 p를 곱한다.그렇..