본문 바로가기

데이터 사이언스 공부

1-2. 운영체제와 하드웨어 Operating System &Hardware

운영체제는 컴퓨터 시스템의 중추 역할을 하며, 하드웨어 자원과 사용자 간의 인터페이스를 제공한다.

이를 교통 신호에 비유할 수 있는데, 교통 신호는 차량과 보행자가 안전하게 이동할 수 있도록 조절하는 반면,

운영체제는 다양한 애플리케이션이 하드웨어 자원을 효율적으로 사용할 수 있도록 조정한다.

 


 

운영체제의 주요 구성 요소

  1. 커널(Kernel)
    • 운영체제의 핵심으로, 하드웨어 자원의 직접적인 관리와 프로세스 간의 상호작용을 담당한다. 커널은 시스템 콜을 통해 사용자 프로그램과 하드웨어 간의 교량 역할을 한다.
  2. 쉘(Shell)
    • 사용자와 운영체제 간의 상호작용을 제공하는 인터페이스로, 명령어를 입력받아 실행하는 CLI(예: bash 등)와 그래픽 기반의 GUI(예: GNOME, KDE 등) 형태가 있다.
  3. 파일 시스템(File System)
    • 데이터를 저장하고 접근하는 방법을 정의한다. 디렉터리 구조를 통해 파일의 계층적 관리가 가능하며, 다양한 파일 형식을 지원한다.

 

프로세스와 스레드

  1. 프로세스
    • 정의: 실행 중인 프로그램의 인스턴스. 각 프로세스는 독립적인 메모리 공간과 자원을 보유한다.
    • 특징:
      • 각 프로세스는 고유한 프로세스 ID(PID)를 가지고, 독립적으로 실행되며 서로 간섭하지 않는다.
      • 프로세스는 생성, 실행, 대기, 중지 등 다양한 상태를 가질 수 있다.
  2. 스레드
    • 정의: 프로세스 내에서 실행되는 경량 프로세스. 스레드는 같은 프로세스의 메모리 공간을 공유한다.
    • 특징:
      • 스레드 간의 컨텍스트 스위칭이 프로세스보다 경량화되어, 성능이 향상된다.
      • 멀티스레딩을 통해 하나의 프로세스가 여러 작업을 동시에 수행할 수 있다.
  3. 멀티스레딩
    • 멀티스레딩은 CPU의 자원을 효율적으로 활용할 수 있게 해주며, 동시성 문제를 해결하는 데 유리하다. 예를 들어, 웹 서버는 여러 클라이언트의 요청을 동시에 처리할 수 있다.

 


 

프로세스 관리와 메모리 관리

  1. 프로세스 관리
    • 운영체제는 프로세스의 생명주기를 관리하고, 스케줄링 알고리즘(예: 라운드 로빈, 우선순위 기반 스케줄링)을 통해 CPU 자원을 효율적으로 배분한다.
    • 프로세스 간 통신(IPC) 메커니즘을 제공하여 서로 다른 프로세스가 데이터와 정보를 공유할 수 있게 한다.
  2. 메모리 관리
    • 운영체제는 물리 메모리와 가상 메모리의 관리를 통해 효율성을 극대화한다. 페이지 테이블을 사용하여 가상 주소를 물리 주소로 매핑하며, 메모리 단편화를 최소화한다.
    • 또한, 메모리 보호 기법을 통해 각 프로세스가 자신의 메모리 영역에만 접근하도록 한다.

 

하드웨어 구성 요소

  1. 연산장치
    • CPU: 명령어를 처리하는 중앙 처리 장치로, 연산 및 제어 작업을 수행한다. 멀티코어 CPU는 여러 스레드를 동시에 실행할 수 있다.
    • GPU: 그래픽 처리 장치로, 병렬 처리가 필요한 계산을 효과적으로 수행한다.
  2. 저장장치
    • RAM: 비휘발성 메모리로, 운영체제와 프로세스가 실행되는 동안 데이터를 임시로 저장한다.
    • HDD/SSD: 데이터를 영구적으로 저장하는 장치로, SSD는 빠른 데이터 접근 속도로 주목받고 있다.