[정보처리 산업기사] 프로세스

2023. 5. 12. 15:38CS/운영체제

728x90
반응형

프로세스

개념

주기억 장치 적재 / CPU에서 실행 과정

정의

CPU에 의해 현재 실행

PCB 존재로서 명시

결과를 억디 위한 일련의 계통적 동작

목적 또는 결과에 따라 발생되는 사건들의 과정

비동기적 행위

프로시저 활동 중

프로시저의 제어 궤적 / 궤적 : 프로세스 진행 한 시점만이 아니라 이미 실행했거나 실행할 범위까지도 포함

CPU가 할당되는 실체

프로세스 상태 전이도

 

※ 2 가지 스케줄러

- short-term 프로세스 스케줄러

- long-term 잡 스케줄러

프로세스 생애

1. 디스크 보관 -> 스풀 -> 스플링(스플러를 통한) -> 준비

2. 준비 -> 디스패치 -> 실행

3. 실행 -> 입출력 신호 -> 대기

4. 대기 -> 준비 (wake-up)

5. 대기 - > suspend -> 대기 혹은 준비

※ suspend - 운영체제에 의한 일시적으로 벗어나는 상태

    resume - suspended에서 프로세스 활성화 상태로 다시 복귀

 

프로세스의 자원 이용 순서 ( 요청 -> 사용 -> 해제)

요청 : 특정 자원을 OS에게 요청

사용 : OS가 할당하면 자원 사용

해제 : 다른 프로세스를 위해 자원 사용 해제

속도 차이를 줄이기 위한 3가지

스풀 - 하드디스크 또는 프린트 시 일부 데이터를 보관하고 있다가 데이터 전송

   스풀링 - 데이터를 모아 두었다가 한꺼번에 출력하는 행위

  스풀러 - 스풀링 작업을 하는 프로그램

버퍼링 - 주기억 장치와 관련, 데이터 보관하고있다가 일정 데이터 모이면 한번에 전송

채널 - 입출력 담당 CPU로 간단한 명령 구조와 레지스터를 가지고 있다.

인터럽트

프로세스(작업) 중단 행위

인터렙트 종류

SVC 인터렙트 : OS가 관리을 위해 발생, 오퍼레이터와의 대화시 발생(사용자)

입출력 인터렙트 : 입출력시 발생

외부 인터렙트 : 시간 할당량(time slice)가 끝나는 경우나 CPU가 어떠한 이유로 프로세스 중단

재시작 인터렙트 : 사용자가 재시작 할 경우(강제로 한경우도 포함)

프로그램 검사 인터렙트 : 오버(제한된 용량 넘어서는 경우) / 언더플로우(저장되어 있지 않는 자료 요구 시)  / 0연산

기계 검사 인터렙트 : 시스템 고장시 발생

인터렙트 처리와 순서

처리

프로세스가 수행 중 다른 프로세스 실행을 위해 현재 프로세스 중단

외부 입력 장치(키보드, 마우스) 개입

사용자에 의해서 새로운 프로그램이 실행

중단 시점 정보 저장

입출력 연산, 오류, 하드웨어 실패 시 발생

프로그램 재개를 위한 레지스터 문맥 저장

순서

1. 인터렙트 발생 -> 운영체제 제어권

2. 운영체제는 현재의 프로세스 상태 저장

3. 인터럽트 발생 원인을 찾아 지정되어있는 루틴으로 제어권 넘김

4. 제어권 받은 프로세스 실행

5. 이전 프로세스 상태로 복구

6. 인터럽트 시점 이후부터 프로세스 실행

--- 스택 구조로 인터럽트 시 상태 보관

특징

비상사태 발생 시 그 처리를 위해 인터렙트가 필요

프로그램 착오는 하드웨어의 기능에 의해 정해진 인터럽트 처리 루틴에 따라 복구되어야 함

CPU는 현재 실행 중인 명령을 마친 후 CPU의 상태를 보관(복귀 후 이어서 처리를 위한)

연산 오류 시 인터럽트 발생

다음 수행할 명령어의 번지를 기억하고 있는 레지스터인 PC에 인터럽트 요구를 처리하는 서비스 프로그램의 시작 주소를 기억시킨다.

메모리 보호 구역 접근 시 발생

입출력 완료 시 발생

인터렙트 동기 그리고 트랩

동기 - 0나누기 연산 / CPU에 의한 인터렙트

비동기 - 마우스 키보드 사용 시 발생, 다른 하드웨어가 CPU 클럭 시그널과 상관없이 생성

트랩 : 소프트웨어가 정지 시킨다

프로세스특정 시스템 기능사용하려고 할 때 그 기능을 운영체제에 요청하는 방법

소프트웨어적 인터렙트

프로그램 카운터(PC)를 정해진 특정 번지로 변경하여 정해진 처리 루틴 수행

PCB

한 프로세스 존재 정의

다중 프로그래밍 환경에서 프로세스 구분에 필요 -> 프로세스 제어 블록

프로세스 현재 상태 기록한 정보 테이블

항목

식별자

현재상태

