OS정리 (chapter1)

bells!·2024년 3월 16일

os

목록 보기
1/5

What Operating Systems Do

운영 체제는 사용자와 하드웨어 사이의 중재자 역할을 하며, 커널과 추가 프로그램들로 구성됩니다. 커널은 운영 체제의 핵심으로 항상 실행되고, 시스템이나 응용 프로그램은 포함되지 않습니다.
Middleware: 앱 개발자에게 추가 서비스(예: 데이터베이스, 멀티미디어, 그래픽 등)를 제공하는 소프트웨어 프레임워크 세트입니다.
운영 체제의 목표는 사용자 프로그램을 실행하여 사용자 문제 해결을 용이하게 하고, 컴퓨터 시스템을 사용하기 편리하게 만들며, 컴퓨터 하드웨어를 효율적으로 사용하는 것입니다.


◼ How the Program Runs on the Computer

이 fetch와 execute의 과정을 폰 노이만 구조라 한다.

위의 과정을 통해 프로그램 실행.
(이것 이외에 VM, 메모리 계층 구조, pipeline datapath 등등이 있음.)


◼ Computer-System Organization

컴퓨터 시스템 운영

하나 이상의 중앙 처리 장치(CPU)와 장치 컨트롤러가 공통 버스를 통해 연결되어 공유 메모리에 접근할 수 있습니다. CPU와 장치들이 동시에 실행되면서 메모리 사이클을 놓고 경쟁합니다.

각 장치 컨트롤러는 로컬 버퍼를 가지고 있습니다.
CPU는 메인 메모리와 로컬 버퍼 사이에서 데이터를 이동시킵니다.
입출력(I/O) 작업은 장치에서 해당 컨트롤러의 로컬 버퍼로 이루어집니다.
장치 컨트롤러는 작업이 끝났음을 CPU에 알리기 위해 인터럽트를 발생시킵니다.

◼ Interrupt(인터럽트): 하드웨어나 소프트웨어로부터의 비동기적 신호로, 주의가 필요함을 나타냄

하드웨어에서 지원.
각 인터럽트 유형은 번호(IRQ 번호)와 연관.
인터럽트 핸들러에 의해 처리.
각 유형의 인터럽트에 대해 취해야 할 조치를 결정하는 별도의 코드 세그먼트 존재.
인터럽트 핸들러 테이블: 인터럽트 벡터
이벤트를 처리하는 메커니즘

하드웨어 인터럽트

- CPU로 신호 전송 - 소프트웨어 인터럽트 - 시스템 콜(=모니터 호출): 프로그램으로부터의 요청 -> I/O 액세스, 메모리 할당, ...
  • 예외
    - 0으로 나누기, 잘못된 메모리 액세스, I/O 예외, ...
    - 운영 체제는 인터럽트 기반 프로그램

◼ Interrupt Handling
운영 체제는 CPU의 상태를 저장하기 위해 레지스터와 프로그램 카운터를 저장하고, 실행을 인터럽트 핸들러로 전달합니다.

인터럽트 벡터: 각 유형의 인터럽트에 대한 핸들러 테이블
인터럽트는 해당 핸들러에 의해 처리됩니다.
CPU의 상태를 복원하고 중단된 프로그램으로 돌아갑니다.

◼ Interrupt Driven I/O

CPU는 요청을 보내고 현재 프로세스를 계속하거나 다른 작업을 수행합니다.
데이터 전송이 완료되면 I/O 장치가 인터럽트를 발생시킵니다. (문제가 있는 경우)

◼ Storage Hierarchy
캐싱(Caching): 정보를 더 빠른 저장 시스템으로 복사하는 것

주 메모리는 보조 저장소의 캐시로 볼 수 있음
각 장치 컨트롤러에 대한 장치 드라이버를 사용하여 I/O를 관리
컨트롤러와 커널 사이의 일관된 인터페이스를 제공함

