본문 바로가기
Operation System

[OS] 운영체제 개요

by spareone 2025. 4. 30.

운영체제

운영체제 정의

  • 컴퓨터 하드웨어와 컴퓨터 사용자 간의 매개체 역할을 하는 소프트웨어
  • 사용자 프로그램을 수행할 수 있는 환경 제공

운영체제 목적

  • 편의성 (Convenience for human) – 컴퓨터 시스템을 편리하게 이용
  • 효율성 (effieciency for device) – 컴퓨터 하드웨어를 효율적으로 관리

운영체제에 대한 관점

  • 자원 할당자
    • 컴퓨터 시스템을 공정하고 효율적으로 운영하기 위해 어떻게 자원을 할당할 것인지 결정
  • 다양한 입출력장치와 사용자 프로그램의 통제자 (제어 프로그램)
    • 제어 프로그램은 사용자 프로그램을 통제하여 오류나 컴퓨터의 부적절한 사용 방지

운영체제 유형

1. 일괄 처리 시스템 (batch processing system)

  • CPU의 유휴 상태(idle state)의 시간을 없애기 위해 작업 순서의 자동화(automatic job sequencing) 개념 도입
  • 상주 모니터
    • 한 프로그램에서 다음 프로그램으로 제어를 자동적으로 넘기는 것
    • 상주 모니터에게 전달할 정보를 작업 제어 카드(job control card)에 수록
  • 작업의 준비와 실행 순서를 자동화함으로써 시스템의 성능 증진
[그림 1] 일괄 처리 시스템의 순차성 실행
  • 한 작업이 시스템 자원을 독점 (작업이 끝날 때까지 기다려야 함)
  • 사용자 입력이 필요한 경우 CPU는 idle state가 되어 일을 쉬게 되어 낭비가 됨

2. 다중 프로그래밍 시스템 (multiprogramming system)

  • CPU가 항상 수행되도록 하여 이용도를 높이기 위한 방안
  • 주기억장치 내에 여러 프로그램 적재
  • 여러 개의 작업을 준비 상태로 두고, 준비 상태에 있는 여러 작업들 중 어느 한 작업을 실행할 작업으로 선정
    • 기억장치 관리 기법, 중앙처리장치 관리 기법 등 필요
    • 장치 스케줄링, 교착 상태(deadlock) 문제, 병행 제어(concurrency control) 및 보호 문제 등 고려
[그림 2] 다중 프로그래밍 시스템
  • [그림 2]는 [그림 1]과 달리 프로그램1이 idle state가 되면 프로그램2에게 자원을 할당하여 다른 작업을 수행하게 함

3. 시분할 시스템 (time-sharing system)

  • 다중 프로그래밍의 변형된 형태
  • 각 사용자들에게 컴퓨터 시스템을 독점하는 느낌을 주도록 하는 시스템 (실제로는 여러 사람이 쓰고 있지만, 나 혼자 독립된 시스템을 쓰는 것처럼 느끼도록 함)
  • 여러 사용자들이 컴퓨터 자원에 대한 짧은 시간 단위의 공유(sharing)를 통하여 구현
  • 사용자는 대화식(interactive) 단말장치를 이용하여 시분할 시스템에 접근
  • 여러 사용자에 대한 공정한 자원 공유 보장
    • CPU 스케줄링 (어떤 사용자에게 배정할 것인가)
    • 실행 중인 프로세스 간의 통신
    • 입출력장치의 사용에 대한 제어 및 관리 능력
[그림 3] 시분할 시스템
시스템이 사용자들의 프로그램을 번갈아가며 실행
  • Queue에 여러 프로그램이 적재되면 하나 조금 실행하고 뒤로 보내고 다른 것 조금 실행하고 뒤로 보내고 해서 작업 수행

4. 다중 처리기 시스템 (multiprocessors system)

  • 컴퓨터 시스템을 여러 개의 processor로 구성
  • 공유 기억장치(common memory)를 통하여 하나로 연결된 다중 처리기(multiprocessor)를 제어하고 공유함
  • 시스템의 운영 환경
    • 밀착된 결합 (tightly coupled)
      • processor들이 해당 작업을 처리함에 있어서 매우 밀접하게 동기화
    • 느슨한 결합 (loosely coupled)
      • processor 간의 동기화 문제가 엄격하지 않음
      • 두 개 또는 그 이상의 processor들을 결합함으로써 보다 높은 작업의 처리율(throughput) 제공
  • 여러 프로세서 간의 기억장치 공유, processor 스케줄링, 신뢰성과 병렬 계산(parallel computation), 최적의 연결 기법, 같은 자원을 요구하는 processor 간의 경쟁 제어
[그림 4] 다중 처리기 시스템
  • [그림 4]처럼 여러 CPU와 하나의 기억장치를 통해 여러 프로그램 실행

5. 개인용 컴퓨터 시스템 (personal computer system)

  • 대형 (mainframe) 시스템보다 작고 값이 싼 초소형 컴퓨터
  • CPU, 주변 장치 이용률을 최대화하는 것 보다 편리성, 응답성이 더 중요