카운터(계수기)

우선순위

프로세스가 적재된 기억 장치 부분을 가리키는 포인터

할당된 자원 가리키는 포인터

CPU 레지스터 정보

CPU의 각종 레지스터 상태를 가리키는 포인터

계정 정보(시간 할당량)

기억 장치 관리 정보

입출력 정보

부모 프로세스 가리키는 포인터

자식 프로세스를 가리키는 포인터

프로세스 생성 과정

프로세스 식별자 할당 -> 주고 공간, 제어 블록 할당 -> 제어 블록 초기화 -> 스케줄링 큐 준비, 준비/보류 리스트에 연결

문맥 교환

다중 프로그래밍 환경에서 프로세스 변경하는 작업

재개에 필요한 레지지스터 문맥 저장

시간 할당량과 <-> 문맥 교환수, 인터렙트 횟수, 오버헤드 반비례

프로세스 스케쥴링

종류

장기 스케줄링 - 작업 스케줄링, 대기 큐로 들어가는 작업(준비), 주기억 장치에 적재될 시기 결정 작업

중기 스케줄링 - 다중 CPU 환경에서 프로세스가 어떤 CPU 할당 받을지 결정하는 작업

단기 스케줄링 - 프로세스 스케줄, 디스패치, 인터럽트를 통한 문매 교환 수행

선점형

RR, SRT, MFQ

 

RR :  동일한 시분할 할당, 할당 시간안에 마치치 않으면 대기 목록 끝으로 FIFO와 동일하다

         시간 할당량이 작으면 문맥 교환수와 오버헤드가 증가

SRT : 작업 끝나기까지 시간 추정치가 가장 작은 프로세스 먼저 실행, 임계치

MFQ : 짧은 작업/입출력 위주 우선 순위 배정, 여러개 큐, 큐들은 종속적 연결, CPU 할당에 못 끝나면 낮은 큐로 이동, 맨 마지막은 RR 스케줄러 사용

비선점형

FIFO, SJF, HRN, 우선순위, 기한부 스케줄링

 

FIFO : 들어온 순서대로 작업 진행

SJF : 수행시간이 작은 프로세스 우선 순위

HRN : FIFO, SJF 단점 보안, 우선수위 공식으로 계산 후 그 수치가 큰 값부터 낮은 순으로 우선 순서 배치(대기순위가 높을 수록 우선 순위 높안짐)

우선순위 : 

기한부 스케줄링 : 

혼합형

MLQ : 선점형, 비선점형

우선순위가 가장  높은 큐에서는 비선전형(FIFO)

우선순위가 낮은 큐에서는 선점형

신속한 처리를 위한 시스템 프로세스 - 우선 큐

중위 - 대화형 프로세스

하위 - 일괄처리 프로세스

대기 리스트간 프로세스 이동은 되지 않는다. 


임계구역

1)정의

다중 프로그래밍 기법, 두 개 이상 프로세스, 공유 자원, 통신 매개 변수 역할

2)원칙

두 개 이상의 프로세스가 동시에 사용될 수 없음.

배타적

순서가 있는 작업

독점, 중단, 문한 반복 안됨

상호배제

임계구역을 어느 시점에서 단지 한 개의 프로세스만이 사용할 수 있도록 하며,

다른 프로세스 접근을 금지하는 행위

4가지 요구 조건

- 객관적 프로세스들을 통한 상호배제, 임계구역 1프로세스 존재, 무한정 연기 안됨, 다른 프로세스 접근 금지

상호배제 알고리즘

잠금 - 다른 프로세스가 접근할 수 없도록 잠근다

인터럽트 봉쇄 - 프로세스 전이가 일어나지 않도록 조치

엄격한 교대 - 하나의 임계구역을 사용 시 서로 교대로 한 번씩만 접근하도록 함.(반드시 상대방이 끝난 후 접근)

 

바쁜 대기 

상호배제때문에 임계구역에 접근하기 위한 다른 프로세스들의 바쁜 대기 현상이 나타난다.

이를 해결하기 위해 잠자기와 깨우기 알고리즘을 활용한다 -> 이발사와 손님의 관계가 대표적

 

세마포어

상호배제 원리 보장을 위한 알고리즘

임계구역 접근을 제어, 프로세스 사이의 동기 유지

잠자기와 깨우기의 연산을 이용하며, 공유 자원의 수를 나타내는 변수를 세마포어 변수 S라고 한다.

세마포어 변수는 일반적으로 정수형 변수 사용

  • 이진형 세마포어 - 0과 1값 - 한 개의 공유자원을 상호배제
  • 계수형 세마포어 - 0과 양의 정수 - 여러 개의 공유자원을 상호배제 - 음수 사용 하지 않음

계수형(산술형) 세마포어의 이해를 위한 빵집 주인과 손님

계수형 세마포어는 상호 배제와 동기화를 위해 사용되는 동기화 기법 중 하나입니다. 빵집의 주인과 손님 사이의 상황으로 설명해보겠습니다.

