운영체제란

운영체제의 개념

하드웨어의 각 장치를 관리하고 사용자가 켬퓨터를 편리하게 사용할 수 있는 환경을 제공

운영체제의 기능

핵심은 컴퓨터 시스템 자원을 관리한다는 것
컴퓨터는 CPU, 주기억장치, 보조기억장치, 입출력장치 등 많은 자원들로 구성되어 있고, 운영제체는 이를 효율적으로 작동하도록 관리한다.

프로세스 관리

프로세스란 실행되기 위해 올라간 프로그램을 의미.

PCB(process control block)

프로세스에 대한 정보를 저장하는 장소

  1. 프로세스 상태 : 실행, 준비 등의 상태
  2. 주소 레지스터 값 : CPU에서 처리할 주기억장치의 다음 명령어 주소
  3. 스케줄링 정보 : 다음에 실행될 프로세스를 결정하는데 필요한 정보
  4. 주기억장치 정보 : 프로세스가 주기억장치의 어느 영역에 위치하는지에 대한 정보

프로세스의 상태

준비큐란?
프로세스가 생성되는 시점에 프로세스의 PCB가 저장되는 공간. 프로세스가 실행되는 시점은 운영체제의 스케줄링 전략에 따라 다르다.

실행상태란?
중앙처리장치의 레지스터에 프로세스의 PCB의 정보가 저장된 상태를 말한다.

Context Switch?
A프로세스에서 B프로세스로 실행이 전환될 때 A프로세스의 정보를 B의 PCB에 저장하고 B프로세스의 PCB정보를 중앙처리장치의 레지스터에 저장하는데 이를 Context Switch라 한다. 자주 일어나면 중앙처리장치의 효율이 떨어진다.

프로세스 스케쥴링

1.FCFS(First Come First Served)
준비큐에 먼저 생성된 프로세스 순서로 프로세스를 실행하는 것. 프로세스 실행시간에 따라 최악의 대기시간이 발생할 수 있다.

2.라운드 로빈
여러 프로세스들이 중앙처리장치를 조금씩 돌아가며 사용하는 방식
시간할당량에 따라 프로세스들이 전환된다. 대부분의 시스템이 이 방식을 사용

3.우선순위
프로세스의 우선순위에 따라 프로세스 실행순서가 결정. 우선순위가 낮으면 대기시간이 오래걸린다는 단점이 있다. 이에 에이징 기법을 도입해 일정시간 동안 한번도 실행되지 않았다면 해당 프로세스의 우선순위를 조정해 실행되게 한다.

주기억장치 관리

가상메모리

실행해야하는 프로그램의 크기가 주기억장치보다 크다면 해당 프로그램은 실행 불가능하다. 주기억장치는 가격이 비싸기 떄문에 용량을 쉽게 늘리기도 어렵다. 이 때문에 가상메모리라는 방식이 등장하게 됐다.

핵심 개념은 프로그램에서 실행에 필요한 부분만 주기억장치에 할당하고 불필요한 부분은 보조기억장치에 그대로 두고 사용하는 방식이다.

Demand paging

프로그램을 페이지 단위로 나누어 실행에 필요한 페이지를 물리 메모리에 할당하는 방식. 각 페이지에는 논리적 주소가 할당되어 있다. 운영체제는 페이지 테이블을 관리하고 실행시점에 논리주소가 페이지테이블을 통해 물리주소로 변환된다.

  • 동작원리
    1. CPU에서 물리메모리에 없는 페이지를 참조하는 명령을 내린다.
    2. OS는 페이지 테이블에서 해당 페이지가 참조 가능한지 조회한다.
    3. 없다면 Interrupt를 발생시킨다.
    4. DISK에서 해당 페이지를 찾아 물리메모리의 빈 곳을 찾아 할당한다.
    5. 페이지 테이블을 갱신한다.
    6. 다시 CPU에 명령을 실행하라고 명령한다.

페이지 교체 알고리즘

  1. FIFO
    1. 가장 먼저 물리 메모리에 할당된 페이지를 삭제
  2. LRU(Least Recently Used)
    1. 가장 오랫동안 사용하지 않은 페이지를 삭제
  3. LFU(Least Frequently Used)
    1. 가장 적게 사용된 페이지를 삭제