6. 분산 처리 시스템 (distributed processing system)

  • 하나의 시스템처럼 보이는 독립된 컴퓨터들의 집합
  • 통신망에 연결된 여러 컴퓨터들의 처리 능력을 이용하여 메시지 전달을 통해 거대한 계산 문제를 해결하려는 분산처리 모델
  • 시스템 종류
    • 밀착된 결합 (tightly coupled)
      • processor들이 기억장치와 클럭 공유
    • 느슨한 결합 (loosely coupled)
      • processor들이 기억장치와 클럭 미공유
      • 각 processor는 자신의 local 기억장치 소유
      • processor들은 고속의 버스나 전화선과 같은 통신 라인을 통해 통신
  • 두 가지 대응되는 기법의 운영체제
    • 네트워크 운영체제
      • 노드 간 기종의 차이가 심함
      • 대규모 네트워크 시스템에 사용
      • 각 노드는 독자적인 운영체제 보유
      • 통신기능은 기존 운영체제 위에 존재하며, 자원 공유가 어려움
    • 분산 운영체제
      • 각 노드들을 통괄할 수 있는 하나의 운영체제로 운영
      • 통신기능은 운영체제 설계 시 고려
      • 미니, 마이크로컴퓨터 등으로 연결된 근거리 네트워크 시스템에서 많이 사용되며, 자원 공유가 용이

7. 멀티미디어 시스템 (multimedia system)

  • 멀티미디어 콘텐츠를 저작(authoring)할 수 있는 기능과 환경 제공
    • 저작 시스템 (authoring system) : 멀티미디어 콘텐츠를 제작할 수 있는 기능과 환경 제공
    • 재생 시스템 (presentation system) : 멀티미디어 콘텐츠 재생
[그림 5] 멀티미디어 시스템

8. 임베디드 시스템 (embedded system)

  • 마이크로 프로세서 또는 마이크로 컨트롤러 내장
  • 시스템 제작자가 의도한 기능만 수행할 수 있도록 제작된 시스템 (자동차, 키오스크, 각종 가전제품 등)
  • 전체 장치의 일부분으로 구성되며 제어가 필요한 시스템의 두뇌 역할을 하는 특정 목적의 컴퓨터 시스템

운영체제에 대한 관점

1. 자원 관리자 관점

  • 운영체제의 기능은 자원이 효율적으로 사용되도록 관리하고 다양한 요구를 가지는 사용자 간에 발생할 수 있는 자원에 대한 경쟁 및 이로 인한 충돌 해결
  • 어떤 과정을 수행하는가?
    • 자원의 상태 추적 / 저장
    • 어떤 프로세스가 언제 어떤 자원을 얼마나 사용할 것인지를 결정하기 위한 정책 수립
    • 자원의 할당
    • 자원의 회수
  • 어떤 기능을 가지고 있는가?
    • 프로세스 관리 기능
      • CPU와 프로세스의 상태 추적 / 저장
      • 어떤 작업에게 프로세서를 사용하도록 할 것인지 결정
      • 필요한 하드웨어 레지스터를 설정함으로써 프로세스에게 CPU 할당 (디스패처)
      • 프로세스가 수행을 마치거나, 허용된 시간을 초과한 경우 CPU 회수
    • 기억장치 관리 기능
      • 기억장치 상태 추적 / 저장
      • 어떤 프로세스에게 언제, 얼마의 기억장치를 할당할 것인지 결정
      • 프로세스가 기억장치를 요구하면 앞에서 결정한 내용에 따라 할당
      • 프로세스가 더 이상 기억장치를 필요로 하지 않게 되면 회수
    • 장치 관리 기능
      • 채널 등의 제어장치 및 입출력장치와 같은 각종 장치의 상태 추적 / 저장
      • 장치를 할당하는 데 어떤 방법이 효율적인지 결정, 만약 장치가 공유되는 것이라면 어떤 프로세스가 이 자원을 얼마나 사용할 지 결정 (입출력 스케줄링)
      • 해당 장치를 할당하고, 입출력 동작 시작
      • 입출력 종료 시 자동적으로 자원 회수
    • 정보 관리 기능
      • 정보의 위치, 사용 여부, 상태 등을 추적 / 관리 (파일 시스템)
      • 어떤 작업에게 정보 자원을 사용하도록 할 것인지 결정, 정보 보호를 위한 대책 수립, 접근 제어 방법 제시
      • 정보 자원 할당 / 회수

2. 프로세스 관점

  • 프로그램과 프로세스의 차이
    • 프로그램 : 디스크에 저장된 실행 코드
    • 프로세스 : 프로그램이 구동되어 프로그램과 프로그램의 상태가 메모리 상에서 실행되는 작업 단위
  • 하나의 작업이 제시되어 완료될 때 까지 하나의 프로세스에 대해 그 상태를 변환시키고 관리

3. 계층 구조 관점

  • 커널 (kernel) : 확장된 기계 개념으로 운영되는 모든 운영체제 모듈을 총칭
