[운영체제] 프로세스 개요

2022. 5. 5. 14:13·방통대 컴퓨터과학과/3학년1학기
반응형

 

프로세스

  • 프로세스 : 실행중인 프로그램
  • 프로그램이 실행되는 순간에 PID(process id) 부여 → 프로그램 이름으로 프로세스들을 구분하기는 어려움
  • 프로그램 : 동작을 하지 않는 정적 • 수동적인 개체
  • 프로그램을 실행시키려면 CPU, 메모리, 입출력장치, 파일 등의 자원을 할당받아 동작
  • 프로세스는 프로그램과 달리 동작을 하는 능동적인 개체로 봄
  • 스풀링과 같은 시스템 태스크도 각각 하나의 프로세스가 된다.
  • 프로세스의 동작은 CPU가 그 프로세스의 명령들을 실행하는 것
  • 운영체제는 실행할 준비가 된 프로세스들이 적절히 CPU를 배정받아 효율적으로 작업을 처리할 수 있도록 관리해야 함
  • 결론은 운영체제는 프로세스들을 생성시키고, 종료시키기 위한 작업들과 프로세스들을 실행시키기 위한 스케줄링 작업(CPU 할당)을 처리한다.
    각 프로세스의 상태를 관리하며, 필요한 경우 프로세스가 다른 상태로 전이되도록 처리
  • 사용자 및 시스템 프로세스가 존재한다.
반응형

프로세스의 상태 변화

  • 시스템에서 프로세스가 처리될 때, 프로세스는 생성, 준비, 실행, 대기 ,종료의 다섯 가지 중 하나의 상태에 있게 된다.
  • 처음 작업이 주어지면 생성상태에 두고 큐에 넣는다.
  • 일부 시스템에서는 작업 스풀러(job spooler or disk controller)가 작업의 특성에 맞는 큐를 생성하고 작업의 주요 특징을 적어 놓아 그 다음에 어느 프로세스를 처리해야 하는지를 결정하는 데 도움을 준다.
  • 생성 상태 : 준비상태, 실행 준비는 되었지만 CPU 할당을 기다리는 상태로 전이된다.
  • 실행 상태 : 프로세스가 처리되는 상태.
  • 대기 상태 : 단일 프로세서 시스템에서는 프로세스가 특정 자원을 할당받을 때까지 또는 I/O 작업이 끝날 때까지 작업이 보류되는 상태
  • 종료 상태 : 프로세스의 모든 처리가 완료되어 사용자에게 반환

생성 상태 → 준비 상태

  • 미리 정의된 정책에 따라 스케줄러에 의해 호출, 메모리의 이용 가능성과 어떤 장치가 요구되는지를 검사

준비 상태 → 실행 상태

  • 사전에 정의된 알고리즘(FCFS, SJF 등)에 따라 스케줄러에 의해 처리
  • 이 과정을 디스패치(dispatch)라고 한다.

실행 상태 → 준비 상태

  • 할당시간의 만료나 우선순위 알고리즘을 택한 시스템에서 높은 우선순위의 프로세스가 오는 경우 스케줄러에 의해 처리됨.

실행 상태 → 대기 상태

  • READ, WRITE 또는 다른 I/O 요구, 페이지 교환을 요구하는 작업 같은 명령 등에 의해 일어난다.
  • 위의 작업이 상대적으로 오랜 시간이 걸리기 때문에 그동안 CPU를 다른 프로세스에 할당하여 활용하기 위함

대기 상태 → 준비 상태

  • I/O 장치 관리자의 신호에 의해 일어남.
  • 페이지 교환의 경우는 페이지 인터럽트 핸들러가 메모리에 그 페이지가 있다는 신호를 보내고 프로세스는 준비 큐에 놓인다.

실행 상태 → 종료 상태

  • 프로세스를 성공적으로 끝마친 경우
  • 운영체제가 에러 발생을 감지하고 프로세스를 강제로 종료시킨 경우에 스케줄러에 의해 수행
반응형

