[운영체제] 운영체제 개요 & 컴퓨터 시스템 동작 원리

HeeYeon Kim·2024년 1월 11일
1

STUDY

목록 보기
1/15
post-thumbnail

모의면접으로 학습하는 CS 스터디
- 운영체제 1주차


운영체제 정의 & 역할

  • 운영체제 정의
    • 응용 프로그램의 잘못된 동작으로 컴퓨터가 망가지는 것을 막기 위해 컴퓨터 전체를 관리하고 운영하는 소프트웨어

  • 운영체제 역할
    • 종류

      1. 자원 관리
      - 컴퓨터 자원(키보드, CPU, 모니터, 마우스 등)을 응용프로그램에게 나누어 주어 사용자가 원활하게 작업할 수 있도록 돕는 것.

    1. 자원 보호
      • 악의적인 사용자, 미숙한 사용자에게서 자원 보호, 비정상적인 작업으로부터 컴퓨터 자원을 지킴

    2. 하드웨어 인터페이스 제공
      • 다양한 장치를 일관된 방법으로 사용할 수 있도록 지원
      • 다양한 종류의 하드웨어(=다양한 제품)를 사용하는데 그때마다 별도의 소프트웨어를 설치하는 것은 매우 불편함
      • 드라이버 설치 필수 : 하드웨어 장치와 상호작용하기 위한 프로그램

    3. 사용자 인터페이스 제공
      • 사용자가 운영체제를 편리하게 사용하도록 지원
      • 운영체제가 그래픽 사용자 인터페이스를 제공해 대부분의 작업을 마우스로 수행함
      • GUI: 입출력 등의 기능을 알기 쉬운 아이콘 그래픽으로 나타내 사용자가 명령을 선택하면서 작업을 수행하는 상호작용방식


시분할 시스템

  • 시분할 시스템
    • 정의 : 여러 작업을 조금씩 처리해 작업이 동시에 이루어지는 것처럼 보이게 하는 것
    • 타임 슬라이스(=타임 퀀텀) : 잘게 나뉜 시간 한조각
    • 멀티프로그래밍 수준(=멀티 프로그래밍정도) : 동시에 실행되는 작업의 개수
      ex. 일괄 작업 시스템은 1
    • 단점
      • 여러 작업을 동시에 처리하기 위한 추가 작업 필요
        ex. A작업 → B작업 시 사용자 메모리 정리하는 추가작업 필요.
      • 너무 많은 양의 작업이 공존할 경우 중요한 작업이 일정 시간안에 끝나는 것을 보장하지 못함.


다중 프로그래밍 시스템

  • 다중 프로그래밍 시스템
    • 정의 : 여러개의 프로그램을 하나의 CPU에 적재해 실행

    • 한 프로그램을 실행하다 입출력 동작을 하면 CPU는 다른 프로그램을 적재해 실행

    • CPU는 쉬지 않고 계속 작업할 수 있음

    • 여러개의 프로그램을 작업 준비상태로 두고 준비상태에 있는 여러 작업 중 하나를 선택하는 데에는 별도의 기법이 필요

    • 예시

      • A라는 프로그램 실행
      • 메인 메모리엔 A라는 프로그램이 적재되어 있어야함
      • A 입출력 동작 실행
      • CPU는 B라는 프로그램을 실행


대화형 시스템

  • 대화형 시스템
    • 정의 : 컴퓨터와 사용자의 대화를 통해 작업이 이루어지는 시스템
    • 키보드, 모니터의 개발 → 작업 중간에 사용자가 입력, 사용자에게 중간값을 보여줄 수 있게 됨.
    • 중간결과값을 통해 프로그램이 정상적으로 작동되는 지 확인할 수 있게 됨.


다중 처리기 시스템

  • 다중 처리기 시스템
    • 정의 : 2개 이상의 CPU를 갖는 시스템

    • CPU 여러개가 병렬로 구성

    • 각 프로세스는 독립적으로 동작하며 자원이 서로 다르게 할당됨

    • 모든 프로세서는 시스템 버스를 통해 메인메모리를 공유

    • 많은 작업을 동시에 실행할 수 있음.

    • 예시

      • 볶음밥 하나 만드는 데 40분 소요
      • 한 주방에서 만든다면 2개 만드는 데 80분 소요
      • 그러나 주방 2개 만들면 40분이면 볶음밥 2개 만들기 가능


시스템 콜

  • 시스템 콜
    • 정의 : 커널이 자신을 보호하기 위해 만든 인터페이스
    • 컴퓨터 자원 보호를 위해 사용자나 응용 프로그램이 자원에 직접 접근하는 것을 차단.
    • 자원 이용하려면 시스템 호출 인터페이스 이용해 접근 필수
    • 커널이 제공하는 시스템 관련 서비스를 모아놓은 것이며 함수 형태로 제공.
      ex. printf
    • 사용자가 자발적으로 커널 영역에 진입할 수 있는 유일한 수단


