[운영체제] 3. Process

  •  프로세스의 개념   img  
  • Process is a program in execution
  • 프로세스의 문맥(context)
    • CPU 수행 상태를 나타내는 하드웨어 문맥
      • Program Counter
      • 각종 register
    • 프로세스의 주소 공간
      • code, data, stack에 뭐가 들어있는지
    • 프로세스 관련 커널 자료 구조
      • PCB (Process Control Block)
      • Kernel stack
  • 프로세스의 상태
    • Running
      • CPU를 잡고 명령을 수행중인 상태
    • Ready
      • 기다리는 상태(메모리 등 다른 조건을 모두 만족)
    • Blocked(wait, sleep)
      • CPU를 줘도 당장 명령을 수행할 수 없는 상태
      • 프로세스 자신이 요청한 이벤트가 즉시 만족되지 않아 이를 기다리는 상태(예 : 디스크에서 파일 읽어와야 할 때)
    • Suspended (stopped)
      • 외부적인 이유로 수행이 정지된 상태
      • 프로세스는 통째로 디스크에 swap out 된다
      • 예 ) 사용자가 프로그램을 일시 정지 시킨 경우, 시스템이 여러이유로 프로세스를 중단시킨 경우(메모리가 모자라…)
      • cf)
        • Blocked : 자신이 요청한 이벤트가 만족되면 ready
        • Suspended : 외부에서 resume해줘야 active
    • New : 프로세스가 생성중인 상태
    • Terminated : 수행이 끝난 상태   img img img img

 

  • PCB
    • 운영체제가 각 프로세스를 관리하기 위해 프로세스당 유지하는 정보
      img  
      1. OS가 관리상 사용하는 정보
    • 프로세스 상태, 프로세스 아이디
    • 스케쥴링 정보, 우선순위
      1. CPU 수행 관련 하드웨어 값
    • PC, register
      1. 메모리 관련
    • code, data stack의 위치 정보
      1. 파일 관련
    • Open file desciriptor
       
  • 문맥 교환
    • CPU를 한 프로세스에서 다른 프로세스로 넘겨주는 과정
    • CPU가 다른 프로세스에게 넘어갈 때 운영체제는..
      • CPU를 내어주는 프로세스의 상태를 그 프로세스의 PCB에 저장
      • CPU를 얻게되는 프로세스의 상태를 PCB에서 읽어옴 img img    
    • 주의할 것 : 문맥교환은 CPU가 수행하는 프로세스가 교체되는거지, 사용자 모드<->커널모드를 얘기하는게 아님
  • 프로세스를 스케줄링하기 위한 큐
    • Job queue
      • 현재 시스템 내에 있는 모든 프로세스의 집합
    • Ready queue
      • 현재 메모리 내에 있으면서 CPU를 잡아서 실행되기를 기다리는 프로세스
    • Device queues
    • 프로세스들은 각 큐들을 오가며 수행된다   img img  

 

  • 스케줄러
    • 장기 스케줄러 (job scheduler)
      • 시작 프로세스 중 어떤 것들을 ready queue로 보낼지 결정(new -> ready)
      • 프로세스에 메모리를 주는 문제
      • degree of Multiprogramming을 제어(메모리에 올라간 프로그램의 정도를 컨트롤)
      • 시분할 시스템에서는 보통 없음(무조건 ready) - 중기스케줄러로 조정
    • 단기 스케줄러 (CPU scheduler)
      • 어떤 프로세스를 다음번에 running시킬지 결정
      • 프로세스에 CPU를 주는 문제
      • 충분히 빨라야함(ms 단위)
    • 중기 스케줄러 (Swapper)
      • 여유 공간 마련을 위해 프로세스를 통째로 메모리에서 디스크로 쫓아냄
      • 프로세스에게서 메모리를 뺏는 문제
      • degree of Multiprogramming을 제어
  • 스레드
    • CPU의 수행 단위   img

  * 같은 일을 하는 프로세스라면 중복으로 주소공간을 낭비하지 말고 pc만 여러개 있으면 됨   img

  * 스레드의 구성 : PC, 레지스터 셋, 스택공간
* 스레드가 동료 스레드와 공유하는 부분 = task
* code, data section, OS resources
* 전통적인 개념의 heavyweight process는 하나의 스레드를 가지고 있는 task로 볼 수 있다
* 다중 스레드로 구성된 테스크 구조에서는 하나가 블럭 당해도 다른 스레드가 running 되어 빠른 처리 가능
* 다중 스레드가 협력하여 높은 처리율(throughput)과 성능 향상을 얻을 수 있다
* 병렬성을 높인다 - CPU가 여러개인 경우

img

  • 스레드의 장점
    • 응답성 - 사용자 입장에서 빠르게 느낌
    • 리소스 공유 - 각종 자원을 스레드 간 공유
    • 경제성 - 프로세스 문맥교환 오버헤드 »» 스레드 문맥교환 오버헤드
    • CPU가 여러개 있는 경우 - 멀티프로세스 아키텍쳐 이용가능
  • 스레드 구현
    • 커널 스레드
      • 커널이 스레드를 인식하고 있음
      • 커널이 직접 스레드를 관리
    • 유저 스레드 (라이브러리에 의해)
      • 유저 프로그램 스스로 스레드를 관리(커널은 몰라요)

본 포스팅은 이화여대 반효경 교수님의 운영체제 강의를 기반으로 만들어졌습니다.

문제시 삭제하도록 하겠습니다.

Categories:

Updated:

Comments