Today
-
Total
-
  • 운영체제 - 3 (프로세스)
    OS 2019. 6. 26. 14:11

    프로세스 개념

     

    - 프로세스 : 현재 실행중인 프로그램 (메모리에 로딩된 형태)

    (리눅스의 경우 부팅시 약 80~120 / 윈도우의 경우 40개 정도 프로세스 실행됨)

     

     

    1. 프로세스 주소공간 주소

     

    - Heap : 필요에 의해 동적으로 메모리를 할당할 때 사용

    - Data : 전역 변수와 static 변수가 할당되는 지역

    - Stack : 프로그램이 자동으로 사용하는 임시 메모리 영역 - 잠시 사용되었다가 없어지는 메모리 저장

     

    * PCB : 운영체제가 프로세스에 대한 중요한 정보를 저장해 놓는 곳

     

     

    2. 프로세스 종류

     

    1) 시스템 프로세스

    : 시스템 운영에 필요한 작업을 실시하는 프로세스(부팅 시 자동 실행되는 프로세스들)

     

    2) 사용자 프로세스

    : 사용자가 실행하는 프로세스

     

    3) 병행 프로세스

    : 동시에 실행되는 프로세스 - 성능을 높이기 위해서는 프로세스를 동시에 실행시킬 필요가 있음

        (1) 독립 프로세스 : 다른 프로세스와 상관없이 독립적으로 실행됨

        (2) 협동 프로세스 : 어떠한 결과를 만들기 위해 A,B 두 프로세스가 협동해야만 할 때

     

    => 모든 프로세스가 독립 프로세스라면 높은 성능을 발휘하겠으나 현실적으로 힘듬

     

    3. 프로세스 상태

     

    1) 준비 상태

    : 준비 큐(Ready Queue)에 줄지어 있는 상태

     

    2) 실행 상태

    : 준비 상태에서 운영체제가 제일 앞에 있는 프로세스를 선택(Dispatch)되어 명령어가 실행되는 상태

     

    3) 대기 상태

    : 이벤트나 입출력 신호 발생을 기다리는 상태 -> 완료 시 다시 준비 상태로

     

    - 준비 -> 실행 -> 대기 상태가 반복되는 구조

    - 프로세스의 독점을 막기 위해 타임아웃(프로세스 당 일정한 시간만을 부여)을 사용하기도 한다.

     

    3. 프로세스 스케쥴링

     

    - Dispatch : OS에서 준비 큐에 줄지어 있는 프로세스를 선택하는 것

    - Dispatcher(Process Scheduler) : 이 프로세스를 선택하는 주체

     

    * 문맥 교환(Context Switch)

    : 멀티 프로세스 환경에서 인터럽트 요청에 의해 다음 우선순위의 프로세스가 실행되어야 할 때 현재 실행 중인 프로세스(Or 쓰레드)의 상태 값을 저장하고 CPU가 다음 프로세스를 실행하도록 새로운 프로세스의 상태 값을 교체하는 작업

     

    - 문맥교환이 잧을수록 성능은 저하된다

     

    4. 프로세스 관리

    : 프로세스 생성과 종료, 제거, 재시작, 보류, 깨움 ....etc

     

    1) 프로세스 생성

        (1) fork() 함수가 PCB를 메모리에 생성해준다.

        (2) Child Process가 생성되면 Parent에게 PID값을 넘긴다

        (3) Parent는 PID 값으로 Child를 구분함

     

    2) 프로세스 종료

    : 프로세스 종료 -> 프로세스 제거(PCB제거 및 자원회수)

        (1) 정상종료 : 프로그램의 정상적인 종료

        (2) 비정상종료 : Timeout, 입출력실패, 오류발생 등의 이유로 종료

     

    3) 프로세스 우선순위

    : Dispatcher가 프로세스를 선택할 때 우선순위를 보고 선택한다

     

     

     

    댓글