운영체제 기초

dobby·2025년 2월 11일
0
post-thumbnail

운영체제란

운영체제란 하드웨어 위에 설치되어 하드웨어 계층과 다른 소프트웨어 계층을 연결하는 소프트웨어 계층이다.

  • 컴퓨터 시스템의 자원을 관리하고, 사용자가 컴퓨터를 사용할 수 있는 환경(인터페이스)을 제공하는 역할을 수행한다.

  • 사용자와 컴퓨터 간 인터페이스를 제공해 사용자가 컴퓨터를 편리하게 사용할 수 있는 환경을 제공한다.

인터페이스와 커널을 운영체제라고 부르며, 응용프로그램, 유틸리티, 운영체제를 합쳐 소프트웨어라고 부른다.

소프트웨어는 하드웨어를 제어하여 작업을 수행시키는 명령의 모음, 즉 프로그램이다.
인터페이스는 사용자가 컴퓨터를 사용할 수 있도록 해주고, 그 결과를 알려주는 장치이다.
운영체제는 사용자가 컴퓨터를 보다 쉽게 사용할 수 있도록 다양한 인터페이스를 제공함으로써 컴퓨터 자원을 보호함과 동시에 사용자 편의를 도모한다.


운영체제의 역할

  • 자원 관리

  • 자원 보호

  • 하드웨어 인터페이스 제공

  • 사용자 인터페이스 제공

하드웨어 인터페이스가 다양한 부품을 편리하게 사용하기 위한 것이라면, 사용자 인터페이스는 사용자가 운영체제를 편리하게 사용하도록 지원하기 위한 것이다.


운영체제의 목표

  • 효율성 - 자원관리
    자원을 효율적으로 관리해야 한다.
    적은 자원을 사용하여 결과를 빨리 보여주는 것이 효율적인 운영체제이다.

  • 안정성 - 자원 보호
    운영체제가 안정적이려면 사용자와 응용 프로그램의 안전 문제와 하드웨어적인 보안 문제를 처리할 수 있어야 하며, 시스템에 문제가 발생했을 때 이전으로 복구하는 결함 포용 기능을 수행해야 한다.

  • 확장성 - 하드웨어 인터페이스 제공
    운영체제는 다양한 시스템 자원을 추가하거나 제거하기 편리해야 한다.

  • 편리성 - 사용자 인터페이스 제공
    사용자가 편리하게 작업할 수 있는 환경을 제공하는 것 또한 운영체제의 목표다.
    운영체제는 응용 프로그램과 사용자에게 다양한 편리성을 제공하면서도 자원의 낭비 요소를 막을 수 있어야 한다.


운영체제의 목적

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

OS는 한정된 컴퓨터 자원을 관리하는 시스템이다.
한정된 자원 안에서 정확하고 빠르게 주어진 문제를 해결하는 것이 목적이다.

  • 처리능력(throughput) 향상
    os는 자원 관리를 통해 일정 시간 내에 시스템이 처리하는 일의 양을 향상시킨다.

  • 변환 시간(turnaround time) 단축
    사용자가 시스템에 요청한 작업을 완료할 때까지 소요되는 시간을 단축한다.

  • 사용 가능도(availability) 향상
    시스템 자원을 얼마나 빨리 제공할 수 있는가를 의미한다.
    os는 사용자가 컴퓨터를 사용해야 할 때 자원을 즉시 사용할 수 있게 한다.

  • 신뢰도(reliability) 향상
    시스템이 주어진 문제를 정확히 푸는지를 의미한다.
    os는 입력 값에 대해 정확한 결과 값을 줄 수 있도록 신뢰도를 향상해야 한다.

운영체제는 무엇이고 어떤 역할을 수행하는지 설명해주세요.
운영체제는 컴퓨터 하드웨어 바로 윗단에 설치되어 하드웨어와 다른 모든 소프트웨어를 연결해주는 소프트웨어입니다.
운영체제는 컴퓨터 시스템 자원을 효율적으로 관리하고, 하드웨어를 직접 다루는 복잡한 부분은 OS가 대신해주어 컴퓨터 시스템을 편리하게 사용할 수 있게 해줍니다.
또한 악성 프로그램에 대해 사용자와 운영체제 자신을 보호합니다.


