-
[운영체제] 프로세스 VS 스레드 개념 및 예상 질문Computer Science/Operating System 2023. 2. 7. 12:24반응형
프로세스 VS 스레드
구분 프로세스 스레드 사전적 의미 컴퓨터에서 실행되고 있는 컴퓨터 프로그램
- 메모리에 올라와 실행되고 있는 프로그램 인스턴스프로세스 내에서 실행되는 여러 흐름의 단위
- 프로세스의 특정한 수행 경로고유 할당 자원
Code, Data, Stack, Heap프로세스 내에서 Stack만 따로 할당 특징 1. 프로세스 한 개당 최소 1개의 스레드를 가지고 있음
2. 각 프로세스는 별도의 주소 공간에서 실행되어 다른 프로세스의 변수나 자료구조에 접근 불가
3. 다른 프로세스 자원에 접근하려면 프로세스간 통신(IPC) 사용 필요 (파이프, 파일, 소켓 등)1. 같은 프로세스 내의 여러 스레드들은 같은 힙 공간 공유
2. 한 스레드가 프로세스 자원을 변경하면 다른 이웃 스레드도 그 변경 결과를 즉시 볼 수 있음멀티 프로세스 VS 멀티 스레드
구분 멀티 프로세스 멀티 스레드 설명 하나의 응용 프로그램을 여러 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리 하나의 응용 프로그램을 여러 개의 스레드로 구성하여 각 스레드로 하여금 하나의 작업을 처리
- 대부분의 운영체제에서 멀티 스레딩을 기본으로 함
- 웹 서버는 대표적인 멀티 스레드 응용 프로그램장점 1. 독립된 구조로 높은 안전성
- 하나의 프로세스에 문제 발생하여도 문제가 확산되지 않음
2. 병렬적으로 처리 가능한 작업으로 분해하여 성능 향상 가능1. 시스템 자원 효율성 증가
- 프로세스를 생성하여 자원을 할당하는 시스템콜 감소로 자원의 효율적 관리 가능
2. 시스템 처리 비용 감소, 처리량 증가
- 스레드間 데이터를 공유하기 때문에 Context Switching이 빠름
3. 간단한 통신 방법으로 프로그램 응답 시간 단축
- 스레드는 프로세스 내의 Stack 영역을 제외한 모든 메모리를 공유하기 때문에 통신 부담 적음단점 1. Context Switching 과정에서 오버헤드 발생
2. 프로세스間 공유 메모리가 없어 캐시에 있는 모든 데이터를 리셋하고 다시 불러와야 함
3. 프로세스間 복잡한 통신 기법(IPC) - 각각의 고유 메모리 영역을 할당 받기 때문에 프로세스간 변수 공유 불가1. 주의 깊은 설계 필요, 디버깅이 까다로움
2. 하나의 스레드에 문제가 발생하면 전체 프로세스에 영향을 받음
3. 자원 공유(동기화 문제) 발생
- 병목 현상, 데드락 등Q. 프로세스와 스레드의 차이점은?
더보기프로세스: 메모리 상에서 실행 중인 프로그램으로 자신만의 고유 공간과 자원을 할당 받아 사용(code, heap, stack)
스레드: 프로세스 안에서 실행되는 흐름 단위로 다른 스레드와 공간, 자원을 공유하면서 사용(단, stack은 할당 받음)
Q. 프로세스의 문제점은?
더보기1. 프로세스 생성시 많은 시간이 소요됨
2. 프로세스 컨텍스트 스위칭이 비효율적임 (CPU가 왔다갔다 할 때 PCB를 저장하고 불러오고 하면서 오버헤드 큼)
3. 프로세스 사이에 통신이 어려움(IPC 사용해야 함)Q. 스레드 출현 목적?
더보기1. 프로세스보다 크기가 작은 실행 단위 필요
2. 프로세스의 생성 및 소멸에 따른 오버헤드 감소
3. 빠른 컨텍스트 스위칭
4. 프로세스들의 통신 시간, 방법 어려움 해소
Q. 멀티 프로세스와 멀티 스레드의 차이점은?
더보기- 멀티 프로세스
: 하나의 프로그램을 여러개의 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리
장점으로는 하나의 프로세스가 잘못되어도 프로그램이 동작하나 단점으로는 컨텍스트 스위칭으로 인해 오버헤드 및 비용 증가- 멀티 스레드
: 프로그램을 여러개의 스레드로 구성하고 각 스레드가 작업을 처리
장점으로는 스레드간 자원 공유가 가능하기 때문에 실행속도가 향상되고 시스템 자원 소모가 감소함 단점으로는 디버깅이 어렵고 동기화 이슈가 발생할 수 있으며, 하나의 스레드 오류로 전체 프로세스에 문제가 발생할 수 있음Q. 컨텍스트 스위칭이란?
더보기CPU에서 여러 프로세스를 돌아가면서 작업을 처리하는 과정
동작중인 프로세스가 대기를 하면서 프로세스 상태를 보관하고 대기하고 있다가 다시 실행시 복구하는 비용을 의미Q. Thread Safe란?
더보기여러 스레드가 동시에 사용되어도 안전하다는 뜻으로, 특정 함수 A와 변수 AA가 여러 스레드에서 호출되어도 하나의 스레드에서 호출했을 때와 같은 결과가 보장되어야 한다는 의미
- Thread safe 하지 않은 조건을 만드는 방법의 예
: 전역 변수에 값을 로드하면 value가 1증가하도록 했다면.. 다른 스레드에서 동시에 이를 호출 했을 때 벨류 값이 2 증가할 수도 있고 1 증가할 수도 있음..- Thread safe 하지 않은 환경을 Thread safe 하게 변경하는 방법
1) 공유되는 변수를 스레드 간 공유되지 않게 변경
2) 공유되는 상태 변수를 변경할 수 없게 설정
3) 공유되는 상태 변수를 사용할 때 항상 동기화 사용반응형'Computer Science > Operating System' 카테고리의 다른 글
[운영체제] 메모리 관리 - 페이징 (Paging) (0) 2023.02.28 [운영체제] 프로세스의 구성, 상태, 시스템콜 등 총 정리 (0) 2023.02.07 [운영체제] 프로그램의 실행(memory load)과 메모리 주소 (0) 2023.01.30 [운영체제] DMA(Direct Memory Access) 개념과 동작 방법 (0) 2023.01.30 [운영체제] 동기식 입출력과 비동기식 입출력 (0) 2023.01.30