본문 바로가기

프로그래밍/컴퓨터공학

[운영체제 학습 노트] 프로세스와 스레드, 프로세스 관리

728x90
반응형

프로세스

프로그램과 프로세스의 차이

프로그램: 저장장치에 저장된 실행 가능한 파일

프로세스: 프로그램이 메모리에 적재되어 실행중일 때

 

 

운영체제의 프로세스 관리

1. 운영체제는 프로그램을 메모리에 적재하고 프로세스로 다룬다.

2. 프로세스들은 독립적인 메모리 공가늘 가지며 다른 프로세스의 영역에 접근할 수 없다.

3. 운영체제는 프로세스마다 고유한 번호 PID를 할당받는다.

4. 프로세스 정보는 커널에 의해 관리된다.

5. 운영체제 커널은 시스템 전체에 하나의 프로세스 테이블을 두고 모든 프로세스를 관리한다.

6. 프로세스를 실행할 때 프로세스제어블록 PCB를 생성하여 프로세스 정보를 저장한다.

 

구성

1. 코드영역

2. 데이터영역

3. 힙영역

4. 스택영역

프로세스 주소 공간 = 사용자 공간 + 커널 공간
프로세스가 실행중 접근할 수 있는 최대 주소 범위

 

프로세스 제어 블록(PCB)

정의

프로세스의 핵심 데이터(프로세스 번호, 부모프로세스 번호, 컨텍스트, 종료코드, 프로세스 스케줄링 정보, 회계정보 등등)

컨텍스트: 현재 실행중인 프로그램 일체의 상태. 컨텍스트 스위칭될 때 저장되는 정보는 PC, SP등의 레지스터이다
프로세스 스케줄링: CPU에 할당하기 위해 Ready 상태의 프로세스를 고르는 과정

 

프로세스 상태변이

New -> Ready -> Running -> Terminated/Zombie -> Terminated/Out

                                  ↓

                 ↑    ←   Blocked

 

 

기아 프로세스

정의

Ready 상태일 때 문제가 생겨서 준비큐에 오래 머무르는 상태

 

Zombie 프로세스

정의

종료코드를 부모 프로세스에서 읽지 않아 리소스는 반한되었지만 PCB는 커널에 존재하여 시스템(프로세스 테이블)에 남아있는 완전히 종료되지 않은 상태

 

 

고아 프로세스

정의

부모 프로세스가 자식프로세스보다 먼저 종료되었을 때

 

#0 프로세스

Swapper, idle 프로세스라고도 불림

컴퓨터가 실행되면 가장 먼저 실행되며

부팅을 담당하고 시스템에 실행시킬 Ready 프로세스가 1개도 없는 상태를 방지하기 위함

 

#1 프로세스

init 프로세스라고도 불림

 

프로세스의 문제점

1. 프로세스 생성의 큰 오버헤드로 인해 많은 시간이 걸린다.

2. 프로세스 컨텍스트 스위칭의 큰 오버헤드

3. 프로세스 사이의 통신이 어렵다

 

=> 이같은 문제점을 해결하기 위해 스레드 출현

 

 

스레드 

목적

1. 프로세스 보다 작은 실행단위 필요

2. 프로세스 생성 및 삭제에 따른 오버헤드 감소 필요

3. 빠른 컨텍스트 스위칭

4. 프로세스간의 통신의 어려움 해결

 

정의

프로세스보다 작은 실행단위로서 작업을 구현하는 단위이자 운영체제에 의해 스케줄링 되는 단위

1. 스레드는 실행단위이며 스케줄링 단위이다.
2. 프로세스는 스레드들의 컨테이너이다
3. 프로세스는 스레드들의 공유공간을 제공한다
멀티스레딩: 여러 스레드를 동시에 실행시킴으로서 cpu 활용률을 높인다.

 

다수의 스레드가 실행되는 상황

1. 동시성, 동시 처리(Concurency)

1개의 CPU로 2개 이상의 스레드를 시간을 나누어 실행

 

2. 병렬성, 병렬처리(Paramelism)

2개 이상의 스레드가 2개 이상의 CPU에서 실행

 

스레드 제어 블록(TCB)

구성

1. 스레드 정보 (스레드 고유 번호 TID, 실행, 준비, 블록과 같은 상태를 저장 State)

2. 컨텍스트: cpu가 스레드를 실행하고 있을 때 cpu의 레지스터 값

3. 스케줄링 정보

 

스레드 컨텍스트 스위칭이 발생하는 경우

1. 스레드가 자발적으로 다른 스레드에게 양보하는경우

2. 시스템 호출이 실행된경우

3. 스레드가 타임슬라이스를 소진하는경우

4. 인터럽트가 발생하는경우

 

커널 레벨 스레드

정의

커널에 의해 만들어지고, 커널에 의해 존재가 인지되고, 커널에 의해 스케줄링 되는 스레드

병렬성, 느리다, 커널 모드에서 스레드 스위칭

 

사용자자 레벨 스레드

정의

스레드 라이브러리에 의해 사용자 공간에 생성 및 관리되고 스케줄링 되는 스레드

동시성, 빠르다, 사용자 모드에서 스레드 스위칭

 

728x90
반응형