커널

  • 커널 정의
    • 프로세스 관리, 메모리 관리, 저장장치 관리와 같은 운영체제의 핵심 기능을 구현한 프로그램
    • 운영체제의 성능은 커널이 좌우

  • 커널 구조
    • 시스템 호출, 드라이버

      • 시스템 호출은 반드시 시스템호출을 거쳐야 커널에 진입할 수 있도록 되어있지만 드라이버는 아님.
      • 커널이 제공하는 드라이버도 있고 하드웨어 제작자가 제공하는 드라이버도 있기 때문.

  • 커널의 주요 역할 :
    • 다양한 종류의 프로세스(실행된 프로그램)에 CPU를 배분하고 작업할 수 있는 환경을 만들어주는 것 - 프로세스 관리
    • 프로세스를 작업 공간 배치하고 실제 메모리보다 큰 가상공간 제공 - 메모리 관리
    • 필요한 입출력 서비스를 제공 - 입출력 관리
    • 공동 작업을 위한 각 프로세스 간 통신환경 지원 - 프로세스 간 통신 관리
    • 저장장치에 필요한 파일시스템을 만들고 관리하는 일 - 파일 시스템 관리

  • 커널의 종류

    • 단일형 구조 커널

    • 초창기 운영체제 구조
    • 모듈들이 구분없이 하나로 구성
    • 장점 : 모듈 간 통신 비용이 줄어 효율적 운영 가능
    • 단점
      • 모든 모듈이 하나로 묶어져 있어 버그, 오류 처리하기 어려움
      • 운영체제의 여러 기능이 서로 연결되어 상호 의존성이 높아 기능상 작은 결함이 시스템 전체로 확산될 수 있음
      • 다양한 환경 시스템에 적용하기 어려움. 이식성이 낮다
      • 현대 운영체제는 매우 크고 복잡해서 이 운영체제를 구현하긴 쉽지 않다.

    • 계층형 구조 커널

    • 비슷한 기능을 가진 모듈을 묶어서 하나의 계층으로 만들고 계층 간 통신으로 운영체제 구현
    • 윈도우 → 계층형 구조 커널
    • 장점 : 버그나 오류를 쉽게 처리할 수 있음. 오류나도 커널이 아닌 해당 계층만 수정하면 되기 때문
    • 단점 : 사용자 요구, 다양한 하드웨어 수용을 위해 추가하다보니 커널의 크기가 커지고 하드웨어 용량도 늘어남 → 오류 잡기 어려워짐

    • 마이크로 구조 커널

    • 프로세스 관리, 메모리 관리, 프로세스 간 통신 관리 등 가장 기본적인 기능만 제공. 다른 많은 부분은 사용자영역에 구현

    • 마이크로 커널

      • 메모리 관리, 프로세스 간 동기화 서비스 제공.
      • 메모리 관리자, 동기화 모듈 → 프로세스 간 통신 모듈로 연결. → 모듈 간 정보 교환은 프로세스 간 통신으로 이루어짐
    • 장점 :각 모듈은 독립적으로 작동하기 때문에 하나의 모듈이 실패해도 전체 운영체제가 멈추지 않음.


커널모드

  • 커널 모드
    • 정의 : 운영체제의 핵심 기능을 수행하는 커널이 실행되는 모드

    • 해당 모드에서 실행되는 코드 특징

      • 시스템 자원에 대한 접근 권한 허용
      • 하드웨어 제어, 메모리 관리, 인터럽트 처리 등의 주요 작업 수행 가능
      • 잘못된 동작으로 시스템에 심각한 영향 줄 수 있음. 신중하게 관리할 필요 있음
    • 유저모드와 커널모드 구분

      • 프로세스 생성 시엔 유저모드
      • 특정 시스템 호출(printf, open 등)이나 예외 상황 발생 시 커널모드로 전환해 작업 수행


유저모드

  • 유저 모드
    • 정의 : 응용프로그램이 실행되는 모드

    • 해당 모드에서 실행되는 코드 특징

      • 제한된 권한을 가지며 운영체제의 자원에 직접 접근할 수 없음
      • 사용자 작업 처리, 결과 출력하는 등의 기능 수행
      • 시스템 안전성, 보안 위해 제한된 자원에만 접근 가능. 커널모드로의 전환을 요청할 수 있음.
    • 유저모드와 커널모드 구분

      • 프로세스 생성 시엔 유저모드
      • 특정 시스템 호출(printf, open 등)이나 예외 상황 발생 시 커널모드로 전환해 작업 수행


폴링

  • 풀링
    • 정의 : CPU가 직접 입출력 장치에서 데이터를 가져오거나 내보냄.
    • CPU는 입출력장치의 상태레지스터를 주기적으로 검사해 명령을 받을 수 있는지 확인. 일정 조건을 만족할 때 처리
    • 단점
      • CPU 명령어 해석과 실행 + 입출력까지 관여해서 작업 효율이 떨어짐
      • 다른 프로세스에게 CPU를 양도하지 않고 하드웨어 장치가 동작 완료하는 동안 하드웨어 상태를 계속 체크. CPU를 많이 낭비하게 됨.
    • 그래서 인터럽트 방식 등장


