Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 단일형 구조 커널
- 멀티프로세스
- bus
- 캐시
- API
- 부트캠프
- 폰노이만
- 인터럽트
- 앱개발
- 스레드
- kernel
- 폰노이만구조
- 마이크로 커널
- 스풀
- Swift
- closure
- 폴링
- 계층형 구조 커널
- 하버드구조
- sdk
- IODevice
- 코딩
- 커널
- 컴퓨터구조
- 프로세스
- 버퍼
- Components
- 야곰아카데미
- 멀티스레드
- 운영체제
Archives
- Today
- Total
생각, 고민, 문제해결의 기록
프로세스와 스레드 본문
프로세스 vs 스레드
프로세스 (Process)
프로세스는 프로그램이 메모리에 올라와 운영체제로부터 CPU를 할당받고 프로그램이 실행되고 있는 상태를 말한다.
즉, 일을 처리하는 일련의 과정을 뜻한다.
특징
1. 프로세스 간에는 자원을 공유하지 않고 독립적인 공간을 지니고 있다.
2. 하나의 프로세스가 다른 프로세스와 통신하려면 IPC기법이 필요하다.
3. 프로세스에 대한 정보를 PCB라는 공간에 저장한다.
**IPC(Inter Process Communication): 각각의 프로세스는 완전히 분리된 공간이라 서로 접근할 수 없기 때문에 IPC라는 기법을 통해 커뮤니케이션을 한다.
ex) Message Queue, Shared Memory, Pipe
**PCB(Process Control Block): 프로세스가 실행되면 그 프로세스의 상세정보를 가지는 공간. (약 8KB)
프로세스가 실행 중인 상태를 캡쳐, 구조화해서 저장한다.
스레드 (Thread)
스레드는 프로세스 내에서 실행되는 흐름의 단위를 말한다.
쉽게 말해 프로세스 안에서 일하는 일꾼이라고 생각하면 된다.
기본적으로 하나의 프로세스에 여러개의 스레드가 생성이 가능하며 동시실행도 가능하다.
장점
1. 사용자에 대한 응답성(성능)이 향상된다.
2. 프로세스 내부에 있으므로 프로세스의 모든 데이터에 접근이 가능하다.
3. IPC처럼 자원공유를 위한 번거로운 작업이 필요없기 때무에 자원 공유 효율이 올라간다.
프로세스와 스레드의 차이
1. 프로세서는 독립적, 스레드는 프로세스의 서브셋
2. 프로세스는 각각 독립적인 자원을 가짐, 스레드는 프로세스의 자원을 공유
3. 프로세스는 자신만의 주소영역을 가짐, 스레드는 주소영역을 공유
4. 프로세스 간에는 IPC기법으로 통신해야함, 스레드는 필요없음
멀티 프로세스 vs 멀티 스레드
멀티 프로세스 (Multi process)
2개 이상의 다수의 프로세서(CPU)가 협력적으로 하나 이상의 작업을 동시에 처리하는 것을 말한다. (병렬처리)
각 프로세스 간 메모리 구분이 필요하거나 독립된 주소 공간을 가져야 할 경우 사용된다.
장점
1. 독립된 구조로 안정성이 높다.
2. 프로세스 중 하나에 문제가 생겨도 다른 프로세스에 영향을 주지 않기 때문에, 작업 속도가 느려지는 손해 정도는 생기지만 정지되너간 하는 문제는 발생하지 않는다.
3. 여러 개의 프로세스가 처리되어야 할 때 동일한 데이터를 사용하고, 이러한 데이터를 하나의 디스크에 두고 모든 프로세서(CPU)가 이를 공유하면 비용적으로 저렴하다.
단점
1. 독립된 메모리 영역이기 때문에 작업량이 많을수록 오버헤드가 발생하여 성능저하가 발생 할 수 있다.
2. 컨텍스트 스위칭 과정에서 캐시 메모리 초기화등 무거운 작업이 진행되고 시간이 소모되는 등 오버헤드가 발생한다.
**오버헤드(Overhead): 프로그램의 실행흐름에서 나타나는 현상중 하나이다.
예를 들어 , 프로그램의 실행흐름 도중에 동떨어진 위치의 코드를 실행시켜야 할 때 , 추가적으로 시간,메모리,자원이 사용되는 현상이다.
멀티스레드 (Multi Thread)
멀티스레드는 CPU의 최대 활용을 위해 프로그램을 2개 이상 동시에 실행하는(것처럼 보이게 하는) 기술을 말한다.
이러한 작업은 컨텍스트 스위칭을 통해 이뤄지며, 컨텍스트 스위칭이 엄청 빠르게 일어나면서 사용자의 시선에서는 프로그램들이 동시에 수행되는 것처럼 보이게 한다.
장점
1. 응답성: 프로그램의 일부분이 중단되거나 긴 작업을 수행하더라도 프로그램의 수행이 계속 되어 사용자에 대한 응답성이 증가한다.
다시 말해, 멀티 스레드는 에러 발생 시 새로운 스레드를 생성하여 극복한다.
2. 경제성: 프로세스 내 자원들과 메모리를 공유하기 때문에 메모리 공간과 시스템 자원 소모가 줄어든다. 스레드 간 통신이 필요한 경우에도 쉽게 데이터를 주고 받을 수 있으며, 프로세스의 컨텍스트 스위칭과 달리 스레드 간의 컨텍스트 스위칭은 캐시 메모리를 비울 필요가 없어서 더 빠르다.
3. 멀티프로세서의 활용: 다중 CPU 구조에서는 각각의 스레드가 다른 프로세스에서 병렬로 수행될 수 있으므로 병렬성이 증가한다.
단점
1. 멀티스레드 사용 중에 한 스레드만 문제가 생겨도, 전체 프로세스가 영향을 받는다.
2. 스레드를 많이 생성하면 , 컨텍스트 스위칭이 많이 일어나, 성능이 저하된다.
3. 동기화 이슈로 비정상적인 동작이 가능하므로, 동기화 코드를 적절히 추가해줘야 한다.
**컨텍스트 스위칭(Context Switching): 어떤 하나의 프로세스를 실행하고 있는 상태에서 인터럽트 요청에 의해 다음 우선 순위의 프로세스가 실행되어야 할 때 기존의 프로세스의 상태 또는 레지스터 값(Context)을 저장하고 CPU가 다음 프로세스를 수행하도록 새로운 프로세스의 상태 또는 레지스터 값으로 교체하는 작업을 말한다.
**동기화 이슈: 하나의 자원을 여러 스레드가 동시에 수정할 때에, 각 스레드의 결과에 영향을 주는 것을 말한다.
프로세스의 상태 5가지
1. New(생성)
생성되었지만, 운영체제에 의해 수행 가능한 프로세스 풀로의 진입이 아직 허용되니 않은 상태의 프로세스
2. Ready(준비)
기회가 주어지면 수행될 준비가 되어있는 상태의 프로세스
3. Running(수행)
현재 수행 중인 상태의 프로세스
4. Blocked(블록, 대기)
I/O 작업 완료 등과 같은 이벤트가 발생할 때까지 수행될 수 없는 상태의 프로세스
5. Exit(종료)
프로세스 수행이 중지되거나, 어떤 이유로 중단되었기 때무에 프로세스 풀에서 방출된 프로세스
'CS > 운영체제' 카테고리의 다른 글
PCB와 컨텍스트 스위칭(Context Switching) (0) | 2022.08.10 |
---|---|
컴퓨터 성능 향상 기술 (0) | 2022.08.08 |
커널의 구성 (0) | 2022.08.03 |
운영체제의 역할과 구조 (0) | 2022.08.02 |