프로세스, 멀티프로그래밍, 스레드, 멀티태스킹, 멀티스레딩, 멀티프로세싱

지식저장공간·2023년 2월 17일
0

운영체제

목록 보기
2/15

프로세스, 멀티프로그래밍, 스레드, 멀티태스킹, 멀티스레딩, 멀티프로세싱

기본개념

프로그램 : 컴퓨터가 실행할 수 있는 명령어들의 집합

CPU(중앙처리장치) : 명령어를 실행하는 연산장치

메인 메모리 : 프로세스가 CPU에서 실행되기 위해 대기하는곳

I/O(Input/Output) : 파일을 읽고 쓰거나, 네트워크 어딘가와 데이터를 주고받는 것, 입출력 장치(모니터,프린터)와 데이터를 주거나 받는것

프로세스(process)

프로세스 : 컴퓨터에서 실행 중인 프로그램. 각각의 프로세스는 독립된 메모리 공간을 할당 받고 명령어들과 데이터를 가진다.

단일 프로세스 시스템

한번에 하나의 프로그램만 실행된다.
다른 프로세스를 실행시키려면 현재 동작중인 프로세스를 중단하고 실행시켜야한다.

단점

CPU 사용률이 좋지 않다. 프로세스1이 동작하다가 I/O작업을 수행하면 CPU는 아무것도 안하고 있다가, I/O작업이 끝난 후 다시 일을 시작한다.

해결책

멀티프로그래밍(multiprogramming)

CPU에서 프로세스1을 실행 중 I/O작업을 수행하면 프로세스2를 수행한다. 그러다가 프로세스2가 I/O작업을 수행하면 I/O작업이 끝난 프로세스1을 수행한다.

멀티프로그래밍의 목적 : CPU 사용률을 극대화 시킨다.

단점

CPU 사용 시간이 길어지면 다른 프로세스는 계속 대기해야한다.
ex)프로세스1이 100시간 수행하면 프로세스2는 100시간 대기한다.

해결책

프로세스는 한번 CPU를 사용할 때 아주 짧은 시간만 CPU에서 실행되도록 하자
==> 멀티태스킹

멀티태스킹(multitasking)

목적

CPU의 시간단위를 아주 짧게 쪼개서, 프로세스들이 번갈아 가면서 수행될 수 있다.
프로세스의 응답 시간을 최소화 시키는것이 목적이다.

아쉬움

  1. 하나의 프로세스가 동시에 여러 작업을 수행하지는 못한다.

  2. 프로세스의 컨텍스트 스위칭은 무거운 작업이다.
    컨텍스트 스위칭 : CPU에서 실행되기위해 프로세스들이 교체되는작업

  3. 프로세스끼리 데이터 공유가 까다롭다.(프로세스는 독립적인 메모리 공간을 가진다.)

  4. 듀얼코어의 등장. CPU 1개에 코어가 2개.

스레드(thread)

CPU가 독립적으로 처리하는 하나의 작업 단위. 하나의 프로세스는 한개 이상의 스레드를 가질 수 있다.

특징

멀티 태스킹의 단점을 보완하기 위해.

이전에는 하나의 프로세스는 동시작업을 수행하지 못했다. 스레드 개발 후 프로세스는 한 개 이상의 스레드를 가질 수 있다. 즉, 스레드를 2개이상 사용하면 동시작업이 가능하다.

같은 프로세스의 스레드들끼리 컨텍스트 스위칭이 가볍다. 프로세스1을 담당하는 스레드1과 스레드2의 컨텍스트 스위칭은 가볍다.

같은 프로세스를 수행하는 스레드들은 메모리 영역을 공유한다.
1. 같은 프로세스의 컨텍스트 스위칭이 가볍다.
2. 메모리 영역을 공유하기 때문에 데이터 공유가 쉽다.

하나의 프로세스를 처리하는 스레드는 여러개일 수 있다.
같은 프로세스를 처리하는 스레드는 메모리 영역을 공유한다.

멀티스레딩(multithreading)

하나의 응용프로그램을 여러 개의 스레드로 구성하고 각 스레드로 하여금 하나의 작업을 처리하도록 하는 것이다. 동시작업이 가능하다.

CPU의 코어가 1개일 때 2개의 스레드를 가지는 프로세스는 멀티태스킹 방식처럼 동작한다. 짧은 시간으로 쪼개서 서로 나눠서 프로세스를 실행한다.

코어가 2개인 CPU에 2개의 스레드를 가지는 프로세스를 동작할때 코어1은 스레드A를 코어2는 스레드2를 각각 실행시킨다. 진정한 동시진행.

목적

하나의 프로세스가 동시에 여러 작업을 실행하는데 목적

이전에는 여러 프로세스간 컨텍스트 스위칭을 했다면, 멀티스레딩 도입 후 여러 프로세스와 여러 스레드가 아주 짧게 쪼개진 cpu time을 나눠 갖는다.

멀티프로세싱

예시

싱글코어 CPU에 싱글-스레드 프로세스 두 개 ==> 멀티태스킹
싱글코어 CPU에 듀얼-스레드 프로세스 한 개 ==> 멀티태스킹, 멀티스레딩
듀얼코어 CPU에 싱글-스레드 프로세스 두 개 ==> 멀티프로세싱
듀얼코어 CPU에 듀얼-스레드 프로세스 한 개 ==> 멀티스레딩, 멀티프로세싱
듀얼코어 CPU에 듀얼-스레드 프로세스 두 개 ==> 멀티태스킹, 멀티스레딩, 멀티프로세싱

멀티태스킹 : 코어1개에 여러 스레드가 경합한다.
멀티스레딩 : 프로세스가 가진 스레드가 여러개이다.
멀티프로세싱 : 코어가2개이상

출처 : 쉬운코드 유튜브

profile
발전하는 개발자가 꿈입니다. 지식을 쌓고 지식을 활용해 목표 달성을 추구합니다.

0개의 댓글