[그림 6] 계층적 기계 개념 구상도
  • 커널의 구성 레벨
    • 레벨 1 : 프로세서 관리 하위 모듈 (동기화 프리미티브, 프로세스 스케줄러)
    • 레벨 2 : 기억장치 관리 (메모리 할당 및 회수)
    • 레벨 3 : 프로세스 관리 상위 모듈 (메시지, 프로세스의 생성 및 제거)
    • 레벨 4 : 장치 관리 (입출력 트래픽 제어기)
    • 레벨 5 : 정보 관리 (파일 시스템)

입출력 프로그래밍

  • 왜 필요한가?
    • CPU와 입출력장치의 처리 속도 문제
    • 입출력은 CPU와 비동기적으로 수행 (독립적) – 데이터 처리 시간이 일정하지 않음
    • 입출력장치와 CPU의 상호 작용을 위해 입출력 프로그래밍 필요

1. BIOS

  • 부트 프로세스를 실행시키는 명령어 포함
  • 이러한 형태의 컴퓨터칩에 저장된 명령어를 펌웨어(firmware)라고 함

2. 부트 진행 과정 (boot process)

  • 파워 버튼을 누르면 부트 로더가 초기화 됨
  • POST (Power-On Self-Test) 수행 시작
  • 다른 BIOS들이 가동을 위해 초기화 됨
  • BIOS가 잠겨 있는 경우 유저가 해당 패스워드 입력
  • 간단한 메모리 테스트가 수행되며 여러 parameter가 설정됨
  • Plug & Play 기기 초기화
  • DMA (Direct Memory Access) 채널을 위한 자원들과 IRQ(Interrupt Request) 할당
  • 부트 디바이스들이 정해지고 초기화 됨
  • OS가 초기화 됨

3. POST (Power-On Self-Test)

  • 컴퓨터에 전원이 공급되었을 때 각종 기기들이 정상 작동하는지 확인하기 위해 BIOS가 진행하는 일련의 진단 시험 과정

4. 버퍼링

  • CPU와 입출력장치의 속도 차이를 보완하는 방법 중 하나
[그림 7] 버퍼링
  • 수행 과정
    • CPU는 출력할 데이터를 버퍼에 채운다.
    • 버퍼가 다 채워지면 CPU는 채널에게 출력을 지시하고, 자신의 일을 계속한다.
    • 채널은 출력을 수행함으로써 버퍼를 비운다.
    • 출력을 완료함으로써 버퍼를 다 비우면 CPU에게 알린다.
  • 효율적인 처리를 위해 두 개 이상의 버퍼 사용 가능
[그림 8] 이중 버퍼링
  • 수행 과정
    • CPU가 버퍼A를 채운다.
    • 다 채우면 채널에게 버퍼A의 출력을 지시한다.
    • 버퍼A에 대한 출력되는 무관하게 버퍼B를 채운다.
    • 채널은 버퍼A를 비운다.
    • 채널은 버퍼A를 다 비웠음을 CPU에게 알린다.
    • CPU는 다시 버퍼A를 채우고 채널은 버퍼B를 비운다. (1과 6, 3과 4는 동시에 수행될 수 있다.)

5. 스풀링 (SPOOLing)

  • Simultaneous Peripheral Operation OnLine의 준말
  • 버퍼링은 주기억장치를 버퍼로 사용하지만, 스풀링은 디스크를 매우 큰 버퍼처럼 사용
[그림 9] 스풀링

6. 채널

  • 입출력장치와 중앙처리장치 사이에 있는 입출력 전담 처리기
[그림 10] 채널
[그림 11] 다양한 형태의 채널 연결 구조

7. 인터럽트 (interrupt)

  • 시스템에 예기치 않은 상황이 발생하였을 때 운영체제에 알리기 위한 메커니즘
  • 인터럽트의 종류
    • 입출력(I/O) 인터럽트 : 해당 입출력 하드웨어가 주어진 동작을 완료하였거나 오류가 발생하였을 때 CPU에 대하여 요청하는 인터럽트
    • 외부 인터럽트 : 시스템 타이머에서 일정 시간이 만료되었거나, 오퍼레이터가 콘솔에서 인터럽트 키를 입력하였거나, 다중 처리 시스템에서 다른 처리기러부터 신호가 온 경우 발생하는 인터럽트
    • SVC(SuperVisor Call) 인터럽트 : 사용자 프로그램의 수행 과정에서 입출력 수행, 기억장치 할당, 오퍼레이터 개입 요구 등을 위해 실행 중인 프로그램이 SVC 명령을 수행하는 경우 발생하는 인터럽트
    • 기계 검사 인터럽트 : 컴퓨터 자체적으로 발생한 기계적인 장애나 오류로 인한 인터럽트
    • 프로그램 에러 인터럽트 : 프로그램의 실행 오류로 발생하는 인터럽트 (0으로 나누는 연산, 보호된 곳에 접근 시도, 권한이 없는 명령어 수행, 스택 오버플로우 등)
    • 재시작 인터럽트 : 오퍼레이터가 콘솔에서 재시작 키를 누를 때 발생하는 인터럽트
[그림 12] 인터럽트 처리 과정
[그림 13] 인터럽트 처리 과정 및 PSW 위치

'Operation System' 카테고리의 다른 글

[OS] 프로세스와 스레드 관리  (0) 2025.04.30

댓글