본문 바로가기
정보처리기사

프로세스

by 두두리안 2022. 7. 13.
728x90

목차

1. 프로세스(Process)
2. 프로세스 스케줄링(Scheduling)
3. 상호배제(Mutex: Mutual eXclusion)
4. 교착상태(DeadLock)

1. 프로세스(Process)

1-1. 프로세스의 개념

* 프로그램이 주기억 장치에 적재되어 CPU에 의해 실행과정에 있을때 프로세스라고 부른다
* 목적 또는 결과에 따라 발생되는 사건(프로시저)들의 과정
* CPU가 할당되는 실체이며 PCB가 정의하는 실체

1-2. 프로세스 상태

1. 프로세스 주요 상태
    * 준비(Ready) 상태
        - 기억장치에 존재하는 프로세스를 선택하여 CPU의 할당을 기다리는 시점
    * 실행(Run) 상태
        - 대기 상태의 프로세스가 CPU를 할당받아 작업이 진행되는 상태
    * 대기(Block) 상태
        - 프로세스의 특정 작업을 진행하기 위해 입출력 작업등을 기다리는 상태
    * 종료(Exit) 상태
        - 프로세스 실행이 완료되어 종료된 상태
2. 상태 전이 과정
    * Dispatch
        - 준비상태의 프로세스가 실행 상태로 변하는 과정
    * Time Run Out
        - 실행상태의 프로세스가 할당된 시간을 다 사용했지만 아직 작업을 끝내지 못한 경우 다시 준비상태로 넘어가는 과정
    * Block
        - 실행 상태의 프로세가 입출력에 의한 작업을 위해 대기상태로 변하는 과정
    * Wake Up
        - 입출력 등이 완료되어 대기상태의 프로세스가 준비상태로 변하는 과정
3. 프로세스의 자원 이용 절차
    * 프로세스는 운영체제의 자원을 요청, 사용, 해제하는 순으로 진행

1-3. 인터럽트 처리(Interrupt Processing)

1. 인터럽트 처리
    * 프로세스 수행중에 다른 프로세스를 수행하거나 외부 입력장치에 의해 현재 수행중인 프로세스를 중단되는 상태
    * 잠시 중단된 프로세스의 상태는 다시 실행을 시작하기 위해 중단되었던 시점의 정보를 저장
    * 입출력 연산, 하드웨어 실패, 프로그램 오류등에 의해서 발생
2. 인터럽트 처리 절자
    * 인터럽트 요청
    * 프로그램 실행 중단: 현재 실행중이던 Operation 까지 수행
    * 현재 프로그램 상태 보전: PCB, PC
    * 인터럽트 처리루틴 실행: 인터럽트를 요청한 장치를 식별
    * 인터럽트 서비스루틴 실행
    * 상태복구: PCB, PC 통해서 복구
    * 중단된 프로그램 실행 재개: 이전에 수행중이던 프로그램을 재개
3. 인터럽트의 종류
    * 외부 인터럽트
    * 내부 인터럽트
    * 소프트웨어 인터럽트

1-4. PCB(Process Control Block)

1. PCB의 개념
    * 운영체제가 프로세스에 대한 정보를 기록한 테이블으로 Process 대신 Task나 Job을 사용하기도 한다
    * 각 프로세스가 생성, 제거 될때마다 고유의 PCB가 생성, 제거
2. PCB에 저장되어 있는 정보
    * 프로세스 고유번호
    * 현재상태
    * 포인터
    * 레지스터와 자원정보
    * 스케줄링 정보
    * 입출력 상태정보
    * 계정 정보
3. 문맥교환(Context Switching)
    * CPU가 할당되는 프로세스를 변경하기 위해 현재 실행되는 프로세스의 상태정보를 저장하고,
    * 이후 실행될 프로세스의 상태정보를 설정한 다음 CPU를 할당하여 실행하는 작업

1-5. IPC(Inter Process Communication)

1. IPC의 개념
    * 협력하는 프로세스들 사이에 서로 데이터를 주고받는 행위 또는 그에 대한 방법이나 경로를 뜻한다
    * 프로세스들의 자원공유, 속도향상, 모듈화, 편의성 증대에 활용
    * 메시지 교환(Message Passing)방식과 메모리 공유(Shared Memory)방식

1-6. 스레드(Thread)

1. 스레드의 개념
    * 프로세스 내에서의 작업단위로서 시스템의 여러자원을 할당받아 실행하는 프로그램 단위
    * 하나의 프로세스에 하나의 스레드가 존재하는 경우에는 단일스레드, 하나이상의 스레드가 존재하는 경우 다중스레드
    * 스레드 기반 시스템에서 스레드는 독립적인 스케줄링의 최소 단위로서 프로세스의 역할을 담당
    * 동일 프로세스 환경에서 서로 독립적인 다중 수행이 가능