◼ Interrupt Driven Data Transfer

장점: 사용자 프로그램 진행이 실제 전송 중에만 중단됨

단점:
특별한 하드웨어가 필요함:
인터럽트 발생 (I/O 장치)
인터럽트 감지 (프로세서)
인터럽트 후 재개를 위한 적절한 상태 저장 (프로세서)
대량의 데이터 블록을 전송할 때, 프로세서가 데이터 전송에 관여해야 함 → DMA가 해결책이 됨

◼ DMA (Direct Memory Access)

장치 컨트롤러가 대량의 데이터를 직접 주 메모리로 전송
CPU는 데이터 전송에 관여할 필요가 없음
하드 디스크와 같은 대역폭이 높은 I/O 장치의 블록 전송에 적합함


◼ Computer-System Architecture

Multiprocessor Systems

On modern computers, multiprocessor systems now dominate the
landscape of computing.

다중 프로세서 시스템의 장점

  • 증가된 처리량
  • N개의 프로세서 → 이상적으로 N배 속도 향상
  • 그러나 일반적으로 약간의 오버헤드 존재
  • 성능 향상은 병렬성과 관련됨
  • 군집 시스템과 비교했을 때 규모의 경제 (돈 퍼부어야,,)
  • 메모리, 주변 장치를 공유할 수 있음

Muticore system : 하나의 CPU에 여러 chip이 있으니까, 서로 통신의 속도가 빨라
Symmetric multiprocessing architecture : 여러 process가 동시에 실행 가능

Non-uniform memory access