CPU와 메모리 구조

CPU는 프로그램을 실행하는데 필요한 연산을 처리하고 수행한다.
다른 말로 프로세서(processor) 라고도 한다.

메모리

  • 휘발성 메모리
    주 기억장치(메인 메모리), 일반적으로 RAM을 가리킨다.

  • 비휘발성 메모리
    보조 기억장치, SSD(solid state drive), HDD(hard disk drive) 등이 해당한다.

  • HDD
    하드 디스크 드라이브는(HDD)는 비 휘발성 기억장치로, 자기장의 원리로 정보를 기억한다.
    금속 케이스 안에 원판이 있으며 이 원판 위에 정보를 기록하는 것이므로 물리적인 손상을 입으면 정보도 손상된다.
    원판은 흔들려도 손상될 수 있어 금속 케이스에 넣어둔다.
  • SSD
    반면 SSD는 물리적인 정보 저장이 아닌, 플래시 메모리이다.
    플래시 메모리란, 전기적으로 데이터를 지우고 다시 기록할 수 있는 비 휘발성 컴퓨터 기억 장치를 말한다.

메모리 계층구조

메모리는 cpu에서 빨리 접근할 수 있도록 위와 같은 계층 구조로 이루어져 있다.

  • 레지스터
    cpu가 사용자 요청을 처리하는데 필요한 데이터를 임시로 저장하는 기억장치이다.
    cpu 내부에 존재하며 접근 속도가 빠르다.

  • 캐시 메모리
    cpu와 ram 사이의 속도 차이를 해결하기 위한 기억장치이다.
    cpu 내부에 존재한다.

  • RAM(random access memory)
    컴퓨터에서 프로그램을 실행할 때 필요한 정보를 저장한다.
    휘발성 기억장치이며, 보통 메모리라고 할 때 RAM을 의미하는 경우가 많다.

  • 하드 디스크
    사용자가 필요한 데이터와 프로그램을 저장하며 비 휘발성 기억장치이다.

프로그램을 실행하면, OS가 디스크에 있는 프로그램을 메모리에 로드(load)한다.
메모리에 로드한 프로그램을 프로세스라고 하며, cpu가 처리한다.

로드(load): 프로그램을 메모리에 올려 공간을 할당하는 것을 의미한다.

커널과 시스템 콜

커널은 OS의 핵심 요소로, 컴퓨터 하드웨어와 프로세스의 보안, 자원 관리, 하드웨어 추상화 같은 중요한 역할을 수행한다.

특히, 자원 관리를 위해 CPU 스케줄링, 메모리 관리, 입출력 관리, 파일 시스템 관리 등을 담당한다.

운영체제는 커널에서 관리하는 중요 자원에 사용자가 쉽게 접근하지 못하도록 커널모드사용자모드로 나눈다.

  • 커널모드
    하드웨어에 직접 접근해 메모리, CPU와 같은 자원을 사용할 수 있다.

  • 사용자모드
    커널 모드의 자원에 접근할 수 없게 제한을 두어 시스템 프로세스가 자원에 접근하려면 시스템 콜을 호출해 커널에 요청해야 한다.

    시스템 콜은 사용자 모드에서 커널 모드에 접근해 필요한 기능을 수행할 수 있게 하는 시스템 함수이다.

    커널은 시스템 콜로 받은 요청을 처리한 후 다시 시스템 콜로 결과 값을 반환한다.

시스템 콜을 사용해 프로세스 제어, 파일 조작, 장치 관리, 데이터 유지보수, 통신, 보호를 할 수 있다.
시스템 콜은 하나의 인터럽트로 취급된다.

