Home [컴퓨터과학 개론] 7강 - 운영 체제
Post
Cancel

[컴퓨터과학 개론] 7강 - 운영 체제

💡해당 게시글은 방송통신대학교 이관용, 정광식 교수님의 '컴퓨터과학 개론' 강의를 개인 공부 목적으로 메모하였습니다.



학습 개요


  • 운영 체제의 역할과 관리 대상이 되는 컴퓨터 자원에 대해서 공부함
  • 컴퓨터의 주 기억 장치를 관리하기 위한 다양한 기법을 공부하고, 운영 체제를 통해 컴퓨터 하드웨어와 소프트웨어 간의 기능적 융합에 대해서 살펴봄
  • 가상 기억 장치의 효용성과 개념을 주의해서 학습함



학습 목표


  • 운영 체제의 개념과 기능에 대해서 이해할 수 있음
  • 주 기억 장치가 프로그램의 실행에 필요한 이유와 운영 체제의 주 기억 장치 관리 방법에 대해서 이해할 수 있음
  • 운영 체제의 가상 기억 장치 관리를 이해할 수 있음



강의록


운영 체제의 개념

운영 체제의 개요

  • 개념
    • 컴퓨터 하드웨어응용 프로그램(프로그래머) 혹은 컴퓨터 사용자 사이의 인터페이스를 제공하는 시스템 소프트웨어
    • 사용자 측면에서는 하드웨어에 대한 지식이 없어도 하드웨어에 접근하고 사용할 수 있는 하드웨어 사용의 편리성을 제공함
    • 시스템 측면(개발자 측면)에서는 제한적인 컴퓨터 자원을 효율적으로 사용하기 위한 컴퓨터 자원 관리의 효율성을 제공함

컴퓨터 시스템과 운영 체제와의 관계

  • 컴퓨터 시스템은 일반적으로 하드웨어(H/W), 운영 체제, 응용 프로그램, 사용자 프로그램의 계층적 구조로 이루어짐

    image

운영 체제의 네 가지 서비스 시스템

  • 운영 체제는 프로세서 관리자, 주 기억 장치 관리자, 파일 관리자, 장치 관리자로 구성되어 서로 상호 작용하며 시스템 자원을 관리함

    image

    image

운영 체제 역할

  • 역할
    • 관리 대상인 자원의 범주에 따라 다음의 역할을 수행함
      • 프로세서 관리자
      • 주 기억 장치 관리자
      • 장치 관리자
      • 파일 관리자
  • 프로세서 관리자의 역할
    • 프로세스에게 프로세서(중앙 처리 장치-CPU)를 할당함
    • 프로세스를 위한 중앙 처리 장치의 할당과 관리를 담당하고, 이를 위해 각 프로세스의 상태를 모니터링
    • 프로세스에게 중앙 처리 장치의 할당이 필요한 경우를 찾아내고 효율적인 관리를 위해 프로세스의 실행 상태를 변화 시키기도 함
  • 주 기억 장치 관리자의 역할
    • 프로세스에게 주 기억 장치를 할당하고 프로세스로부터 할당된 주 기억 장치를 회수함
    • 제한된 주 기억 장치를 여러 프로세스가 나누어 사용하기 위해 효율적인 주 기억 장치의 관리가 필요함
    • 주 기억 장치 관리자도 주 기억 장치를 할당 받고 상주 하면서, 주 기억 장치 관리자에 의해서 보호되고 관리됨
  • 장치 관리자의 역할
    • 시스템 개발자에 의해 구현된 운영 체제의 스케줄링 기법에 따라 비디오 디스플레이, 키보드, 프린터, 디스크 드라이브와 같은 시스템의 모든 장치를 가장 효율적으로 관리하고 동작 시킴
    • 프로세스에게 할당된 장치를 반환하여 다른 프로세스가 사용할 수 있도록 함
  • 파일 관리자의 역할
    • 컴파일러, 인터프리터와 같은 시스템 프로그램과 각종 응용 프로그램, 그리고 데이터 파일 등의 모든 파일에 대한 읽기와 쓰기 동작을 관리
    • 파일에 대한 프로세스의 접근을 관리하여 데이터 보호를 보장함
    • 파일을 위한 컴퓨터 자원의 할당과 회수 등을 수행함

