Ch. 01 운영체제 소개

지니🧸·2023년 9월 6일
0

운영체제

목록 보기
2/28

이 게시글은 <쉽게 배우는 운영체제> (함호종, 원종권 지음)을 공부하며 적은 개인 노트입니다.

1. 운영체제의 개념

운영체제: 컴퓨터 사용자와 컴퓨터 하드웨어 간 인터페이스를 담당하는 프로그램

1.1 운영체제의 역할

컴퓨터 시스템의 구성요소: 컴퓨터 사용자, 소프트웨어, 하드웨어

  • 컴퓨터 사용자: 컴퓨터를 사용하는 사람, 장치, 컴퓨터
  • 하드웨어: 연산을 위한 기본 자원을 제공하는 CPU(프로세서), 메모리, 다양한 장치 등
  • 소프트웨어: 컴퓨터가 기능 수행하는데 필요한 프로그램
    • 유틸리티: 컴퓨터의 처리 과정을 보조하여 시스템을 유지하고 성능을 개선하기 위한 프로그램
      • (예) 컴파일러, 편집기, 압축(해제) 프로그램
      • 응용 프로그램보다 작은 프로그램
    • 응용 프로그램: 문제를 해결하기 위해 만들어진 프로그램
      • (예) DBMS, 비디오 게임, 워드 등

운영체제의 역할

  1. 조정자
  • 다른 프로그램이 작업할 수 있는 환경 제공
  • 직접 작업은 수행하지 않지만, 작업이 완료될 수 있도록 조정자 역할 수행
    • 프로그램이 제 기능을 하도록 도와준다
  1. 자원 관리(할당)자
  • 각 응용 프로그램 실행에 필요한 자원을 관리 및 할당한다
  • 다른 응용 프로그램에서 동시에 동일한 자원을 요구하면 이를 공정/효율적으로 운영하기 위해 결정
  1. 문제 해결과 사용자 프로그램 제어
  • 입출력 장치를 동작시키고 제어한다
  • 컴퓨터 시스템의 오류/부적절 사용을 방지하기 위해 응용 프로그램의 실행을 제어한다
  • 기능
    • 하드웨어와 사용자 간 인터페이스 정의
    • 사용자들이 하드웨어를 공동으로 사용할 수 있게 해줌
    • 사용자들이 데이터를 공유할 수 있게 해줌
    • 사용자 간 자원관리자 역할
    • 입출력 보조
    • 오류 처리

1.2 자원 관리

자원: 메모리, 프로세스, 장치, 파일 등 시스템 구성요소
운영체제의 역할:

  • 응용 프로그램의 메모리 공간, 시간 등의 자원에 대한 스케쥴링 및 할당
  • 제한된 자원을 효율적으로 사용하기 위한 이용율 증가
  • 오버헤드 최소화
  • 각 응용프로그램의 수행 영역 보호

프로세스 관리

프로세스

  • 실행 중인 프로그램
  • 한 시스템에서 작업 단위

시스템: 프로세스의 집합

  • 운영체제 프로세스와 사용자 프로세스를 포함한다
  • 운영체제 프로세스: 시스템 코드를 수행하는 프로세스
  • 사용자 프로세스: 사용자 코드를 수행하는 프로세스

운영체제가 프로세스를 관리하는 방법

  • 프로세스와 스레드 스케쥴링
  • 프로세스 생성과 제거, 중지와 재수행
  • 프로세스 동기화 및 통신을 위한 기법 제공
  • 교착상태를 방지하는 기법 제공

메모리 관리

