전체 글 52

홈서버 구축기

안녕하세요 오랜만에 돌아왔습니다 하하한동안 개발을 못하다가 요즘 다시 하고 있는데 좋네요. 맘편히 개발하는게 최고인듯각설하고 어쩌다 홈서버를 구축했는지 어떻게 활용중인지 공유해보겠습니다구축 계기출시해보고 싶었던 서비스 이것저것.. 배포 준비를 하다가 기존 AWS 계정은 프리티어 기간이 끝나기도 했고 총 3가지 이유가 있었다.1. AWS 프리 티어 정책 변경2025년 7월부터 신규 AWS 계정에 적용되는 프리 티어 정책이 바뀌었다.예전에는 1년간 거의 무료로 사용할 수 있었지만.. 이제 6개월간 최대 200달러 크레딧만 사용 가능합니다. 이러면 서버비가 매달 5만원 이상 나올것으로 예상 되는데 이를 아껴보고자 했습니다.한마디로 비용 절감2. 남는 컴퓨터결정적으로 집에 놀고 있는 컴퓨터가 있어서 이걸 활용해..

PROJECT 2026.07.17

[OS 공룡책] 6. Synchronization Tools, 7. Examples

동시 접근이 일어나면 항상 발생하는 문제가data inconsistency - 일관성 문제이다 JVM에서 공부했던 내용이라 간략하게만 언급하면스레드는 메모리를 공유하기 때문에 - 정확하게는 힙 영역을 공유하기 때문에 발생한다 c언어 예시이긴 하지만sum++이 결국 sum (현재 값을 읽고->증가된 값 쓰기) 로직이니까동시에 접근하는 값이 최신 값이 아니게 되면서 정합성이 깨지기 시작한다 자바 고급1에서 너무 많이했으니 패스 Race Condition한국어로 교착상태여러개의 프로세스가 하나의 값 수정을 할때 발생하는 문제 교착상태가 발생하는 코드 구역을 ciritical section이라고 부르는데세부적으로 코드 영역을 4가지로 구분한다 여기서는 아직 락을 배우지 않았지만 언급하겠다 - entry..

CS/OS 2026.01.09

[OS 공룡책] 5. CPU Scheduling

하나의 cpu를 왜 sharing 해야하는지는 처음에 알아봤다복습해보면전제는 cpu는 굉장히 빠르기 때문에 처리량에 비해 놀고 있는 상황이고,cpu utilization 즉 사용량을 극대화 하기 위해 여러가지 프로세스를 번갈아 가며 처리하기 위함 이는 기본적으로 IO bound가 cpu bound보다 훨씬 길기 때문에 발생한다 이제 cpu를 어떤 프로세스에게 어떻게 분배할것인가? 가 스케줄링이다좀더 구체적으로 ready queue에 들어가있는 프로세스들에게 어떻게 할당할것인가? 크게 두가지가 있는데- FIFO Queue- Priority Queue 그리고 구체적인 방법론을 이해하기 위해- Preemptive 선점형- Non-preemptive 비선점형개념이 나온다 이게 말이 좀 헷갈리는데주체는 cpu ..

CS/OS 2026.01.09

[OS 공룡책] 4. Thread & Concurrency

하나의 프로그램에서도 여러가지 동작을 동시에 수행할 수 있다는 점에서 스레드가 필요하다 spring을 배우면서 그렇게 했던 스레드풀, 스택영역 등..이 이제 여기와 관련된 내용 멀티스레딩을 하면 좋은점은- Responsiveness 연속적인 응답을 가능하게 한다- Resource Sharing 스레드는 프로세스와 달리 메모리 공간을 공유하기 때문에 shared-memory나 message passing 방식보다 훨씬 쉽다 좀더 정확히는 JVM 구조 공부했을 때처럼 힙영역, 메서드 영역을 공유한다고 보면 될 것 같다. (Thread Local같은 예외도 있다)- Economy 프로세스 생성보다 훨씬 저렴하다 context swithching보다 thread switching이 o..

CS/OS 2026.01.08

[OS 공룡책] 3. Process

