다음은 반효경 교수님의 ‘운영체제와 정보기술의 원리’ CH2. 운영체제 개요를 읽고 정리한 내용입니다 🙌



🌩 1. 운영체제의 정의

  • 운영체제란 컴퓨터 하드웨어 바로 위에 설치되는 소프트웨어이다.
  • 사용자가 직접 하드웨어를 다루는 것이 쉽지 않기 때문에 하드웨어를 기본적으로 운용하는 운영체제를 탑재해서 사용하도록 한다.

좁은 의미 운영체제 vs. 넓은 의미 운영체제

  • 운영체제도 소프트웨어이기 때문에 컴퓨터가 켜지면서 메모리에 올라가서 사용이 되어야 한다. 하지만 운영체제 전부를 메모리에 올려서 사용하기에는 리소스 낭비가 심하기 때문에 꼭 필요한 부분만을 전원이 켜짐과 동시에 메모리에 올린다.
  • 메모리에 전원이 켜짐과 동시에 상주하는 부분을 커널이라고 한다 ⇒ 좁은 의미의 운영체제
  • 이후 필요한 부분은 그때그때 사용자 유틸리티로 메모리에 올려서 사용한다 ⇒ 넓은 의미의 운영체제
    • 파일 복사 등등

🌩 2. 운영체제의 기능

  • 1) 하드웨어2) 사용자를 위한 역할 두가지를 중간에서 담당한다.
    • 하드웨어를 관리하고 리소스를 효율적으로 운용한다.
      • 자원 관리자 (resource manager)라고도 불린다.
      • 자원이란 CPU, 메모리, 하드디스크, 소프트웨어 자원들 등등
    • 사용자에게 사용하기 편리한 인터페이스를 제공한다.
  • 자원을 관리할 때 최대한의 성능을 내도록 한다. 동시에 모든 사용자 및 프로그램이 형평성있게 자원을 분배받을 수 있도록 관리한다.
  • 사용자와 운영체제의 보안을 담당한다.
    • 다른 프로그램의 메모리 영역 참조를 막고 사적인 정보를 보호한다.
    • 메모리 영역의 보안을 담당한다.

🌩 3. 운영체제의 분류

단일 작업용 vs. 다중 작업용

  • 단일 작업용 single tasking - 한번에 하나의 프로그램만 실행
  • 다중 작업용 multi tasking - 여러 프로그램을 동시에 실행
    • 여러 프로그램이 CPU와 메모리를 공유한다.
    • 시분할 시스템(time sharing system) - CPU의 작업시간을 나누어서 시분할 시스템(time sharing system) 방식으로 하나의 CPU에서 여러 프로그램을 실행시킨다.
    • 다중 프로그래밍 시스템(multi-programming system) - 메모리 공간을 분할해 여러 프로그램들을 동시에 메모리에 올려놓고 처리하는 다중 프로그래밍 시스템(multi-programming system)으로 실행한다.
    • 대화형 시스템(interactive system) - 여러 프로그램을 같이 실행시키지만 사용자 개개인의 관점에서 각 프로그램에 대한 키보드 입력 결과를 바로 화면에 보여준다.
      • ex. 여러 사람이 접속해서 사용하는 서버 (ec2)
    • 다중처리기 시스템 (multi-processor system) - 하나의 컴퓨터에 여러 CPU가 설치된 경우이다.

단일 사용자용 vs. 다중 사용자용

  • 단일 사용자용 - 한번에 한명의 사용자만 사용가능한 운영체제이다.
    • 단일 사용자용은 단일 작업용, 다중 작업용으로 나뉜다.
    • MS 윈도우 등등
  • 다중 사용자용 - 여러 사용자가 동시에 접속해서 사용할 수 있는 운영체제이다.
    • 서버, 웹서버 등등

처리방식

  • 일괄처리 (batch processing) 방식 - 요청된 작업을 모아서 한꺼번에 처리한다.
    • 사용자 측면에서 응답시간이 길다.
  • 시분할 방식 - 컴퓨터의 처리능력을 일정한 시간 단위로 분할해서 사용한다. (현대에 대부분 사용)
    • 여러 사용자의 요청을 짧은 단위의 시간을 번갈아서 처리하여 응답한다.
    • 따라서 각 사용자가 혼자 사용하는 것처럼 느낀다. (대화형 시스템)
  • 실시간 (real time) 운영체제 - 정해진 시간 안에 어떤 작업이 반드시 처리됨을 보장하는 시스템
    • 원자로, 공장 제어 시스템, 미사일 제어 시스템 등등
    • 경성 실시간 시스템 (hard realtime system)
      • 주어진 시간을 지키지 못하면 위험할 결과를 초래할 로켓, 원자로 제어 시스템 등등
    • 연성 실시간 시스템 (soft realtime system)
      • 멀티 미티어 스트리밍처럼 데이터가 정해진 시간 단위로 전달되어야 올바른 기능을 수행하는 시스템

🌩 4. 운영체제의 예

  • 윈도우는 시스템에 새로운 하드웨어를 장착하면 운영체제가 자동으로 감지하여 설정되는 plug and play 기능이 있다.
  • 유닉스는 안정성이 높고 깔끔한 모듈 단위로 구현된 운영체제로 확장성을 지원하는 대중적인 os이다.

