본문 바로가기
반응형

전체 글109

스프링 빈 생성 과정 분석 [4] - 디버깅 참고 자료 [스프링 빈 생성 과정 분석 시리즈]스프링 빈 생성 과정 분석 [1] - Application Context(BeanFactory)스프링 빈 생성 과정 분석 [2] - BeanDefinitionRegistry, SingletonBeanRegistry스프링 빈 생성 과정 분석 [3] - BeanFactoryPostProcessor, BeanPostProcessor스프링 빈 생성 과정 분석 [4] - 디버깅 참고 자료 1편부터 3편까지 하여 스프링 빈 생성 과정이 어떻게 이뤄지는지 알아보았다.이번 포스팅에서는 이 개념들을 찾아보기 위해 실제 디버깅한 소스 코드를 공유하기 위하 작성하였다.스프링 부트의 run 메서드를 통해 시간순으로 어떻게 흘러가는지 코드만 공유하겠다. 이를 통해 디버깅한다면 1-3편에서 설.. 2024. 8. 7.
동시성 문제[2] - Mutex, Semaphore, Monitor(동기화 도구) 동기화 도구 이전 포스팅의 Pererson’s Solution을 보면 이론적으로 완벽하지만entry section, critical section, exit section에서 사용하는 명령어가 Atomic 하지 않아 기대 결과가 달라졌다.이는 기계어의 관점에서 또는 저급 언어 수준에서 구현이 되지 않았기 때문인데 이렇게 개발자가 기계어 수준에서까지 개발을 하는 일은 쉬운 일이 아니기에 고급 언어에서 아래와 같은 동기화 도구를 제공한다. 각 동기화 도구에 대해 알아보자.Mutex LockSemaphoreMonitor Mutex Lockmutex란 mutual exclusion에서 나온 용어로 상호배제를 목표로 한다. lock을 acquire(획득)한 프로세스나 스레드만 critical section에 접근.. 2024. 7. 28.
동시성 문제[1] - 동시성 문제의 원인과 해결법 동시성 문제동시(concurrent)에 공유 데이터에 access(접근)하여 데이터를 manipulate(조작)하는 과정에서 데이터의 일관성이 깨지는 문제 동시성 문제의 근본 원인프로세스나 스레드는 instruction 실행 도중 intruppted(중단) 될 수 있고 CPU의 코어는 다른 프로세스나 스레드 작업을 할당 받을 수 있다.즉, 두개 이상의 프로세스나 스레드를 동시에 수행할 때 CPU의 context-switching으로 인해 발생한다는 것이다. 아래 간단한 예제를 통해 동시성 문제의 한 예를 보자.public class ConcurrencyProblem { public static int COUNT = 0; public static void main(String[] args) { .. 2024. 7. 28.
프로세스[1] - 프로세스란, PCB와 Context Switch 프로세스실행 중인 프로그램프로세스는 os의 실행 작업의 단위이다.프로세스는 작업을 완료하기 위해 CPU, memory, file, I/O devices와 같은 자원을 필요로 한다.각각의 프로세스는 독립된 메모리 영역을 할당 받는다. * 프로그램 : 하드웨어를 동작시키는 명령어 집합 프로세스의 구조  프로세스는 메모리에서 위와 같이 여러개의 구역으로 나뉜다.코드 영역(Text Section)데이터 영역(Data Section)힙 영역(Heap Section)스택 영역(Stack Section)* JVM으로 설명하면 코드 영역과 데이터 영역이 메서드 영역이다. 프로세스의 상태상태설명new(생성)프로세스 생성running(실행)Instruction(명령어)이 CPU에 의해 실행됨ready(준비)- 프로세스가 .. 2024. 7. 25.
반응형