Programming Language(100)
-
[Spring] 스프링 AOP란?
AOP (Aspect Oriented Programming) AOP는 Aspect Oriented Programming, 즉 관점 지향 프로그래밍이라고 불린다. 하나의 소프트웨어가 거대한 OOP로써 설계, 프로그래밍되었다면 이것을 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어 보고 그 관점을 기준으로 모듈화하여 분리시키는 개념이다. 모듈화(modularization) : 어떤 공통된 로직이나 기능을 하나의 단위로 묶는 것 여기서, 핵심 기능은 해당 객체가 제공하는 고유 기능으로 볼 수 있고, 부가 기능은 핵심 로직을 실행하기 위해 행해지는 기능을 뜻한다. 이에 속하는 것은 로깅, 트랜잭션, 보안 등이 있다. 위의 그림처럼 소스 코드상에서 반복하여 나타나는 코드들을 흩어진 관심사(Cross..
2022.08.07 -
[운영체제] 가상메모리
운영체제가 어떤 식으로 프로세스에게 메모리를 할당할 것인가 여러 프로그램이 동시에 수행되는 시분할 환경에서는 한정된 메모리 공간을 여러 프로그램이 조금씩 나누어 사용 가상메모리(virtual memory) : 프로세스마다 각각 0번지로부터의 주소공간을 가지고 이들 공간 중 일부가 물리적 메모리에 적재되고(당장 수행해야 할 부분) 일부는 디스크의 스왑 영역에 존재하게 된다. 프로세스의 주소 공간을 메모리에 적재하는 방식에 따라 요구 페이징 방식과 요구 세그먼테이션 방식으로 구현될 수 있다. 1. 요구 페이징 요구 페이징 : 프로그램 실행 시 프로세스의 모든 페이지를 한 번에 메모리에 올리는 것이 아닌 당장 사용할 페이지만을 올리는 방식 → 특정 페이지에 대한 CPU의 요청이 들어온 후에야 해당 페이지를 메..
2022.08.07 -
[운영체제] 메모리 관리
주소(address) : 서로 다른 위치를 구분하기 위해 사용하는 일련의 숫자 컴퓨터 시스템은 오늘날 32비트 혹은 64비트의 주소 체계를 가진다. 1. 주소 바인딩 주소 공간 : 프로그램이 실행을 위해 메모리에 적재되면 그 프로세스를 위한 독자적인 주소 공간, 이 주소를 논리적 주소 또는 가상 주소라 한다. 논리적 주소는 각 프로세스마다 독립적으로 할당되는데 반해 물리적 주소는 물리적 메모리에 실제 올라가는 위치를 말한다. 보통 물리적 메모리의 낮은 주소 영역에 OS가, 높은 주소 영역에 사용자 프로세스가 올라간다. CPU가 기계어 명령을 수행하기 위해 논리적 주소를 통해 메모리 참조를 하게 되면, 물리적 메모리의 어느 위치에 매핑되는지 알아야 한다. 주소 바인딩은 프로세스의 논리적 주소를 물리적 주소..
2022.08.06 -
[운영체제] CPU 스케줄링
CPU : 프로그램의 기계어 명령을 실제로 수행하는 컴퓨터 내의 중앙처리장치 프로그램 카운터(PC) : 레지스터의 일종으로 프로그램이 메모리에 올라가면 현재 CPU에서 수행할 코드의 메모리 주소값을 가지고 있게 된다. CPU는 이 PC를 보고 기계어 명령을 수행한다. ※ 프로그램 실행과 관련된 기계어 명령 ① CPU 내에서 수행되는 명령 Add 명령 : CPU 내의 레지스터에 있는 두 값을 더해 레지스터에 저장하는 명령 CPU 내에서만 수행되므로 명령의 수행 속도가 매우 빠르다. ② 메모리 접근을 필요로 하는 명령 Load 명령 : 메모리에 있는 데이터를 CPU로 읽어들이는 명령 Store 명령 : CPU에서 계산된 결과값을 메모리에 저장하는 명령 CPU 내에서 수행되는 명령보다는 아니지만 속도가 빠른 ..
2022.08.05 -
[운영체제] 프로세스 관리
1. 프로세스란? 프로세스 : 실행 중인 프로그램, 디스크에 실행파일 형태로 존재하던 프로그램이 메모리에 올라가 실행되기 시작하면 비로소 프로세스가 된다. 프로세스의 문맥(context) : 프로세스가 현재 어떤 상태에서 수행되고 있는지 정확히 규명하기 위해 필요한 정보, 그 프로세스의 주소 공간(코드, 데이터, 스택)과 레지스터에 어떤 값이 있었는지, 시스템 콜을 통해 커널에서 수행한 일의 상태, 커널이 프로세스에 관해 관리하는 각종 정보 포함 ① 하드웨어 문맥 : CPU의 수행 상태를 나타내는 것, 프로그램 카운터 값과 각종 레지스터에 저장하고 있는 값 ② 프로세스의 주소 공간 : 코드, 데이터, 스택에 저장되고 있는 값 ③ 커널상의 문맥 : OS는 프로그램이 프로세스가 되었을 때 프로세스를 관리하기..
2022.08.05 -
[운영체제] 프로그램의 구조와 실행
1. 프로그램의 구조와 인터럽트 프로그램이 CPU에서 명령을 수행하려면 해당 명령을 담은 프로그램의 주소 영역이 메모리에 올라가 있어야한다. 프로그램의 주소 영역은 크게 코드(code), 데이터(data), 스택(stack) 영역으로 구분된다. 코드 영역 : 작성한 프로그램 함수들의 코드가 CPU에서 수행할 수 있는 기계어 명령 형태로 변환되어 저장되는 부분 데이터 영역 : 전역 변수 등 프로그램이 사용하는 데이터를 저장하는 부분 스택 영역 : 함수가 호출될 때 호출된 함수의 수행을 마치고 복귀할 주소 및 데이터를 임시로 저장하는 데에 사용되는 공간 스택 영역은 함수의 호출에서 그 역할이 드러난다. X 함수를 수행하는 도중 Y 함수를 호출해야 한다고 가정했을 때, X 함수에서 Y 함수를 호출한 지점을 스..
2022.08.05