🌩 5. 운영체제의 자원 관리 기능

하드웨어

  • 자원
    • CPU, 메모리, 입출력 장치 등의 주변기기
    • 여러 프로세스가 CPU와 메모리를 효율적으로 사용하도록 관리
    • CPU와 메모리의 데이터가 전원이 꺼지면 없어지기 때문에 해당 데이터를 파일의 형태로 보조기억장치에 저장 (하드디스크)
    • 키보드, 모니터 등의 입출력 장치로 정보 교환
  • CPU 관리
    • CPU 스캐줄링 - 하나의 CPU를 어느 시점에 어떤 프로세스가 점유할 것인가
    • CPU를 효율적으로 사용하면서 불이익을 받는 프로세스는 없도록 관리
    • FCFS - 먼저온 프로세스를 먼저 처리
      • 시스템 전체적인 측면에서 비효율적일 수 있다. CPU를 먼저 점유한 프로세스가 작업을 완료할 때까지 다른 프로세스는 CPU를 사용할 수 없다. 이때 짧은 처리 시간을 가진 프로세스가 뒤늦게 도착했다면 매우 비효율적이다.
      • 문제 개선을 위해 RR이 등장했다.
    • RR - CPU를 할당받아 사용할 수 있는 시간을 고정하여 번갈아 사용한다.
      • 응답시간은 밀리초 단위로 지정하여 다수의 사용자가 동시접속해도 1초 이하의 응답시간을 보장받는다.
    • Priority - 우선순위를 부여하여 그것에 따라 CPU를 먼저 할당한다.
      • 지나치게 오래 기다리지 않도록 기다린 시간이 길면 우선순위를 높여준다.
  • 메모리 관리
    • CPU가 직접 접근할 수 있는 컴퓨터 내부의 기억장치
    • 메모리의 어느 부분이 어떤 프로그램에 의해 사용되는지 파악하기 위해 주소(address)로 관리한다.
      • 필요할 때 할당하고 끝나면 회수한다.
      • 불필요한 자원 낭비를 막는다.
    • 메모리의 다른 프로세스가 서로 침범하지 않도록 보안을 유지한다.
    • 고정분할(fixed partition) - 물리적 메모리를 몇개의 분할로 미리 나누어서 관리
      • 각각의 분할에는 하나의 프로그램만 적재되므로 융통성이 없다.
      • 동시 적재 프로그램이 분할 개수로 한정되며, 분할된 크기보다 큰 프로그램은 적재할 수 없다.
      • 분할 크기보다 작은 프로그램은 남는 영역인 internal fragmentation이 생겨 비효율적이다.
    • 가변분할(variable partition) - 프로그램 크기에 맞게 메모리를 분할해서 사용한다.
      • 프로그램의 크기에 따라서 제한이 되는 고정분할의 문제를 해결하지만 물리 메모리보다 큰 프로그램의 적재는 여전히 어렵다.
      • 분할 크기와 개수가 동적으로 변하기 때문에 기술적 관리 기법이 필요하다.
      • 내부조각 (internal fragmentation)은 발생하지 않지만 외부조각 (external fragmentation)은 발생한다.
        • 프로그램에 할당되지는 않지만 남은 크기가 작아 할당되지 못하는 메모리 영역
    • 가상 메모리 (virtual memory) - 가장 많이 이용되며 물리 메모리보다 큰 프로그램 실행이 가능하다.
      • 모든 프로그램은 물리 메모리와 상관없이 독립적으로 0번에서 시작하는 가상 메모리 주소를 가진다.
      • 운영체제가 이 가상 메모리를 물리 메모리로 mapping 하여 변환 후 프로그램을 물리 메모리에 올린다.
      • 프로그램이 전체가 동시에 사용되는것이 아니기 때문에 물리 메모리보다 큰 프로그램을 사용할 수 있다. 나머지 부분을 하드디스크나 보조기억장치에 저장했다가 적재하는 방식을 택한다.
        • 스왑 영역 swap area - 이때 사용되는 보조기억장치
      • 가상 메모리 주소 공간은 페이지(page) 단위로 동일하게 나뉘어 물리적 메모리와 스왑 영역에 일부분씩 저장된다 ⇒ 페이징 기법
  • 주변장치 및 입출력 장치
    • 인터럽트 (interrupt) 매커니즘으로 관리한다.
    • CPU가 필요할 때 신호를 발생시켜 서비스를 요청하는데, CPU는 스캐줄링 맞추어 작업을 처리하다가 인터럽트에 의한 요청 서비스를 수행한다.
      • ex. 키보드 입력
    • CPU는 인터럽트의 작업을 중간에 수행하기 위해서 이전에 처리중이던 작업의 상태를 저장해둔다.
    • 각 상황과 운영체제마다 인터럽트가 발생할때마다 따르는 인터럽트 루틴에 따라서 수행한다.
      • 운영체제 커널의 일부분이다.
    • 각 주변장치는 업무를 관리하기 위한 컨트롤러(CPU와 같은 것)가 있어 업무를 처리하고 CPU에 인터럽트를 발생시켜 보고하는 역할을 한다.