프로세스 제어 블록

  • 프로세스의 관리를 위해 운영체제는 각 프로세스 제어 블록(Process Control Block, PCB)을 두고 여기에 해당하는 프로세스의 정보를 보관
  • PCB 내용은 프로세스가 진행함에 따라 변경도 되고, 프로세스가 종료되면 이 제어 블록도 없어지게 된다.
  • 프로세스 제어 블록의 주요한 항목
    • 프로세스 상태 : 프로세스의 현 상태
    • 프로세스 번호(PID) : 프로세스의 기준이 되는 ID
    • 프로그램 카운터(PC) : 프로세스 수행을 위한 다음 명령 주소 표시
    • 레지스터(register) : CPU의 레지스터에 해당하는 정보 포함. 이는 실행 → 다른 상태로 전이되는 경우 CPU의 레지스터 정보를 이곳에 저장시켜서 나중에 다시 실행 상태로 전이될 때 복구
    • 메모리 :  프로세스가 저장된 주소와 가상 메모리를 사용하는 경우에는 가상 주소와 실제 주소의 사상(mapping) 정보, 기준 레지스터(base register)와 경계 레지스터(bound register) 등의 정보 포함
    • 프로세스 우선순위 : 시스템에 의해 사용. 우선순위를 이용하여 스케줄링 시 어떤 작업을 선택할 것인가를 결정하는 데 필요한 정보를 포함
    • 회계 정보 : 주로 성능 측정과 순위에 대한 목적을 위한 정보
반응형

프로세스의 생성과 종료

프로세스 생성

  • 프로세스는 실행과정 동안 프로세스 생성 시스템 호출을 이용하여 여러 개의 프로세스 생성
  • 이 프로세스를 부모 프로세스, 생성된 새로운 프로세스는 자식 프로세스
  • 프로세스 생성
    • 프로세스 이름 결정(PID)
    • 프로세스 준비 삽입 큐에 적재
    • 프로세스 초기 우선순위 부여
    • 그 프로세스에 대한 제어 블록을 만듦
  • 새로운 프로세스는 fork() 시스템 호출에 의해 생성된다.
  • 일반적으로 프로세스는 작업을 수행하기 위해 지원이 필요하다.
  • 한 프로세스가 자식 프로세스를 생성하면 생성된 자식 프로세스는 운영체제로부터 직접 자원을 얻거나, 부모 프로세스 자원의 일부를 얻음
  • 자식 프로세스의 자원을 부모 프로세스의 자원으로 제한하는 이유는 너무 많은 서브 프로세스를 생성함으로써 시스템에 과부하가 걸리는 것으로 방지

프로세스 종료

  • 프로세스는 마지막 문장이 실행을 마쳤을 때 종료
  • 부모 프로세스에게 실행 결과를 되롤려줌
  • 프로세스가 종료될 때 exit()와 같은 적절한 시스템 호출을 통해 또 다른 프로세스의 종료를 야기할 수 있음. → 이런 시스템 호출은 단지 종료되는 프로세스 부모에 의해서만 호출될 수 있음
  • 부모 프로세스가 자식 프로세스 실행을 종료
    • 자식 프로세스가 할당된 자원의 사용을 초과할 때
    • 자식 프로세스에게 할당된 작업이 더 이상 필요치 않을때
  • 연속적 종료 : 어떤 프로세스가 종료된다면 그 자식 프로세스는 모두 종료되어야 함 → 보통 운영체제에 의해 실행된다.

프로세스 간의 관계

독립적 프로세스

  • 독립적 프로세스 : 시스템에서 실행 중인 다른 프로세스의 영향을 받지도 않고 주지도 않는 프로세스를 의미
  • 특징
    • 프로세스의 상태는 다른 프로세스와 공유되지 않는다.
    • 프로세스의 실행은 결정적이다. 즉, 실행 결과는 입력상태의 따라서만 결정
    • 프로세스의 실행은 재생 가능이다. 즉, 실행 결과는 같은 입력에 대하여 항상 동일
    • 프로세스의 실행은 타 프로세스와 무관하게 중단되거나 재시작 될 수 있다.

유기적 프로세스

  • 유기적 프로세스 : 시스템에서 실행중인 다른 프로세스의 영향을 주고받으며 동작하는 프로세스
  • 특징
    • 프로세스의 상태는 다른 프로세스와 공유된다.
    • 프로세스의 실행은 비결정적이다. 즉, 실행하는 결과는 실행순서에 좌우되기 때문에 미리 예측할 수 없음
    • 프로세스의 실행은 재생 불가능이다. 실행결과는 동일한 입력에 대하여 항상 동일하지는 않음. 
반응형