운영 체제의 작업 처리 방식

작업 처리 방식

  • 일괄 처리 시스템
  • 다중 프로그래밍 시스템
  • 시분할 처리 시스템

일괄 처리 시스템

  • 개념 (batch processing system)
    • 작업 간 전환을 줄여 컴퓨터 시스템을 최대한 활용하기 위하여 일괄 처리 방식이 등장함
    • 일괄 처리 시스템은 처리할 작업이 발생할 때마다 즉각적으로 처리하지 않고 처리 해야 할 작업이 일정량에 도달할 때까지 여러 작업을 모아 놓음
      • 모아져 있는 작업을 한꺼번에 처리하는 방식
      • 예를 들면, 빨래가 생길 때마다 세탁기에 넣고 돌리는 것이 아니라, 일정량이 되면 한꺼번에 세탁기에 넣고 돌리는 것과 비슷하다고 생각할 수 있음
    • 컴퓨터 시스템 사용의 효율성은 높일 수 있었으나 작업의 결과를 빠르게 확인할 수 없는 단점이 존재함
    • 일정량의 작업이 모아질 때까지 기다려야 하고, 정해진 시기 이후에만 모아진 작업의 처리가 가능함

다중 프로그래밍 시스템

  • 개념 (multiprogramming system)
    • 여러 개의 프로그램을 효율적으로 실행 시키기 위해 컴퓨터의 여러 자원을 관리함
    • CPU를 사용하고 있는 작업 A가 CPU의 사용을 멈추고 입출력 장치를 사용하게 되면, 아무도 사용하지 않는 CPU를 다른 작업 B에게 할당함
    • 작업 A가 CPU 사용을 멈추고 입출력 자원을 사용하면, 그 동안에 CPU는 다른 작업에게 할당될 수 있으며 효율적인 컴퓨터 자원의 활용이 가능함
    • 입출력 장치의 사용을 완료한 작업 A가 다시 CPU를 요청하면, CPU를 사용하고 있는 다른 작업이 입출력 장치를 사용해서 CPU가 사용되지 않을 때 작업 A에게 CPU가 할당됨
    • 여러 개의 프로그램들이 컴퓨터 자원이 쉬는 시간에 서로 양보하며 사용하는 방식을 이용하여 작업들을 처리할 수 있다면 컴퓨터 자원의 사용을 최적화 시킬 수 있음
    • 기본적으로 처리 속도가 느린 입출력 장치와 처리 속도가 빠른 CPU의 속도 차이를 이용하여 컴퓨터 자원의 활용도와 처리 능력을 증대 시킴
    • 주 기억 장치에 여러 개의 작업(프로그램)이 동시에 존재하면서 주변 장치(입출력 장치, 네트워크 장치 등)가 사용되는 동안 CPU가 다른 작업에 할당되는 개념으로 1960년 중반에 등장함

시 분할 처리 시스템

  • 개념(time-sharing processing system)
    • 대화식 작업에서 사용자와 컴퓨터는 네트워크를 통해 상호 작용을 하므로 컴퓨터가 사용자의 요구를 빠르게 처리해줘야 함
    • 동시적인 대화식 사용자의 다중 프로그래밍을 위해서 개발된 것이 바로 시 분할 처리 시스템임
    • CPU의 시간을 일정 간격의 작은 시간으로 쪼개서 각 사용자에게 시간 간격이 할당되고, 그동안 직접 컴퓨터와 대화식으로 작업을 수행할 수 있도록 개발됨
    • 많은 사용자들이 동시에 컴퓨터를 공유하면서도 각 사용자들은 자기 혼자 컴퓨터를 사용하고 있는 것과 같은 서비스를 받게 됨
    • 기억 장치 관리, 디스크 스케줄링, 실행 중인 작업 간의 통신, 입출력 장치의 사용에 대한 제어 및 관리 등의 복잡한 기능들이 요구되고, 이에 따라 운영 체제는 점점 복잡해짐
    • 컴퓨터 자원의 효율성은 더욱 높아지고 컴퓨터 사용에 대한 만족도는 높아지게 됨