시스템 콜에서 커널에 매개변수를 전달하는 방법

  • 매개변수를 CPU의 레지스터에 직접 전달
    매개변수의 개수가 레지스터의 개수보다 많은 경우 문제가 발생할 수 있어 권장하지 않는다.

  • 매개변수를 메모리에 저장한 후 메모리의 주소 값을 레지스터에 저장

  • 매개변수를 프로그램의 스택(stack)에 push하고 OS에서 pop해 매개변수를 전달

시스템 콜에 대해 설명해주세요.
인터럽트의 일종으로, 사용자 프로그램이 운영체제 커널에 있는 코드를 실행하고자 할 때 발생하는 신호입니다.
사용자 프로그램이 운영체네 커널에 있는 코드를 실행하기 위해, 시스템 콜을 발생시키면 CPU 제어권을 운영체제로 넘겨서 운영체제 커널에 있는 코드를 처리하게 됩니다.

커널에 대해 설명해주세요.
커널은 메모리에 항상 적재 되어있는 운영체제의 핵심 부분을 말합니다.
커널은 컴퓨터 하드웨어와 프로세스의 보안을 책임지고, 시스템 자원을 효율적으로 관리하고, CPU 스케줄링을 수행합니다.
또한 하드웨어 추상화를 통해, 프로그래머가 하드웨어 위에서 동작하는 프로그램을 개발하는 것을 돕습니다.
운영체제는 커널에서 관리하는 중요 자원에 사용자가 쉽게 접근하지 못하도록 커널모드사용자모드로 나눕니다.

커널모드에 대해 설명해주세요.
커널 모드는 시스템의 모든 메모리에 접근할 수 있고, 모든 CPU 명령을 수행할 수 있는 모드입니다.
프로세스는 사용자 모드에서 수행하던 중 시스템 콜이나 인터럽트가 발생하면, 커널 모드로 전환한 후 사용자 모드에서 처리할 수 없는 작업을 커널을 통해 수행합니다.

사용자모드에 대해 설명해주세요.
사용자모드란 프로세스의 실행 상태중 하나로,
프로세스가 자신의 주소 공간에 정의된 코드를 실행하는 상태를 뜻합니다.
사용자모드에서는 I/O 작업 등 커널에 정의되어 있는 작업을 수행할 수 없습니다.
따라서 시스템 콜을 통해 커널모드로 전환하여 커널의 기능을 사용하도록 합니다.

인터럽트

프로그램을 실행하는 도중 예기치 않은 상황이 발생할 경우 현재 실행중인 작업을 일시 중단하고, 발생된 상황을 우선 처리한 후 실행중이던 작업으로 복귀하여 계속 처리하는 것을 말한다.

[ 인터럽트가 발생하는 경우 ]

  • 입출력이 발생할 때
  • CPU 사용 시간이 만료되었을 때
  • 자식 프로세스를 생성할 때

주로 입출력 장치의 signal, data가 발생할 때까지 원래의 작업을 수행하다가 해당 기능을 처리하는 것이다. (외부 인터럽트)

인터럽트의 종류는 외부 인터럽트, 내부 인터럽트, 소프트웨어 인터럽트로 나뉜다.

  • 비동기적 인터럽트 / 하드웨어 인터럽트
    전원 이상, 기계 착오, 외부 신호, 입출력 등 프로세스 외부에서 발생하는 인터럽트

  • 동기적 인터러트 / 소프트웨어 인터럽트
    프로세스 내부에서 잘못된 명령어, 데이터로 예외가 발생하는 것이며 trap이라고 불림


인터럽트 원리

CPU는 한 번에 하나의 작업만 수행할 수 있다.
여러 가지 작업이 있다면 여러 작업을 작게 쪼개어 하나씩 빠르게 처리한다.
하지만, 여러 프로그램 중 하나에서 문제가 생긴다면 문제가 되는 부분을 빨리 해결해서 다른 프로그램을 이용하는 데에도 지장이 가지 않게 해야하므로 CPU가 기존에 진행하던 작업을 잠시 멈추고 문제가 있는 프로그램을 먼저 해결할 수 있도록 신호를 보내는 것이다.