쓰레드

  • 일반적으로 다중 프로세싱 시스템에서 기본적인 처리단위는 프로세스라고 할 수 있음
  • 프로세스를 처리의 기본 단위로 하는 시스템의 경우 하나의 프로그램을 수행하기 위해 하나의 주소 공간(자원 소유의 단위)과 그 주소 공간 내에서 하나의 제어흐름(디스패칭의 단위)으로 구성되는 프로세스 사용
  • 프로세스의 실행단위가 되는 것은 하나의 프로세스 내에서 프로그램이 수행될 때 각각의 실행 단위 시간 안에 하나의 실행점(execution point)만이 존재함을 의미한다.
  • 단일 프로세스 내에서 동시처리, 즉 병렬처리가 불가능함
  • 쓰레드(thread)는 프로세스 내에서 다중처리를 위해 제안된 개념. 실행 단위를 프로세스에서 한 단계 낮추어 규정한 것
  • 자원 소유의 단위와 디스패칭의 단위는 대부분의 운영체제에서 이 두가지 특징은 프로세스의 본질로 다루어지나, 서로 독립적으로서 운영체제에 의해 별도로 취급될 수 있다.
  • 디스패칭의 단위 : 보통 쓰레드(thread) 또는 경량 프로세스(lightweight process)라 한다.
  • 자원 소유의 단위 : 프로세스 또는 작업이라한다.
  • 프로세스 내에는 하나의 쓰레드가 있을 수도 있고 여러 개의 쓰레드가 있을 수도 있다.
  • 쓰레드는 제어의 흐름을 의미하며 프로세스에서 실행의 개념만을 분리한 것으로 실행에 필요한 최소한의 정보만을 가지고 프로그램 수행 시 자신이 속해있는 프로세스의 실행 환경을 공유한다.
  • 하나의 쓰레드 내에서는 하나의 실행점만이 존재하고 각 쓰레드는 수행에 필요한 최소한의 정보만으로 구성된다.
  • 쓰레드도 프로세스와 마찬가지로 생성 → 준비 상태 → 실행 상태 → 대기 상태 → 종료 상태
  • 여러 개의 CPU가 있는 경우, 혹은 하나의  CPU에 여러 개의 코어가 있는 경우라면 다중 쓰레드를 병렬로 처리할 수 있다.
  • 처리 속도가 서로 다른 경우에 해당되는 작업을 전담하도록 되어 있는 경우라면 속도가 느린 작업 때문에 다른 작업들이 기다릴 필요 없이 효율적으로 처리가 가능하다.

동시다발적으로 사용 가능하다.

반응형

스케줄링

  • 여러 가지 작업들의 처리 순서를 결정 → 주어진 프로세스들이 여러 개인 경우 어떤 순서대로 CPU를 얼마 동안 배정하여 프로세스를 처리할지를 결정하는 스케줄링

스케줄링 단계

  • 상위 단계 스케줄링 : 시스템에 들어오는 작업들을 선택하여 프로세스를 생성 후 프로세스 준비 큐에 전달하는 역할. 선택 기준은 시스템 자원을 효율적으로 이용할 수 있도록 함, 보통 입출력(I/O) 중심 작업과 연산 중심 작업을 균형있게 선택하도록 작업 순서 결정
  • 하위 단계 스케줄링 : 사용 가능한 CPU를 준비상태의 어느 프로세스에 배당할지 결정. CPU를 배당받은 프로세스는 실행 상태가 되어 프로세스 처리.
    프로세스가 준비 상태에서 실행 상태로 바뀌는 것을 디스패치라 한다. → 하위 단계 스케줄링 수행 주체는 디스패처(dispatcher)이다. 이 스케줄링은 빈번하게 발생하므로 디스패처는 언제나 메모리에 상주해 있어야 함.
  • 중간 단계 스케줄링 : 프로세스를 일시적으로 메모리에서 제거하여 중지(suspending) 시키거나 다시 활성화(activating) 시켜서 시스템에 대한 단기적인 부하를 조절한다.

스케줄링 정책

  • 운영체제가 프로세스를 스케줄링할 때 고려하는 기본적인 목표 두 가지는 공정성과 균형이다.
  • 공정성 : 모든 프로세스가 적정 수준에서 CPU 작업을 할 수 있게 함
  • 균형 : 시스템의 자원들이 충분히 활용될 수 있게 하는 것
  • 일괄처리 운영체제는 처리량의 극대화, 반환시간의 최소화, CPU 활용의 극대화를 스케줄링의 목표로 할 수 있다.
  • 대화형 운영체제는 빠른 응답시간과 과다한 대기시간 방지를 스케줄링의 목표로 할 수 있다.
  • 실시간 운영체제는 처리 기한을 맞추는 것을 스케줄링의 목표로 할 수 있다.
  • 처리량(throughput) : 주어진 시간에 처리한 프로세스의 수
  • 반환 시간(turnaround time) : 프로세스 생성 시점부터 종료 시점까지의 소요시간
  • 응답 시간(response time) : 요청한 시점부터 반응이 시작되는 시점까지의 소요시간
  • 대기 시간(waiting time) : 프로세스가 종료될 때까지 준비 큐에서 기다리는 시간의 합