정리 문제

  • CPU의 시간을 일정 간격의 작은 시간으로 쪼개서 각 사용자에게 시간 간격이 할당되고, 그동안 직접 컴퓨터와 대화식으로 작업을 수행하는 방식을 무엇이라 하는가?
    • 시 분할 처리 시스템

기억 장치의 구성

기억 장치의 계층 구조

  • 개념
    • 컴퓨터 시스템에서 사용되는 기억 장치는 접근 속도, 비용 및 장치의 용량에 따라 계층적으로 구성됨
      • 레지스터
      • 캐시
      • 주 기억 장치
      • 보조 기억 장치

      image

      image

    • CPU의 처리 속도는 저장 장치에 비해서 엄청나게 빠르므로 CPU가 사용하려는 프로그램 코드와 데이터는 CPU 레지스터나 캐시 기억 장치에 있어야 함
    • 레지스터나 캐시 기억 장치의 용량의 한계로 인해 주 기억 장치에도 저장된 프로그램 코드나 데이터에 접근할 수 밖에 없음
    • 프로그램이나 데이터의 크기는 일반적으로 주 기억 장치보다 크기 때문에 당장 필요하지 않은 프로그램 코드나 데이터는 사용될 때까지 보조 기억 장치에 저장해 놓고, 이에 대한 실행이나 참조가 발생하는 시점에 주 기억 장치로 이동
    • CPU와 주 기억 장치 사이의 속도 차이로 인한 지연 문제를 방지하기 위해서 CPU와 주 기억 장치 사이에 주 기억 장치보다 빠른 속도의 기억 장치인 캐시를 이용함
    • CPU가 어떤 프로그램 코드나 데이터가 필요한 경우, 느린 속도의 주 기억 장치에 접근해서 필요한 것을 검색하는 것이 아니라 우선적으로 빠른 속도의 캐시를 검색함
    • 만일 캐시 기억 장치에 원하는 프로그램 코드나 데이터가 있다면 즉시 사용할 수 있음
    • 캐시 기억 장치에 원하는 내용이 존재하지 않는 경우에는 주 기억 장치를 검색해서 CPU로 가져가서 처리하고, 그 프로그램 코드나 데이터를 차후의 사용을 위해 캐시 기억 장치에도 복사함
    • CPU 내에는 여러 레지스터가 존재하며, CPU에 직접 내장되어 있기 때문에 기억 장치 중에서 가장 빠른 처리 속도를 제공함
    • CPU에서 데이터나 프로그램 코드를 사용할 때는 레지스터에 프로그램 코드나 데이터를 저장하고, CPU 연산을 처리함

주 기억 장치의 할당

단일 사용자 연속 기억 장치 할당

  • 개념
    • 하나의 사용자 프로그램만이 전체 주 기억 장치에 할당 되는 방식임
    • 실행 될 프로그램이 주 기억 장치의 용량을 초과하면 실행할 수 없음
    • 단순하여 구현하기가 쉽지만 큰 프로그램을 수행할 수 없음
  • 문제점
    • 하나의 프로그램이 모든 기억 장치, 주변 장치 및 CPU 등을 할당 받아 사용하기 때문에 유휴 자원에 대한 낭비가 심하고, 하나의 프로그램을 실행시키는 동안 다른 프로그램들은 기다려야 하므로 대기 시간이 길어짐
    • 주 기억 장치의 크기보다 큰 프로그램을 실행할 수 없음
    • 큰 프로그램을 수행하기 위해서 오버레이 기법이 제시됨
  • 오버레이 기법

    image

    • 주 기억 장치의 이용 가능 영역보다 큰 프로그램작은 네 프로그램으로 쪼갬
    • 사용자 프로그램은 네 부분으로 이루어짐
      • 실행 기간 동안 주 기억 장치 내에 있어야 하는 프로그램 코드와 데이터
      • 초기화 단계를 수행하는 프로그램 코드
      • 처리 단계를 수행하는 프로그램 코드
      • 출력 단계를 수행하는 프로그램 코드
    • 네 부분의 프로그램은 필요한 시기엔 주 기억 장치에 번갈아 적재하며 실행되며, 주 기억 장치의 이용 가능 영역보다 큰 프로그램도 실행할 수 있게 됨

