매일을 설렘으로

[컴퓨터시스템] 프로세스 (반효경 수업) 본문

CS

[컴퓨터시스템] 프로세스 (반효경 수업)

하루설렘 2021. 12. 24. 16:08
Process is a program in excution


프로세스의 문맥(context)이란, 프로세스의 이력과 같은 것이다. 예를 들면, 내가 어떻게 살아왔는지에 대해서 이력을 명시해놓은 것이다. 문맥(context)가 필요한 이유는 CPU수행 상태를 나타내기 때문에 멀티프로세서로 구동하는 요즘 컴퓨터는 중요하다. 문맥은 Program counter/각종 register에 저장을 하고, 보통 프로세스의 주소 공간 code, data, stack

 

프로세스 관련 커널 자료구조

  • PCB (Process Control Block)
  • Kernel stack

 

 

 

프로세스의 상태 (Process state)



  • Running : CPU를 잡고 Instruction 수행중인 상태
  • Ready : CPU를 기다리는 상태 (메모리까지 할당되어있는경우)
  • Blocked(wait or sleep) 
    • CPU를 주어도 당장 Instruction을 수행 할 수 없는 상태
    • Process 자시이 요청한 event가 즉시 만족되지 않아 기다리는 상태
    • 예) 디스크에서 file을 읽어와야할 경우
  • Suspended (stopped)
    • 외부적인 이유로 프로세스의 수행이 정지된 상태
    • 프로세스는 통째로 디스크에 Swap out이 된다. 
    • 예) 사용자가 프로그램을 일시 정지시킨 경우 (Break key), 시스템이 여러 이유로 프로세스를 잠시 중단시킴. (보통 메모리에 너무 많은 프로세스가 올라와 있을때) => 중기 스케줄러
Blocker : 자신이 요청한 event가 만족되면 Ready
Suspended : 외부에서 resume해주어야 Active
  • New : 프로세스가 생성 중인 상태
  • Terminated : 수행(execution)이 끝난 상태

PCB (Process Control Block)

 

 

  • 운영체제가 각 프로세스를 관리하기 위해 프로세스당 유지하는 정보
  • 구성 요소는 구조체로 유지되고, 아래와 같다. 
  1. OS가 관리상 사용하는 정보
    • Process state, Process ID
    • scheduling information, priority
      • 보통 우선권있는 프로세스를 먼저 CPU제어권을 주는 방식을 취한다. (Priority)
  2. CPU 수행 관련하여 하드웨어값
    • Program counter, registers
  3. 메모리 관련
    • Code, data, stack의 위치 정보 
  4. 파일 관련
    • Open file descriptors

먼저 들어온 프로세스가 먼저 실행되는걸 Round robin방식이라고 한다. -> 맞는지 확인

 

 

 

 

문맥 교환 (context switch)
CPU를 한 프로세스에서 다른 프로세스로 넘겨주는 과정



CPU는 다른 프로세스로 넘어갈 때, 실행 중이던 프로세스의 문맥(context)을 프로세스별 PCB (메모리)에 저장하게 되고, 새롭게 얻은 프로세스의 상태를 PCB에서 읽어오게 된다. 

 

 

 

 

궁금한 점 
1. 위 (1)의 경우에도 일부의 context가 PCB에 저장이 된다?
2. (2) 의 경우, cahe memory flush를 해줘야해서 상당한 overhead가 든다?

 

 

 

큐에 대기중인 프로세스
프로세스 스케쥴링 큐의 모습

 

 

스케줄러 (Scheduler)
순서를 정해주는 역할을 한다.

 

 

  • Long-term scheduler (장기 스케줄러, jon scheduler)
    • 시작 프로세스 중 어떤 것들을 ready requeue로 보낼지 결정
    • degree of multiprogramming을 제어
  • Short-term scheduler (단기 스케줄러)
    • 다음번에 어떤 프로세스를 실행할지 결정
  • Medium-Term Scheduler (중기 스케줄러, Swapper)
    • 여유 공간 마련을 위해 프로세스를 통째로 메모리에서 디스크로 쫒아냄
    • 프로세스에게서 memory를 뺏는 문제
    • degree of multiprogramming을 제어

 

 

 

Thread (스레드)



Thread는 프로세스 하나에서 공유할 수 있는건 최대한 공유하고 (프로세스 상태도 동일, 

CPU수행관련만 다르다 PC, register, Stack) 

 

Thread의 구성

  • Program counter
  • register set
  • stack space

Thread 공유하는 부분(=task)

  • code section
  • data section
  • OS resources

장점

  • 다중 스레드로 구성된 태스크 구조에서는 하나의 서버 스레드가 blocked(waiting)상태인 동안에도 동일한 태스크 내의 다른 스레드가 실행되어 빠른 처리를 할 수 있다. (@네이버 웹페이지의 텍스트가 빨리 업로드된다. )
  • 동일한 일을 수행하는 다중 스레드가 협력하여 높은 처리율과 성능 향상을 얻을 수 있다. 
  • MP architectures 스레드를 사용하면 병렬성을 높일 수 있다. 
    • 서로 다른 CPU에서 실행되기 때문에 병렬성을 높일 수 있다. 

 

=> 커널이 알고있으면 Kernel Thread

=> 커널이 모르면 User Thread