본문 바로가기

Programming/Basic6

메모리 구조 메모리 구조에 대해서 이해한다. 메모리의 구조 메모리 구조는 Code, Data, Stack, Heap 영역으로 나눠져 있다. Code 영역에는 프로그램의 코드가 저장되는 영역으로 텍스트 영역이라고도 한다. Data 영역에는 전역 변수와 정적 변수가 저장되는 영역 Stack 영역은 함수의 호출과 함께 지역 변수와 매개 변수, 반환 주소 값이 저장되는 영역(void add(int a, int b) { int num;}) Heap 영역은 사용자가 직접적으로 관리할 수 있는 영역 Stack 높은 주소 값에서 낮은 주소 값으로 할당된다. 함수의 호출과 함께 지역변수와 매개 변수, 반환 주소 값이 저장되고 함수가 종료되면 마찬가지로 지역변수와 매개변수는 소멸된다. 더 이상 할당할 수 없을 경우에는 Stack ov.. 2022. 7. 3.
가비지 컬렉션(Garbage Collection, GC) 가비지 컬렉션을 이해한다. 가비지 컬렉션 Managed Heap에서 더 이상 사용하고 있지 않는 객체들을 삭제하는 프로세스를 가비지 컬렉션이라고 한다. Heap 영역에 있는 객체(Object)들은 Method Area, Stack, Heap 내의 다른 객체들에 의해서 참조가 될 수가 있다. 참조가 되고 있는 객체들을 Reachable 객체라고하며 반대는 Unreachable 객체라고 한다. 객체가 Reachable, Unreachable 객체인지 판단할 수 있는 방법은 GC가 GC root에서부터 시작해서 하나씩 참조하고 있는 객체들을 조사하여서 판단할 수 있다. GC는 동작 순서가 있는데 Mark, Sweep, Compact가 있다. Mark : GC가 객체들을 조사하여 Reachable, Unreac.. 2022. 7. 2.
[OS] 프로세스, 쓰레 Goal 프로세스와 쓰레드를 이해한다. 프로세스(Process) 운영체제로부터 할당받은 하나의 단위 메모리 영역에서 실행되고 있는 프로그램의 인스턴스 프로세스에는 Code, Data, Stack, Heap 영역이 존재한다. 프로세스에는 최소 한 개 이상의 쓰레드가 존재한다. 다른 프로세스의 데이터에 접근할 수 없다. 쓰레드(Thread) 프로세스내에서 실행되는 단위를 나타낸다 프로세스내에 쓰레드는 여러 개가 존재할 수 있다. 쓰레드에는 오직 Stack 영역이 할당되고 다른 쓰레드와 프로세스 내의 다른 자원들을 공유할 수 있다. 멀티 프로세스와 멀티 쓰레드 멀티 프로세스란 하나의 응용 프로그램을 실행할 때 여러 개의 프로세스가 하나의 작업을 처리하는 방식이다. 장점 한 개의 프로세스에 오류가 발생해도 프로.. 2022. 7. 1.
SOLID 원칙 (1) SOLD 원칙 Goal 단일 책임 원칙에 대해서 이해할 수 있다. 개방-폐쇄 원칙에 대해서 이해할 수 있다 1. 단일 책임 원칙 소프트웨어 설계 첫 번째 원칙으로 SRP(Single Responsibility Principle)라는 단일 책임 원칙이 있다. 문자 그래도 단 하나의 책임을 가지는 것이다. SRP에서 기본 단위는 객체를 지칭한다. 즉, 개체는 하나의 책임을 가져야 한다는 의미이다. "책임"이란 여러 관점에서 해석될 수 있지만 보통 '해야 하는 것'과 '할 수 있는 것'으로 간주할 수 있다. 예를 들어 학생(Student) 클래스에는 수강과목 조회, 추가를 하거나 학생 정보를 저장, 출력을 하거나 학생 성적표, 출석표를 출력할 수 있는 기능이 있다. 현재 Student 클래스는 단일 책임 원칙.. 2021. 5. 11.