고정 분할 다중 프로그래밍 기법

  • 개념
    • 단일 사용자 연속 기억 장치 할당 기법이 한 번에 하나의 프로그램만 실행시킬 수 있는 문제점을 보완하기 위해 개발됨
    • 다중 프로그래밍 시스템(여러 개의 프로그램이 실행되는 시스템)에서 주 기억 장치를 여러 개의 고정된 크기의 영역으로 분할하고, 실행 중인 여러 개의 프로세스에게 각각 할당하는 기법임
    • 주 기억 장치 내부에는 여러 개의 프로그램(프로세스)들이 공존하기 때문에 한 작업이 입출력을 요구할 때, CPU는 다른 프로그램에게 할당되어 연산을 처리할 수 있음

    image

  • 단편화
    • 메모리에 여러 프로그램들이 상주 해야 하므로 분할 영역들 간에 잘못된 참조를 방지하기 위한 메모리 보호가 필요하고 사용자 프로그램이 분할 영역에 정확히 맞지 않아서 단편화(fragmentation)가 발생할 수 있음

    image

  • 단편화의 예
    • 100MB 크기의 공간(주 기억 장치)에 95MB 크기만큼 공간을 차지하는 작업이 실행된다면 나머지 5MB 크기의 공간은 낭비가 된다고 볼 수 있음
    • 반대로 100MB 크기의 공간(주 기억 장치)에 5MB 크기의 작업이 실행된다면 95MB 크기만큼 공간이 낭비되는 일이 발생함
    • 100MB 크기의 고정된 크기로만 메모리를 분할하였기 때문에 낭비 공간이 발생함
    • 분할 된 영역들마다 낭비 공간이 발생할 수 있기 때문에 많은 공간이 낭비될 수 있음

동적 분할 프로그래밍 기법

  • 개념
    • 고정 분할 다중 프로그래밍 기법의 단편화 문제를 해결하기 위해 개발됨
    • 프로그램이 주 기억 장치에 적재될 때마다 모든 작업이 필요로 하는 크기(고정된 크기가 아니라 다양한 크기)만큼 연속된 공간을 할당해주는 기법
    • 처음에는 필요한 크기의 주 기억 장치 분할에 의한 할당이 가능하기 때문에 단편화가 발생하지 않음

      image

  • 외부 단편화
    • 시간이 지남에 따라 외부 단편화(영역의 크기가 너무 작아서 어떤 작업에도 할당되지 못하고 비어 있는 상태)가 발생함
  • 외부 단편화 예
    • 전체가 100MB인 공간에 50MB, 30MB, 10MB, 7MB 크기의 작업을 할당하면, 3MB 만큼의 공간이 남으며 남은 모든 작업의 크기가 5MB이상일 경우 3MB는 낭비 공간이 되어 버림

      image

  • 통합(coalescing)
    • 인접 된 공백을 합쳐서 더 큰 하나의 공백으로 만드는 방법

      image

  • 집약(compaction)
    • 주 기억 장치 내의 흩어진 모든 공백을 하나로 모아서 하나의 커다란 저장 공간을 만드는 방법

      image

가상 기억 장치

  • 개요
    • 주 기억 장치에서 이용 가능한 영역보다 큰 프로그램을 작은 단위로 쪼개어 실행 시키기 위해 보조 기억 장치의 주소를 주 기억 장치의 주소로 변환하여 프로그램에게 제공되는 가상의 기억 장치를 말함
    • 보조 기억 장치의 주소를 주 기억 장치의 주소로 변환하는 기법
    • 가상 기억 장치에서 가장 중요한 부분은 실행 중인 프로그램(프로세스)에 의해 참조되는 주소(가상 주소)를 변환하여 주 기억 장치에서 사용하는 주소(실 주소, 물리적 주소)로 연결 시켜주는 것임
    • 실행 중인 프로그램(프로세스)이 주 기억 장치에서 데이터를 접근하기 위해 가상 주소를 참조하지만, 프로세스는 실제로 실 기억 장치에서 실행되어야 하므로 운영 체제가 가상 주소를 실 주소로 바꾸는 주소 변환 절차 필요함
    • 가상 기억 장치 시스템에서는 실행 프로그램이 참조할 주소가 반드시 주 기억 장치의 주소일 필요는 없음
    • 사용자의 논리적으로 통합된 주소 공간과 컴퓨터의 물리적 공간(주 기억 장치의 주소와 보조 기억 장치의 주소)을 연결 시켜주는 개념

