[운영체제] 1. OS 개요

nnm·2020년 2월 18일
0

운영체제

목록 보기
1/10
post-thumbnail

OS? Oh Yes! 책을 바탕으로 학습한 내용입니다.

운영체제란?

사용자 인터페이스와 자원 관리를 위한 프로그램의 집합, 운영체제는 일반적으로 사용자 인터페이스(쉘)와 장치, 파일, 메모리, 처리기 관리의 다섯가지 구성요소를 가지고 있다.

듀얼모드

사용자 프로그램이 실행되면서 자신의 프로그램이 있는 영역을 벗어나 다른 사용자 영역을 침범하거나 운영체제의 영역을 침범하는 것을 방지하기 위함

시스템의 다양한 설정이나 데이터에 대한 접근, 수정 권한을 갖지 않으며 사용자 프로그램, 응용 프로그램 등이 실행된다. 유저모드에서 프로그램을 실행하다가 디스크나 메모리 접근과 같은 커널 모드에서만 가능한 작업이 필요할 때는 System Call을 하게되고 운영체제 프로그램이 커널 모드에서 요청작업을 완료한 후 다시 원래 실행 중이던 프로그램으로 돌아가게 된다.

부팅

  • 전원이 켜지기 전
    Boot Loader가 실행가능 상태로 존재, 주로 시스템에 내장된 ROM, 하드디스크, 네트워크 상의 다른 서버 등에 저장되어 있음
  • 전원이 켜진 후
    • 바이오스(BIOS)로부터 제어권을 넘겨받는다.
    • RAM을 사용할 수 있게 초기화하고 루트(root) 파일시스템을 준비한다.
    • 자신을 RAM에 복사한 후 RAM 상에서 계속 실행한다.
    • 필요한 하드웨어를 초기화한다.
    • 특정 운영체제 커널을 RAM에 올린다.
    • 제어권(실행권한)을 운영체제 커널에 넘겨준다.

레지스터

  • PSW 프로그램 상태 워드
  • PC 프로그램 카운터
  • IR 명령어 레지스터
  • MAR 메모리 주소 레지스터
  • MBR 메모리 버퍼 레지스터
  • I/O AR 입출력 주소 레지스터
  • I/O BR 입출력 버퍼 레지스터

Polling

CPU가 일정한 시간 간격을 두고 각 자원들의 상태를 주기적으로 확인하는 방식, 다음 폴링까지 변화된 자원의 상태를 알 수 없다. 변화가 없더라도 계속해서 확인해야한다.

Interrupt

  • 하드웨어 인터럽트
    하드웨어 자원으로부터의 인터럽트
  • 소프트웨어 인터럽트
    실행 중인 명령어에 의한 인터럽트, 오류를 발생시키는 명령
    • CPU 스스로 자신에게 인터럽트를 하는 경우를 Trap라고 한다.
    • System Call
  • 인터럽트의 순서
    1. PSW, PC, Register의 정보를 메모리 제어스택에 저장한다.
    2. PC에 인터럽트 처리 루틴의 시작 주소를 넣고 실행한다.
    3. 인터럽트 처리 루틴이 종료된 후 제어스택에 저장했던 내용을 되돌려 놓는다.
  • Context Switching
    기존 작업을 인터럽트 작업을 수행한 후 다시 이어서 처리할 수 있도록 저장하는 절차
  • 중첩된 인터럽트
    • 순차처리
    • 중첩처리

I/O 방식

입출력 장치에는 컨트롤러가 있고 CPU와 입출력할 데이터를 저장하는 버퍼가 있다. 디스크의 데이터는 워드 단위로 버퍼에 채워진 후 CPU에게 인터럽트로 알리고 CPU는 버퍼의 내용을 메모리로 옮긴 후 다음 워드의 입력을 실행한다.

  • Programmed I/O
    CPU가 입력을 지시한 후 워드가 컨트롤러의 버퍼에 입력됐는지를 계속 확인하는 방법, 인터럽트가 없는 대신에 CPU가 지속적으로 완료의 여부를 확인한다.
  • Interrupt-driven I/O
    CPU가 입력을 지시한 후 워드의 입력이 이루어지는 사이에 CPU를 다른 작업에 활용하고 입력의 완료 시 인터럽트를 통해 CPU에게 알린다.
  • Direct Memory Access, DMA
    CPU는 입출력할 데이터의 시작주소와 크기 등을 Channel에게 알려주고 다른 작업을 수행하며, 채널의 주도하에 I/O가 이루어지며 한 번의 입출력 단위인 Block 단위로 CPU에게 인터럽트를 보내 알린다. 입출력 데이터가 클수록 잦은 인터럽트가 발생하는 Interrupt-driven I/O의 단점을 극복하기 위해 등장한 방식
  • Isolated I/O
    입출력 장치들이 I/O Bus를 통해 CPU와 연결되어 있는 경우로 I/O Bus를 통해 해당 장치의 지정, 데이터, 입출력을 구분해 주는 제어 값이 전달된다. 입출력 명령어가 명령어 집합에 추가되므로 제어 로직이 복잡해진다.
  • Memory-mapped I/O
    입출력 장치들이 메모리와 함께 메모리 버스에 연결되어 있는 경우로 입출력 장치들은 각각 메모리의 한 번지를 할당받아 그 번지로의 MOVE, LOAD 작업을 한다. 메모리 주소에 입출력 장치를 가리키는 번지수가 있어 주소 공간만큼 메모리를 활용하지 못한다.
profile
그냥 개발자

0개의 댓글