목차


  1. 운영 체제(OS)란 무엇인가?

  2. 프로세스 관리

  3. 메모리 관리

(이하 작성 예정)
4. 파일 시스템
- 파일 시스템이란 무엇인가?
- 파일 시스템의 종류와 특징
- 파일 및 디렉토리의 생성, 읽기, 쓰기, 삭제 등
5. 입출력(I/O) 시스템
- 입출력(I/O) 장치와 드라이버
- 버퍼링과 캐싱
- DMA(Direct Memory Access)와 인터럽트
6. 보안과 보호
- 운영 체제(OS)의 보안성과 보호 기능
- 사용자 인증과 권한 관리

- 바이러스와 악성 소프트웨어 방지


1. 운영체제란 무엇인가


운영체제(OS)의 역할

운영 체제(OS)는 컴퓨터 시스템의 핵심적인 소프트웨어 중 하나로, 컴퓨터 시스템의 자원(하드웨어, 소프트웨어, 네트워크 등)을 관리하고, 다양한 응용 프로그램이 원활하게 동작할 수 있도록 제어하는 시스템 소프트웨어입니다.

운영체제(OS)의 주요 기능

  1. 자원 관리: 운영 체제(OS)는 컴퓨터 시스템의 자원(하드웨어, 소프트웨어, 네트워크 등)을 효율적으로 관리합니다. CPU, 메모리, 저장 장치, 입출력 장치 등의 자원을 관리하며, 이들 자원이 여러 응용 프로그램에서 동시에 사용될 때 충돌이나 경쟁을 방지합니다.

  2. 프로세스 관리: 운영 체제(OS)는 여러 응용 프로그램을 동시에 실행할 수 있도록 프로세스(프로그램 실행 단위)를 생성하고 관리합니다. 이를 위해 CPU 스케줄링, 프로세스 동기화, 교착 상태 처리 등의 기능을 제공합니다.

  3. 메모리 관리: 운영 체제(OS)는 메모리를 효율적으로 할당하고 관리합니다. 메모리를 물리적인 주소에서 논리적인 주소로 변환하고, 가상 메모리와 페이지 교체 등의 기능을 수행합니다.

  4. 파일 시스템 관리: 운영 체제(OS)는 파일과 디렉토리를 생성하고, 읽기/쓰기/삭제 등의 기능을 제공하는 파일 시스템을 관리합니다. 파일 시스템은 저장 장치에 파일을 저장하고 관리하는 방법을 제공합니다.

  5. 입출력(I/O) 관리: 운영 체제(OS)는 입출력(I/O) 장치를 관리하고, 입출력 작업을 조율하는 기능을 제공합니다. 이를 위해 입출력 장치 드라이버, 버퍼링, 캐싱 등의 기능을 제공합니다.

  6. 보안과 보호: 운영 체제(OS)는 컴퓨터 시스템의 보안과 보호를 위한 기능을 제공합니다. 사용자 인증, 권한 관리, 악성 소프트웨어 방지 등의 기능을 수행합니다.

이러한 운영 체제(OS)의 기능은 컴퓨터 시스템의 안정성과 신뢰성을 유지하는 데 중요한 역할을 합니다. 또한, 응용 프로그램 개발자들이 자원 관리나 하드웨어 제어와 같은 시스템 소프트웨어에 대한 지식 없이도 간단한 인터페이스를 통해 자신의 응용 프로그램을 개발할 수 있도록 해줍니다.

운영체제(OS)의 종류

운영 체제(OS)는 다양한 종류가 있으며, 대표적으로 윈도우, 맥 OS, 리눅스 등이 있습니다. 각 운영 체제(OS)는 다양한 기능과 특성을 가지고 있으며, 응용 분야나 사용자 요구에 따라 선택해야 합니다.

사용자모드와 커널모드

운영 체제에서는 사용자 모드(User Mode)와 커널 모드(Kernel Mode) 두 가지 모드를 사용합니다. 이 두 모드는 운영 체제의 보안과 안정성을 유지하기 위해 사용됩니다.

사용자 모드는 일반 프로그램이 실행되는 모드입니다. 사용자 모드에서는 프로그램이 CPU의 모든 기능을 사용할 수 없고, 운영 체제에서 허용한 일부 기능만 사용할 수 있습니다. 또한, 사용자 모드에서는 주소 공간에 접근할 때 가상 주소를 물리 주소로 변환하는 메모리 관리 기능 등의 운영 체제 기능을 사용할 수 없습니다.

반면, 커널 모드는 운영 체제가 실행되는 모드입니다. 커널 모드에서는 운영 체제의 모든 기능을 사용할 수 있으며, 메모리 관리, 입출력(IO) 처리, 프로세스 관리 등의 다양한 시스템 리소스에 접근할 수 있습니다. 하지만, 이러한 기능을 제공하기 때문에 사용자 모드에서는 접근할 수 없는 민감한 시스템 자원에 대한 접근 권한도 가지고 있습니다.

