ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [운영체제] Process
    강의/운영체제-반효경 2024. 2. 17. 22:50
    반응형

    Process

    • 실행 중인 프로그램
    • Context (문맥) : 특정 시점에서 어디까지 수행을 했는가 → PC가 어디를, stack, data, code에 어디까지 실행했는가, Register에는 어떤 값이 저장되어 있었는가
      • CPU 수행 상태를 나타내는 하드웨어 문맥
        • Register, PC
      • 프로세스의 주소 공간
        • code, data, stack
      • 프로세스 관련 커널 자료 구조
        • PCB
        • Kernel stack : 여러 프로세스가 공유 → 프로세스마다 스택을 별도로 둠

    프로세스의 상태(state)

    • Running : CPU를 잡고 instruction 수행중
    • Ready : CPU를 기다리는 상태 (메모리에 올라와있어야함)
    • Blocked (wait, sleep)
      • CPU를 주어도 당장 instruction을 수행할 수 없는 상태
      • I/O
    • New : 프로세스가 생성중인 상태
    • Terminated : 수행이 끝난 상태 - 프로세스의 instruction이 모두 끝남

    Process Control Block (PCB)

    • OS가 관리상 사용하는 정보
      • Process state, Process ID
      • scheduling information, priority
    • CPU 수행 관련 하드웨어 값
      • Program Counter, registers
    • 메모리
      • Code, data, stack의 위치 정보
    • 파일 관련
      • Open file descriptor

    문맥 교환 (context switch)

    • CPU를 한 프로세스에서 다른 프로세스로 넘겨주는 과정
    • 넘길 때 PCB에 문맥을 저장해놓고 바꿈
    • 얻는 프로세스도 PCB에서 문맥을 읽어와 실행
    • System Call이나 Interrupt 발생시 반드시 context switch가 일어나는 것은 아님
      • 자기 코드 실행하다가 Interrupt 발생해서 kernel 모드 실행하다가 다시 자기 코드로 넘어가면 컨텍스트 스위치 안 일어남
      • 이 경우에도 CPU 문맥 정도는 저장됨 → 그러나 컨텍스트 스위치에 비해서는 훨씬 오버헤드가 적음 (eg. cache memory flush)

    프로세스 스케줄링하기 위한 큐

    • Job queue
      • 현재 시스템 내에 있는 모든 프로세스의 집합
    • ready queue
      • 현재 메모리 내에 있으면서 CPU를 잡아 실행되기를 기다리는 프로세스의 집합
    • device queue
      • I/O 디바이스의 처리를 기다리는 프로세스의 집합
    • 각 큐에 PCB들을 저장해놓음 - 포인터를 통해 연결되어있는 형태

    스케줄러 (Scheduler)

    • 장기 스케줄러 (job scheduler)
      • 시작 프로세스 중 어떤 것을 ready queue로 보낼 지
      • 프로세스에 메모리를 주는 문제
      • 멀티프로그래밍 : 메모리에 여러 프로그램을 돌리는 것
      • 멀티프로그래밍의 차수(degree)를 결정 - 몇개 올릴지
      • 타임 셰어링 시스템에서는 이 스케줄러가 없음 - 바로 ready로
    • 단기 스케줄러 (CPU 스케줄러)
      • 어떤 프로세스를 다음 번에 running 시킬지
      • 충분히 빨라야 함 (milllisecond)
    • 중기 스케줄러 (Swapper)
      • 프로세스를 통째로 메모리에서 디스크로 쫓아냄
      • degree of Multiprogramming 을 제어
      • 타임 셰어링에서 멀티프로그래밍의 차수를 제어하는 방법

    추가된 프로세스 상태 (중기 스케줄러가 적용될 시)

    • Suspended (stopped)
      • 외부적인 이유로 프로세스의 수행이 정지된 상태
      • 예 ) 메모리에 너무 많은 프로세스가 올라와 있을 때 시스템이 프로세스를 잠시 중단
      • 통째로 디스크에 swap out 된다.
      • ready 에서 suspend
      • blocked에서 suspend
      • 두가지 상태가 더 있음
      •  
      • blocked와의 차이
        • blocked : 자신이 요청한 이벤트가 끝나면 Ready로
        • suspended : 외부에서 resume해주어야 active로

    동기식 입출력과 비동기식 입출력

    • 동기식
      • I/O 요청 시 끝날 때까지 기다려야하는것
      • 구현 방법
        • I/O 끝날 때까지 CPU 낭비
        • I/O 완료될 때까지 해당 프로그램에서 CPU를 빼앗음
          • I/O 처리를 기다리는 줄에 그 프로그램을 줄세움
    • 비동기식
      • I/O 요청 시 기다리지 않고 바로 다음 instruction을 실행하는것

    Thread (lightweight process)

    • 프로세스 내부에 실행 단위
    • 프로그램 카운터, register 문맥, 스택만 여러개 - 실행 단위만 여러개 두는 것
    • 공유할 수 있는건 최대한 공유 (Task)
      • code, data, OS 리소스
    • 장점
      • 스레드 하나가 blocked인 상황에도 다른 스레드가 running 할 수 있음
      • 동일 작업을 수행하는 다중 스레드가 협력하여 높은 처리율(throughput)과 성능 향상
      • 병렬성을 높일 수 있음

    스레드의 장점

    • 응답성
      • 하나의 스레드가 블록되면, 다른 스레드가 continue함 → 응답성 높아짐
    • 자원 공유
      • process의 코드, 데이터, 리소스를 공유함
    • 경제성
      • creating, CPU switching 비용이 스레드가 더 쌈
    • MP 아키텍처 이용성 높임
      • 멀티 프로세서의 경우 각 스레드가 병렬적으로 다른 코어에서 돌 수 있음

    스레드 구현

    • 커널 지원 (kernel thread)
      • 커널이 스레드를 알고있음
    • 라이브러리 지원 (user thread)
      • 운영체제가 스레드 존재를 모름
      • 제약이 있을 수 있음
    • 리얼 타임 스레드
    반응형

    '강의 > 운영체제-반효경' 카테고리의 다른 글

    [운영체제] Memory Management  (0) 2024.02.17
    [운영체제] Deadlock  (1) 2024.02.17
    [운영체제] Process Synchronization  (0) 2024.02.17
    [운영체제] CPU Scheduling  (0) 2024.02.17
    [운영체제] Process Management  (0) 2024.02.17
Designed by Tistory.