메모리: 메인 메모리와 보조 기억 장치

  • 메인 메모리: 프로세서가 직접 주소로 지정할 수 있는 메모리
    • 프로세서가 명령어를 수행하려면 명령어가 메인 메모리에 있어야 함
      • 프로그램이 절대 주소로 맵핑되어 메인 메모리에 저장됨
    • 프로세서 이용률과 컴퓨터 응답 속도를 높이려면 메모리에 프로그램을 몇개 저장하고 있어야 한다
      • 다중 프로그래밍 >> multi-programming system
  • 보조기억 장치: 메인 메모리에 미처 저장하지 못한 내용을 저장하는 디스크
  1. 메인 메모리 관리
    • 메모리의 어느 부분이 사용되는지, 누가 사용하는지 점검
    • 메모리 공간에 어떤 프로세스를 저장할지 결정
    • 메모리 공간을 할당/회수하는 방법 결정
  2. 보조기억 장치 관리
    • 비어 있는 공간 관리
    • 저장 장소 할당
    • 디스크 스케쥴링

장치 관리

  • 임시 저장 시스템
    • buffer-chacing
  • 일반적인 장치 드라이버 인터페이스
  • 특정 하드웨어 장치를 위한 드라이버

파일 관리

운영체제는 효율성을 위해 단일화된 정보 저장 형태를 유지 제공한다

  • 파일 생성과 제거
  • 디렉터리 생성과 삭제
  • 보조기억 장치에 있는 파일의 맵핑
  • 안전한 저장 매체에 파일 저장
    • 안전한: 비휘발성

기타 관리

  1. 보호 시스템: 운영체제의 관리 하에 적절한 영역 및 자원을 보호
  2. 네트워킹: 네트워크를 관리한다
  3. 명령 해석기: Command interpreter

1.3 운영체제의 목적

  1. 사용자에게 편리한 환경 제공: GUI 등
  2. 자원관리 및 오류 제어
  3. 시스템 성능 향상
    • 처리능력 (throughput): 시스템의 생산성. 단위 시간당 처리하는 작업량
    • 신뢰도 (reliability): 하드웨어/소프트웨어가 실패 없이 주어진 기능을 수행할 수 있는 능력
    • 응답 시간: 사용자가 시스템에 작업을 의뢰한 후 반응 얻을 때까지의 시간
      • 시분할 방식 시스템) 응답시간
      • 일괄 처리 시스템) Turn around time
  4. 사용가능도 (availability) 증대
    • 고장/오류 시에도 시스템 전체를 중단시키지 않고 운영한다

3. 운영체제의 서비스

3.1 사용자 서비스

사용자 서비스: 프로그래머가 프로그래밍 작업을 쉽게 수행할 수 있도록 제공되는 서비스

  1. 사용자 인터페이스: 사용자와 컴퓨터 간 상호 작용 공간

    • 그래픽 사용자 인터페이스 (GUI)
      • 마우스 키보드 등으로 조작
    • 명령 라인 인터페이스 (Command-Line interface, CLI)
      • 텍스트 전용 인터페이스
    • 웹 사용자 인터페이스 (Web User Interface)
      • 웹 브라우저 프로그램을 사용
      • 웹페이지를 통해 입력을 수락하고 생성하여 출력을 제공하는 GUI 영역의 인터페이스
  2. 프로그램 실행: 컴퓨터에 설치된 프로그램을 열거나 실행한다

    • 파일의 내용을 메모리에 적재한다
    • 프로그램을 실행한다
    • 프로그램 실행을 정상/비정상적으로 끝낸다
  3. 입출력 작업

    • 사용자 프로그램은 장치에 접근할 수 없기 때문에 운영체제가 입출력 동작을 위한 방법을 제공해야 한다
  4. 파일 시스템 조작

    • 파일은 디스크의 블록에 저장된다
    • 파일을 삭제하면 파일정보가 제거되고, 할당된 블록은 자유로워진다
    • 적절한 파일 접근권한 관리가 필요하다
  5. 통신: 프로세스 간, 또는 시스템 간 통신

  6. 오류 탐지: 운영체제는 모든 하드웨어 및 소프트웨어에서 오류를 항상 탐지해야 한다

    • 하드웨어) 모든 데이터가 전송 도중 손상되지 않았는지 확인
    • 소프트웨어) 일관성 있는 계산을 위한 오류 조치

3.2 시스템 서비스

시스템 서비스: 시스템 자체의 효율적인 동작을 보장하는 기능

  1. 자원 할당