: 각각이 작고 빠른 로컬 버스를 통해 액세스되는 로컬 메모리를 갖는 CPU 그룹 ![](https://velog.velcdn.com/images/sh4849/post/69020262-6489-4f9b-a8c9-b2619851a665/image.png)

Clustered Systems

클러스터 시스템은 여러 독립적인 시스템이 네트워크로 연결되어 함께 작동하는 시스템입니다. 이러한 클러스터 시스템은 주로 스토리지를 공유하기 위해 스토리지 영역 네트워크(SAN)를 사용합니다.

클러스터 시스템의 주요 목적은 고가용성 서비스를 제공하여 시스템의 장애를 견디는 것입니다. 이는 시스템의 일부 구성 요소가 실패해도 전체 시스템이 계속 작동할 수 있도록 하는 것을 의미합니다. 또한, 일부 클러스터는 고성능 컴퓨팅(HPC)을 위해 설계되어 병렬 처리를 통해 높은 성능을 제공합니다.
(쉽게 말해서, multicore + multiprocessor)


Operating-System Operations

◼ bootstrap program : 시스템을 초기화하고 커널을 로드하는 간단한 코드
◼ Kernel loads
◼ system daemons (커널 외부에서 제공되는 서비스)을 시작합니다.
◼ Kernel interrupt driven (하드웨어 및 소프트웨어)

  • 하드웨어 인터럽트: 장치 중 하나로부터의 인터럽트
  • 소프트웨어 인터럽트 (예: 예외 또는 트랩):
    • 소프트웨어 오류 (예: 0으로 나누기)
    • 운영 체제 서비스 요청: 시스템 호출
    • 다른 프로세스 문제 (무한 루프 ,프로세스가 서로 또는 운영 체제를 수정하는 문제 등)

Multiprogramming

: 핵심은 "동시"

여러 작업을 동시에 메모리에 유지하고 실행하는 방식입니다. 이를 통해 CPU와 I/O 장치를 효율적으로 활용할 수 있습니다. 단일 사용자가 CPU와 I/O 장치를 항상 사용 중으로 유지할 수 없는 상황에서, 다중 프로그래밍은 작업을 조직화하여 CPU가 항상 실행할 작업을 가지고 있도록 합니다. 메모리에는 전체 작업 중 일부가 유지되며, 작업 스케줄링을 통해 선택된 작업이 실행됩니다. 작업이 I/O를 기다려야 하는 경우에는 운영 체제가 다른 작업으로 전환하여 실행을 지속합니다. 이를 통해 CPU와 I/O 장치의 활용도를 향상시킬 수 있습니다.

Multitasking

: 핵심은 "CPU의 효율성!"

다중 프로그래밍의 논리적 확장입니다. CPU가 작업을 너무 자주 전환하여 사용자가 실행 중인 각 작업과 상호 작용할 수 있는 환경을 제공합니다. 이는 대화형 컴퓨팅을 가능하게 합니다. 멀티태스킹은 응답 시간을 1초 미만으로 유지하는 것이 목표입니다. 각 사용자는 적어도 하나의 실행 중인 프로그램(프로세스)을 메모리에 가지고 있으며, CPU 스케줄러는 실행 준비가 된 작업을 선택하여 실행합니다. 이를 통해 여러 사용자가 동시에 컴퓨터를 사용하고, 각각의 작업을 독립적으로 처리할 수 있습니다.

Operating-System Operations

◼ 현대의 운영 체제 -> interrupt-driven programs 방식

  • 이벤트는 인터럽트에 의해 신호화되며, 인터럽트 핸들러에 의해 처리됩니다.
  • 하드웨어와 소프트웨어 리소스는 공유됩니다.
    ➔ 문제: 하나의 프로세스에서 발생한 오류가 전체 시스템을 손상시킬 수 있습니다.

◼ 다중 사용자 운영 체제의 필수 요구 사항: 한 프로그램의 오류가 다른 프로그램에 영향을 주어서는 안 됩니다.
◼ Dangerous instructions → Dual mode operation
◼ Preventing long execution of user process → Timer

Dual mode operation

이중 모드 동작은 운영 체제가 자체와 다른 시스템 구성 요소를 보호할 수 있도록 하는데 도움이 됩니다(하드웨어의 지원이 필요합니다).

◼ User mode

사용자가 정의한 코드(응용 프로그램)
Privileged instructions, which can cause harm to other system, are prohibited
-> I/O 명령어, 타이머 명령어 등

Privileged instructions -> OS system call을 통해서만 실행될 수 있습니다.

◼ kernel mode (supervisor mode, system mode, privileged mode)
OS code
Privileged instructions 허용됨.

Mode Bit == ring이라 칭하기도 함.
◼ 하드웨어에서 제공하는 모드 비트(mode bit)가 있습니다. ->
◼ 이를 통해 시스템이 사용자 코드 또는 커널 코드를 실행 중인지를 구별할 수 있습니다.
◼ 사용자가 실행 중인 경우 → 모드 비트는 "사용자" (1)입니다.
◼ 커널 코드가 실행 중인 경우 → 모드 비트는 "커널" (0)입니다.

"Mode bit"은 단일 비트로 현재 실행 중인 코드가 사용자 모드인지 커널 모드인지를 나타냅니다. 일반적으로 0과 1로 표현되며, 0은 커널 모드를 나타내고 1은 사용자 모드를 나타냅니다.
"Ring"은 비트 필드로서 여러 비트를 사용하여 현재 실행 중인 코드의 모드를 나타냅니다. 일반적으로 2의 거듭제곱 수(2^n)의 비트를 사용하며, 각 비트는 특정한 보호 수준을 나타냅니다.

Timer

  • 타이머는 운영 체제가 CPU를 효율적으로 제어하기 위해 사용되는 장치입니다.
  • 타이머는 일정 기간이 지난 후에 컴퓨터에 인터럽트를 발생시킵니다.
  • 기간은 고정된 값(예: 1/60초) 또는 가변 값(예: 1~1000 밀리초)으로 설정할 수 있습니다.
  • 가변 타이머는 고정된 주파수의 클럭과 카운터로 구현되며, 운영 체제가 카운터의 값을 설정합니다.
  • 클럭이 틱할 때마다 카운터가 감소하고, 카운터가 0에 도달하면 인터럽트가 발생합니다.
  • 이 인터럽트는 운영 체제에게 CPU 제어권을 돌려줌으로써 시간 제한을 강제하고, 사용자 프로그램이 무한 루프에 갇히거나 운영 체제에 제어권을 반환하지 않는 상황을 방지합니다.
  • 타이머는 운영 체제가 CPU 시간을 조절하고, 프로그램의 실행 시간을 제한하며, 시스템의 안정성과 효율성을 유지하는 데에 중요한 역할을 합니다.

실제 적용해보기

프로그램의 긴 실행으로부터 보호하는 방법은 다음과 같습니다.

사용자 프로세스에 CPU 제어권을 넘기기 전에 타이머를 설정하여 미리 정의된 기간 후에 인터럽트를 발생시킵니다.
만약 타이머 인터럽트가 발생하면, 운영 체제는 각 상황을 적절히 처리하기 위해 제어권을 가져올 수 있습니다.
중요한 점은 시간 카운터는 특권 명령으로만 수정할 수 있다는 것입니다. 이는 일반 사용자 프로세스가 시간 카운터를 조작하는 것을 방지하여 운영 체제가 제어를 유지할 수 있도록 합니다.
이와 같은 방식을 사용하면 운영 체제는 타이머와 인터럽트를 활용하여 프로그램의 실행 시간을 제한하고, 사용자 프로세스가 무한히 실행되는 상황을 방지할 수 있습니다.


Core Components of Operating Systems

Process Management

프로세스(Process)는 실행 중인 프로그램으로서, 필요한 자원(CPU, 메모리, 입출력, 파일 등)을 가진 활성화된(entity) 엔티티입니다. 프로세스는 작업(Job)이나 time-shared program이 될 수 있습니다.

프로세스의 종료에는 재사용 가능한 자원을 회수하는 것이 필요합니다.

단일 스레드 프로세스는 프로그램 카운터를 가지며, 명령을 순차적으로 하나씩 실행하여 완료됩니다. 동일한 프로그램의 여러 인스턴스는 별도의 프로세스로 실행됩니다. 프로세스는 작업의 단위이며, 운영 체제 프로세스와 사용자 프로세스가 있을 수 있습니다.

프로세스는 실행 중인 프로그램으로 필요한 자원을 할당받고 작업을 수행합니다. 프로세스의 종료 시에는 사용한 자원을 회수하여 다른 프로세스가 사용할 수 있도록 해야 합니다.

프로세스와 유사한 용어

  • 스레드(Thread): 프로그램이 자신을 두 개 이상의 동시에 실행되는 작업으로 분할하는 방법입니다. 스레드는 CPU 활용의 기본 단위이며, 프로세스보다 작은 단위입니다. 각 스레드는 고유한 ID, 프로그램 카운터, 레지스터 세트, 스택 등을 갖습니다. 주요 자원은 공유됩니다.

  • 작업(Task): 주소 공간을 통한 실행 경로입니다. 작업은 메모리에 로드된 프로그램 명령어의 집합을 의미합니다. 일부 상황에서는 작업이 프로세스를 의미하거나 프로세스와 스레드를 모두 포함할 수 있습니다. 예를 들어, Linux와 같은 환경에서는 작업이 프로세스를 의미하기도 하며, 때로는 프로세스와 스레드를 모두 포함하는 의미로 사용됩니다.

    스레드는 프로세스 내에서 동시에 실행되는 작업 단위로, 프로세스보다 더 작은 단위로 CPU를 활용합니다. 작업은 메모리에 로드된 프로그램의 실행 경로를 의미하며, 일부 환경에서는 프로세스를 의미하거나 프로세스와 스레드를 모두 포함할 수 있습니다.

중요
Process management by OS
◼ Creating/deleting processes : 운영 체제는 프로세스를 생성하고 삭제할 수 있습니다. 프로세스를 생성하는 것은 새로운 프로그램을 실행하기 위해 해당 프로그램의 메모리 공간을 할당하는 것을 의미합니다. 프로세스 삭제는 실행을 완료한 프로세스의 자원을 회수하는 것을 의미합니다.
◼ Suspending/resuming process : 운영 체제는 프로세스를 일시 중지하거나 재개할 수 있습니다. 프로세스를 일시 중지하면 해당 프로세스의 실행이 일시적으로 중단되며, 재개되면 다시 실행이 이어집니다. 이는 우선순위나 자원 할당 등의 이유로 필요한 기능입니다.
◼ Process synchronization : 여러 프로세스가 동시에 실행될 때, 운영 체제는 프로세스 간의 동기화를 관리합니다. 동기화를 통해 프로세스들은 자원의 접근 순서, 임계 영역(Critical Section)의 상호 배제, 동기화 객체(세마포어, 뮤텍스 등)를 사용하여 상호 작용할 수 있습니다.
◼ Process communication : 운영 체제는 프로세스 간의 통신을 지원합니다. 프로세스 간 통신은 데이터를 주고받거나 서로의 상태를 알리는 등의 기능을 수행할 수 있습니다. 이를 통해 프로세스들은 협력하여 작업을 수행하거나 정보를 공유할 수 있습니다.
◼ Deadlock handling : 교착 상태(Deadlock)는 여러 프로세스가 서로의 자원을 점유하고 있어 상호 대기 상태에 빠지는 현상입니다. 운영 체제는 교착 상태를 감지하고 처리하는 기능을 제공합니다. 이를 위해 자원 할당 그래프 알고리즘 등을 사용하여 교착 상태를 해결하거나 예방할 수 있습니다.

Memory Management

메모리 관리는 메모리에 어떤 내용이 있고 언제 있어야 하는지를 결정합니다. 다음과 같은 기능을 수행합니다:
  • 프로그램 실행을 위한 메모리 할당: 프로그램을 실행하기 위해서는 모든(또는 일부) 명령어가 메모리에 있어야 합니다. 메모리 할당은 프로그램의 명령어를 메모리 공간에 할당하는 것을 의미합니다.

  • 프로그램이 필요로 하는 데이터의 메모리 할당: 프로그램이 필요로 하는 모든(또는 일부) 데이터는 메모리에 있어야 합니다. 이를 위해 운영 체제는 프로그램이 사용하는 데이터를 메모리에 할당합니다.

  • CPU 활용과 사용자에 대한 컴퓨터 응답 최적화: 메모리 관리는 CPU 활용과 컴퓨터가 사용자에게 빠른 응답을 제공하는 데에도 영향을 미칩니다. 효율적인 메모리 관리는 CPU의 활용을 최적화하고 사용자에게 신속한 응답을 제공하기 위해 필요합니다.

  • 메모리 관리 활동: 메모리 관리는 다음과 같은 활동을 수행합니다.
    현재 메모리의 어느 부분이 사용 중인지 및 어떤 프로세스에 의해 사용되고 있는지 추적하는 것
    어떤 프로세스(또는 일부분)와 데이터를 메모리로 이동시키거나 메모리에서 제거할지 결정하는 것
    필요에 따라 메모리 공간을 할당하고 해제하는 것

  • 메모리 관리는 시스템의 성능과 안정성에 매우 중요한 역할을 합니다. 효율적인 메모리 관리를 통해 시스템은 자원을 효율적으로 활용하고 프로세스와 데이터의 원활한 실행을 보장할 수 있습니다.

File-System Management

운영 체제(OS)는 정보 저장에 대한 일관된 논리적인 관점을 제공합니다. 이를 위해 물리적인 속성을 추상화하여 논리적인 저장 단위인 파일로 제공합니다. 각 저장 매체는 디바이스(예: 디스크 드라이브, USB 디스크)에 의해 제어됩니다. 다양한 속성은 액세스 속도, 용량, 데이터 전송 속도, 액세스 방법(순차적 또는 임의 접근) 등이 포함됩니다.

파일 시스템 관리는 다음과 같은 활동을 포함합니다:

  • 파일은 일반적으로 디렉토리에 구성됩니다. 디렉토리는 파일을 조직화하는 데 사용됩니다.
  • 대부분의 시스템에서 액세스 제어를 통해 누가 어떤 것에 액세스할 수 있는지를 결정합니다.
  • 운영 체제의 활동에는 파일과 디렉토리의 생성 및 삭제, 파일과 디렉토리를 조작하기 위한 기본 기능, 파일을 보조 저장장치에 매핑하는 등이 포함됩니다.
  • 안정한(비휘발성) 저장 매체에 파일을 백업합니다.
  • 운영 체제는 파일 시스템을 관리하여 사용자가 파일과 디렉토리를 쉽게 조작하고 데이터의 보안과 안정성을 유지할 수 있도록 지원합니다. 파일 시스템은 사용자에게 일관된 인터페이스를 제공하여 파일 및 디렉토리를 조작할 수 있도록 합니다. 이를 통해 사용자는 파일을 생성, 삭제, 이동, 복사 등의 작업을 수행하고, 파일에 대한 액세스 제어를 설정할 수 있습니다. 또한, 파일의 안정성을 위해 백업 기능을 제공하여 데이터 손실을 방지할 수 있습니다.

Mass-Storage Management

대부분의 프로그램은 메모리로 로드되기 전에 디스크에 저장됩니다. 이에 따라 보조 저장장치(secondary storage)의 적절한 관리가 중요합니다. 컴퓨터의 전체적인 작동 속도는 디스크 하위 시스템과 그 알고리즘에 달려 있습니다. 운영 체제(OS)는 다음과 같은 활동을 수행하여 디스크 관리를 합니다:
  • 마운팅과 언마운팅: 디스크를 시스템에 연결하고 사용하기 위해 마운팅을 수행하며, 사용이 끝난 디스크를 시스템에서 분리하기 위해 언마운팅을 수행합니다.
  • 여유 공간 관리: 디스크의 여유 공간을 관리하는 것으로, 얼마나 많은 공간이 사용 중인지, 얼마나 많은 공간이 여유로운지를 추적하고 관리합니다.
  • 저장 공간 할당: 프로그램이나 데이터를 디스크에 저장하기 위해 필요한 공간을 할당하는 것입니다. 디스크 관리는 저장 공간을 효율적으로 할당하여 여러 프로그램과 데이터가 디스크에 저장될 수 있도록 합니다.
  • 디스크 스케줄링: 여러 프로세스나 작업이 디스크에 접근하는 경우, 디스크의 효율적인 사용을 위해 디스크 스케줄링이 필요합니다. 디스크 스케줄링은 여러 작업 사이에서 디스크 액세스를 조율하여 성능을 최적화합니다.
  • 파티셔닝: 디스크를 여러 파티션으로 나누는 것으로, 각 파티션은 독립적인 파일 시스템을 가지고 있습니다. 파티셔닝은 디스크의 공간을 효율적으로 구성하고 데이터의 안정성과 보호를 위해 사용됩니다.
  • 보호: 디스크에 저장된 데이터의 보안과 무결성을 위해 보호 기능이 필요합니다. 이를 위해 액세스 제어, 암호화 등의 보안 기술이 사용될 수 있습니다.
  • 디스크 관리는 컴퓨터 시스템의 성능과 안정성에 매우 중요한 역할을 합니다. 효율적인 디스크 관리는 데이터의 안전성과 신뢰성을 보장하며, 컴퓨터 시스템의 전체적인 성능을 향상시킵니다.

Cache Management

다중 프로세서 환경에서는 모든 CPU가 자신의 캐시에 가장 최신 값을 가지도록 하기 위해 하드웨어에서 캐시 일관성(cache coherency)을 제공해야 합니다.

캐시 일관성은 공유 리소스의 로컬 캐시에 저장된 데이터의 무결성을 의미합니다. 각 CPU는 자체적으로 캐시를 가지고 있으며, 이 캐시들은 동일한 공유된 리소스에 대한 데이터를 저장합니다. 그러나 여러 CPU가 동시에 해당 데이터를 수정하거나 업데이트할 경우, 캐시들 간에 일관성을 유지해야 합니다. 이는 다른 CPU가 수정한 최신 데이터를 모든 CPU가 공유할 수 있도록 하여 데이터 일관성을 보장하는 것을 의미합니다.

캐시 일관성을 제공하기 위한 하드웨어적인 메커니즘은 캐시 일관성 프로토콜을 통해 이루어집니다. 일반적으로 캐시 일관성 프로토콜은 쓰기 갱신(write invalidate) 또는 쓰기 갱신(write update) 방식을 사용하여 캐시들 간에 데이터의 일관성을 유지합니다. 이를 통해 모든 CPU는 항상 가장 최신의 데이터를 갖게 되며, 데이터의 무결성과 일관성이 유지됩니다.

캐시 일관성은 다중 프로세서 시스템에서 데이터의 정확성과 일관성을 보장하기 위해 중요한 개념입니다. 하드웨어에서 캐시 일관성을 제공함으로써 프로세서 간의 데이터 동기화를 유지하고, 잘못된 데이터 접근이나 충돌을 방지할 수 있습니다.

I/O System Management

운영체제(OS)의 한 가지 목적은 하드웨어 장치의 특징을 사용자로부터 숨기는 것입니다.

이를 위해 OS는 다양한 기기들의 특성과 동작을 추상화하여 사용자가 하드웨어에 대한 세부 정보를 알 필요 없이 편리하게 사용할 수 있도록 합니다.

I/O 부분 시스템은 다음과 같은 역할을 담당합니다:

I/O 메모리 관리: 데이터의 임시 저장(전송 중에 데이터를 일시적으로 저장), 캐싱(성능을 위해 일부 데이터를 빠른 저장소에 저장), 스풀링(한 작업의 출력과 다른 작업의 입력을 겹치게 함) 등 I/O의 메모리 관리를 담당합니다.
일반적인 장치 드라이버 인터페이스: 다양한 하드웨어 장치에 대한 일반적인 드라이버 인터페이스를 제공하여 장치와의 통신을 관리합니다.
특정 하드웨어 장치용 드라이버: 각각의 특정 하드웨어 장치에 대한 드라이버를 제공하여 해당 장치와의 상호 작용을 관리합니다.
이러한 기능들을 통해 운영체제는 사용자가 하드웨어 장치들의 세부 사항에 대해 신경 쓰지 않고도 편리하게 사용할 수 있도록 합니다. 사용자는 운영체제를 통해 일관된 인터페이스를 제공받으며, 하드웨어와 관련된 복잡한 부분은 운영체제가 처리해줍니다.

Protection and Security

  • 보호(Protection)는 운영체제(OS)에서 정의된 자원에 대한 프로세스나 사용자의 액세스를 제어하는 메커니즘입니다. 보호를 위한 다양한 메커니즘이 있습니다:

  • 고유한 사용자 ID와 그룹 ID: 모든 프로세스와 자원에게 고유한 사용자 ID와 그룹 ID가 할당됩니다. 사용자 ID에는 사용자의 이름과 관련 번호가 포함되며, 각 사용자마다 하나의 ID가 있습니다. 그리고 해당 사용자의 모든 파일과 프로세스에 사용자 ID가 연결되어 액세스 제어를 결정합니다.

  • 그룹 ID: 사용자 그룹을 정의하고 관리하는 데 사용되며, 각 프로세스와 파일에도 연결됩니다. 그룹 ID를 사용하여 여러 사용자의 액세스를 제어할 수 있습니다.

  • 권한 상승(Privilege escalation): 사용자가 더 많은 권한을 가진 유효한 ID로 변경하는 것을 의미합니다. 권한 상승을 통해 사용자는 더 많은 권한을 가진 상태로 작업을 수행할 수 있습니다.

  • 하지만 보호만으로는 충분하지 않습니다. 보호 메커니즘은 인증이 도난될 수 있다는 한계가 있습니다. 인증이 도난되면 보안의 취약점이 될 수 있습니다. 따라서 보안(Security) 메커니즘도 필요합니다.

  • 보안(Security)은 외부 및 내부 공격으로부터 인증을 불법적으로 획득하는 것을 방지하는 목적을 가지는 메커니즘입니다. 이는 다양한 형태의 공격을 포함합니다. 예를 들면 거부 서비스 공격, 웜, 바이러스, 신분 도용, 서비스 도난 등이 있습니다. 최근의 환경에서 보안 문제는 매우 중요한 이슈입니다.

  • 사이버 공격과 보안 위협은 계속해서 진화하고 있으며, 기술의 발전과 함께 새로운 취약점과 위협이 등장하고 있습니다. 이에 따라 기업과 개인 모두 보안에 대한 관심과 대비가 필요합니다. 시스템과 데이터의 기밀성, 무결성, 가용성을 보호하기 위해 다양한 보안 메커니즘과 방법이 사용되고 있습니다. 예를 들면 암호화, 방화벽, 침입 탐지 시스템, 악성 코드 검사 등이 있습니다.

  • 보안은 사용자의 개인 정보와 중요한 비즈니스 데이터 등을 보호하여 사이버 공격으로부터 안전하게 보호하는 것을 목표로 합니다. 따라서 보안에 대한 지속적인 관심과 대비가 필요하며, 최신 보안 기술과 모범 사례를 따르는 것이 중요합니다.


Computing Environments

Traditional Computing

Mobile Computing

Client-Server Computing

Peer-to-Peer Computing

Virtualization

가상화(Virtualization)은 운영 체제가 다른 운영 체제 내에서 애플리케이션을 실행할 수 있도록 하는 기술입니다. 이는 광범위하고 성장 중인 산업입니다.

가상화는 소스 CPU 유형과 대상 유형이 다른 경우에 에뮬레이션(Emulation)을 사용합니다. 예를 들어 PowerPC에서 Intel x86으로의 변환과 같은 경우입니다. 일반적으로 가장 느린 방법으로 알려져 있습니다. 또한 컴퓨터 언어가 네이티브 코드로 컴파일되지 않은 경우에는 해석(Interpretation) 방식이 사용됩니다.

가상화는 가상화된 운영 체제가 CPU에 네이티브로 컴파일된 상태로 게스트 운영 체제를 실행하는 방식입니다. 예를 들면 VMware가 네이티브 WinXP 호스트 운영 체제 위에서 실행되는 여러 개의 WinXP 게스트 운영 체제와 애플리케이션을 동시에 실행하는 상황을 상상해 볼 수 있습니다.

가상 머신 관리자(Virtual Machine Manager 또는 VMM)는 가상화 서비스를 제공합니다. 이를 통해 가상화된 환경에서 여러 운영 체제와 애플리케이션을 동시에 실행하고 관리할 수 있습니다. 이를 통해 하나의 물리적인 서버나 호스트 시스템에서 여러 개의 가상 환경을 운영할 수 있으며, 자원의 효율성과 유연성을 높일 수 있습니다.

  • 가상화 이외에도 여러가지가 있지만, 이것만 기입함.

Cloud Computing

profile
bell!

0개의 댓글