사전지식 정리
프로그램 (program)
컴퓨터가 실행할 수 있는 명령어들의 집합
CPU (Central Processing Unit)
명령어를 실행하는 연산 장치
메인 메모리 (Main memory)
프로세스가 CPU에서 실행되기 위해 대기하는 곳
IO (Input/Output)
파일을 읽고 쓰거나, 입출력 장치와 데이터를 주거나 받는 것
네트워크의 어딘가와 데이터를 주고 받는 것
프로세스 (process)
컴퓨터에서 실행 중인 프로그램 단위!, OS가 관리 (프로그램을 실행해주는 주체)
각각의 프로세스는 독립된 메모리 공간 (Virtual Memory (RAM+SSD 또는 HDD)= Code + Data + Stack + Heap)을 할당 받음 , 명령어들과 데이터를 가짐
최소 1개의 스레드를 가짐
스레드 (thread)
CPU에서 실행되는 작업 단위 (unit of execution), 작업을 처리해주는 주체
프로세스에 속한 모든 스레드는 프로세스의 VM 영역에서만 실행됨
프로그램 실행 시, 계층 (User, 커널, H/W)
프로세스는 연산을 위해 CPU와 RAM (연습장?)가 필요,
운영체제는 커널모드에서 프로그램이 잘 동작하기 위해서 프로세스를 관리함
어떻게 관리하냐? 메모리를 잘라서 프로세스에 할당
이때, OS는 프로세스가 직접적으로 메모리에 접근하지 못하게 Virtual Memory를 만들어
VM을 통해서 메모리를 사용하게끔함, CPU는 프로세스가 직접적으로 접근할 수 있음
VM은 RAM과 SSD 또는 HDD로 구성될 수 있음 (예시 VM 영역에서 빨간색은 RAM, 형광색은 HDD에 매핑됨)
스레드는 필요한 메모리를 VM 영역에서 가져다 씀
프로세스 시스템 발전 과정
구분 | 설명 | 장점 | 단점 |
단일 프로세스 시스템 | 한 번에 하나의 프로그램만 실행됨, 가장 초창기의 시스템 | - | 프로그램 실행 중, IO 작업을 할 때는 CPU가 쉬므로, CPU 사용률이 좋지 않음 |
멀티프로그래밍 | 여러개의 프로그램을 메모리에 올려놓고 동시에 실행시키는 방법 | 프로세스가 IO작업 시, 다른 프로세스가 CPU에서 실행되어 CPU 사용률 극대화 | 특정 프로세스의 CPU 사용 시간이 길어지면 다른 프로세스는 계속 대기하는 단점 |
멀티 태스킹 | 한번 CPU를 사용할 때, 아주 짧은 시간 (Quantum)만 CPU에서 실행되도록 하는 방법, 프로세스의 응답 시간을 최소화 시키는데 목적으로 하여 사용자는 여러 프로그램이 동시에 실행하는 것처럼 보여짐 |
사용자 입장에서는 여러개의 프로그램을 동시에 실행할 수 있음 | 1. 하나의 프로세스가 동시에 여러 작업을 수행하지는 못함 2. 프로세스의 컨텍스트 스위칭은 무거움 3. 프로세스끼리 데이터 공유가 까다로움 4. 듀얼 코어가 등장했는데 잘 쓰고 싶음 -> 이걸 쓰레드를 활용해서 해결! |
스레드 적용 (멀티 스레딩) |
1. 프로세스는 한개 이상의 스레드를 가질 수 있음 2. CPU에서 실행되는 단위 (unit of execution) 3. 같은 프로세스의 스레드들끼리 컨텍스트 스위칭은 가벼움 4. 스레드들은 자신들이 속한 프로세스의 메모리 영역을 공유 - 멀티 스레딩 목적 : 하나의 프로세스가 동시에 여러 작업을 실행하기 위함 |
||
확장된 멀티태스킹 개념 | 여러 프로세스와 여러 스레드가 아주 짧게 쪼개진 CPU time을 나눠 가짐 (참고 : 멀티 프로세싱이란 두개 이상의 프로세서나 코어를 활용하는 시스템) |
||
요즘 컴퓨터는 최소한 듀얼 코어이고 한 컴퓨터에서 여러 가지의 프로세스가 실행되고 내부적으로 여러개의 스레드들을 가지고 있음 Ex) 듀얼코어 CPU에 듀얼스레드 - 프로세스 두개 |
메모리 구조 비교 (싱글 스레드 Vs 멀티 스레드)
왼쪽 그림 : 하나의 프로세스에 할당된 메모리 영역 (싱글 스레드)
오른쪽 그림 : 하나의 프로세스 멀티 스레드들이 소속된 메모리 영역
Heap 영역은 스레드끼리 공유하는 메모리 영역
PC (Program Counter) : 다음번에 실행돼야 될 명령어가 있는 메모리 주소
(스레드들은 Heap 메모리는 공유하고, Stack 메모리는 할당된 영역을 사용, 그리고 각 스레드들 마다 Stack Pointer와 PC를 가지고 있음)
'운영체제' 카테고리의 다른 글
8. OS 프로세스의 상태 변화 및 자바 스레드 상태 변화 (0) | 2023.06.19 |
---|---|
4. 동기화, 경쟁조건, 임계 영역 (1) | 2023.06.19 |
3. CPU bound, IO bound (0) | 2023.06.19 |
2. 컨텍스트 스위칭 뽀개기 (0) | 2023.06.19 |
프로세스와 쓰레드 (0) | 2023.05.05 |