운영체제 개요

초보개발·2022년 2월 4일
0

OS

목록 보기
15/38

앞으로 KOCW 운영체제 반효경 교수님 이 수업을 들으면서 다시 정리하려고 한다. (+ 교재)

운영체제(Operating System, OS)


운영체제는 컴퓨터 하드웨어 바로 윗단에 설치되어 사용자 및 다른 소프트웨어와 하드웨어를 연결하는 소프트웨어이다.
운영체제의 전체가 메모리에 올라가지 않고 필요한 부분만 전원이 켜질 때 동시에 메모리에 적재되는데, 이때 메모리에 상주하는 운영체제의 부분을 커널(kernel)이라고 한다.

운영체제의 목적

  1. 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공한다.
    운영체제는 사용자와 프로그램들이 각각 독자적 컴퓨터에서 수행되는 것 처럼 보이도록 해주며 하드웨어를 직접적으로 다루는 복잡한 부분을 맡아서 처리
  2. 컴퓨터 시스템의 리소스를 효율적으로 관리한다.
    CPU, 메모리, I/O 디바이스 등을 효율적으로 관리 : 한정된 자원으로 최대 성능(효율성), 특정 사용자 및 프로그램에게 지나친 불이익이 발생하지 않도록 관리(형평성)
    사용자 및 운영체제 보호, 보안

운영체제의 자원 관리

자원은 하드웨어 자원과 소프트웨어 자원으로 나뉜다.

  • 하드웨어 자원: CPU, 메모리, I/O 디바이스

CPU는 일반적으로 한 대의 컴퓨터에 하나의 CPU가 존재하기 때문에, 여러 프로세스들이 CPU를 효율적으로 나누어 사용할 수 있도록 관리되어야 한다.
메모리도 한정된 용량안에서 사용할 수 있으므로 각각의 프로세스들이 나누어 사용할 수 있도록 관리해주어야 한다.
CPU와 메모리는 컴퓨터 전원이 꺼지면 정보가 모두 지워지므로 전원이 나가도 기억해야 하는 부분을 입출력 장치 중 한 종류인 보조기억장치(하드디스크)에 파일 형태로 저장하며 이러한 파일이 저장되는 방식, 접근 권한 등도 운영체제가 관리해야할 대상이 된다. 키보드, 모니터 등도 입출력 장치로 운영체제가 관리한다.

CPU 스케줄링

CPU를 가장 효율적으로 사용하면서 특정 프로세스가 불이익을 당하지 않도록 하는 것이 목표로, CPU 자원을 프로세스에게 할당하여 작업을 처리하도록 분배하는 것이다.

  • FCFS, Round Robin, 우선순위 기법 등
  1. FCFS: 먼저 CPU 사용을 요청한 프로세스부터 처리하는 방식
  2. Round Robin: CPU를 한번 할당받아 사용할 수 있는 시간을 일정하게 고정된 시간으로 제한(time quantum을 정함)
  3. 우선순위 기법: ready queue에서 CPU를 할당 받기를 기다리는 프로세스들 중에서 우선순위가 높은 프로세스에게 먼저 CPU를 할당하는 방식, 우선순위가 낮은 프로세스는 계속 CPU할당을 받지 못할 수 있으므로 Aging 기법을 사용

메모리 관리