OS를 다 까먹어서 복습해보기로.1, 2챕터는 인트로여서 정리하지는 않겠다 프로세스 너무 많이 했다.프로세스 : 실행중인 프로그램 이제 OS가 프로세스를 관리해주야 하는데 어떻게 관리할것인가? 가 관건이다 이를 이해하기 위해 프로세스의 생명주기를 이해해야 한다 프로세스 생명주기 - NEW 프로세스가 생성된 상태- RUNNING 프로세스가 CPU를 점유해서 해당 명령어를 CPU가 처리하고 있는 상태- WAITING CPU가 다른 처리를 하고 있어서 기다리고 있는 상태 EX) 프로세스1이 running 상태일때 프로세스2가 기다리고 있는 상황 EX2) IO를 일으켜서 점유를 반납하는 상황- READY 레디큐에서 CPU 점유를 대기하고 있는 상황 EX) IO를 일으키고 ..

CS/OS 2026.01.07

[JAVA] 알고리즘 고득점 kit 스택 / 큐 + 정렬

또 오랜만에 자바다 정렬 문제 들어가기 전에 자바 정렬 정리// 배열 오름차순Arrays.sort(arr);// 배열 내림차순 (객체만)Arrays.sort(arr, Collections.reverseOrder());// 배열 커스텀 정렬Arrays.sort(arr, (a, b) -> a - b);// 두개 key로Arrays.sort(arr, (a, b) -> { if (a[0] == b[0]) return a[1]-b[1] return a[0] - b[0] });// 리스트 오름차순Collections.sort(list);list.sort(Comparator.naturalOrder());// 리스트 내림차순Collections.sort(list, Collections.reverseO..

ALGORITHM 2025.11.06

[PYTHON] 프로그래머스 고득점 kit

정렬k 번째 큰 수https://school.programmers.co.kr/learn/courses/30/lessons/42748쉬운문제 기억할 포인트- 파이썬에서는 substring 사용할때 슬라이싱 array[i:j]-> i 인덱스부터 j-1까지 문제에서는 인덱스+1 되어 있어서 i-1 : jdef solution(array, commands): answer = [] for i, j, k in commands: substring = array[i-1:j] substring.sort() answer.append(substring[k-1]) return answer 가장 큰 수https://school.programmers.co.kr..

ALGORITHM 2025.10.24

[JVM 밑바닥까지 파헤치기] 2장 자바 메모리 영역과 오버플로우

자바 스레드, 동시성 강의와 책을 병행하려고 한다. 런타임 데이터 영역https://gothax.tistory.com/48강의에서 본 자바 메모리 영역을 이렇게 봤었다.책을 읽어보니 조금 더 자세하게 나와있었다. 프로그램 카운터 (Program Counter Registry)이부분이 위 그림에 안나와 있었다 편의상 생략된듯 pc register는 작은 메모리 영역으로현재 실행중인 스레드의 바이트코드 줄 번호 표시기라고 할 수 있다. 스택 영역에서 메서드를 실행할때마다 스택 프레임을 쌓고, 코드를 한줄한줄 실행한다고 했던거 기억이 나는가?여기서 그 한줄한줄 실행할때 어디인지를 기록하는 것 좀더 이론적으로바이트코드 인터프리터가 이 카운터의 값을 바꿔 다음 실행할 명령어를 선택하는 식으로 작동한다.이를 ..

SUMMARY/JAVA 2025.08.15

[JAVA 고급1] 3. 스레드 제어와 생명주기 1

스레드 생명 주기 OS에서도 많이 본 그림인데 하나씩 살펴보면 - New 스레드가 생성되었지만 시작되지 않은 상태 start 메서드를 호출하지 않은 상태이다. - Runnable 스레드가 실행중이거나 실행될 준비가 된 상태 start 메서드를 호출하면 해당 상태로 들어간다 OS 스케줄러가 각 스레드에 CPU 시간을 할당해 실행하기 때문에 (time waiting) Runnable 상태 스레드는 실행 대기열에 포함되었다가 차례로 CPU에서 실행된다. - 자바에서는 이를 구분할 수 없다 - 일시 중지 상태들 - Blocked : 스레드가 락을 기다리는 상태 (뒤에서 synchronized와 모니터 락을 배운다) - Waiting : 스레드가 무기한으로 다른 스레드의..

SUMMARY/JAVA 2025.08.13