페이징 기법

  • 개요

    image

    • 보조 기억 장치로부터 프로그램 코드나 데이터를 페이지(page)라고 불리는 동일한 크기의 블록으로 쪼개어서 주 기억 장치에 적재하여 접근하는 기법
    • 주 기억 장치도 페이지 크기와 같은 크기로 분할 되며, 이를 주 기억 장치의 페이지 프레임(page frame)이라고 부름
    • CPU에서 프로세스를 실행하기 위해서는 프로세스의 실행될 페이지가 주 기억 장치에 적재되어 있어야 함
    • 페이지는 보조 기억 장치로부터 주 기억 장치로 옮겨져서 페이지 프레임에 적재되며, 이때 페이지는 사용 가능한 페이지 프레임을 할당 받아 주 기억 장치에 적재됨

세그먼테이션 기법 (Segmentation)

  • 개요

    image

    • 프로그램 코드나 데이터를 일정하지 않은 서로 다른 크기로 분할하여 주 기억 장치에 적재하여 접근함
    • 프로그램 코드나 데이터를 서로 다른 크기로 분할한 블록을 세그먼트(segment)라고 부름
    • 개발자들은 프로그램을 모듈 단위로 작성하는 습관에 기반을 두고 있기 때문에 사용자가 직접 작성한 프로그램 모듈이나 데이터의 모듈은 논리적 개념에 의해서 다른 크기의 블록으로 나눌 수 있으며, 이 블록을 세그먼트라고 함

정리 문제

  • 디스크와 같은 장치를 사용해서 프로그램 관점에서 사용 가능한 메모리 영역을 넓게 보이는 기법을 무엇이라고 하는가?
    • 가상 기억 장치

정리 하기

  • 운영 체제의 주요 기능
    • 프로세스 관리
    • 주 기억 장치 관리
    • 보조 기억 장치 관리
    • 파일 관리
  • 운영 체제의 작업 처리 방식
    • 일괄 처리 시스템
    • 다중 프로그래밍 시스템
    • 시 분할 처리 시스템
  • 주 기억 장치 할당 방법
    • 단일 사용자 연속 기억 장치 할당
    • 고정 분할 다중 프로그래밍 기법
    • 동적 분할 프로그래밍 기법
  • 가상 기억 장치 관리 기법
    • 페이징 기법
    • 세그먼테이션 기법



