CS/운영체제
OS_2)Process
공백._.
2024. 1. 18. 16:43
용어 정의
프로그램
컴퓨터가 실행할 수 있는 명령어들의 집합
프로세스
- 컴퓨터에서 실행중인 프로그램
- 각각의 프로세스는 독립된 메모리 공간을 할당받음
- 명령어들과 데이터를 가짐.
CPU(Central Processing Unit)
명령어를 실행하는 연산장치
메인 메모리
프로세스가 CPU에서 실행되기 위해 대기하는 곳
I/O(Input/Output)
- 파일을 읽고 쓰거나 네트워크의 어딘가와 데이터를 주고 받는 것
- 입출력 장치(마우스, 키보드, 모니터, 프린터 …)와 데이터를 주고 받는 것.
단일 프로세스 시스템
- 가장 초창기의 시스템
- 한 번에 하나의 프로그램만 실행됨
- 다른 프로그램을 실행하려면 종료 후 실행했어야 함.
- 단점: CPU 사용률이 좋지 않음⇒ 실행 중에 있는 프로세스가 IO작업을 하면 놀게 됨
- ex) CPU에서 P1 실행→P1이 IO작업하는 동안 CPU놀고 있음→ IO작업 끝나면 다시 CPU에서 실행.→IO작업이 오면 또 CPU는 놀고 있음.
- 해결책: 여러 개의 프로그램을 메모리에 올려놓고 동시에 실행시키자! 실행중인 프로세스는 IO작업이 발생하면(인터럽트가 발생하면?) 다른 프로세스가 CPU에서 실행됨CPU에서 P1 프로그램 실행 → IO작업 진행되면서 cpu에서 p1 실행 중단 → p2가 IO작업 실행(cpu에서 p2 실행 중단) → P1과 P2가 모두 IO작업 중이면 CPU는 또 논다 →IO작업이 끝나면 다시 빙글빙글~
- ⇒ 얘가 바로 멀티 프로그래밍
- ex) P1/P2/CPU
멀티프로그래밍
- 여러 종류의 프로그램이 동시에 실행된다.
- CPU 사용률을 극대화하는 것이 목적
- 단점: CPU 사용 시간이 길어지면 다른 프로세스는 계속 대기해야 함.
- ex) P1이 CPU에서 계속 돌아가고 있으면, P2는 P1이 끝날 때까지 대기해야 함.
- 해결책: 프로세스는 한 번 CPU를 사용할 때 아주 짧은 시간(quantam)만 CPU에서 실행되도록 하자!→ 멀티 태스킹
- ex) CPU의 사용시간을 아주 세밀하게 잘라서 번갈아가면서 PROCESS를 돌리기. milisec 까지 구분해서 왔다갔다! 완전 빠르게 바뀜
멀티 태스킹
- 여러 종류의 프로그램을 동시에 실행한다는 것이 멀티 프로그래밍과 유사
- 그에 더해 cpu 타임 안에서 프로세스가 번갈아가면서 실행된다는 점
- 멀티태스킹은 프로세스의 응답 시간을 최소화시키는데 목적
- 마치 동시에 실행되는 것처럼 느낌. 여러 프로세스들이 교대로 실행되면서 즉각적인 응답을 보여줘서 동시에 여러 프로그램이 실행되는 느낌을 준다.
- 아쉬움
- 여러 프로세스가 동시에 동작하기는 하지만, 하나의 프로세스가 동시에 여러 작업을 수행하지는 못함.
- 프로세스의 컨텍스트 스위칭이 무겁다.
- 컨텍스트 스위칭: CPU에서 실행되기 위해 프로세스를 교체하는 것. - 프로세스끼리 데이터 공유가 까다로움
- 프로세스는 독립적인 메모리 공간을 가지기 때문에, 서로 데이터를 공유하는 것이 까다롭다. - 듀얼 코어가 등장.
- 하나의 cpu성능을 높이는 게 발열 이슈 등으로 어려워져서 한 cpu안에 두 개의 코어를 둬서 전체적인 성능을 향상시키는 방향으로 넘어감. 듀얼코어의 등장으로 스레드를 이용하게 됨
스레드
- 특징
- 프로세스는 한 개 이상의 스레드를 가질 수 있다.
- 한 프로세스에서 여러 작업을 동시에 작업하기 위해서 스레드가 등장!
- cpu에서 실행되는 단위(unit of execution)
- 옛날에는 CPU 실행 단위가 프로세스였는데 바뀌게 됨. 프로세스가 여러 스레드를 가지게 되면서, 스레드가 cpu에서 실행되는 단위가 됨
- 같은 프로세스의 스레드들끼리 컨텍스트 스위칭은 가볍다.
- 컨텍스트 스위칭: 프로세스끼리 교체되는 것. OR 스레드들끼리 교체되는 것
- 스레드들은 자신이 속한 프로세스의 메모리 영역을 공유.
- 같은 프로세스에 속한 스레드들끼리는 컨텍스트 스위칭이 가볍다.
- 데이터 공유가 쉽다.
- 프로세스는 한 개 이상의 스레드를 가질 수 있다.
ex)CPU가 있고, 스레드가 2개 있을 때, 시간을 짧게 쪼개고, …?→ 멀티스레딩확장된 멀티태스킹 개념두개 이상의 프로세서나 코어를 활용하는 시스템을 멀티프로세싱이라고 한다.- 멀티 태스킹: O
- 멀티 스레딩: X
- 멀티 프로세싱: X
- 멀티 태스킹: O
- 멀티 스레딩: O
- 멀티 프로세싱: X
- 멀티 태스킹: X → CORE 하나씩 각각 갖기 때문에 멀티 태스킹 x
- 멀테 스레딩: X
- 멀티 프로세싱: O
- 멀티태스킹: X
- 멀티스레딩: O
- 멀티 프로세싱: O
- 멀티 태스킹:O
- 멀티 스레딩:O
- 멀티 프로세싱:O
- Ex) 싱글코어 CPU / 싱글 -스레드 / 프로세스 2개
- 여러 프로세스와 여러 스레드가 아주 짧게 쪼개진 CPU TIME을 나눠 갖는 것
- 하나의 프로세스가 동시에 여러 작업을 실행하는데 목적.
- CPU가 2개있으면, 프로세스는 각각 코어에서 하나씩 병렬로 실행된다.
IPC
PCB - Context Switching
프로세스 스케쥴링
정리
멀티 프로그래밍 여러 종류의 프로그램을 동시에 실행할 때 멀티 프로그래밍이라고 부른다. CPU의 효율을 극대화하는 것이 목표
멀티 태스킹 | 여러 종류의 프로그램이 한 CPU안에서 번갈아 가면서 돌아가는 것. 프로세스의 컨텍스트 스위칭이 발생 |
멀티 스레딩 | 스레드를 통해 하나의 프로세스가 여러 개의 작업을 진행하게 하는 것. |
멀티 프로세싱 | 두 개 이상의 프로세서나 코어를 활용하는 시스템 |