사용자 모드와 커널 모드는 CPU가 명령어를 실행할 때 제어 권한을 나타내는 플래그(bit)인 플래그 레지스터(Flag Register)의 모드 비트를 변경함으로써 전환됩니다. 사용자 모드에서 실행 중인 프로그램이 커널 모드에서 실행되어야 하는 운영 체제 기능을 사용해야 할 때, 시스템 호출(System Call)이라는 특별한 명령어를 사용하여 운영 체제에 해당 기능을 요청합니다. 이때, CPU는 커널 모드로 전환되어 시스템 호출을 처리하고, 처리가 완료되면 다시 사용자 모드로 전환됩니다.

사용자 모드와 커널 모드는 운영 체제의 안정성과 보안을 유지하기 위해 중요한 역할을 합니다. 사용자 모드에서 실행 중인 프로그램이 커널 모드로 직접 접근하여 시스템 자원을 조작할 수 없기 때문에, 운영 체제가 안정적으로 동작하고 보안 문제를 방지할 수 있습니다.


2. 프로세스 관리


프로세스란 무엇인가?

운영 체제(OS)는 여러 개의 응용 프로그램을 동시에 실행할 수 있도록 프로세스 관리 기능을 제공합니다. 프로세스란, 실행 중인 프로그램을 의미하며, 운영 체제(OS)는 이러한 프로세스를 관리하고 제어합니다.

프로세스 관리 기능

  1. 프로세스 스케줄링 : 다수의 프로세스가 실행될 때, CPU 자원을 어떻게 분배할지 결정하는 기능입니다. 운영 체제(OS)는 프로세스들의 우선순위와 상태 등을 고려하여 CPU 자원을 효율적으로 분배합니다.

  2. 프로세스 상태 관리 : 운영 체제(OS)는 프로세스의 실행 상태를 관리합니다. 프로세스는 생성, 준비, 실행, 대기, 종료 등 다양한 상태를 가질 수 있으며, 운영 체제(OS)는 이러한 상태를 관리하고 제어합니다.

  3. 프로세스 동기화 : 다수의 프로세스가 동시에 실행될 때, 공유 자원에 대한 접근 충돌이 발생할 수 있습니다. 운영 체제(OS)는 이러한 충돌을 방지하기 위해 프로세스 간의 동기화를 제공합니다.

  4. 프로세스 통신 : 다수의 프로세스 간에 데이터를 주고받아야 할 경우, 운영 체제(OS)는 프로세스 간의 통신을 제공합니다. 이를 통해 프로세스 간의 데이터 공유와 협력이 가능해집니다.

교착 상태와 처리 방법

교착상태(Deadlock)는 여러 개의 프로세스가 서로 자원을 점유하고 있어 더 이상 진행할 수 없는 상태를 말합니다. 교착상태가 발생하면 시스템의 성능이 저하되고, 응용 프로그램이 제대로 동작하지 않을 수 있습니다.

교착상태가 발생하는 조건은 다음과 같습니다.

  1. 상호 배제(Mutual exclusion)
    : 자원은 한 번에 하나의 프로세스만이 사용할 수 있어야 합니다.

  2. 점유 대기(Hold and wait)
    : 프로세스가 자원을 점유한 상태에서 다른 자원을 요청하고 대기하는 상태입니다.

  3. 비선점(No preemption)
    : 다른 프로세스에 의해 점유된 자원을 강제로 뺏을 수 없습니다.

  4. 순환 대기(Circular wait)
    : 각 프로세스가 순환적으로 다음 프로세스가 점유한 자원을 요청해야 합니다.

교착상태를 처리하는 방법으로는 다음과 같은 방법들이 있습니다.

  1. 예방(Prevention)
    : 교착상태가 발생하지 않도록 예방하는 방법입니다. 상호 배제, 점유 대기, 비선점, 순환 대기 중 하나의 조건을 제거하여 예방합니다.

  2. 회피(Avoidance)
    : 교착상태를 회피하기 위해 자원 할당을 결정할 때, 안정 상태로 유지될 수 있는 자원만을 할당하는 방법입니다. 은행원 알고리즘이 대표적인 방법입니다.

  3. 발견 및 회복(Detection and Recovery)
    : 교착상태가 발생하면, 교착 상태에 있는 프로세스를 종료하거나 자원을 선점하여 회복하는 방법입니다. 하지만 이 방법은 비용이 매우 크고, 프로세스나 자원을 잃을 수 있습니다.

  4. 무시(Ignorance)
    : 교착상태를 무시하고, 문제가 발생할 때 대처하는 방법입니다. 하지만 교착 상태가 지속될 가능성이 있으므로, 대부분의 경우에는 사용되지 않습니다.


3. 메모리 관리


메모리 관리는 운영 체제(OS)에서 중요한 역할을 하며, 메모리를 효율적으로 할당하고 사용하는 것이 시스템의 성능을 결정하는 중요한 요소 중 하나입니다.