자원: 프로세서 사이클, 메인메모리, 파일 저장 장치, 입출력 장치 등

다수의 사용자/작업을 운영하기 위해서는 운영체제가 자원을 각각 할당/관리해야 한다

  1. 계정

각 사용자가 어떤 컴퓨터 자원을 얼마나 사용하는지 정보를 유지/추적한다

  1. 보호와 보안

작업간 영역을 보호하고, 작업 도중 방해받지 않도록 보장한다

보호:

  • 시스템 호출을 위해 전달된 모든 매개변수의 타당성 검사
  • 시스템 자원에 모든 접근을 제어하도록 보장

보안:

  • 잘못된 접근 시도로부터 외부 입출력 장치 방어
  • 외부자에 대한 사용자 인증을 필요

3.3 시스템 호출

시스템 호출(System call): 실행 중인 프로그램과 운영체제 간의 인터페이스

  • 사용자 프로그램은 시스템 호출로 운영체제의 기능에 접근한다
  • API: Application Programming Interfaces

시스템 호출 방법

  1. 프로그램에서 명령/서브 루틴의 호출 형태로 실행한다

    • 일반적으로 어셈블리 명령어로 제공됨
  2. 시스템에서 명령 해석기를 통해 대화 형태로 호출한다

시스템 호출 종류

  • 프로세스 제어: 종료/취소, 적재/수행, 프로세스 생성/종료, 프로세스 속성 획득/지정, 대기, 대기/신호 이벤트, 기억 장치 할당 및 해제
  • 파일 조작: 파일 생성/삭제, 오픈/닫음, 읽기/쓰기/재배치, 파일 속성 획득/지정, 논리적 부착
  • 장치 조작: 장치 요구/해제, 읽기/쓰기/재배치, 장치 속성 획득/설정, 논리적 부착, 장치 제거
  • 정보 관리: 시간 및 일자의 설정/획득, 데이터의 설정/획득, 프로세스/파일/장치 속성의 설정/획득
  • 통신: 통신 연결의 생성/제거, 메시지의 송수신, 상태 정보 전달, 원격장치의 부착/제거

4. 운영체제의 구조

4.1 단순구조 운영체제 (Monolithic structure)

단순 구조 운영체제: 최소 공간에서 가장 유용한 기능을 제공하도록 작성된 보편적인 운영체제 구조

  • 운영체제의 모든 기능 및 구성요소를 커널에 포함한다
    • 기능/구성요소는 효율적인 모듈로 구분되지 못한다
    • 인터페이스와 기능 수준의 명확한 분리가 어렵다
  • 사용자 프로그램의 실패가 전체 시스템 충돌의 원인이 될 수 있다
  • 여러 하드웨어에 의해 제한된 구조다

4.2 계층 구조 운영체제 (Layered structure)

계층 구조 운영체제: 유사한 기능을 묶어 계층화해서 모듈 구조로 변화했다

아래 사진은 계층 접근이다

  • 가장 낮은 계층 (0층)은 하드웨어
  • 최상의 계층 (N층)은 사용자 인터페이스

계층 접근 방식의 장점

  • 구조와 디버깅이 간단하다
  • 각 계층은 각각 낮은 수준의 기능 및 서비스를 사용하도록 선택된다 >> 디버깅 및 시스템 검증 단순화

  • 계층 0: 프로세서의 기본 다중프로그래밍 제공
    • 인터럽트가 발생하거나 시간이 종료되면 프로세스간 스위칭과 프로세서의 할당을 처리한다
  • 계층 1: 메모리 관리
    • 메인 메모리에 프로세스에 대한 공간을 할당한다
  • 계층 2: 각 프로세스와 운영자 콘솔 간의 통신 처리
  • 계층 3: 입출력 장치를 관리하고, 장치들로부터 스트림 정보를 버퍼링 처리한다
  • 계층 4: 사용자 프로그램
    • 프로세스, 메모리, 콘솔, 입출력 관리에 대해 걱정할 필요가 없다
  • 계층 5: 시스템 운영자 프로세스

