[운영체제와 정보기술의 원리] 2장. 운영체제 개요

Joey Hong·2020년 9월 27일
0

운영체제(OS)

목록 보기
1/4

1. 🖥 운영체제의 정의

운영체제(operating system)란 컴퓨터 하드웨어 바로 윗단에 설치되는 소프트웨어

  • 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결
  • 소프트웨어지만 system 명칭 사용
    • 하드웨어가 운영체제와 한 몸이 되어야만 진정한 컴퓨터 시스템

소프트웨어는 메모리 위

프로그램은 메모리 위에서 실행

  • 운영체제도 전원이 켜짐과 동시에 메모리 위에 올라간다

운영체제의 핵심

⚡️ 커널 (kernel)

  • 메모리에 상주하는 운영체제의 핵심 부분
  • 운영체제의 큰 규모때문에 필수 부분만 메모리 위에 상주

⚡️ 넓은 의미의 운영체제

  • 시스템을 위한 유틸리티들
    • MS 윈도우 환경에서 파일을 복사하는 프로그램
    • 엄밀히 따졌을 때 운영체제의 일부는 아님
    • 운영체제에 함께 설치되기 때문에 넓은 의미로 포함

2. 🖥 운영체제의 기능

컴퓨터 하드웨어와 사용자 사이에 존재

1. 하드웨어를 위한 역할

⚡️ 자원관리자(resource manager)

  • 효율성이 1순위 목표
  • 컴퓨터 시스템 내 자원(resource)를 효율적으로 관리
    • CPU, 메모리, 하드디스크 등 하드웨어뿐 아니라 소프트웨어까지
    • 예) 파일이 디스크에 어떻게 저장되는지
  • 가장 좋은 성능 내도록 하는 역할 담당

⚡️ 균형자

  • 사용자 및 프로그램들 자원 분배
  • 효율성때문에 일부가 지나치게 희생되는 것 방지

⚡️ 사용자와 운영체제 자신 보호

악의성 프로그램으로부터 보호

  • 다른 사용자 프로그램의 메모리 영역 참조
  • 다른 사용자의 사적인 파일 접근
  • 운영체제가 올라가 있는 메모리 영역 변경

2. 사용자를 위한 역할

컴퓨터 시스템을 편리하게 사용할 수 있는 환경 제공

  • 편리한 인터페이스 제공
  • 여러 사용자 및 프로그램들이 독자적으로 컴퓨터 사용할 수 있는 환경 제공
    • 파일을 손쉽게 저장하거나 내용 꺼내보기 가능

3. 🖥 운영체제의 분류

1. 동시작업 지원

⚡️ 단일작업용 운영체제 (single tasking)

  • 한번에 하나의 프로그램만 실행
  • 초창기 운영체제의 주를 이룸
    • MS 윈도우 전에는 도스 (Disk Operating System: DOS) 환경

⚡️ 다중작업용 운영체제 (multi tasking)

  • 현재 널리 쓰이는 운영체제
  • 동시에 2개 이상의 프로그램 처리 지원
    • 대화형 시스템(interative system)이라고도 부름
    • 사용자의 입력에 곧바로 응답
  • 서버도 서버 컴퓨터도 대화형 시스템에 해당
    • 사용자 입력에 곧바로 응답
    • 사용자가 혼자 사용하는 것처럼 느낄 수 있는 환경
시분할 시스템 (time sharing system)
  • 여러 프로그램이 CPU와 메모리 공유
    • CPU 처리 속도는 수 밀리초(ms)로 매우 짧다
    • CPU가 하나여도 동시 실행되는 것처럼 보임
다중 프로그래밍 시스템 (multi-programming system)
  • 여러 프록램들을 동시에 메모리에 올려놓고 처리하는 시스템
    • 각 프로그램이 조금씩 메모리 공간 보유
🚨 다중처리기 시스템(multi-processor system)
  • 일반적으로는 한 컴퓨터에 하나의 CPU 탑재
  • 다중처리기 시스템은 하나의 컴퓨터 안에 여러 개의 CPU
    • 서로 다른 CPU에서 여러 프로그램 동시 실행 가능
    • 여러 CPU를 관리하기 위해 더 복잡한 운영체제 필요

2. 다중 사용자 동시 지원

⚡️ 단일 사용자용 운영체제

  • 한 번에 한 명의 사용자만 사용
    • DOS, MS윈도우(최근엔 윈도우도 서버 기능 지원)

