본문 바로가기

프로그래밍/운영체제7

ASLR(Address Space Layout Randomization) ASLR이란?Address Space Layout Randomization, 주소 공간 배치 난수화는 메모리 공격을 방어하기 위한 보안 기법이다. 실행 파일, 공유 라이브러리, 힙, 스택 등의 메모리 주소를 실행할 때마다 무작위하게 배치하는 기술이다 매 프로그램 실행마다 주소가 달라 공격자가 ROP gadget이나 쉘코드의 정확한 주소를 사용하기 어렵게 만든다 왜 ASLR이 나왔는가?과거에는 프로그램이 실행될 때, 고정된 메모리 주소에 배치되었다따라서 공격자가 메모리 주소를 예측하여 악성 코드를 실행할 수 있었다 대표적인 공격 기법으로 ROP(Return-Oriented Programming), 스택 기반 버퍼 오버플로우 등이 있었다 ROP는 기존 프로그램의 정상적인 코드 조각을 조합해 악성 코드처럼 실.. 2025. 4. 9.
프로세스에서 스택 메모리의 역할 운영체제는 프로세스를 메모리에 적재할 때, 코드 영역(code), 데이터 영역(data), 힙 영역(heap), 스택 영역(stack) 등으로 나누어 관리한다 이 중 스택 영역은 함수 호출 시 생성되는 스택 프레임(stack frame)을 저장하는 공간으로, 주로 지역 변수, 매개변수, 반환 주소 등의 데이터를 관리하는 데 사용된다스택 메모리 구조와 동작 방식스택은 후입선출(LIFO, Last-In First-Out) 구조로 동작하며, 각 함수 호출 시마다 새로운 스택 프레임이 생성되고, 함수가 종료되면 해당 프레임이 제거된다 이렇게 동작함으로써 프로세스는 함수 호출의 흐름을 추적하고, 호출된 함수의 상태를 보존할 수 있다 스택 메모리의 존재 의의스택은 단순한 저장 공간이 아니라, 함수 호출의 흐름을 자.. 2025. 4. 9.
프로세스와 스레드의 차이 프로세스는 운영체제에서 실행중인 프로그램의 인스턴스이다프로그램 코드, 시스템 리소스, 물리적 및 논리적 액세스 권한 등을 가지고 있다프로세스는 하나 이상의 스레드를 가지고 있을 수 있다 스레드는 프로세스 내에서 실행되는 작업자이다. 즉 프로세스의 하위 집합이다코드, 데이터, 힙 영역 등의 메모리 영역을 프로세스 내 여러 스레드들과 공유한다. 하나의 스레드가 독립적으로 가지고 있는 건 스택 영역뿐이다동일한 프로세스 내의 스레드들은 동일한 자원을 공유하므로 프로세스에 비해 Context Switching 비용이 상대적으로 저렴하다 ReferenceProcess (computing) - WikipediaThread (computing) - Wikipedia 2025. 3. 25.
프로세스의 4가지 메모리 영역 실행중인 프로그램을 뜻하는 프로세스가 사용하는 메모리 영역은 5가지 주요 영역으로 구성된다코드 영역 (Code Segment)프로그램의 실행 코드(바이너리 코드 등)가 저장되는 영역이다. 일반적으로 읽기 전용이다 데이터 영역 (Data Segment)초기화된 전역 변수와 정적 변수가 저장되는 영역이다 BSS 영역 (BSS Segment)초기화되지 않은 전역 변수와 정적 변수가 저장되는 영역이다 힙 (Heap)프로그램 실행 중 동적으로 할당되는 메모리 공간이다개발자의 필요에 따라 할당하고 해제할 수 있다 스택 (Stack)함수 호출 정보가 담긴 스택 프레임이 사용하는 데이터가 저장되는 영역이다함수 반환주소, 지역변수, 매개변수 등이 저장된다 ReferenceCode Segment - WikipediaDat.. 2025. 3. 20.
스레드(Thread)는 무엇인가? 스레드는 프로세스 내에서 작업을 수행하는 주체이다 프로세스는 CPU, 메모리 등의 자원을 할당받는데, 이 할당받은 자원을 이용하는 실행의 단위이다   위 자료와 같이 스레드는 프로세스 내에서 각각 스택만 따로 할당 받고 코드와 데이터, 힙 영역은 공유한다 ReferenceThread (computing) - WikipediaWhat is a Thread in OS and what are the differences between a Process and a Thread? - After Academy 2025. 3. 19.
힙 메모리와 스택 메모리의 차이 힙 메모리와 스택 메모리는 프로세스의 두 가지 중요한 메모리 영역이다두 메모리는 사용 방식, 할당/해제 방식, 접근 속도 등에서 차이점이 존재한다 주요 차이점할당 방식힙 메모리는 프로그래머에 의해 동적 할당(new, malloc) 된다스택 메모리는 자동 할당되며, 함수 호출 시 자동으로 스택 프레임 안에 변수가 할당된다관리 주체힙 메모리는 언매니지드 언어는 개발자가 직접 관리해야 하며, 매니지드 언어에선 GC가 (해제를)관리한다스택 메모리는 운영체제가 자동으로 해제한다. 함수 호출이 끝나면 해당 스택 프레임이 자동으로 정리되며, 이 관리는 운영체제가 수행하기 때문이다속도힙 할당은 동적 메모리 할당(Dynamic Memory Allocation) 방식으로, 추가적인 관리 비용이 발생하기 때문에 상대적으로 .. 2025. 3. 14.
반응형