ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [운영체제] 3. Process Concept 프로세스 개념
    Computer Science/OS 2022. 9. 23. 02:54
    728x90

    목적

    프로세스 개념 소개

    프로세스 스케줄링, 생성, 종료, 통신

    클라이언트와 서버 간의 통신


    프로세스 개념 (Process Concept)

    OS는 다양한 종류 프로그램 실행.

    • 배치 시스템(batch system) - jobs(process)
    • 시분할 시스템(Time-shared system) - tasks

    프로세스(Process)란?

    • 실행 중인 프로그램
    • 운영체제의 작업 단위
    • 프로세스는 다음과 같은 메모리 공간 할당
      • text section - 실행가능한 프로그램 코드가 저장되는 공간
      • Data section - 전역변수가 저장되는 공간
      • Heap - 동적으로 할당되는 객체(변수) 저장되는 공간
      • 프로그램 카운터 (Program counter) - 다음번 주소 값 저장되는 PC를 프로세스를 가짐
      • 스택 (Stack) - 함수가 실행되는 동안 지역변수가 저장되는 임시 공간, 대표적으로 함수 매개변수, 리턴 주소, 지역 변수 등이 포함됨
    • 프로그램은 수동적(단순 디스크에 저장된 실행 가능한 파일)이다.
    • 프로세스는 프로그램을 디스크에서 가져와 메인 메모리에 적재하고 CPU는 메모리에서 프로그램을 인출(fetch)하여 실행한다.
    • 즉, 프로세스는 메모리에 적재된 프로그램이다.

    프로세스가 메모리에 적재될 때(Process in Memory)

     

    프로세스 상태 (Process State)

    프로세스는 프로그램 실행하면서 상태가 변함

    • New : 프로세스가 생성된 상태 (메모리 공간에 할당되는 순간)
    • Running : 프로세스가 수행되는 상태 (실행중인 상태)
    • Waiting : 프로세스 이벤트가 발생되어 입/출력 완료를 기다리는 상태 (대기상태)
    • Ready : 프로세스가 프로세서에 의해 실행되기를 기다리는 상태(언제라도 실행 가능)
    • Terminated : 프로세스 실행 종료 상태

    sheduler dispatch : Ready 상태의 여러 프로세스 중 하나를 골라 OS가 CPU에 할당하여 실행하는 것

     

    프로세스 제어 블록 (Process Control Block, PCB)

    운영체제에서 각각의 프로세스는 PCB로 표현된다. 즉, PCB는 프로세스에 관한 정보(상태)를 저장한 블록

    -> 운영체제가 유지, 관리

    • 프로세스 상태(Process State) : new, ready, running, waiting, terminated 상태 중 하나에 해당됨
    • 프로그램 카운터(Program Counter) : 메모리의 다음 명령어 주소를 저장함
    • CPU 레지스터(CPU registers) : IR(Instruction Register), DR(Data Register), PC(Program Counter)와 같은 저장공간이 포함됨
    • CPU 스케줄링 정보(CPU-scheduling information) : 프로세스 실행 순서를 정하는 정보
    • 메모리 관리 정보(Memory-management information)
    • 자원 사용량 정보(Accounting Information) : 프로세스의 실행, 시간제한, 실행 ID 등에 사용되는 CPU양의 정보
    • 입/출력 상태 정보(I/O status information)

    => 모든 프로세스의 상태들이 Process Control Block (PCB)에 저장된다.

     

    CPU Switch From Process to Process

    CPU는 한 프로세스만 실행 X.

    P0 실행하다가, 이벤트(인터럽트) 발생 시 제어권 OS가 가짐. -> 인터럽트 처리(프로세스 상태 PCB에 저장)

    -> 다음번 프로세스 실행.

    기존에 저장된 PCB1을 통해 현재 PC와 CPU 레지스터에 재적재 하여 프로세스 P1실행.

    -> 다시 P1 실행 종료 후, PCB1에 P1 상태 저장 -> PCB0으로부터 P0 다시 실행. 

     

    ** CPU가 다른 프로세스로 이동하여 실행 -> context switch : 문맥교환

     

    문맥 교환 (Context Switch)

    기존 프로세스 상태를 저장하고, 새롭게 실행하는 프로세스의 상태를 적재.

    (CPU가 일하다가 다른 프로세스로 전환하는 것)

    • CPU Core를 다른 프로세스에게 양도하는 
    • 현재 프로세스의 상태를 저장함
    • Context Switch 하게 되면 다른 Process Context를 복원함

     

    문맥 (Context) : 프로세스의 상태, 프로세스를 실행할 때 필요한 모든 정보. 즉, 마지막에 수행했던 명령어 위치.

    Context는 PCB에 저장된다.

    Context-Switch time : 생산적인 일을 하는 것은 아님. 단순 thread, 프로세스를 전환하는 일. 따라서 오버헤드 (overhead)이므로, 문맥 교환 (Context Switch)은 일찍 끝내는 것이 좋다. 문맥교환 시간은 HW 사양에 의존적이다.

     

     

     

    프로세스 스케줄링 큐 (Process Scheduling Queues)

    프로세스 관리 위해서 OS는 다양한 종류의 큐를 관리한다.

    • Job queue : 시스템에 있는 모든 프로세스를 저장
    • Ready queue : 실행 준비가 된 프로세스를 저장 (CPU를 기다리는 큐)
    • Device queues : 각종 IO장치를 기다리는 큐

    프로세스는 다양한 종류의 큐를 왔다 갔다 하면서 실행된다.

     

    스레드 (Treads)

    요즘 프로세스는 멀티 스레드로 구성, 각 스레드마다 PC(program counter)를 가진다.

    PCB에도 여러 프로그램 카운터를 저장할 공간이 있다. -> 한 프로세스에 속한 여러 스레드의 정보를 저장.

     

     

    Representation of Process Scheduling

    스케줄러 (Schedulers)

    Long-term scheduler (job scheduler)

    • 어떤 작업을 실행시킬지 디스크에서 선택
    • 비교적 느려도 괜찮다.
    • 멀티 프로그램의 정도를 제어한다.

    Short-term scheduler (CPU scheduler)

    • 메모리에 할당된 프로세스, 여러 ready queue의 작업 중 우선순위를 고려하여 CPU를 할당.
    • CPU스케줄러는 결정사항 처리가 매우 빨라야 한다. (자주 불려짐)

    프로세스의 특성

    • I/O-bound process
      • 입출력을 많이 하는 프로세스
      • 우선순위가 높다. (I/O 우선)
    • CPU-bound process
      • 우선순위 낮음

     

    Medium Term Scheduling

    Ready queue에 너무 많은 프로세스 존재할 때 (메모리 부족)

    -> Ready queue 작업을 디스크로 돌려보냄. (Swap out)

    -> 추후 다시 해당 작업을 메인 메모리로 재 할당 (Swap in)

    이러한 스케줄링 과정을 Medium Term Scheduler가 처리.

    * Medium Term Scheduler(MTS)는 멀티 프로그램의 정도를 제어해준다.

     

    프로세스 생성 (Process Creation)

      OS는 프로세스를 생성하는 시스템 콜 (System call)을 제공. 부모 프로세스가 자식 프로세스를 만들 수 있음. (트리구조)

    일반적으로 프로세스는 관리된다. 각 프로세스 Process identifier (PID) 정보로 구분

     

    프로세스 생성 시스템 콜 (UNIX)

    • fork() : 자식 프로세스가 부모 프로세스 그대로 복사해서 실행 (동일한 프로그램 복사)
    • exec() : 자식 프로세스가 새로운 프로그램을 적재하여 실행

    Solaris 운영체제의 프로세스 트리구조

    프로세스 간 통신 (Interprocess Communication, IPC)

      프로세스는 여러 프로세스가 독립적(Independent) 또는 협동(Cooperationg)하여 수행할 수 있다.

    협동 프로세스간 서로 영향을 주거나 받음. (상호 통신 필요.) 

     

    협동 프로세스의 협동 이유

    • 정보공유
    • 속도 향상 (계산속도)
    • 모듈화 프로그래밍으로 프로그래밍 용이
    • 편리함

     

    협동 프로세스간 통신이 필요 (interprocess communication, IPC)

    방법

    • 공유 메모리(Shared memory) - 편리, 속도 빠름
    • 메시지 패싱(Message passing) - OS(kernel)을 거치기 때문에 느리다

    Interprocess Communication - Shared Memory

    • 처음 공유 메모리 설정 시 OS 도움 없이 사용자 프로세스 간 정보 교환 가능.
    • 공유 변수에 접근할 때, 프로세스간 동기화 메커니즘 필요.
    • 공유 변수에 대한 배타적 접근이 허용되어야 한다. (특히, 공유 변수 업데이트될 경우)

    생산자-소비자 (Producer-Consumer Problem)

    생산자, 소비자 프로세스 간 통신 : 공유 메모리 사용 (변수를 공유)

     

    unbounded-buffer : 공유 저장 공간이 무한 (비현실적)

    bounded-buffer : 공유 저장 공간이 제한적

     

     

    Interprocess Communication - Message Passing

    메시지 패싱 사용 시, 프로세스 간 동기화, 작업의 선후관계를 명시

    • 공유 변수 없이 프로세스 통신 가능.
    • send(message) : 메시지 길이는 고정 또는 가변
    • receive(message)
    • 두 프로세스 P, Q 간 통신하려면, 먼저 연결이 확립되어야 한다. (통신 링크 확보)
    • 명령어를 통한 메시지 교환

     

    직접 통신 - 통신 상대방을 명확하게 밝힘

    • send(P, message) - 명시적으로 전송/수신할 프로세스 명시
    • receive(Q, message)

    간접 통신 - 메일박스를 통한 메시지 송수신

    • 메일박스는 유일한 ID 있음
    • 프로세스 간 메일박스 공유하면서 통신 가능
    • send(A, message)
    • receive(A, message)


    <중요 용어 정리>

    1. ____ - a program in execution that forms the basis of all computation.

      ___ - 모든 계산의 기초를 이루는 실행 중인 프로그램.

    => 프로세스 (process)

     

    2. A process inclouds the process ____ which contains temporary data such as function parameters, return addresses, and local variables. A process includeds a ___ section, which contains global variable.

      함수 매개 변수, 반환 주소 및 로컬 변수와 같은 임시 데이터를 포함하는 프로세스 ___를 포함하는 프로세스에 흐릅니다. 프로세스에는 전역 변수가 포함된 __ 섹션이 포함됩니다.

    => 스택 (Stack)

     

    3. A process is more than the program code, which is sometimes known as the ___ section.

      프로세스는 프로그램 코드 이상이며, __ 섹션이라고도 합니다.

    => text / (text section)

     

    4. A process may also include a ___, which is memory that is dynamic data allocated during process run time.

       프로세스에는 프로세스 실행 시간 동안 할당된 동적 데이터인 __가 포함될 수도 있습니다.

    => 힙 (heap)

     

    5. a process state ___ : instructions are being executed.

       프로세스 상태 __: 명령이 실행 중입니다.

    => running

     

    6. a process state ___ : the process is waiting for some event to occur. (for ex, IO completion)

    프로세스 상태 __ : 프로세스가 일부 이벤트가 발생하기를 기다리고 있습니다. (예: IO 완료)

    => waiting

     

    7. a process state ___ : the process is waiting to be assigned to a CPU.

       프로세스 상태 __: 프로세스가 CPU에 할당되기를 기다리고 있습니다.

    => ready

     

     

    728x90
    반응형

    댓글

Keydi's Tistory