연습 문제


  1. 다음 설명 중 올바른 것은? 

    a. 페이징 기법은 주 기억 장치를 페이지라고 불리는 고정 크기의 블록으로 나누고 보조 기억 장치에 저장된 프로그램이나 데이터를 고정된 크기의 페이지로 쪼개서 주 기억 장치의 페이지 프레임에 올려서 수행하는 기법이다.

    • 페이징 기법은 보조 기억 장치로부터 프로그램 코드나 데이터를 페이지(page)라고 불리는 동일한 크기의 블록으로 쪼개어서 주 기억 장치에 적재하여 접근하는 기법임
    • 세그먼테이션 기법에서는 다양한 크기의 세그먼트가 출입 되므로 작은 기억 장치 조각이 발생함
    • 가상 기억 장치 기법은 주 기억 장치의 크기를 벗어나는 프로그램을 실행시키기 위해 프로그램을 페이지나 세그먼트라는 작은 크기의 단위로 나눠 주 기억 장치에 적재하고 실행시킬 수 있도록 함
  2. 가상 기억 장치 구현 기법에서 프로그램을 동일한 크기의 영역으로 나눈 것을 무엇이라 부르는가? 

    a. 페이지

    • 세그먼트는 프로그램 코드나 데이터를 서로 다른 크기로 분할한 블록임
    • 페이지 프레임은 주 기억 장치가 같은 크기로 분할 되며 관리되는 단위임
    • 페이지는 보조 기억 장치로부터 주 기억 장치로 전달되는 프로그램 코드나 데이터의 단위인 동일한 크기의 블록임
  3. 디스크와 같은 장치를 사용해서 프로그램 관점에서 사용 가능한 메모리 영역을 넓게 보이는 기법을 무엇이라 하는가? 

    a. 가상 기억 장치

    • 가상 기억 장치란 주 기억 장치에서 이용 가능한 영역보다 큰 프로그램을 작은 단위로 쪼개어 실행시키기 위해 보조 기억 장치의 주소를 주 기억 장치의 주소로 변환하여 프로그램에게 제공되는 가상의 기억 장치를 말함
    • 보조 기억 장치의 주소를 주 기억 장치의 주소로 변환하는 기법을 가상 기억 장치 관리 기법이라고 함
    • 다중 프로그램 시스템은 여러 개의 프로그램을 효율적으로 실행시키기 위해 여러 컴퓨터 자원을 관리함
    • 즉, CPU를 사용하고 있는 작업 A가 CPU의 사용을 멈추고 입출력 장치를 사용하게 되면, 아무도 사용하지 않는 CPU를 다른 작업 B에게 할당함
    • 작업 A가 CPU 사용을 멈추고 입출력 자원 장치를 사용하면, 그 동안에 CPU는 다른 작업에게 할당될 수 있으며 효율적인 컴퓨터 자원의 활용이 가능함
    • 요구 페이지 반입 기법은 프로세스가 필요한 페이지의 요구가 있을 때만 주 기억 장치로 페이지를 옮기는 것임



정리 하기


  • 운영 체제의 주요 기능(자원의 범주)
    • 프로세서 관리자, 주 기억 장치 관리자, 장치 관리자, 파일 관리자
  • 운영 체제의 작업 처리 방식
    • 일괄 처리 시스템
      • 처리할 작업이 발생할 때마다 즉각적으로 처리하지 않고 처리 해야 할 작업이 일정량에 도달할 때까지 여러 작업을 모아 놓고 작업을 한꺼번에 처리하는 방식
    • 다중 프로그래밍 시스템
      • 여러 개의 프로그램을 효율적으로 실행시키기 위해 여러 개의 프로그램들이 컴퓨터 자원이 쉬는 시간에 서로 양보하며 사용하는 방식
    • 시분할 처리 시스템
      • CPU의 시간을 일정 간격의 작은 시간으로 쪼개서 각 사용자에게 시간 간격이 할당되고, 그동안 직접 컴퓨터와 대화식으로 작업을 수행하는 방식
  • 주 기억 장치 할당 방법
    • 단일 사용자 연속 기억 장치 할당
      • 하나의 사용자 프로그램만이 전체 주 기억 장치에 할당되는 방식
    • 고정 분할 다중 프로그래밍 기법
      • 다중 프로그래밍 시스템(여러 개의 프로그램이 실행되는 시스템)에서 주 기억 장치를 여러 개의 고정된 크기의 영역으로 분할하고, 실행 중인 여러 개의 프로세스에게 각각 할당하는 방식
    • 동적 분할 프로그래밍 기법
      • 프로그램이 주 기억 장치에 적재될 때마다 모든 작업이 필요로 하는 크기(고정된 크기가 아니라 다양한 크기)만큼 연속된 공간을 할당해주는 방식
  • 가상 기억 장치 관리 기법
    • 페이징 기법
      • 보조 기억 장치로부터 프로그램 코드나 데이터를 페이지(page)라고 불리는 동일한 크기의 블록으로 쪼개어서 주 기억 장치에 적재하여 접근하는 방식
    • 세그먼테이션 기법
      • 세그먼테이션 기법은 프로그램 코드나 데이터를 일정하지 않은 서로 다른  크기로 분할하여 주 기억 장치에 적재하여 접근하는 방식
Contents

MySQL InnoDB 내부 구조와 동작 원리

[컴퓨터과학 개론] 8강 - 운영 체제