5 minute read

운영체제란 무엇인가?

  • OS is software that operates computer system.

운영체제의 주기능?

  • 유저 인터페이스 (CLI, GUI)
  • 프로그램 실행
  • IO 동작
  • 파일시스템 조작
  • 통신
  • 에러 탐지
  • 자원 활당
  • 로깅
  • 보호 및 보안

프로그램이란 무엇인가?

  • A program is a set of instructions.

Bootstrap program은 무엇인가?

  • The first program to run on computer power-on, load the operation system.

interrupt?

운영 체제(Operating System, OS)에서의 인터럽트는 일종의 신호 또는 이벤트로, CPU가 현재 실행 중인 작업을 중단하고 특정 코드 또는 서비스를 처리하도록 하는 메커니즘입니다.

인터럽트의 유형

  • 하드웨어 인터럽트: 하드웨어 장치에서 발생하는 이벤트에 의해 발생합니다. 예를 들면 타이머 인터럽트, 입출력 장치에서의 데이터 도착, 하드웨어 오류 등이 있습니다.

  • 소프트웨어 인터럽트: 소프트웨어에서 명시적으로 발생시키는 인터럽트로, 시스템 호출(system call)이나 프로그램에서 특별한 인터럽트 명령을 사용하는 경우가 있습니다.

  • 외부 인터럽트: 외부에서 시스템에게 발생하는 인터럽트로, 주로 입출력 장치나 네트워크에서의 이벤트에 의해 발생합니다.

  • 프로세서 예외 인터럽트: 프로그램이 실행 중에 예외 상황이 발생할 때 발생하는 인터럽트로, 0으로 나누기나 잘못된 명령어 실행과 같은 상황이 해당됩니다.

  • 타이머 인터럽트: 타이머 인터럽트는 정기적으로 발생하여, 일정 시간이 지날 때마다 CPU에게 신호를 보냅니다. 이 신호를 받은 운영 체제는 현재 실행 중인 프로세스의 상태를 저장하고, 다음에 실행할 프로세스의 상태를 복원하여 프로세스 간의 전환이 이루어집니다.

폰 파인만 아키텍처

폰 노이만 아키텍처(또는 폰 노이만 머신)는 컴퓨터의 설계 원칙 중 하나로, 20세기 중반에 제안된 기본적인 컴퓨터 아키텍처입니다. 이 아키텍처는 특정 개념들을 도입하여 컴퓨터를 설계하는 방법을 정의합니다. 폰 노이만 아키텍처의 핵심 원칙은 다음과 같습니다.

  • 프로그램과 데이터의 저장공간이 동일: 프로그램 명령어와 데이터는 동일한 메모리 공간에 저장됩니다. 이는 명령어와 데이터를 구별하지 않고 메모리에서 주소로 참조할 수 있게 합니다.

  • 순차적인 명령어 수행: 명령어는 메모리에서 순차적으로 읽혀지고 실행됩니다. 이는 명령어가 메모리에 순차적으로 저장되어 있기 때문에 가능합니다.

  • 단일 프로세서 사용: 폰 노이만 아키텍처의 초기 버전은 단일 프로세서를 사용하는 것을 가정합니다. 이는 한 번에 하나의 명령어만 실행될 수 있음을 의미합니다.

  • 고정 명령어 길이: 명령어의 길이가 고정되어 있습니다. 이는 명령어가 일정한 크기로 메모리에 저장되어 있기 때문에 메모리에서 효율적으로 읽힐 수 있도록 합니다. 가령, 32비트 아키텍처에서 명령어 길이가 고정되어 있다면, 모든 명령어는 32비트(4바이트)로 표현됩니다. 이는 예를 들어 다음과 같은 구조를 가질 수 있습니다:

    |  opcode  |  operand1  |  operand2  |  operand3  |
    

계층형으로 저장장치를 구성하는 이유 (memory hierachy)

레지스터나 캐시와 같은 빠른 메모리는 상대적으로 작은 용량을 갖고 있습니다. 이는 고속의 메모리를 대량으로 확장하는 것이 비용이 많이 들기 때문입니다. 따라서 속도와 가격의 균형을 맞추기 위해 더 빠르면서도 작은 용량의 메모리를 사용하고, 상대적으로 느리지만 대용량으로 저장 가능한 메모리를 사용합니다.