스트림 정보: 일련의 데이터가 한 곳에서 다른 곳으로 직렬로 이동하는 상태이자 프로그램이 주변 장치와 통신하는 수단
표준 스트림: 컴퓨터 프로그램과 그 환경(I/O 장치 등) 사이에 미리 연결된 입출력 통로 (stdin: standard input, stdout: standard output, stderr: standard error)

버퍼링: 운영체제의 기능 중 하나로, 상주 모니터 혹은 장치 드라이버에 시스템 입출력 버퍼를 사용하여, 입출력 장치에 유휴시간이 없도록 프로세서의 연산 과정과 함께 작업의 입출력을 동시에 수행하는 것

  • 각 계층은 하위 수준에 의해 구현 및 운영됨
  • 각 계층은 이러한 작업이 구현되는 방식을 모두 알 필요는 없음
  • 각 계층은 특정 데이터 구조, 운영 등을 숨긴다
    • 본 계층의 작업과 역할만 수행한다

계층 접근 방식의 단점: 높은 계층은 차례로 낮은 계층에 대한 작업을 호출해야 돼서, 계층 간 데이터 전달 때문에 추가 오버헤드의 시스템 호출이 발생한다

4.3 마이크로 커널 구조 운영체제

커널

  • 커널 공간과 사용자 공간으로 구분된다
    • 커널 공간은 사용자 공간은 없는 권한을 가진다

커널의 종류: 단일(monolithic) 커널과 마이크로(micro) 커널

Monolithic kernel

  • Unix, MS-DOS, 초기 Mac 운영체제의 커널
  • 커널 공간: 시스템 서비스를 실행한다
    • 시스템 서비스: 프로세스 관리, 메모리 관리, 인터럽트 처리, 입출력 통신, 파일 시스템 등
  • 사용자 공간: 운영체제의 나머지 부분 (라이브러리와 응용 프로그램)

  • 장점:
    • 각 컴포넌트 간 커뮤니케이션이 효율적이다.
    • 커널이 모든 시스템 서비스들을 관리 했기 때문에(모놀리식 커널이기에) 개발자는 커널이 제공하는 함수만 사용해서 쉽게 할 수 있다
  • 단점:
    • 디바이스 드라이버를 추가/삭제 하려면 커널을 재빌드 해야 한다
      • 새로운 커널의 컴파일은 시간과 많은 메모리를 사용한다
    • 하나가 죽으면 전체 시스템이 죽는다.
    • 커널 공간에 모든 서비스를 포함한다 >> 커널 크기 증가 >> 확장성 부족 >> 유지보수 어려움
      • 이 문제를 해결하기 위한 것이 마이크로 커널이다

Micro kernel

Monolithic kernel에서의 변화

  • 입출력 제어와 기본 프로세스 통신 커널을 줄였다
  • 다른 시스템 서비스는 정상적인 프로세스의 형태, 즉 서버로 불리는 사용자 공간에 있도록 한다
  • 서버가 더이상 커널 공간에서 실행되지 않기 때문에 사용자 프로세스가 특권모드가 될 수 있도록 문맥교환(Context switching)이 필요하다

마이크로 커널: 핵심적인 기능(스케줄링, 메모리 관리 등등)만 커널에 담고 나머지는 제외해 가볍게 만든 커널

  • 기존에 모놀리식 커널이 갖고 있던 시스템 기능들(VFS, IPC, Device driver)은 커널위의 서버의 형태로 존재한다

    • 장점은 하나의 서비스가 죽더라도 커널 전체가 영향 받지는 않는다
  • (예) Mac OS X

  • 장점:

    • 서버를 추가하는 방식이기 때문에 기능을 추가하기 쉽다
    • 시스템이 견고하다
    • 리얼타임성이 높다
  • 단점:

    • 시스템 기능들이 서버의 형태로 존재하기 때문에 커뮤니케이션 오버헤드가 있다


참고:

profile
우당탕탕

0개의 댓글