아무나개발하자

운영체제 정리 1탄 본문

OS

운영체제 정리 1탄

개발천재나천재 2023. 1. 2. 16:43

지금부터 프로세스, 스레드, 멀티 태스킹, 멀티 스레딩, 멀티 프로그래밍, 프로그램이 모든것을 정리한다.

 

 

간단한 개념 정리

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

프로세스 → 컴퓨터에서 실행중인 프로그램인데, 즉 OS로부터 독립된 가상의 메모리공간을 할당 받아 실행중인 프로그램

CPU → 명령어를 실행하는 연산장치

메인 메모리 : 프로세스가 CPU에서 실행되기 위해 대기하는 곳, CPU가 글씨를 쓰기 위한 연습장이라고 간단히 생각해라

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

 

 

 

프로세스 시스템의 정리

 

최초의 프로세스 시스템 :  단일 프로세스 시스템(한번에 하나의 프로그램만 실행됨)

단일 프로세스 시스템

단일 프로세스 P1이 실행된다고 가정할때, 실행중인 P1이 IO를 하거나 하면 CPU는 놀게된다. -> CPU 효율이 좋지 않음

 

 

다음 아이디어 : 여러개의 프로그램을 메모리에 올려놓고 동시에 실행하자!

<멀티 프로그래밍>

여러개의 프로그램을 메모리에 올려두고 한개씩 실행을 하다가 IO작업이 발생하면 다른 프로세스가 CPU에서 실행되게 하자!!

멀티 프로그래밍

하지만 단점이 발생하게된다 -> 한개의 프로세스가 CPU 사용시간이 길어져 다른 프로세스는 계속해서 대기하는 상황이 발생, 위의 그림을 보면 P1이 IO가 발생할때 까지 P2는 대기한다.

 

 

해결책 :  프로세스는 CPU를 사용할때, 아주 짧은 시간(quantum)만 CPU를 사용하자

멀티 태스킹

아주 짧은 시간을 돌려가며, 프로세스가 CPU를 사용한다. 이러한 개념을 멀티 태스킹이라고 한다. 하지만 지금은 확장된 개념으로 여러 프로세스와 여러 스레드가 아주 짧게 쪼개진 CPU TIME을 나눠 사용하는 것이라고도 한다.

이렇게 되면 여러 프로세스가 동시에 실행되는 느낌을 준다.

 

아쉬움 -> 하나의 프로세스가 동시에 여러작업을 수행하지 못함 -> 물론 커다란 하나의 프로세스를 여러 프로세스로 만들어서 실행하면 해결 되긴하는데 단점이 존재 -> 1. 프로세스의 컨텍스트 스위칭(CPU에서 실행되기 위해서 한 프로세스에서 다른 프로세스로 교체되는 행위)은 무거운 작업임 ->2. 프로세스끼리는 데이터 공유가 까다로움 

 

해결책 : 스레드

1. 프로세스는 한개 이상의 스레드를 가질 수 있다.

2. 스레드란 CPU에서 실행되는 단위(unit of execution)

3. 같은 프로세스의 스레드들끼리의 컨텍스트 스위칭을 가볍다.

4. 자신들이 속한 프로세스의 메모리 영역을 공유

싱글 스레드와 멀티 스레드 비교 그림

위 그림의 핵심은 한 프로세스안에 존재하는 여러 스레드들은 프로세스의 메모리 영역을 공유한다. (code, heap 등등)

하지만 공유하지 않는 stack, stack pointer, pc등이 있긴하다.

 

 

멀티 스레드

하나의 프로세스내에서 동시에 여러작업을 수행하기 위해 여러개의 스레드를 이용한다.

 

 

멀티 프로세싱

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

 

 

 

문제1

- 프로세스 두개에 각각의 스레드들은 실행되기 위해 quantum을 나눠 사용한다 -> 멀티 태스킹 O

- 싱글 스레드 -> 멀티스레딩 X

- 싱글 코어 -> 멀티 프로세싱 X

 

 

문제2

- 프로세스 한개의 각각의 스레드들은 실행되기 위해 quantum을 나눠 사용한다 -> 멀티 태스킹 O

- 듀얼 스레드 -> 멀티스레딩 O

- 싱글 코어 -> 멀티 프로세싱 X

 

 

문제3

- 프로세스 두개에 각각의 한개씩 존재하는 스레드들은 core1, core2를 각각 완전히 사용한다 -> 멀티 태스킹 X

- 싱글 스레드 -> 멀티스레딩 X

- 멀티 코어 -> 멀티 프로세싱 O

 

 

문제4

- 프로세스 두개에 각각의 두개씩 스레드들이 존재한다 따라서 총 4개의 스레드들은 core1, core2를 quantum단위로 나눠서 사용 -> 멀티 태스킹 O

- 듀얼 스레드 -> 멀티스레딩 O

- 멀티 코어 -> 멀티 프로세싱 O

 

 

출처 : https://www.youtube.com/watch?v=QmtYKZC0lMU&list=PLcXyemr8ZeoQOtSUjwaer0VMJSMfa-9G-&index=1

'OS' 카테고리의 다른 글

동기화(synchronization)  (0) 2023.01.14
CPU bound, IO bound  (0) 2023.01.13
Context Switching  (0) 2023.01.12
스레드 정리  (0) 2023.01.03