⚡️ 다중 사용자용 운영체제

  • 여러 사용자가 동시에 접속
    • 이메일 서버, 웹서버 등의 서버 컴퓨터

3. 작업 처리방식

⚡️ 일괄처리 (batch processing)

  • 요청된 작업을 일정량씩 모아서 한꺼번에 처리
  • 모든 작업이 완전히 종료된 후에 결과를 얻을 수 있다
    • 긴 응답시간
  • 예) 펀치 카드(punch card) 시스템

⚡️ 시분할 방식

  • 컴퓨터 처리 능력을 일정한 시간 단위로 분할해 사용
  • 유닉스 운영체제하의 서버 컴퓨터
    • 여러 사용자의 작업을 짧은 시간 단위씩 번갈아가며 처리
    • 짧은 응답시간
    • 사용자에게 독점적 사용같은 환경 제공 ➡︎ 대화형 시스템

4. 실시간 운영체제 (real time)

  • 정해진 시간 안에 어떠한 일이 반드시 처리됨을 보장하는 시스템에서 사용
    • 일정 시간 안에 작업 완료 불가시 동작X or 큰위험 초래
    • 원자로, 공장 제어 시스템, 미사일 제어 시스템

⚡️ 경성 실시간 시스템 (hard realtime system)

  • 주어진 시간을 지키지 못할 경우 매우 위험한 결과 초래
  • 로켓, 원자로 제어 시스템 등

⚡️ 연성 실시간 시스템 (soft realtime system)

  • 정해진 시간 단위로 전달되어야 올바른 기능 수행
    • 시간이 지켜지지 않을 경우 재생이 끊기거나 내용 전달이 정확X
  • 멀티미디어 스트리밍 등

4. 🖥 운영체제의 예

1. MS 윈도우

  • 마이크로소프트에서 MS-DOS와 윈도우 3.1 등을 발전시킨 것
  • 개인용 컴퓨터를 위한 운영체제
  • 안정성 ⬇︎, 편리성과 보편성 ⬆︎

⚡️ 기능

  • 플러그 앤 플레이 (plug and play)
    • 새로운 하드웨어 장착시 운영체제가 자동으로 하드웨어 감지
    • 하드웨어 맞게 설정
  • 자체적 네트워크 프로그램 지원
    • 윈도우 사용자들끼리 파일이나 프린터 등의 하드웨어 공유 가능

⚡️ 버전

초기 윈도우
  • 편리한 환경 제공
    • 그래픽 인터페이스와 마우스 기능 지원
  • 한계
    • 그 자체로 독립적인 운영체제X
    • MS-DOS위에서 수행
윈도우95

이 자체로 하나의 온전한 운영체제 역할 수행

윈도우 XP
  • 인터페이스 측면에서 그래픽 환경과 아이콘 방식 채택
  • 동일한 명령어라도 수행하는 방식을 여러 가지 지원
    • 초보자도 쉽게 배울 수 있는 방법 제공
윈도우 NT
  • 높은 안정성
  • 웹서버 등 다중 사용자용 운영체제로 사용
  • MS윈도우처럼 편리한 사용
  • 서버 환경 지원으로 웹서버, 전자우편, 파일서버, 데이터베이스 및 통신 기능 손쉽게 관리 가능

2. 유닉스

  • 안전성 ⬆︎

    • 1969년 벨 연구소에서 최초 개발
    • 가장 널리 사용되는 운영체제
  • 전문가에게 편리성 ⬆︎

    • 대형 컴퓨터 및 전문적인 목적의 컴퓨터에 적합
    • 개발 환경을 위해 설계
  • 이식성(portability) ⬆︎

    • 해당 소프트웨어를 다른 기종의 기계로 옮기기 얼마나 용이한가
    • 사람이 이해하기 쉬운 C언어로 작성 (고급언어)
      • 당시엔 대부분 기계어에 가까운 어셈블리 언어로 작성
  • 작은 커널의 크기

    • 프로그래밍 환경에 이상적
  • 소스 코드 공개

    • 연구에 보탬
    • 학문에서는 유닉스가 거의 표준 운영체제
  • 기술이 발전되더라도 확장성 지원 ⬆︎

⚡️ 유닉스 종류

리눅스(Linux)
  • 대형 서버뿐 아니라 개인용 컴퓨터에서도 유닉스 널리 사용 가능
맥 (Mac)

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

운영체제의 핵심 = 효율적 자원 관리

