2 minute read

프로세스의 개요

- 프로세스의 개념

    저장장치에 저장되어있는 정적인 상태의 프로그램을 실행을 위해 메모리에 올려놓은 동작인 상테

- 프로그램에서 프로세스의 전환

    운영체제는 프로그램을 메모리의 적당한 위치로 가져온 뒤 작업 지시서인 프로세스 제어 플록(Process Control Block, PCB) 를 만듦

    운영체제로부터 PCB 를 받았다는 의미

    - 프로세스 제어 블록

        프로세스를 처리하는데 필요한 다양한 정보

        운영체제가 해당 프로세스를 위해 관리하는 데이터 구조이기 때문에 운영체제 영역에 만들어짐

        프로세스가 종료되면 메모리에서 삭제되는 동시에 제어 블록도 폐기됨

    - 운영체제 프로세스

        운영체제도 프로세스 이기 때문에 프로세스 형태로 실행됨

        부트스트랩이 많은 운영체제 관련 프로세스 실행시킴

        컴퓨터에는 사용자 프로세스와 커널 프로세스가 섞여서 실행됨

- 프로세스의 상태

    운영체제에서 여러 이유로 프로세스 상태가 변화됨

    - 일괄 작업 시스템

        프로세스 생성 후 CPU 얻어 실행 후 작업 마치면 종료됨.

        생성, 실행, 완료 상태만 있음

    - 대화형(시분할) 시스템
        - 생성 상태

            프로그램이 메모리에 올라오고 운영체제로부터 PCB 를 할당한 상태

            생성된 프로세스는 바로 실행되지 않고 준비상태에서 기다리며 PCB 도 같이 준비 상태로 옮겨짐

        - 준비 상태

            실행 대기 중인 모든 프로세스가 자기 순서를 기다리는 상태

            PCB 는 준비 큐 에서 기다리며 CPU 스케줄러에 의해 관리됨

            다수의 준비 큐가 운영됨

        - 실행 상태

            프로세스가 CPU 를 할당받아 실행되는 상태

            실행 상태에 들어가는 프로세스는 CPU 의 개수 만큼

        - 완료 상태

            프로세스가 종료되는 상태

            사용하던 메모리를 삭제하고 PCB 폐기

            정상 종료는 exit() 처리

            비정상적으로 종료 시 코어 덤프

            - 코어 덤프

                프로세스가 비정상적으로 종료 시 디버깅하기 위해 강제 종료 직전의 메모리 상태를 저장장치로 옮기는 작업

        - 대기 상태

            우선순위 별로 따로 큐로 운영됨

            실행 상태에 있는 프로세스가 입출력 요청시 입출려깅 완료될 때 까지 기다리는 상태

            입출력 완료 시 인터럽트 발생하고 대기 상태에 있는 해당 프로세스의 인터럽트로 깨어날 프로세스를 찾아 준비상태로 옮김

            인터럽트는 입출력 외에도 있음

            - wakeup(PID)

                인터럽트의 프로세스를 찾아 PCB 를 준비상태로 이동시키는 것

        - 휴식 상태

            프로세스가 일시적으로 쉬는 상태

            메모리에 그대로 있고 PCB 도 유지됨

        - 보류 상태

            프로세스가 메모리에서 잠시 쫒겨난 상태

            여러 이유로 인해 보류 상태로 됨

            메모리 밖으로 쫓겨나 스왑 영역에 보관됨

            - 스왑 영역

                메모리에서 쫓겨난 데이터가 임시로 보관되는 곳

            - 보류 대기 상태

                대기 상태에서 옮겨진 보류

            - 보류 준비 상태

                준비 상태에서 보류된 상태

                입출력 완료 시 활성 상태가 아닌 보류 준비 상태로 옮겨짐

        - CPU 스케줄러

            PCB 를 관리함

            - dispatch

                큐에 있는 어떤 PCB 를 실행 상태로 보낼지 결정하는 작업

                프로세스 우선순위를 기준으로 작업함

            - 타임아웃

                실행 상태에 있는 프로세스는 자신에게 주어진 시간인 타음 슬라이스 동안만 작업 가능하며 그 시간 다 사용 시 timeout(PID) 가 실행됨

                작업 완료/미완료 시 exit(PID)/timeout(PID) 로 프로세스 종료/준비 상태로 옮김

            - block

                실행 상태에 있는 프로세스가 입출력 관리자에게 입출력 요청하고 block(PID) 실행