출처: https://velog.io/@codemcd/운영체제OS-5.-프로세스-관리
프로세스(Process) :
프로세스는 메인 메모리에 할당되어 실행중인 상태인 프로그램을 말한다. 프로그램은 일반적으로 하드디스크에 저장되어 아무 일도 하지 않는 상태이다.
프로세스 상태?
- New : 프로그램이 메인 메모리에 할당.
- Ready : 할당된 프로그램이 초기화와 같은 작업을 통해 실행되기 위한 모든 준비를 함.
- Running : CPU가 해당 프로세스를 실행.
- Waiting : 프로세스가 끝나지 않는 시점에서 I/O로 인해 CPU를 사용하지 않고 다른 작업을 함.(해당 작업이 끝나면 다시 CPU에 의해 실행되기 위해 Ready 상태로 돌아간다.)
- Terminated : 프로세스가 완전히 종료.
PCB(Process Control Block) : 프로세스에 대한 모든 정보가 모여있는 곳. Task Control Block 이라고도 한다.
프로세스 큐 : 프로세스는 수행하면서 상태가 여러 번 변하는데 이에 따라 서비스를 받아야하는 곳이 다르다. 프로세스는 일반적으로 여러 개가 한번에 수행되므로 그에 따른 순서가 필요하다. 이러한 순서를 대기하는 곳이 큐이다.
아래와 같은 여러 큐가 존재하는데, 각 큐 내부에 저장된 실제 데이터는 각 프로세스 PCB가 저장되어 있다. 순서를 기다리는 공간이 있다면 이 순서를 정해주는 알고리즘도 존재한다. 이러한 알고리즘을 스케줄링 이라고 한다.
- Job Queue : 하드디스크에 있는 프로그램이 실행되기 위해 메인 메모리에 할당 순서를 기다리는 큐. - Job Scheduler (Long -term Scheduler)
- Ready Queue : CPU 점유 순서를 기다리는 큐. - CPU Scheduler (Short - term Scheduler)
- Device Queue : I/를 하기 위한 여러 장치가 있는데, 각 장치를 기다리는 큐. - Device Scheduler
앞서 말한 Multiprogramming을 프로세스 부분에서 더욱 설명하자면 Multiprogramming은 단일 프로세서(CPU) 환경에서 여러 개의 프로세스가 동시에 실행되는 것을 말한다. (실제로 동시에 실행되지는 않는다.) 여러 프로세스가 실행되려면 이 프로세스들은 모두 메인 메모리에 존재하고 있어야 한다.
출처: https://velog.io/@codemcd/운영체제OS-7.-쓰레드Thread
Thread : 내부의 흐름(맥) 이다.
일반적으로 하나의 프로그램은 하나의 쓰레드를 갖는다.
다중 쓰레드(Multithreads)?
하나의 프로그램에 쓰레드가 2개 이상 존재하는 것을 다중 쓰레드라고 한다.
하나의 프로그램에 여러 개의 쓰레드가 있을 수 있는 이유는 쓰레드가 빠른 시간 간격으로 스위칭되기 때문이다. 이러한 동작으로 사용자는 여러 쓰레드가 동시에 실행되는 것처럼 보인다.
하나의 CPU에서 여러 쓰레드가 스위칭에 의해 동시에 수행되는 효과 = concurrent,
여러 CPU에서 여러 스레드가 실제로 동시에 수행되는 것은 = simultaneous 라고 한다
현대의 운영체제의 context switching 의 단위는 프로세스가 아닌 쓰레드 단위이다.
Thread in Process
한 프로세스에는 기본적으로 하나의 쓰레드가 존재한다. 프로세스는 code, data 메모리 공간이 존재하고, 이는 여러 쓰레드가 공유한다. 이외에도 프로세스의 자원인 file, I/O 등은 여러 쓰레드가 공유하지만, 각 스레드가 고유하게 가지고 있는 것은 PC, SP, registers, stack 등이 있다.
'IT지식 > 운영체제' 카테고리의 다른 글
[운영체제] POSIX (0) | 2022.12.04 |
---|---|
[운영체제] 입출력 관리 (1) | 2022.12.04 |
[운영체제] IPC란? (0) | 2022.12.04 |
[운영체제] 운영체제의 구조와 동작원리 + @ (0) | 2022.12.04 |
[운영체제] 운영체제란? (0) | 2022.12.03 |