Skip to content

Latest commit

 

History

History
26 lines (14 loc) · 2.28 KB

process_thread.md

File metadata and controls

26 lines (14 loc) · 2.28 KB

Process & Thread

프로세스(Process)와 스레드(Thread)는 운영체제에서 프로그램을 실행하는 데 사용되는 기본 단위입니다.

프로세스 (Process)

프로세스는 운영체제에서 실행 중인 프로그램의 인스턴스입니다. 각 프로세스에는 실행에 필요한 코드, 실행 중 데이터, 열린 파일의 목록, 스레드, 프로세스 상태와 같은 자체적인 독립된 메모리 공간(힙, 스택 등)과 자원이 할당됩니다. 프로세스들은 시스템의 자원을 사용하여 태스크를 수행하고, 운영체제는 이러한 프로세스들 사이에서 CPU 시간을 분배합니다. 프로세스들은 일반적으로 서로 독립적이며, 하나의 프로세스에서 다른 프로세스로 직접적인 메모리 접근은 허용되지 않습니다.

스레드 (Thread)

스레드는 프로세스 내에서 실행되는 일련의 실행 흐름입니다. 모든 프로세스는 하나 이상의 스레드를 가지고 있으며, 이를 '주 스레드(Main Thread)'라고 합니다. 스레드는 프로세스의 자원과 메모리 공간을 공유하지만, 각각의 스레드는 독립적인 실행 흐름을 가지고 있으며, 자체적인 스택(Stack)을 가집니다. 스레드는 프로세스 내에서 병렬 작업을 가능하게 해주며, 멀티 스레딩을 통해 여러 작업을 동시에 처리할 수 있게 해줍니다.

멀티 프로세스와 멀티 스레드

멀티 프로세스는 각각 독립된 메모리 공간에서 여러 프로그램을 동시에 실행하는 것을 의미합니다. 이 방식은 안정성이 높지만, 프로세스 간의 통신(IPC)이 복잡하고 오버헤드가 큽니다. 멀티 스레드는 하나의 프로세스 내에서 여러 스레드가 동작하며 자원을 공유하는 것을 말합니다. 이 방식은 자원의 효율적 사용과 빠른 응답 시간을 제공하지만, 스레드 간의 동기화 문제가 발생할 수 있습니다.

컴퓨팅 작업을 멀티 스레드로 분할하는 것은 효율성을 높일 수 있으나, 공유 자원에 대한 동시 접근으로 인한 경쟁 상태(Race Condition)나 교착 상태(Deadlock) 같은 복잡한 문제를 관리해야 합니다.

Reference


Back