선점 스케줄링 정책

  • 진행 중인 작업에 인터럽트를 걸고 다른 작업에 CPU를 할당하는 스케줄링 전략
  • 쉽게 말해 사용중인 CPU를 다른 프로세스가 뺏어올 수 있다.
  • 선점 스케줄링 정책은 시간 할당 방식에서 주로 사용한다.
  • 높은 우선순위의 프로세스가 긴급한 경우에 유용하다. → CPU를 뺏어올 수 있으니
  • 실시간 시스템에서 인터럽트가 받아들여지지 않는 경우 결과는 예측할 수 없지만, 선점 스케줄링을 이용하면 필요한 프로세스가 CPU를 선점할 수 있기 때문에 예측이 가능하다.
  • 대화식 시분할 시스템에서도 선점 스케줄링은 빠른 응답시간을 유지하는데 필요하다.
  • 선점 방식은 경비가 들고 오버헤드를 초래할 수 있다.
  • CPU의 모든 레지스터와 기타 운영체제에 따라 요구되는 프로세스의 상태를 문맥(context)이라 한다.
  • 프로세스가 종료되지 않은 상태에서 CPU를 뺏어오려면 문맥 교환이 필요하다.
  • 문맥 교환(context switching)이란 CPU가 현재 실행하고 있는 프로세스의 문맥(상태)를 프로세스 제어 블록(PCB)에 저장하고, 다음 프로세스의 PCB로부터 문맥을 복원하는 작업이다.
  • 문맥 교환에도 일정 부분의 시간과 자원이 사용되기 때문에 문맥 교환에 따른 오버헤드를 고려해야 한다.

비선점 스케줄링 정책

  • 프로세스가 CPU를 할당받아 실행이 시작되면 프로세스 자체가 I/O 인터럽트를 걸거나 프로세스를 종료할 때까지 실행상태에 있게 된다. 즉 프로세스가 실행되면 CPU를 다른 프로세스가 뺏을 수 없다.
  • 예외적으로 무한 루프를 수행 중인 경우에는 선점이나 비선점에 관계없이 모두 인터럽트가 걸린다.
  • 모든 프로세스가 공정하게 순서에 따라 실행되도록 관리한다.
  • 우선순위에 관계없이 대기 중인 프로세스는 변동이 없으므로 응답시간의 예측이 가능하다.
  • 짧은 작업이 긴 작업을 기다리게 되는 경우가 발생할 수 있다.

 

반응형
저작자표시 비영리 변경금지 (새창열림)
'방통대 컴퓨터과학과/3학년1학기' 카테고리의 다른 글
  • [JAVA] JAVA 기본 문법
  • 데이터베이스 모델링
  • [Java] Java와 객체지향 프로그래밍
  • [C언어] C 언어의 정의
데부한
데부한
어차피 할 거면 긍정적으로 하고 싶은 개발자
    반응형
  • 데부한
    동동이개발바닥
    데부한
  • 전체
    오늘
    어제
    • 분류 전체보기 (307)
      • 방통대 컴퓨터과학과 (27)
        • 잡담 (9)
        • 3학년1학기 (17)
      • 프로젝트 및 컨퍼런스 회고 (1)
        • 프로젝트 (4)
        • 한이음 프로젝트 (0)
        • 회고 (3)
      • 공부 (165)
        • Spring (37)
        • JPA (71)
        • 인프런 워밍업 클럽_BE (10)
        • Java (6)
        • React.js (27)
        • 넥사크로 (11)
        • 기타 (3)
      • 알고리즘 (85)
        • 알고리즘 유형 (10)
        • 알고리즘 풀이 (57)
        • SQL 풀이 (18)
      • 에러 해결 (13)
      • 잡담 (7)
        • 국비교육 (2)
        • 구매후기 (5)
        • 진짜 잡담 (0)
  • 블로그 메뉴

    • Github
    • Linkedin
    • 홈
    • 방명록
    • 글쓰기
    • 관리
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    IT
    토이프로젝트
    프론트엔드
    QueryDSL
    기출문제
    Java
    개발자
    방통대
    전자정부프레임워크
    코딩테스트
    SpringBoot를 이용한 RESTful Web Service 개발
    넥사크로
    egov
    프로그래머스
    SQL
    운영체제
    MSA
    JPA
    Spring
    react
    인프런
    알고리즘
    RESTful
    oracle
    백준
    토비의스프링부트
    springboot
    스프링부트
    자바스크립트
    에러해결
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
데부한
[운영체제] 프로세스 개요
상단으로

티스토리툴바