운영체제

ttomy·2022년 12월 23일
0

운영체제 개요

운영체제란?

  • 컴퓨터와 하드웨어 사이의 중개자 역할.
  • 하드웨어에 대한 추상화를 제공
    • cpu: process
    • memory: address space
    • disk: file
    • network: port
  • 자원 분배에 대한 정책 결정 - 수행 //자원 할당자 역할
    • 스케줄링, 권한...
  • 입출력 장치와 프로그램을 제어 // 제어 프로그램 역할

주목할 점은 이런 목적을 달성하기 위해 여러 운영체제가 택하는 방법들이 다양하다는 것이다. -> What과 HOW의 분리 - 인터페이스와 구현의 분리처럼 os에서도 관심사의 분리가 이루어져 있다.

os는 기본적으로는 커널을 통해 하드웨어에 대한 서비스를 제공한다.
하지만 이 기능은 critical하기에 보호/관리 되어야 한다 때문에 커널 위에 user모드에서 응용 프로그램들이 수행되어 무분별한 커널로의 접근을 보호하고, 커널은 system call을 통해 user모드에 하드웨어의 통제를 부분적으로 제공한다.

컴퓨터 시스템의 구성

  • cpu, 메모리, 입출력 장치, Bus, 저장장치(disk, ssd...)
  • 현대의 범용 시스템은 하나 이상의 cpu, 메모리, 메모리, 입출력장치에 대한 접근 제공하는 Bus 가 기본적인 구성이다.

os의 적재 - 시행 간략과정

  1. 컴퓨터의 전원이 켜지면 수행할 초기 프로그램이 필요하다.
    bootstrap 프로그램이라고도 불리는 이 초기 프로그램은
    컴퓨터 내의 읽기 전용 메모리(펌웨어) 나 EERROM에 저장되어 있다.
  2. 이 초기 프로그램이 cpu레지스터, 장치 제어기, 메모리 내용 등을 초기화한다. 이 과정에서 운영체제의 커널 또한 메모리에 적재된다.
  3. 커널이 적재되고 나면 운영체제는 서비스를 제공을 시작할 수 있다.
    일부는 커널이 직접 서비스하는 게 아닌 커널의 실행동안 같이 실행되는 시스템 프로세스/시스템 디먼이 제공하기도 한다.
  4. 이제 시스템은 메모리로부터 명령어를 가져와 스케줄링되는 프로그램들과 event로 인해 동작한다.
    cpu는 스스로는 멈출 줄 모르는 폭주기관차와 같기에 interrupt신호 - system call과 같은 방법으로 제어되며 연산을 수행한다.

저장장치 구조

프로그램이 수행할 명령어, 데이터들은 메모리에 저장되기도 하지만,
이 메모리는 모든 데이터들을 저장하기에는 너무 작고, 전원을 끄면 휘발되는 저장장치이다.
때문에 보다 크고 영구적인 저장장치인 자기 디스크, 반도체 디스크, 플래쉬 메모리(주로 핸드폰) 를 이용한다.
대부분의 데이터들은 메모리에 적재되기 전, 이 저장장치에 보존되어 있다.

처리기(processor)의 사용 구조

단일 처리기 VS 다중 처리기

단일 처리기는 하나의 cpu와 전용 처리기들로 이뤄진다.
전용 처리기는 사용자 프로세스의 명령어를 실행하지는 않지만 디스크,키보드, 그래픽 제어기 같은 그 외 기기들 각각에 처리기로 사용된다. 이 전용 처리기들은 cpu로부터 요청을 받아들여 그 스스로 스케줄링을 하고 os는 이 처리기들의 상태를 감시한다. os가 전용 처리기들과 통신하는게 단일 처리기 시스템의 특징이다.

다중 처리기는 여러 개의 cpu를 이용한다. 이로 인해

  • 처리량 증가
  • 단순 단일 처리기의 합보다 효율적인 데이터의 공유
  • 신뢰성 증가
    와 같은 이득을 얻는다.

대칭적 다중 처리(SMP) VS 비대칭적 다중 처리

비대칭적 다중 처리는 특정 처리기만이 시스템을 제어하는 것이다. 즉 처리기간의 주종관계가 성립해 특정 처리기만이 스케줄링하고 시스템을 접근한다. SMP는 모든 처리기가 동일하게 시스템에 접근한다. 이로 인해 큰 성능 저하 없이 cpu들을 활용할 수 있지만, 한 cpu에 과한 부하가 걸리면 이에 대한 분산이 어려울 수 있다. 이를 일부 데이터는 공유하도록 다른 수준의 캐시 계층화로 해결할 수 있다.

운영체제의 구조

스케줄링

운영체제는 여러 개의 프로그램을 적절하게 수행할 수 있어야 한다.
이를 위한 방안으로는 1. multiProgramming이 있다.
여러 작업들을 디스크의 작업 pool에 적재하고 이 중 일부를 메모리에 적재한다. 어떤 작업에 wait가 발생하면 그 동안 메모리에 있는 다른 작업을 실행해 cpu의 활용률을 높인다.
이와 다른 방안으로 2. multi-tasking이 있다. cpu활용을 시간 단위로 쪼개 할당한다. 이 경우 시간에 따른 적절한 응답을 보장해야 하기에 작업 스케줄링, cpu 스케줄링, 스와핑, 가상 메모리 등의 방법을 이용해 메모리와 cpu를 관리한다.

프로세스 관리

프로그램의 명령어는 cpu에 의해 실행되어야 의미가 있다. 실제 수행을 위한 cpu시간, 메모리, 파일, 다음에 실행할 명령어의 PC를 가진 스케줄링의 대상을 프로세스라 한다. 이 프로세스는 적절하게 스케줄링/동기화 되어야 하고,여러 IPC방식으로 통신도 가능하며, 병렬 수행 하는 등의 방식으로 프로그램으로 동작한다.

0개의 댓글