인터럽트 서비스 루틴(ISR: Interrupt Service Routine)

인터럽트가 발생하면 처리하기 위한 루틴인 ISR이 실행된다.

인터럽트 서비스 루틴(ISR)이란 인터럽트를 처리하는 커널 함수를 의미한다.
인터럽트를 발생시켰다는 것은 권한이 필요한 명령을 커널 모드에서 수행해야 하는 상황일 것이다.

인터럽트 서비스 루틴의 주소들을 모아둔 곳을 인터럽트 벡터(Interrupt Vector)라고 부른다.

인터럽트에 대해 설명해주세요.
인터럽트는 컴퓨터 작업도중 커널의 처리가 필요할 때 그것을 통보하는 것을 말합니다.
예를 들어 I/O 장치가 요청받은 데이터를 다 읽어왔다던가
프로그램 수행 도중 예외가 발생했거나
프로세스가 직접 시스템 콜을 호출했을 때 인터럽트가 발생합니다.

인터럽트가 발생하면, 먼저 인터럽트 벡터에서 해당 인터럽트에 대한 인터럽트 처리 루틴을 찾아서 인터럽트를 처리합니다.

인터럽트를 처리하기 전에는 CPU와 프로세스의 현재 상태를 저장해두고, 인터럽트가 처리되면 다시 상태 정보를 복구해서 이전 작업을 이어서 수행합니다.

동기식 I/O에 대해 설명해주세요.
동기식 입출력은 어떤 프로그램이 I/O를 요청했을 때 그 입출력 작업이 완료되어야만 그 프로그램이 다음 작업을 수행할 수 있는 방식을 말합니다.

비동기식 I/O에 대해 설명해주세요.
비동기식 입출력은 어떤 프로그램이 I/O 요청을 하면,
그 입출력 작업의 완료를 기다리는 것이 아니라, 입출력 요청을 호출한 프로그램에게 제어권을 바로 넘겨줘서 그 프로그램이 다음 작업을 수행할 수 있도록 하는 방식입니다.

폴링에 대해 설명해주세요.
폴링은 CPU가 일정 주기마다 이벤트가 발생했는지 소프트웨어적으로 확인하는 방법입니다.
예를 들어 CPU가 I/O 작업을 요청한 뒤 CPU는 I/O 작업이 완료 되었는지 주기적으로 확인합니다.
이벤트에 대한 지속적인 확인을 수행하기 때문에 리소스가 소모되고, 이벤트가 발생한 정확한 타이밍에 처리하기가 어렵다는 단점이 있습니다.
하지만 구현은 쉽습니다.

DMA에 대해 설명해주세요.
DMA(Direct Memory Access)는 I/O 장치의 로컬버퍼에서 메인 메모리로 데이터를 읽어오는 작업을 CPU 대신 수행해줍니다.
DMA를 사용하면 CPU가 I/O 장치에 의해 자주 인터럽트 당하는 것을 막아줘서 CPU를 좀 더 효율적으로 관리하고 입출력 연산을 빠르게 수행할 수 있습니다.

Direct Memory Access

직접 메모리 접근은 컴퓨터 주변기기에서 CPU의 처리를 거치지 않고 직접 RAM이나 입출력장치에 접근해서 필요한 데이터를 가져오는 기능이다.

원래 컴퓨터에서 주변기기가 통신을 하거나 메모리를 읽고 쓰려고 한다면, CPU에서 주변기기의 레지스터를 메모리에 복사하는 작업을 거쳐야 한다.
하지만 DMA를 사용할 경우 CPU를 거치지 않고 DMA 컨트롤러를 통해 주변기기에서 직접 메모리에 접근해서 필요한 정보를 가져옴으로써 더 빠르게 데이터를 가져오면서 동시에 CPU에 걸리는 부하 또한 줄이는 효과가 있다.