가정해봅시다. 빵집에는 빵을 만드는 오븐이 있고, 주인과 손님이 각각 빵을 가져가는 작업을 수행합니다.

  1. 주인은 빵을 굽는 오븐에 접근하여 빵을 만들고 꺼냅니다. 이때 오븐은 주인의 독점적인 자원입니다. 다른 사람들은 동시에 오븐에 접근하지 못하도록 해야 합니다.
  2. 손님은 빵집에 들어와서 빵을 구매하려고 합니다. 빵을 구매하기 위해서는 주인이 빵을 만들고 나서 가져가야 합니다. 즉, 주인이 빵을 만들 때까지 손님은 대기해야 합니다.

이 상황에서 계수형 세마포어를 사용하면 다음과 같이 동작합니다:

  • 주인과 손님 사이에 공유 변수 count를 사용합니다. 이 변수는 현재 오븐에 있는 빵의 개수를 나타냅니다.
  • 주인은 빵을 만들 때마다 count를 증가시킵니다. 즉, count += 1입니다.
  • 손님은 빵을 가져가기 전에 count를 확인합니다.
    • count가 0이면, 즉 빵이 없는 경우에는 손님은 대기합니다. (count -= 1)
    • count가 0보다 큰 경우, 즉 빵이 있는 경우에는 손님은 빵을 가져갑니다. (count -= 1)

이렇게 함으로써 주인과 손님은 오븐의 사용을 조율하면서 서로 동시에 접근하지 않고, 상호 배제와 동기화를 실현할 수 있습니다. 계수형 세마포어는 공유 자원의 개수를 추적하고, 허용 가능한 개수 이내에서 접근을 제어하는 데 사용됩니다.

세마포어 특징

상호배제 원리 보장하는 알고리즘

여러 프로세스 접근 및 수정 못함

세마포어 연산은 처리 중에 인터럽트 되어서는 안됨

세마포어 연산 하드웨어/소프트웨어로 구현 가능

세마포어는 프로세스간의 동기를 유지

P 연산(wait), V 연산(Signal)을 사용한다

V 조작은 큐에 대기 중인 프로세스를 깨우는 신호로써 Signal 동작이라고 한다

P 조작은 임계영역을 사용하려는 프로세스들의 진입 여부를 결정하는 조작으로, 흔히 Wait 동작이라 한다.


모니터

세마포어 구현 프로그램

공유 자원(그룹) 할당하는데 사용

데이터 및 프로시저를 포함하는 병행성 구조

  - 비슷한 예 DBMS 소프트웨어 (충돌 -> 잠금 / 교착 ->대기, 롤백)

 

-특징-

모니터 내의 자원을 원하는 프로세스는 반드시 모니터의 진입로를 호출

외부 프로세스는 모니터 내부 데이터 엑세스 할 수 없음

자료 추상화(데이터 알고리즘을 알아볼 수 없도록 하는 설계 기술), 정보 은폐의 개념을 기초적으로 사용

스위치 개념(사용중-꺼짐/미사용-켜짐)을 사용하여 한순간에 하나의 프로세스만 모니터에 진입 가능

모니터에서 사용되는 연산 wait와 Signal

모니터의 경계에서 상호배제 시행


교착상태(DeadLoc)

가능하지 못한(불가능한) 상태를 무한정 기다고 있는 상태

참조 : https://copycode.tistory.com/72
참조 : https://guywithtech.wordpress.com/2017/01/27/necessary-conditions-for-deadlocks-in-computing/

 

교착상태 필요 충분 조건 4가지

상호배제 - 배타적인 통제권으로 인해 발생, 임계구역 동시 접근 불가로 발생

비선점 - 사용 중에 어떤 이유로 중단시 중단된 프로세스를 선점할 수 없어 발생함

환형 대기 - 각 프로세스는 순환적으로 다음 프로세스가 요구하는 자원을 가지고 있음, 물고 물린 상태

점유와 대기 - 할당된 자원을 가진 상태에서 다른 자원을 기다림, 점유 프로세스와 대기 프로세스가 존재하는 한 교착 상태 발생

※ 상호배제, 비선점, 점유와 대기 만으로 발생 안됨 / 환형 대기 상태여야 교착상태 발생

교착상태 해결 방안

교착상태는 필요악 - 다중 프로그래밍에서 당장 사용하지 않는 자원에 사용은 효율성을 위해 필요

예방(부정), 회피(은행원 알고리즘), 발견(인접 행렬), 회복(킬)으로 교착상태 회복 및 발생 방지

 

은행원 알고리즘 특징

불안전 상태 / 안정 상태로 구분

안전 상태 -> 교착 상태 발생 안함

자원의 양, 사용잦 수 일정

유한 시간안에 할당하는 것을 보장해야 함

대화식 프로그램 적용 할 수 없음 (응답 시간 예측이 필요하기 때문)

 

- 수용할 수 없다 : 당장은 수용할 수 없지만 언젠가는 대출 해줘야 함

- 불안한 상태 : 교착 상태가 쉬운 상태

- 바로 상환 : 대출 한도만큼을 대출 한 순간 바로 상환됨

 

반응형