프로그램이나 데이터의 실행은 특정 부분에 집중되는 지역성(locality)의 특성을 갖습니다. 즉, 프로세서가 특정 데이터나 명령어에 자주 접근하는 경향이 있습니다. 메모리 계층 구조를 사용하면 이러한 지역성을 활용하여 더 높은 성능을 얻을 수 있습니다.

레지스터와 캐시는 빠른 속도로 데이터를 처리할 수 있으나, 더 많은 전력을 소모하고 높은 발열을 유발합니다. 따라서 전력 소모와 발열을 관리하기 위해 레지스터와 캐시를 적절히 활용하는 것이 중요합니다.

SMP 아키텍처

대칭적 다중 처리(Symmetric Multiprocessing, SMP)은 여러 프로세서가 공통된 메모리 공간에 접근하여 작업을 동시에 수행하는 컴퓨터 아키텍처를 말합니다. SMP 아키텍처는 대규모 서버 및 고성능 컴퓨팅 시스템에서 많이 사용되며, 다중 코어 프로세서가 포함된 현대의 다양한 컴퓨터 시스템에서 일반적으로 찾을 수 있습니다.

SMP의 특징

  • 공유 메모리 아키텍처: SMP 시스템에서는 여러 프로세서가 공통된 주 메모리에 접근할 수 있습니다. 이는 모든 프로세서가 동일한 데이터와 코드를 볼 수 있고, 서로 간의 통신이 상대적으로 간단하게 이루어질 수 있게 합니다.

  • 프로세서 동등성(Equivalence): SMP 시스템의 각 프로세서는 동등하게 작동합니다. 즉, 모든 프로세서는 동일한 명령어 세트와 권한을 가지며, 각각의 프로세서는 독립적으로 작업을 수행할 수 있습니다.

  • 실시간 공유: SMP 시스템에서는 여러 프로세서가 동시에 실행될 수 있으므로, 작업을 병렬로 처리하여 전체 시스템의 성능을 향상시킬 수 있습니다.

  • 확장성(Scalability): SMP 시스템은 프로세서를 추가하여 시스템의 성능을 증가시킬 수 있습니다. 새로운 프로세서를 추가함으로써 전체 시스템의 처리 능력이 향상되는데, 이는 SMP 시스템의 확장성을 나타냅니다.

SMP의 단점

  • 메모리 일관성 문제(Memory Coherency): SMP 아키텍처에서는 여러 프로세서가 공유 메모리에 접근하므로, 한 프로세서가 메모리의 값을 변경하면 다른 프로세서들도 그 변경된 값을 즉시 반영해야 합니다. 이를 메모리 일관성이라고 하며, 이를 관리하기 위해 캐시 일관성 프로토콜이 필요합니다. 메모리 일관성을 유지하는 데 필요한 통신 비용이 증가할 수 있고, 이로 인해 전체 시스템 성능이 저하될 수 있습니다.

  • 경쟁 조건(Race Conditions) 및 동기화 오버헤드: 여러 프로세서가 동시에 메모리에 접근할 때 데이터의 일관성을 유지하기 위해 동기화가 필요합니다. 동기화는 경쟁 조건을 방지하고 일관성을 유지하기 위해 사용되지만, 이로 인해 프로세서 간 통신이 발생하고 이로 인한 오버헤드가 발생할 수 있습니다.

  • 확장성 한계: SMP 시스템은 프로세서를 추가하여 성능을 향상시킬 수 있지만, 특정 시점에서는 추가 프로세서의 효과적인 활용에 한계가 있을 수 있습니다. 특히, 메모리 일관성 및 통신 오버헤드가 증가하면서 확장성에 제약이 생길 수 있습니다.

  • 비용과 전력 소모: SMP 시스템은 높은 성능을 제공하기 위해 여러 프로세서와 대규모 메모리를 사용하므로 비용과 전력 소모가 상대적으로 높을 수 있습니다.

  • 운영 체제의 지원: SMP 시스템은 다중 프로세서를 효과적으로 관리하기 위해 특별한 운영 체제 지원이 필요합니다. 이를 통해 각 프로세서 간의 일관성 있는 메모리 관리, 스케줄링, 동기화 등이 이루어집니다.

MultiProgramming

