프로세스와 스레드, 코루틴의 Context Switching의 차이
·
CS
동시성 프로그래밍(Concurrency Programming)을 다루다 보면 Context Switching(문맥 교환)이라는 용어를 자주 접하게 된다. OS는 하나의 CPU 코어에서 여러 작업을 동시에 처리하는 것처럼 보이기 위해 실행 중인 작업의 상태를 저장하고 다른 작업으로 전환하는 과정을 반복하는데 이때 발생하는 핵심 메커니즘이 바로 Context Switching이다. 특히 현대 안드로이드 개발 환경에서는 빼놓을 수 없는 코루틴이 “경량 스레드”로 불릴 수 있는 이유 또한 전통적인 스레드의 Context Switching 비용을 어떻게 다루는지와 깊은 관련이 있다. 이 글에서는 Context Switching이 무엇인지 그리고 스레드와 코루틴의 전환 방식이 어떻게 다른지를 중심으로 살펴보려 ..
자바 프로그램 실행 과정 및 기본 구조
·
CS
📌 자바 프로그램 실행 과정 1. Java로 프로그래밍된 파일을 실행하면 자바 컴파일러가 Java Byte Code 형태의 .class 파일을 생성합니다. 2. JVM은 .class 파일을 메모리에 로드 시키고 인터프리터나 JIT 컴파일러에 의해 한줄씩 실행됩니다. 📌 Java Byte Code JVM이 이해할 수 있는 언어로 변환된 자바 소스 코드를 의미합니다. 자바 컴파일러에 의해 변환되는 코드의 명령어 크기가 1 Byte라서 Java Byte Code라고 불립니다. 💡 Java complier는 JDK를 설치하면 bin 폴더에 존재하는 javac.exe를 말합니다. 📌 JVM Java Virtual Machine의 줄임말로 자바를 실행하기 위한 가상 머신으로 OS에 종속 받지 않고 CPU가 자바를 ..
프로세스와 스레드
·
CS
📌 프로세스(Process)란? 프로세스란 하나의 실행 중인 프로그램을 뜻합니다. 먼저 MS Word 프로그램을 실행한다고 가정해 보겠습니다. 프로그램을 실행하면 운영체제의 프로세서가 하나의 인스턴스를 생성하는데 이 것을 Process라고 하며 이 일련의 과정을 하나의 Task라고 표현합니다. 이때 다수의 Task를 수행하는 것을 Multi Tasking이라고 합니다. 프로세스는 독립적으로 실행되고 커널로부터 자원을 할당받습니다. 각각의 고유한 프로세스 아이디(PID)를 가집니다. 📌 프로세스(Process)의 구조 프로세스를 실행하기 위해선 코드 데이터를 메모리에 올려 실행시켜야 합니다. 프로세스마다 고유한 가상 메모리 공간을 가지고 있는데 이 공간은 4개로 나눌 수 있습니다. STACK 영역 함수, ..