본문 바로가기
Computer Science/운영체제(Operating System)

운영체제(OS, Operation System)란?

by 컴돈AI 2024. 3. 29.

목차

    운영체제란?

    • 운영체제는 사용자 및 다른 모든 소프트웨어 와 하드웨어를 연결하는 소프트웨어 계층입니다.
      • 운영체제가 없다면 사용자 및 소프트웨어와 하드웨어를 연결해 줄 수 없어 컴퓨터는 그저 고철덩어리가 됩니다.
      • 운영체제도 소프트웨어기 때문에 메모리에 올라가있어야 합니다.
        • 규모가 큰 프로그램이므로 항상 필요한 부분만 메모리에 올라갑니다.(좁은 의미의 운영체제)
          • 운영체제라고 말하면 일반적으로 이 영역을 말합니다.
          • 이 메모리 영역을 커널이라고 합니다.
        • 항상 필요하지 않은 부분은 필요할 때마다 메모리에 올려서 사용합니다.(넓은 의미의 운영체제)
    • 운영체제는 컴퓨터 전원을 키면 바로 실행되어야 합니다. 
      • 이때 운영체제는 커널이라는 메모리 영역에 올라갑니다.
      • 커널은 보통 높은 메모리 주소에 할당됩니다.

    이중 모드(Dual mode)와 시스템 콜(System Call)

    • 운영체제는 응용 프로그램들이 자원에 접근하려고 할때 오직 자신을 통해서만 접근하도록 하여 자원을 보호합니다.
      • 응용 프로그램이 자원에 접근하기 위해서는 운영체제에 도움을 요청해야 합니다. (= 운영체제 코드를 실행하려고 한다는 말)
      • 응용 프로그램의 요청을 받은 운영체제는 응용 프로그램 대신 자원에 접근하여 요청한 작업을 수행합니다.
      • 예시
        • 응용 프로그램이 실행 과정에서 하드 디스크에 접근하여 데이터를 저장하려면 운영체제에 도움을 요청해야 하고, 운영체제는 커널 영역 내의 하드 디스크에 데이터를 저장하는 코드를 실행하여 응용 프로그램의 작업을 대신 수행해 줍니다.

    이중 모드(dual mode)

    • 이중 모드란 CPU가 명령어를 실행하는 모드를 크게 사용자 모드와 커널 모드로 구분하는 방식입니다.
      • 사용자 모드(user mode)
        • 운영체제 서비스를 제공받을 수 없는 실행 모드
        • 커널 영역의 코드 실행 불가
        • 일반적인 응용 프로그램은 기본적으로 사용자 모드로 실행
        • 사용자 모드로 실행 중인 CPU는 하드웨어 자원에 접근하는 명령어를 실행 불가
      • 커널 모드(kernel mode)
        • 운영체제 서비스를 제공받을 수 있는 실행 모드
        • 커널 영역의 코드 실행 가능
        • CPU가 커널 모드로 명령어를 실행하면 자원에 접근하는 명령어를 비롯한 모든 명령어 실행 가능
        • 운영체제는 커널 모드로 실행
    • 사용자 모드로 실행되는 프로그램이 운영체제 서비스를 제공받으려면 운영체제에 요청을 보내 커널 모드로 전환되어야 합니다. (= 시스템 콜)

    시스템 콜(System call)

    • 사용자 모드로 실행되는 프로그램이 운영체제 서비스를 제공받으려면 운영체제에 요청을 보내 커널 모드로 전환되어야 합니다. (= 시스템 콜)
      • 이때, 운영체제 서비스를 제공받기 위한 요청을 시스템 콜이라고 합니다.
    • 시스템 콜은 일종의 소프트웨어적인 인터럽트입니다. (입출력 장치에 의한 인터럽트는 하드웨어 인터럽트)
      • 시스템 콜은 인터럽트를 발생시키는 명령어
      • 하드웨어 인터럽트 처리 방식과 유사
    • 시스템 콜 처리 순서
      • 시스템 호출을 발생시키는 명령어 실행
      • 커널 영역 내에 시스템 콜을 수행하는 코드(인터럽트 서비스 루틴)를 실행
        • (CPU : 프로그램(사용자모드) → 운영체제(커널모드)  컨텍스트 스위칭 발생)
      • 실행이 완료되면 CPU는 다시 기존에 실행하던 응용 프로그램으로 복귀하여 계속 실행
        • (CPU : 운영체제(커널모드) → 프로그램(사용자모드)  컨텍스트 스위칭 발생) 
    • 시스템 콜에 대한 보안은 운영체제가 처리해 줍니다.
      • 시스템 콜이 요청되면, 운영체제는 해당 프로세스나 사용자가 요청한 자원에 대한 접근 권한을 갖고 있는지 검사합니다.
      • 사용자 모드에서 전달된 모든 입력 데이터는 검증 과정을 거치게 되어, 잘못된 데이터나 악의적인 코드가 시스템에 영향을 미치지 않도록 합니다.
    • 일반적으로 응용 프로그램은 실행 과정에서 운영체제 서비스들을 매우 빈번하게 이용합니다. 그 과정에서 빈번하게 시스템 콜을 발생시키고, 사용자 모드와 커널 모드를 오가며 실행됩니다.
      • (CPU는 계속해서 응용프로그램(사용자모드) ↔️ 운영체제(커널모드) 컨텍스트 스위칭 발생)

    운영체제가 제공하는 핵심 기능

    프로세스 관리

    • 프로세스는 실행 중인 프로그램입니다. (= 메모리에 올라가 있는 프로그램)
    • 일반적으로 CPU는 한 번에 하나의 프로세스만 실행할 수 있기 때문에 CPU는 메모리에 올라와 있는 여러 프로세스들을 조금씩 번갈아 가며 실행합니다.
      • 운영체제는 이러한 과정을 원활하게 하기 위해 프로세스 관리 기능을 제공합니다.

    자원 접근 및 할당(CPU, 메모리, 입출력장치)

    • 모든 프로세스는 실행을 위해 자원을 필요로 합니다. 
      • 운영체제는 프로세스들에게 필요한 자원에 접근하여 관리하고 할당해 주는 기능을 제공합니다.
    • CPU, 메모리, 입출력장치
      • CPU
        • 하나의 CPU는 한 번에 하나의 프로세스만 실행가능하기 때문에 운영체제는 프로세스들에게 공정하게 효율적이게 CPU를 할당하기 위해서 CPU 스케줄링을 해야 합니다.
      • 메모리
        • 메모리의 크기는 한정적이기 때문에 운영체제는 여러 프로세스들이 실행될 때 프로세스들에게 어떻게 메모리를 할당할지 관리를 해야 합니다.
      • 입출력장치
        • 운영체제는 인터럽트를 처리하는 프로그램, 즉 인터럽트 서비스 루틴을 제공함으로써 입출력작업을 수행합니다. 

    파일 시스템 관리

    • 컴퓨터를 사용할 때 여러 파일을 열고, 생성하고, 삭제하는 경우가 있습니다. 또한 이러한 파일들을 한데 묶어 디렉터리(폴더)로 관리합니다. 이러한 파일시스템(file system)도 운영체제가 지원하는 핵심 서비스입니다.

    출처