Multiprogramming은 컴퓨터 시스템에서 여러 프로그램이 동시에 메모리에 적재되어 실행되는 방식을 나타냅니다.

Multiprogramming은 시분할 시스템의 기반을 이루고 있습니다. 시분할 시스템은 각 프로세스에 CPU 시간을 할당하여 동시에 여러 사용자가 시스템을 사용할 수 있도록 합니다. 각 프로세스는 일정 시간 동안 CPU를 할당받아 실행되며, 그 후 다음 프로세스에게 CPU를 양도합니다.

Multiprogramming을 통해 CPU와 다른 자원들이 지속적으로 활용될 수 있습니다. 어떤 프로세스가 I/O 작업 등으로 대기할 때, 다른 실행 가능한 프로세스가 CPU를 사용할 수 있습니다.

시분할 시스템을 통해 사용자에게 빠른 응답 시간을 제공할 수 있습니다. 각 프로세스가 작은 시간 단위로 CPU를 할당받기 때문에, 사용자는 거의 동시에 여러 작업을 수행하는 것처럼 느낄 수 있습니다.

Multiprogramming은 프로세스 간의 빠른 전환을 요구합니다. 이를 프로세스 스위칭이라고 하며, 이는 컨텍스트 스위칭(Context Switching)과 관련이 있습니다. 프로세스 스위칭은 현재 실행 중인 프로세스의 상태를 저장하고, 다음에 실행할 프로세스의 상태를 복원하는 작업을 포함합니다.

Multiprocessing

Multiprocessing은 하나의 컴퓨터 시스템이 두 개 이상의 프로세서를 가지고, 이들 프로세서가 동시에 작업을 수행하는 기술을 의미합니다.

두 개 이상의 프로세서가 동시에 작업을 처리합니다. 각 프로세서는 독립적으로 실행 가능하며, 각각이 자체 메모리를 가질 수 있다. 대부분 멀티코어 프로세서 또는 여러 개의 프로세서가 하나의 시스템에 장착된 형태로 구현됩니다.

간단히 말하면, Multiprogramming은 하나의 CPU를 효율적으로 활용하기 위해 여러 프로세스를 교대로 실행하는 것에 중점을 둔 반면, Multiprocessing은 여러 개의 독립적인 프로세서가 동시에 작업을 수행하는 것에 중점을 둡니다.

Multiprogramming은 시분할 시스템과 관련이 깊고, Multiprocessing은 멀티코어 프로세서와 관련이 있습니다.

유저모드와 커널모드

유저 모드(User Mode)와 커널 모드(Kernel Mode)는 운영 체제와 컴퓨터의 하드웨어 간의 권한과 보안을 관리하는 데 사용되는 두 가지 다른 권한 수준을 나타냅니다.

유저 모드(User Mode):

  • 권한 수준: 제한된 권한을 가집니다.
  • 응용 프로그램: 일반적인 응용 프로그램은 유저 모드에서 실행됩니다.
  • 자원 접근 제한: 유저 모드에서는 제한된 시스템 자원에만 접근할 수 있습니다. 운영 체제나 다른 중요한 부분에 직접 접근할 수 없습니다.
  • 시스템 호출(Syscalls): 운영 체제의 서비스를 사용하기 위해 시스템 호출을 수행합니다.

커널 모드(Kernel Mode):

  • 권한 수준: 최고 권한을 가집니다.
  • 운영 체제: 운영 체제의 핵심 부분, 즉 커널은 커널 모드에서 실행됩니다.
  • 자원 접근 권한: 커널 모드에서는 모든 시스템 자원에 접근할 수 있습니다. 하드웨어와 직접적으로 상호 작용할 수 있습니다.
  • 시스템 호출: 커널 모드에서는 시스템 호출(OS에 제공하는 API)을 통해 운영 체제 서비스에 접근할 수 있습니다.

정리

운영 체제는 커널 모드에서 동작하여 핵심적인 시스템 작업을 수행하고, 응용 프로그램은 유저 모드에서 실행됩니다. 이렇게 함으로써, 응용 프로그램이 시스템 자원에 직접 접근하는 것을 방지하고, 운영 체제는 시스템의 안정성과 보안을 유지할 수 있습니다. 커널 모드로의 전환은 주로 예외 처리, 시스템 호출, 혹은 인터럽트가 발생했을 때 일어납니다.

Leave a comment