TIL(2020.08.29)

Awesome·2020년 8월 29일
0

TIL

목록 보기
27/46
post-custom-banner

운영체제(Operating System)

개념

운영체제: 컴퓨터의 하드웨어를 효율적으로 관리하여 사용자 혹은 응용프로그램에 서비스를 제공하는 시스템

운영체제는 다음 두 가지로 구성되어 있다.

  • 커널(Kernel): os의 핵심 부분이며, 시스템 관리(processor, memory) 등 가장 비번하게 사용되는 기능들을 담당한다. 메모리에 항상 상주해 있어 관리자 혹은 상주 프로그램 등으로 불리기도 한다.
  • 유틸리티(Utility): os에서 커널을 제외한 부분을 유틸리티라고 하며, 비상주 프로그램이다.

위와 같이 kernel 위에 system calls 라고 하는 일종의 통로가 있으며, 그 위에 utility가 존재한다.

운영체제는 크게 다음과 같은 기능들을 한다.

  • Process Management
  • Processor Management
  • Memory Management
  • File Management
  • I/O(Input/Output) Management
  • Others(보조 기억 장치 및 기타 주변장치 관리 등)

프로세스

프로세스의 개념

Job vs Process

Job: 실행할 프로그램 + 데이터, 컴퓨터 시스템에 실행 요청 전의 상태
Process: 실행을 위해 커널에 등록된 작업, 시스템 성능 향상을 위해 커널에 의해 관리

프로세스: 실행 중인 프로그램

  • 커널에 등록되고 커널의 관리하에 있는 작업
  • 각종 자원들을 요청하고 할당 받을 수 있는 개체
  • 프로세스 관리 블록(PCB)을 할당 받은 개체
  • 능동적 개체(active entity)
    • 실행 중에 각종 자원을 요구, 할당, 반납하며 진행

자원(Resource)의 개념

  • 커널의 관리 하에 프로세스에게 할당/반납 되는 수동적 개체(passive entity)
  • 자원의 분류
    - H/W resource : Processor, memory, disk, Etc.
    - S/W resource : Message, File, Etc.

Process Control Block(PCB)

PCB: os가 프로세스 관리에 필요한 정보를 저장하는 공간, 프로세스 생성 시에 생성됨

PCB가 관리하는 정보

  • PID: Process Identification Number - 프로세스 고유 식별 번호
  • 스케줄링 정보 : 프로세스 우선 순위 등과 같은 스케줄링 관련 정보
  • 프로세스 상태 : 자원 할당, 요청 정보 등
  • 메모리 관리 정보 : Page table, segment table 등
  • 입출력 상태 정보 : 할당 받은 입출력 장치, 파일 등에 대한 정보
  • 문맥 저장 영역(context save area) : 프로세스의 레지스터 상태를 저장하는 공간 등
  • 계정 정보 : 자원 사용 시간 등을 관리

Process States

Created State

  • 작업(Job)을 커널에 등록

  • PCB 할당 및 프로세스 생성

  • 가용 메모리 공간 체크 및 프로세스 상태 전이(Ready or Suspended ready)

    Ready State

  • 프로세서(cpu) 외에 다른 모든 자원을 할당 받은 상태

    • 프로세서 할당 대기 상태
    • 즉시 실행 가능 상태
  • Dispatch(or Schedule)

    • Ready State -> Running state

Running State

  • 프로세서와 필요한 자원을 모두 할당 받은 상태(실행)
  • Preemption: 프로세서를 빼앗겨 Ready state로 되돌아 가는 것
    • 프로세서 스케줄링(e.g, time-out, priority changes) 원인
  • Block/sleep
    • Running state -> asleep state
    • I/O 등 자원 할당 요청(대기)

Blocked/Asleep State

  • 프로세서 외에 다른 자원을 기다리는 상태
    - 자원 할당은 System call에 의해 이루어짐
  • Wake-up: Asleep state -> ready state

Suspended State

  • 메모리를 할당 받지 못한(빼앗긴) 상태
    - Memory image를 swap device에 보관
    - Memory image : 현재 실행된 부분까지의 메모리를 저장한 이미지
    - Swap device: 프로그램 정보 저장을 위한 특별한 파일 시스템
    - 커널 또는 사용자에 의해 발생
  • Swap-out(suspended), Swap-in(resume)

Terminated/Zombie State

  • 프로세스 수행이 끝난 상태(잠시 들림)
  • 모든 자원 반납 후, 커널 내에 일부 PCB 정보만 남아 있는 상태
    - 이후 프로세스 관리를 위해 정보 수집
  • 커널이 PCB 정보 수집을 마친 후에 프로세스 삭제시킴

프로세스 상태에 대한 전체 상황별 다이어그램은 아래와 같다.

이를 표로 정리하면 아래와 같다.

프로세스 관리를 위한 자료 구조

인터럽트(Interrupt)

인터럽트: 예상치 못한, 외부에서 발생한 이벤트(Unexpected, external events)

인터럽트의 종류로는 I/O interrunpt(마우스 클릭 등), Clock interrupt, Console interrupt 등이 있다.

인터럽트 처리 과정

프로세서에 인터럽트가 발생하면, 커널이 개입하여 현재 진행 흐름을 PCB에 저장한다(context saving). 이후에 인터럽트의 원인을 파악하기 위한 interrupt handling 이 수행된다. 그리고 해결을 위한 interrupt service 가 프로세서에서 동작한다. 마지막으로 새로운 ready state 프로세스가 실행되거나 직전에 중단된 프로세스가 들어오면 이전 상태로 복구되어 이어서 일을 수행한다.

Context Switching (문맥 교환)

  • Context: 프로세스와 관련된 정보의 집합
    - CPU register context (in CPU)
    - Code & data, Stack, PCB (in main memory)
  • Context saving: 현재 프로세스의 Register context를 저장하는 작업
  • Context restoring: Register context를 프로세스로 복구하는 작업
  • Context switching(Process Switching): 실행 중인 프로세스의 context를 저장하고, 앞으로 실행할 프로세스의 context를 복구하는 일
    - 커널의 개입으로 이루어짐

Context switching에 소요되는 비용: OS의 성능에 큰 영향을 주며, 불필요한 Context switching을 줄이는 것이 중요함 -> 스레드(thread) 사용

profile
keep calm and carry on
post-custom-banner

0개의 댓글