본문 바로가기
computer science

하루에 하나씩 배우는 컴퓨터 사이언스 개념: 힙과 컨텍스트 스위칭 이해

by vita12321 2023. 8. 5.
728x90
반응형

글에서는 컴퓨터 사이언스 개념을 학습하는 집중하면서 힙과 컨텍스트 스위칭에 대해 자세히 알아보겠습니다. 이해를 돕기 위해 영역의 동작 원리와 컨텍스트 스위칭의 개념을 설명하고, 프로세스 스레드로 인한 컨텍스트 스위칭의 차이와 세부 사항을 살펴봅니다.


 

1. 힙이란?

(heap) 동적 메모리 할당이 이루어지는 영역으로, 메모리 관리자에 의해 관리됩니다. 영역은 프로세스 내에서 사용되는 데이터 크기와 수명이 언제든지 변할 있는 변수나 데이터 구조를 저장합니다. 다양한 크기의 메모리 블록들이 서로 떨어져 위치하는 특성 때문에 메모리 단편화가 발생할 있는데, 이를 방지하기 위해 가용 메모리 관리 알고리즘이 적용됩니다.

 

자바에서 힙은 객체와 가비지 컬렉션을 지원하기 위한 구조로 사용됩니다. new 연산자로 생성되는 모든 객체는 영역에 할당되며, 가비지 컬렉터가 참조되지 않는 객체를 관리해 메모리를 회수합니다.

// 힙 영역에 동적으로 정수 배열을 할당합니다.

int[] arr = new int[10];

 

// 사용자 정의 클래스 객체를 힙 영역에 할당합니다.

MyClass obj = new MyClass();


2.
컨텍스트 스위칭이란?

 

컨텍스트 스위칭(context switching) 작업(스레드 또는 프로세스)에서 다른 작업으로 전환하는 과정입니다. 멀티태스킹 환경에서 운영체제는 여러 프로세스 또는 스레드를 관리하고 자원 할당을 조절합니다. 컨텍스트 스위칭은 다양한 작업을 동시에 실행하거나 빠르게 전환할 발생합니다.

 

컨텍스트 스위칭은 아래와 같은 단계로 이루어집니다.

 

1) 현재 실행 중인 작업의 CPU 상태(CPU 레지스터 , 프로그램 카운터 ) 저장합니다.

2) 다음 작업의 컨텍스트 정보를 복구합니다.

3) 복구된 작업을 실행하고, CPU 해당 작업에 할당합니다.


 

3. 프로세스와 스레드의 컨텍스트 스위칭 차이

  • 프로세스 간 컨텍스트 스위칭은 독립된 메모리 영역과 자원을 가지므로 전환 과정이 비교적 무거운 작업이 필요합니다. 메모리 맵 변경, 자원 관련 시스템 호출 처리 등의 추가 작업이 진행되어야 합니다.

 

  • 스레드 간 컨텍스트 스위칭은 프로세스 내에서 진행되며, 동일한 메모리 영역과 자원을 공유하므로 전환 과정이 빠르고 비용이 적게 듭니다. 스레드는 적은 양의 정보만 변경하며 스위칭이 가능하므로, 멀티 스레딩을 사용한 경우 더 효율적인 방법으로 작업 전환을 처리할 수 있습니다.

 

4. 결과 분석 추가 학습 방향

글을 통해 힙과 컨텍스트 스위칭 개념의 이해를 다졌으며, 프로세스와 스레드 간의 컨텍스트 스위칭 차이를 알아보았습니다. 이를 바탕으로 멀티태스킹, 동시성 문제, 태스크 스케줄링과 같은 추가적인 사항을 자세히 학습할 있습니다.

 

깊이 있는 학습을 위해 스레드 동기화, 스케줄링 알고리즘, 병렬 프로그래밍, 메모리 관리 등과 관련된 컴퓨터 사이언스 개념을 공부할 것을 추천합니다.

 

 

 

이상으로 '하루에 하나씩 배우는 컴퓨터 사이언스 개념: 힙과 컨텍스트 스위칭 이해' 대해 소개했습니다. 글을 통해 힙과 컨텍스트 스위칭의 개념을 깊이 있게 이해했으며, 스레드와 프로세스의 차이와 컨텍스트 스위칭에 대한 세부 사항에 대해 고찰하였습니다.

728x90
반응형