하드웨어 자원

  • CPU와 메모리를 비롯해 주변장치 또는 입출력 장치라 불리는 장치
  • CPU와 메모리는 전원이 꺼지면 처리 중이던 정보 제거됨
    • 기억해야 하는 부분을 입출력 장치 중 한 종류인 보조기억장치에 파일 형태로 저장
    • 저장되는 방식 및 접근 권한 등도 관리

1. CPU 스케줄링 (CPU scheduling)

  • 매 시점 어떠한 프로세스에 CPU를 할당해 작업을 처리할 것인지 결정
  • 가장 효율적으로 CPU 사용
  • 특정 프로세스 불이익 방지

⚡️ 선입선출 (First Come First Served: FCFS)

  • CPU를 먼저 얻은 프로세스가 작업을 완료할 때까지 다른 프로세스는 대기
  • 전체 시스템 입장에서 비효율적 결과 초래 가능

⚡️ 라운드 로빈 (Round Robim)

  • 선입선출 단점 보완 위해 고안
  • CPU를 한 번 할당받아 사용할 수 있는 시간을 일정하게(밀리초단위로) 제한

⚡️ 우선순위 (priority)

  • 우선순위 높은 프로세스에 CPU 먼저 할당
  • 기다린 시간이 늘어날수록 우선순위 증가

2. 주소(address)를 통한 메모리 관리

  • 메모리의 어느 부분이 어떤 프로그램에 의해 사용되고 있는지 파악해서 관리
    • 메모리가 필요한 프로그램에 할당, 필요하지 않을 때 회수
    • 다수의 사용자 프로그램이 서로의 프로세스 영역을 침범하지 않도록 보안 유지

⚡️ 고정분할 (fixed partition)

- 물리적 메모리를 몇 개의 분할로 미리 나누어 관리 - 나뉜 각각의 분할에는 하나의 프로그램이 적재 - 융통성X 효율성X - 최대 프로그램 수는 분할 개수로 한정 - 분할 크기보다 큰 프로그램은 적재 불가능 - 내부조각 (internal fragmentation) 발생 가능 - 분할 크기보다 작은 프로그램 적재시 남는 영역발생

⚡️ 가변분할 (variable partition)

  • 매 시점 프로그램의 크기에 맞게 메모리 분할해서 사용
  • 여전히 물리적 메모리보다 큰 프로그램의 실행은 불가능
  • 분할 크기와 개수가 동적으로 변화
    • 기술적 관리 기법 필요
  • 외부조각(external fragmentation) 발생 가능
    • 프로그램에 할당되지는 않았지만 크기가 작아 프로그램을 올리지 못하는 메모리 영역

⚡️ 가상메모리 (virtual memory)

  • 현대 번용 컴퓨터 환경에서 가장 널리 사용되는 메모리 관리 기법
  • 물리적 메모리보다 큰 프로그램 지원 (가상 메모리만큼)
    • 가상메모리의 주소를 물리적 메모리 주소로 매핑(mapping)해 주소를 변환 후 물리적 메모리에 올림
    • 프로그램 전체가 항상 동시에 사용되는 것은 아님
    • 현재 사용되고 있는 부분만 메모리에 올리고 나머지는 하드디스크와 같은 보조장치에 저장
  • 스왑 영역(swap area)
    • 보조기억장치의 영역
  • 페이징(paging)
    • 가상 메모리 주소 공간은 페이지(page)라는 동일한 크기의 작은 단위로 나뉘어 물리적 메모리와 스왑 영역에 일부분씩 저장
    • 동일한 단위로 메모리 분할

3. 인터럽트(interrupt)

  • 주변장치 및 입출력 장치 관리 메커니즘
    • 입출력 장치: 키보드, 모니터
    • 보조기억장치: 하드디스크

⚡️ 신호 (interrupt)

  • CPU의 서비스가 필요한 경우 신호를 발생시켜 서비스 요청
  • CPU는 인터럽트 발생시 작업을 중단하고 인터럽트 요청 수행
    • 예) 키보드 입력
    • 중단한 작업은 상태 저장

⚡️ 인터럽트 처리루틴

  • 인터럽트가 발생했을 때 해주어야 할 작업을 정의한 프로그램 코드
    • 요청하는 장치와 발생 상황에 따라 종류 다양
  • 운영체제 커널 내에 존재
    • CPU 스케줄링, 메모리 관리루틴 등

⚡️ 컨트롤러 (controller)

  • 주변장치들이 탑재하고있는 작은 CPU
  • 해당 장치에 대한 업무 처리
  • 메인 CPU에 인터럽트 발생시켜 보고
profile
개발기록

0개의 댓글