2. 스레드 사용의 장점
    * 하나의 프로세스를 여러개의 스레드로 생성하여 병행성을 증진
    * 하드웨어, 운영체제의 성능과 응용 프로그램의 처리율을 향상시킬수 있다
    * 응용 프로그램의 응답시간을 단축
    * 실행환경을 공유시켜 기억장소의 낭비가 줄어든다
3. 스레드의 분류
    * 사용자 수준의 스레드
        - 사용자가 만든 라이브러리를 사용하여 스레드 운용
    * 커널 수준의 스레드
        - 운영체제의 커널에 의해 스레드를 운용
4. 멀티스레드 모델
    * 커널 레벨 스레드
        - 커널이 직접 생성하고 관리하는 스레드
    * 사용자 레벨 스레드
        - 라이브러리에 의해 구현된 일반적인 스레드
    * 멀티 레벨 스레드
        - 사용자 레벨 스레드와 커널 레벨 스레드를 혼합한 방식

2. 프로세스 스케줄링(Scheduling)

2-1. 프로세스 스케줄링의 개념

1. 프로세스 스케줄링의 정의
    * CPU를 사용하려고 하는 프로세스들 사이의 우선 순위를 관리
    * 장기, 중기, 단기 스케줄링이 있다
2. 프로세스 스케줄링의 원칙
    * 공정하게 배정되어야 하며 처리응답시간이 신속해야 한다
    * 단위 시간당 가능한 최대의 처리가 될수 있도록 해야한다
    * 응답 시간과 자원 활용간의 적절한 균형이 유지되도록 해야한다
    * 중요자원의 선점여부와 불안하지 않은 프로세스에 우선순위를 주어야 한다
3. 바람직한 프로세스 스케줄링 정책
    * CPU 이용률, 처리능력을 높일수 있도록 스케줄링
    * 대기시간, 응답시간, 반환시간을 줄일수 있도록 스케줄링

2-2. 비선점형(Non Preemption) 스케줄링

1. 비선점형 방식의 개념
    * 현재 실행중인 프로세스를 다른 프로세스가 강제적으로 중단시킬수 없는 방식
    * CPU를 사용하는 현재 프로세스가 종료되면 다른 프로세스에 CPU를 할당한다
    * 응답 시간의 예측이 용이하며, 일괄처리 시스템에 적당
    * FIFO, SJF, HRN
2. FIFO(First In First Out)
    * 프로세스가 도착한 순서대로 처리
3. SJF(Short Job First)
    * 실행시간이 가장 짧은 프로세스 순으로 처리
    * 실행시간이 긴 작업일 경우 무한대기 상태가 발생할수 있다
4. HRN(Highest Response-ratio Next)
    * FIFO와 SJF의 단점을 보완하여 개발된 방법
    * 대기시간이 긴 프로세스의 우선순위를 높여서 긴 작업과 짧은작업간의 지나친 불평등을 해소
    * HRN 우선순위 공식의 계산결과가 큰 작업에 높은 우선순위를 부여
    * 우선순위 = (실행시간) + (대기시간) / (실행시간)

2-3. 선점형(Preemption) 스케줄링

1. 선점형 방식의 개념
    * 현재 실행중인 프로세스를 다른 프로세스가 강제적으로 중단시킬수 있는 방식
    * 다른 프로세스가 현재 사용중인 프로세스를 중단시키고 CPU를 차지할수 있다
    * 빠른 응답시간을 필요로 하는 대화식, 시분할, 실시간 처리에 적당
    * RR, SRT, MFQ
2. RR(Round Robin)
    * 동일한 Time Slice를 사용하는 시분할 처리 시스템에 효과적으로 적용
3. SRT(Shortest Remaining Time)
    * 작업이 끝나지 않은 프로세스의 남아있는 실행시간이 가장작은 프로세스를 먼저 실행하는 방식
    * SJF 기법을 선점형태로 변경한 기법으로, 점유시간이 길어도 중요한 프로세스를 먼저 할당
4. MFQ(Multilevel Feedback Queue)
    * 짧은 작업이나 입출력 위주의 프로세스에 우선순위를 부여하기 위해 개발된 방식
    * 우선 순위가 있는 각 큐(대기리스트)가 있으며 큐마다 Time Slice가 존재
    * 낮은 큐일수록 Time Slice는 커지며, CPU 사용을 마친 프로세스는 낮은 큐로 이동

