OS-2) 운영체제 기본과 구조

topics 700-컴퓨터과학 704 운영체제
types 학습 이론
tags #os #kernel #interrupt

운영체제 기본과 구조

운영체제의 정의, 역할, 구조를 정리한다.

관련 문서


운영체제 정의

==운영체제: 사용자의 하드웨어, 시스템 리소스를 제어하고 프로그램에 대한 일반적 서비스를 지원하는 시스템 소프트웨어==

운영체제 목표

  • 컴퓨터 시스템을 사용하기 편리하게 만들자
  • CLI, GUI 등을 제공

운영체제 설계

  • 정책: 무엇을 할 것인가
  • 기법: 어떻게 할 것인가

==운영체제 역할==

  • 자원할당기: 모든 자원을 관리 (I/O, 메모리 등)
  • 제어프로그램: 프로그램 실행 제어
  • 프로세스, 메모리, 하드웨어 관리
  • 보호와 보안
    • 보호: 자원의 엑세스를 제어
    • 보안: 시스템 방어, 권한으로 제어하는 경우가 많음

관점, 목적에 따라 달라진다.

커널

  • 시스템의 기본적인 관리를 담당
  • 소프트웨어 ↔ 하드웨어 인터페이스 역할
  • 항상 실행되는 유일한 프로그램

==운영체제 실행==

부트스트랩 프로그램 (= 펌웨어)

  • 전원이 공급되는 시점에서 적재되는 프로그램
  • ROM BIOS에 저장되어 있음
  • 구성요소 초기화
  • 부트 블록(디스크 블록 0)에서 운영체제 위치가 담겨 있음
  • 운영체제 커널 적재 후 커널을 실행

==인터럽트==

스크린샷 2024-04-03 오후 2.04.45.png
  • 하드웨어 인터럽트: 운영체제와 하드웨어가 상호작용하는 방식
  • 소프트웨어 인터럽트
  • 운영체제는 인터럽트가 발생해야 작동을 시작함 (Interrupt Driven)

처리 방식 (인터럽트 핸들러)

스크린샷 2024-04-03 오후 2.09.17.png
  • 인터럽트 벡터: 서비스 루틴의 주소를 가지고 있음
  • 서비스 루틴: 인터럽트 발생 후 처리 내용
  • 소프트웨어, 하드웨어 인터럽트로 나뉜다
    • 소프트웨어 인터럽트는 트랩 or 예외라고도 불림
    • 시스템콜은 소프트웨어 인터럽트의 일종

시스템 프로그램

사용자 관점에서 프로그램 개발 및 실행을 편리할 수 있는 환경을 제공한다.

기능, 역할

  • 파일 관리, 조작: 생성, 삭제, 이름 변경, 출력 등
  • 상태 정보 제공
  • 파일 수정을 위한 편집기 제공, 검색을 위한 툴 제공
  • 프로그래밍 언어 지원: 컴파일러, 어셈블러, 디버거, 인터프리터
  • 프로그램 적재 및 실행
  • 통신
  • 백그라운드 서비스
    • 부트될 때 실행됨
    • 사용자 문맥에서 실행됨
    • 서비스, 서브시스템, 디먼이라고도 불림
  • 응용프로그램
    • 시스템에 속하지 않음
    • 사용자에 의해 실행
    • 보통 OS에 포함 X

==운영체제 구조==

MS-DOS

스크린샷 2024-04-14 오후 7.11.22.png

단순한 구조

  • 모듈 단위로 나누어지지 않음
  • 최소 공간에서 최대의 기능 제공하기 위해 개발

UNIX

단순하지 않은 구조

  • 두 개의 분리된 부분
    • 시스템 프로그램
    • 커널
  • 완전한 층 구조를 이루지 않음

층 구조

추상적 구조
스크린샷 2024-04-14 오후 7.13.14.png

  • 가장 아래층 (Layer 0)은 하드웨어
  • 가장 높은층 (Layer N)은 사용자 인터페이스
  • 모듈성을 염두함. 각 층은 바로 아래층의 기능과 서비스만 이용하도록 설계

마이크로 커널 시스템

Mach가 그 예
스크린샷 2024-04-14 오후 7.16.21.png

  • 커널의 기능을 최대한 사용자 공간으로 이동
  • 사용자 모듈 간 통신은 메세지 전달 사용

장점

  • 마이크로 커널을 확장하기 쉬움
  • OS를 새 아키텍처에 이식 쉬움
  • 더 신뢰, 더 안전함

단점

  • 사용자 공간 → 커널 공간 통신 시 성능 오버헤드

적재 가능 커널형 모듈

최신 운영체제의 구조 (리눅스, 솔라리스 등)

  • 객체 지향 접근법 사용
  • 잘 정의된 인터페이스를 사용하여 서로 통신
  • 각 모듈은 필요 시 커널 안에서 적재 가능

운영체제 시스템

다중 프로그래밍 시스템

  • 메모리에 여러 프로그램 적재
  • 하나 실행하다가 대기 상태 될 시 다른 프로그램 실행
  • OS는 작업 스케줄링과 CPU 스케줄링을 진행
    • 작업 스케줄링: 디스크 → 메모리로 작업 이동
    • CPU 스케줄링: 메모리 → CPU 작업 이동
  • 시분할 시스템을 이용

시분할 시스템

  • CPU가 빈번하게 다른 작업으로 전환하도록 하는 시스템
  • 각 사용자들에게 작은 시간 단위를 할당
  • 대화식 컴퓨팅 환경을 만들 수 있게 함
    • 사용자와 각 작업과 상호작용 가능
  • OS는 스케줄링 알고리즘과 컨텍스트 스위칭을 동시 진행
    • 프로세스 스케줄링: 각 프로세스에게 CPU 시간을 분배하기 위한 알고리즘
    • 컨텍스트 스위칭: 한 작업에서 다른 작업으로 전환하는 것

프로세스 전체가 실행할 수 없다면

스와핑 (Swapping)

  • 가장 안 쓰는 프로세스랑 지금 필요한 프로세스를 메모리에서 교체한다 (안 쓰는 프로세스는 보조기억장치에 적재)
  • 프로세스 단위의 스와핑

가상메모리

  • 필요한 페이지의 주소를 가지고 (페이징 테이블) 페이지 단위로 스와핑함
  • 실제 물리적 메모리보다 더 큰 메모리를 실행 가능
  • OS-10) 가상 메모리-%EA%B0%80%EC%83%81-%EB%A9%94%EB%AA%A8%EB%A6%AC.html) 참고