인터럽트

  • 인터럽트
    • 정의 : 주변 장치의 입출력 요구나 하드웨어의 이상 현상을 CPU에게 알려주는 것
    • 하드웨어 인터럽트와 소프트웨어 인터럽트로 나뉨
    • IRQ : 고유의 인터럽트 번호가 부여됨
    • 인터럽트 벡터 : 여러 개의 인터럽트를 하나의 배열로 만듬. 인터럽트와 인터럽트 핸들러를 일대일로 연결
    • 인터럽트 핸들러 : 인터럽트를 처리하기 위한 루틴. 인터럽트 처리를 위해 미리 정의된 함수

  • 외부 인터럽트
    • 정의 : 하드웨어가 발생시키는 인터럽트
    • CPU가 아닌 다른 하드웨어 장치가 CPU에게 어떤 사실을 알려주거나 CPU 서비스를 요청해야할 경우 발생시킴
    • 종류 : 전원 이상, 기계 고장, 입출력 등

  • 내부 인터럽트
    • 정의 : 소프트웨어가 발생시키는 인터럽트
    • 종류 : 예외상황(0으로 나누는 경우, 오버플로우 발생. 명령어 잘못 사용 등)

  • 인터럽트 처리 과정
    1. 인터럽트 발생. 현재 실행중인 프로세스 일시 정지. 현재 프로세스 정보는 PCB에 저장
    2. 인터럽트 컨트롤러 실행. 우선순위 고려해 처리 순서 결정
    3. 인터럽트 벡터에 등록된 인터럽트 핸들러 실행.
    4. 인터럽트 핸들러가 처리를 마치면 PCB에 저장된 프로세스 정보를 가져와 다시 실행



DMA

  • DMA
    • 정의 : 직접 메모리 접근
    • 과거엔 폴링방식을 이용했기 때문에 CPU가 메모리, 주변장치에 대한 모든 권한 있음
    • 그러나 인터럽트 방식 도입 → 입출력 관리자가 데이터 입출력을 맡게 됨. → 근데 메모리는 CPU만 접근 권한을 가짐. → 그래서 입출력 관리자가 CPU 허락 없이 메모리에 접근할 수 있도록 DMA 권한이 있음.
    • 위치 : 입출력 제어기에 DMA 제어기가 있음.


동기식 입출력

  • 동기식 I/O
    • 정의 : 어떤 프로그램이 입출력 요청했을 때 작업이 완료된 후에 그 프로그램이 후속 작업을 수행할 수 있는 방식
      • 읽기작업에 사용
      • 디스크, 키보드같은 I/O하드웨어들은 속도가 느려 CPU는 작업을 기다려야하고 기다릴 때 별다른 일을 하지 않음.
        => 그래서 입출력 수행 중엔 CPU를 다른 프로그램에 할당해 CPU가 계속 쉬지 않고 일을 할 수 있도록 함.
    • 입출력이 완료될 때까지 CPU가 명령을 수행하지 못하는 프로그램 - 봉쇄상태로 전환.

  • 과정
    1. 사용자가 입출력 요청
    2. 운영체제의 커널로 CPU 제어권이 넘어와 입출력 처리와 관련된 커널코드 수행
    3. 입출력 호출한 프로세스 상태를 Blocked 상태로. 입출력 완료될 때까지 CPU 할당 불가
    4. 입출력 완료되면 I/O컨트롤러가 CPU에게 인터럽트 발생
    5. blocked 상태인 해당 프로세스에게 CPU할당받을 수 있도록 blocked 상태 해제

  • 문제 : 동기성 문제가 생길 수 있음
    • 예시
      1. 프로그램 A 파일의 내용 1을 3으로 수정하는 I/O 요청. 이를 수행
      2. 프로그램 B에게 CPU 할당
      3. 프로그램 B는 A가 접근한 파일의 내용을 +1하는 요청.
      4. 입출력 컨트롤러가 A,B 요청의 순서를 바꿔 처리할 수 있음 ⇒ 동기성문제

  • 해결 : 큐 사용
    • 하드웨어 요청들을 큐에 넣어 관리. 큐에 있는 요청을 순서대로 처리해 동기화 문제 해결


비동기식 입출력

  • 비동기식 I/O
    • 정의 : 입출력 연산을 요청한 후 CPU 제어권을 입출력 연산을 호출한 해당 프로그램에 곧바로 부여
    • 주로 입력작업에 많이 사용
    • CPU 제어권이 입출력 요청한 프로세스에게 곧바로 다시 주어짐
    • 연산이 완료되는 것과 무관하게 처리 가능한 작업부터 처리.


0개의 댓글