메모리는 CPU가 직접 접근할 수 있는 컴퓨터 내부의 기억장치이다. 프로그램이 CPU에서 실행되려면 해당 부분이 메모리에 올라가 있어야 한다. 메모리 용량은 한정되어 있기 때문에, 여러 프로그램을 수용하려면 메모리에 대한 효율적인 관리가 필요하다.
운영체제는 메모리의 어느 부분이 어떤 프로그램에 의해 사용되고 있는지 파악해 이를 유지하게 되는데, 이러한 정보는 주소를 통해 관리된다. 따라서 운영체제는 각 프로세스가 자신의 메모리 영역에만 접근할 수 있도록 관리해야 한다.

  • 물리적 메모리를 관리하는 방식: 고정 분할(fixed partition) 방식, 가변 분할(variable partition) 방식과 가상메모리 방식
  1. 고정 분할 방식: 물리적 메모리를 몇 개의 분할로 미리 나누어 관리
    단점: 메모리에 동시 적재되는 최대 프로그램 수가 분할 개수로 한정되고, 분할 크기보다 더 큰 프로그램은 적재할 수 없어서 융통성이 없음(효율적이지 않음), 또한 분할 크기보다 더 작은 프로그램이 적재될 경우, 내부 단편화(internal fragmentation)이 발생하여 빈 공간이 비효율적으로 낭비

  2. 가변 분할 방식: 매 시점 프로그램의 크기에 맞게 메모리를 분할해서 사용하는 방식, 분할의 크기와 개수가 동적으로 변하므로 기술적인 관리 기법이 필요
    장점: 분할 크기로 인해 큰 프로그램의 실행이 제한되는 문제는 발생하지 않음
    단점: 물리적 메모리의 크기보다 큰 프로그램의 실행은 불가능, 프로그램에 할당되지는 않았으나 크기가 작아서 프로그램을 올리지 못하는 메모리 영역인 외부 단편화(external fragmentation) 문제 발생 가능

    크기가 100인 프로그램 A가 실행되어 메모리에서 100만큼 할당받았고, 그 다음 크기가 50인 프로그램 B가 메모리 공간 50만큼 할당받아 실행되고 있다. 프로그램 A가 작업이 완료되어 A의 영역에 크기가 80인 프로그램 C가 적재되었다. 여기에서 20만큼 빈 공간이 생기게 된다. 이어서 크기가 40인 프로그램 D가 메모리에 적재되려고 하는데, 저 공간은 프로그램의 크기보다 작기 때문에 사용할 수 없는 공간이 되었다. 결과적으로 외부 단편화도 낭비된 메모리 자원이라고 볼 수 있다.

  3. 가상 메모리: 가장 널리 사용되는 메모리 관리 기법, 물리적 메모리보다 더 큰 프로그램이 실행되는 것을 지원한다. 이 때 실행될 수 있는 프로그램의 크기는 가상메모리의 크기에 의해 결정된다.
    모든 프로그램들은 물리적 메모리와는 독립적으로 0번지부터 시작하는 자신만의 가상메모리 주소를 갖는다. 운영체제는 이 가상메모리의 주소를 물리적 메모리 주소로 mapping하는 기술을 이용해 주소를 변환시킨 후 프로그램을 물리적 메모리에 올리게 된다.

  • 물리적 메모리보다 더 큰 프로그램을 실행할 수 있는 이유: 프로그램의 전체의 모든 부분이 동시에 사용되지 않기 때문에, 현재 사용하는 부분만 메모리에 올리되 나머지는 하드디스크와 같은 보조기억장치에 저장해 두었다가 필요할 때 메모리에 적재하는 방식이기 때문에 가능하다.
    이때 사용하는 영역을 스왑영역(swap area)라고 부른다. 프로그램을 구성하는 가상메모리 주소 공간은 page라는 같은 크기의 작은 단위로 나뉘어 물리적 메모리와 스왑 영역에 일부분씩 저장된다. 이렇게 동일한 단위로 메모리를 나누는 기법을 페이징(Paging) 기법이라고 한다.

주변 장치와 I/O 장치

주변 장치와 입출력 장치는 CPU, 메모리와 다르게 인터럽트를 통해 관리가 이루어진다. 주변장치들은 CPU가 필요할 때 신호를 발생시켜 서비스를 요청하는데, 여기서 발생된 신호를 인터럽트라고 부른다.
CPU는 CPU 스케줄링에 따라 자기에게 주어진 작업을 수행하다가 인터럽트가 발생하면 하던 일을 잠시 멈추고 작업 상태를 저장해두고나서 인터럽트에 의한 요청 서비스를 처리한다.

  • 인터럽트를 발생시키는 경우: 사용자가 키보드의 글자를 입력하면 키보드는 CPU에 인터럽트를 발생시켜 사용자로부터 입력이 들어왔음을 알림, CPU는 하던 일을 멈추고 인터럽트 걸린 작업을 먼저 처리한다. 여기서 CPU는 키보드로 입력된 데이터를 해당 프로그램에게 전달해준다.
    주변장치들은 발생하는 일들을 관리해주는 컨트롤러를 각각 갖고 있다. 컨트롤러는 해당 장치에 대한 업무를 처리하고 CPU에게 인터럽트를 발생시켜 보고하는 역할을 담당한다.

0개의 댓글