메모리 관리 기능

  1. 할당(Allocation)
    : 프로세스가 필요로 하는 메모리 공간을 할당하는 기능입니다. 이 때, 할당된 메모리 공간은 사용 가능한 메모리 공간에서 제거됩니다.

  2. 보호(Protection)
    : 프로세스 간의 메모리 공간이 서로 침범하지 않도록 보호하는 기능입니다.

  3. 회수(Deallocation)
    : 더 이상 사용하지 않는 메모리 공간을 회수하는 기능입니다.

메모리 할당

  1. 연속 할당(Contiguous Allocation)
    : 프로세스가 필요로 하는 메모리 공간을 연속적으로 할당하는 방식입니다. 이 방식은 메모리 공간의 활용성이 좋지만, 메모리 공간의 크기에 제한이 있습니다.

  2. 분산 할당(Distributed Allocation)
    : 프로세스가 필요로 하는 메모리 공간을 여러 개의 분산된 공간에 할당하는 방식입니다. 이 방식은 메모리 공간의 크기에 제한이 없지만, 메모리 공간의 활용성이 낮을 수 있습니다.

메모리 보호

  1. 기준 레지스터(Base Register)
    : 프로세스가 사용할 수 있는 메모리 공간의 범위를 제한하는 기능입니다. 기준 레지스터에는 시작 주소가 저장되어 있으며, 프로세스가 사용할 수 있는 주소 범위는 기준 레지스터에서부터 크기를 더한 값까지입니다.

  2. 한계 레지스터(Limit Register)
    : 프로세스가 사용할 수 있는 최대 주소를 제한하는 기능입니다. 한계 레지스터에는 프로세스가 사용할 수 있는 메모리 공간의 크기가 저장되어 있으며, 기준 레지스터와 함께 사용하여 메모리 보호 기능을 구현합니다.

메모리 회수

  • 메모리 회수는 프로세스가 종료되거나, 더 이상 사용하지 않는 메모리 공간이 발생했을 때 이루어집니다.

  • 메모리 회수는 메모리 누수(Memory Leak)를 방지하기 위해 중요한 작업입니다.

  • 메모리 누수는 프로그램에서 동적으로 할당된 메모리를 해제하지 않고 남겨두는 것을 말합니다.

  • 이로 인해 시스템의 자원을 낭비하고, 프로그램의 성능을 저하시키는 원인이 됩니다. 따라서 메모리 회수는 메모리 누수를 방지하기 위해 매우 중요한 작업입니다.

  1. 수동 회수(Manual Deallocation)
    : 프로그래머가 명시적으로 메모리를 해제하는 방식입니다. 이 방식은 직관적이고, 효율적이지만, 실수로 메모리를 해제하지 않는 경우 메모리 누수가 발생할 수 있습니다.

  2. 자동 회수(Automatic Deallocation)
    : 프로그래머가 명시적으로 메모리를 해제하지 않아도 자동으로 해제되는 방식입니다. 이 방식은 편리하지만, 메모리를 자동으로 해제하는 방식으로 인해 성능 저하가 발생할 수 있습니다.

가상메모리와 페이지 교체

  • 가상 메모리(Virtual Memory)

    • 운영 체제에서 제공하는 메모리 관리 기술 중 하나입니다.
    • 가상 메모리는 프로그램이 필요로 하는 메모리 공간보다 더 큰 메모리 공간을 프로그램에게 제공하여, 실제 물리적 메모리보다 더 큰 메모리 공간을 사용할 수 있게 합니다.
    • 이를 위해 운영 체제는 하드 디스크나 SSD 등의 보조 기억장치를 이용해 가상 메모리를 구성합니다.
  • 가상 메모리는 프로세스에게 일정한 가상 주소 공간을 제공하며, 이 가상 주소 공간은 페이지(Page)로 나누어져 있습니다. 페이지는 고정된 크기로 나누어진 메모리 블록으로, 프로그램이 필요로 하는 메모리 공간을 페이지 단위로 할당받습니다.

  • 페이지 교체(Page Replacement)

    • 가상 메모리에서 메모리 부족 현상이 발생했을 때, 운영 체제가 페이지를 물리적 메모리로 로드하는 과정입니다.
    • 이때, 물리적 메모리가 가득 차서 새로운 페이지를 로드할 수 없는 경우, 운영 체제는 페이지 교체 알고리즘을 이용하여 어떤 페이지를 물리적 메모리에서 내릴 것인지 결정하고, 해당 페이지를 보조 기억장치로 옮기고 새로운 페이지를 로드합니다.
  • 페이지 교체 알고리즘에는 여러 가지 종류가 있습니다.

    • 대표적인 알고리즘으로는 LRU(Least Recently Used), FIFO(First In First Out), Optimal 등이 있습니다.
    • 이 알고리즘들은 각각 페이지 교체 시간, 처리 비용, 페이지 폴트(Page Fault) 비율 등의 성능 요건에 따라 선택되어 사용됩니다.
profile
real.great.code

0개의 댓글