3. 상호배제(Mutex: Mutual eXclusion)

3-1. 임계구역

* 다중 프로그래밍 기법에서 둘 이상의 프로세스가 운영될때 서로 공유하게 되는 자원
* 프로세스 간의 통신에 필요한 매개변수의 역할로 임계구역을 사용할수도 있다
* 자원을 공유하는 각 프로세스는 배타적으로, 동시에 사용할수 없으며 특정 프로세스가 독점하게 해서도 안된다

3-2. 상호배제의 개념

* 하나의 프로세스만 임계구역을 사용할수 있도록 다른 프로세스의 접근을 차단하는것
* 상호배제를 위한 4가지 요구조건 충족
    - 두개 이상의 프로세스들이 동시에 임계구역에 있으면 안됨
    - 어떤 프로세스도 임계구역에 진입하는 것이 무한정 연기되면 안됨
    - 임계구역안에 있는 프로세스가 다른 프로세스의 임계구역 진입을 막을수 있어야 함
    - 프로세스들의 상대적인 속도에대한 어떠한 가정을 하면 안됨

3-3. 상호배제 알고리즘

1. 잠금
2. 인터럽트 봉쇄
3. 엄격한교대
4. 상호배재 알고리즘의 한계
    * 현재 사용중인 프로세스의 실행시간이 길다면 다른 프로세스는 임계구역을 사용하기 위해 계속해서 대기

3-4. 세마포어(Semaphore)

1. 세마포어의 개념
    * 임계구역을 지키기 위한 기존 상호배제 알고리즘이 바쁜 대기현상을 야기하는것을 방지하고자 개발된 알고리즘
    * 세마포어 알고리즘에서 사용되는 공유 자원의 수를 나타내는 변수를 세마포어 변수(S)라고 한다
2. 세마포어의 특징
    * 세마포어에 대한 연산은 소프트웨어 및 하드웨어로 구현되며 연산처리중에 인터럽트 되어서는 안된다
    * 이진 세마포어는 0과 1의 값을 가지고, 산술 세마포어는 0과 자연수를 가질수 있다
3. 모니터(Monitor)
    * 세마포어 알고리즘을 구현한 프로그램
    * 모니터는 프로세스들이 사용할수 있는 공유자원 혹은 자원그룹을 할당하는 사용
    * 데이터 및 프로시저를 포함하는 병행성 구조(Concurrent Construce)

4. 교착상태(DeadLock)

4-1. 교착상태의 개념

* 둘 이상의 프로세스가 실현 불가능한 상태를 무한정 기다리고 있는 상태
* 둘 이상의 프로세스가 하나의 자원을 서로 요구하는 상태

4-2. 교착상태가 발생할수 있는 필요충분조건

1. 상호배제(Mutual exclusion)
    * 한 리소스는 한번에 한 프로세스만이 사용
2. 점유와 대기(Hold and wait)
    * 어떤 프로세스가 하나이상의 리소스를 점유하고 있으면서 다른 프로세스가 가지고 있는 리소스를 기다린다
3. 비선점(No preemption)
    * 프로세스가 작업을 마친 후 리소스를 자발적으로 반환할때까지 기다린다
4. 환형대기(Circular wait)
    * 각 프로세스는 순환적으로 다음 프로세스가 요구하는 자원을 가진다

4-3. 교착상태 해결 방안

1. 예방(Prevention)
    * 상호배제부정
    * 비선점부정
    * 점유와 대기부정
    * 환형대기부정
2. 회피(Avoidance)
    * 안정적 상태를 유지할수 있는 프로세스의 요청만 받아들이는 방식으로 교착상태가 발생할 가능성을 회피
    * 대표적으로 은행원 알고리즘
        - 안전상태와 불안전상태로 구분
        - 자원의 양과 사용자의 수가 일정
        - 모든 요구를 유한한 시간안에 수용
        - 대화식 프로그램에는 적용 불가능
3. 발견(Detection)
    * 컴퓨터의 중단 원인이 교착상태인지 다른이유인지 파악하는 방법
    * 공유 자원과 프로세스의 관계를 인접행렬로 표현하여 파악
4. 회복(Recovery)
    * 교착상태가 발생한 프로세스중 희생양을 정하여 자원을 빼앗는 방식

참고자료 : 이기적 환상콤비 정보처리기사

728x90

'정보처리기사' 카테고리의 다른 글

회선공유기술  (0) 2022.07.14
정보처리기사 요약  (0) 2022.07.13
기억장치 관리  (0) 2022.07.13
운영체제  (0) 2022.07.11
Python 언어  (0) 2022.07.11