다만 CPU를 거쳐가지 않는다는 점은 CPU를 통해 요청이 유효한 것인지를 확인할 수단이 없다는 것을 의미하는 만큼, 보안 위협에 시달릴 수 있는데, 대표적으로 Thunerbolt(인터페이스)에 있던 Thunderclap 취약점이 이 DMA 기능을 이용한 취약점이다.
그래서 Windows에는 기기가 잠금 상태에서 DMA를 비활성화하는 기능을 로컬 정책 편집기를 통해 켤 수 있게 해 두었다.

프로그래밍 시스템

시분할 시스템 (다중 작업 시스템, Multitasking)

여러 작업을 조금씩 처리하여 작업이 동시에 이루어지는 것처럼 보이게 하는 것을 말한다.

다중 프로그래밍 (Multiprogramming)

메모리에 여러개의 프로그램을 상주시켜 하나의 CPU로 동시에 여러 프로그램을 실행하는 것처럼 처리하는 시스템
OS는 시스템에 있는 모든 프로세스(실행 중인 프로그램)을 메모리에 올려놓는다.
작업 스케줄러가 한 개의 작업을 선택하여 CPU에 할당한다.
작업 중인 프로세스가 입출력에 의해 대기하는 경우, 운영체제는 다른 프로세스로 전환하여 CPU에 할당한다.
하지만 작업이 무한루프에 빠지게 되면 다른 프로세스로 전환되지 않기에 문제가 발생한다.

일괄 처리 시스템 (Batchprocessing)

모든 작업을 한꺼번에 처리하는 시스템을 말한다.
입출력 장치의 속도가 느려서 입출력 요청 후 cpu가 일을 쉬는 경우가 많아 비효율적이다.

대화형 시스템 (Interactive system)

사용자의 요청에 대한 결과를 곧바로 얻을 수 있는 시스템을 말한다.

다중 처리기 시스템 (Multi-Processor System)

하나의 컴퓨터 안에 CPU가 여러개 설치된 경우를 뜻한다.
이러한 시스템은 병렬 처리를 가능하게 하여 전체 시스템의 성능을 향상시키는데 사용된다.

병렬 처리를 통해 작업을 더 빠르게 처리할 수 있으며, 한 프로세서가 실패하더라도 다른 프로세서가 작업을 계속할 수 있다.
또한, 여러 개의 저가 프로세서를 사용하는 것이 한 개의 고가 프로세서를 사용하는 것보다 경제적일 수 있다.
하지만 여러 CPU를 관리하기 위해 더욱 복잡한 과정을 거쳐야 한다.

시분할 시스템에 대해 설명해주세요.
여러 작업을 수행할 때 컴퓨터 처리 능력을 일정한 시간 단위로 분할해서 번갈아가며 여러 작업을 수행하는 시스템을 말합니다.
사용자의 입장에서 여러 프로그램들이 동시에 실행되는 것처럼 느끼게 할 수 있습니다.

다중 프로그래밍 시스템(multi-programming system)에 대해 설명해주세요.
멀티 프로그래밍 시스템은 메모리 공간을 분할해서 여러 프로그램들을 적재하고 수행하는 시스템입니다.
예를 들어 한 프로세스를 CPU가 수행하던 중에 I/O 이벤트가 발생하여 대기 해야하는 경우, 그 동안 메모리에 적재된 다른 프로세스를 수행하는 식입니다.
이러한 멀티 프로그래밍은 CPU를 효율적으로 사용할 수 있게 해줍니다.

대화형 시스템(interactive system)에 대해 설명해주세요.
인터렉티브 시스템은 사용자의 요청에 대한 결과를 곧바로 얻을 수 있는 시스템을 말합니다.

다중 처리기 시스템(multi-processor system)에 대해 설명해주세요.
하나의 컴퓨터 안에 CPU가 여러개 설치된 경우를 뜻합니다.
다수의 프로세서가 협력적으로 여러 작업들을 동시에 처리합니다.
멀티 프로세싱은 다수의 작업을 벙렬로 처리할 수 있고, 어떤 프로세서가 고장날지라도 작업이 중단되지 않는 장점이 있습니다.

profile
성장통을 겪고 있습니다.

0개의 댓글

관련 채용 정보