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

Chan Young Jeong·2023년 1월 24일
0

운영체제

목록 보기
6/11
post-thumbnail

프로세스에 대해 더 자세한 내용은 여기

프로그램

컴퓨터가 실행할 수 있는 명령어들의 집합

프로세스

  • 컴퓨터에서 실행되고 있는 프로그램을 의미한다.
  • 각각의 프로세스는 독립된 메모리공간을 할당 받음
  • 메모리공간에 명려어들과 데이터들을 저장

CPU

명령어를 실행하는 연산 장치, 프로세서라고도 불림.

메인 메모리

프로세스가 cpu에서 실행되기 위해 대기하는 곳

IO(Input/Output)

파일을 읽고 쓰거나, 네트워크의 어딘가와 데이터를 주고 받는 것, 입출력 장치와 데이터를 주고 받는 것

단일 프로세스 시스템

Process1이 cpu 사용을 하면 Process1의 작업이 끝날 때까지 기다려야 한다.
Process1의 작업이 모두 끝난 후에 Process2가 cpu를 사용할 수 있음.

한번에 하나의 프로그램만 실행되는 것, 다른 프로그램을 실행하려면 먼저 실행하고 있던 프로그램을 종료시키고 그 다음 프로그램을 실행해야함

  • 단점: CPU 사용률이 좋지 않음 , 실행 중에 있는 프로세스가 IO 작업을 하는 동안에는 CPU가 쉬고 있음

이런 단점을 보완하고자 여러개의 프로세스를 메모리에 올려놓고 동시에 실행켜 cpu 사용률을 높이고자 한 것이 바로 멀티 프로그래밍!

멀티 프로그래밍


Process1이 cpu를 사용하다가 IO를 하게 되면 그 사이에 Process2가 사용할 수 있음. 그러다 Process2가 IO를 하게 되면 Process1이 다시 cpu를 사용할 수 있음.

여러개의 프로세스를 메모리에 올려놓고 동시에 실행시키자! , IO 작업이 발생하면 다른 프로세스가 CPU에서 실행됨!

  • 단점: CPU 사용시간이 길어지면 다른 프로세스는 계속 대기하는 문제 발생

멀티 프로그래밍과 유사하지만 하나의 프로세스가 계속해서 CPU를 점유하는 문제를 해결하기 위한 것이 바로 멀티 태스킹!

멀티 태스킹

프로세스가 한번 CPU를 사용할 때 아주 짧은 시간(QUANTAM)만큼만 CPU에서 실행되도록 하자! CPU사용시간을 퀀텀 단위로 나눈 것으로 프로세스의 응답시간을 최소화 시키는데 목적!

  • 단점: 여러 프로세스가 동시에 실행되는 것은 시스템 차원에서 지원함. BUT 하나의 프로세스가 동시에 여러 작업을 수행하지는 못함
    ->여러 프로세스를 만들면 되지 않나?
    문제점: 프로세스 컨텍스트 스위칭은 무거운 작업임. 그리고 프로세스끼리 데이터 공유가 까다로움. 또한 듀얼 코어가 등장하면서 이를 잘 활용하고자 하는 요구사항.

이런 단점과 문제점을 해결하고자 나온 것이 스레드 개념.

스레드(OS 스레드)

  • CPU에서 실행되는 단위가 프로세스에서 스레드로 바뀜!(unit of excution)
    -> 기본적으로 프로세스는 한 개 이상의 스레드를 가질 수 있음( 그렇기 때문에 한 프로세스 안에서 여러 작업을 동시에 실행 할 수 있음)
  • 같은 프로세스의 스레드끼리 컨텍스트 스위칭은 가벼움.
  • 스레드들은 자신이 속한 프로세스의 메모리 영역을 공유할 수 있음
    -> 자원 공유가 쉬워짐 (힙 영역 공유, 스레드마다 PC, SP, 스택은/ 따로 관리)

멀티 스레딩

그래서 하나의 프로세스가 동시에 여러 스레드를 갖는 것을 멀티 스레딩이라고 한다.
즉, 동시에 하나의 프로세스가 여러 작업을 수행할 수 있음.

멀티 프로세싱

두 개 이상의 프로세서나 코어를 활용하는 시스템


출처

위키피디아
유튜브-쉬운 코드
이미지 출처

0개의 댓글