본문 바로가기

study/IT 인프라

프로세스&스레드, 커널

프로세스와 스레드

  • OS로 부터 시스템 자원을 할당 받아 메모리 공간에서 작동되는 프로그램을 프로세스 또는 스레드 라고 한다
    • 시스템 자원 : CPU 시간, 주소공간, 메모리 공간
    • 메모리 공간
      • Text(Code): 실행할 프로그램의 코드가 저장되어 CPU가 하나씩 처리함(hex 또는 bin 파일 메모리)
      • Data: 전역 변수, 정적 변수를 저장
      • Heap: 프로세스가 실행 중 사용하려고 동적으로 할당 받은 공간(사용자가 할당 및 해제를 해야함)
      • Stack: 지역 변수, 매개변수 등을 저장하는 영역으로 프로그램이 자동으로 사용하는 임시 메모리 영역(메모리에 프로세스가 메모리에 올라갈 때 스택 사이즈는 저장되어 있어서 런타임시 사이즈 변경 불가)
  • 프로세스는 각각 독자적인 메모리 공간을 가지고 있다.
  • 스레드는 프로세스의 메모리 공간을 사용하고 이 메모리 공간은 다른 스레드와 공유한다.
  • 프로세스는 독자 메모리 공간을 가져 생성 시, CPU 부하가 스레드와 비교해 높아진다.
    • 멀티 프로세스 애플리케이션에서는 프로세스 생성 부담을 낮추기 위해 미리 프로세스를 시작시킨다.
  • 스레드는 스레드끼리 메모리 공간을 공유해서 사용하기 때문에, 의도치 않은 데이터 I/O 발생할 수 있다.
  • 프로세스도 메모리 공간을 공유할 수 있는데, 오라클 DB에서는 공유메모리(SGA)에 디스크 상의 데이터 캐시나 실행 완료된 SQL 캐시, 테이블, 인덱스 등이 저장된다.

OS 커널

  • 커널은 OS의 본질이며 커널 자체가 OS의 인프라 이다.

  • OS 처리는 원칙적으로 커널을 통해 이루어진다.

    • OS : 자원(CPU, RAM, DISK)를 스케줄링
  • 커널의 역할

    1. 시스템 콜 인터페이스
    • 프로세스/스레드로부터 명령을 받는 인터페이스
    • 시스템 콜 : 애플리케이션이 OS를 통해 어떤 처리를 원할 때 커널에 내리는 명령
    • 어떤 처리의 예: 디스크 I/O, 네트워크 통신, 새로운 프로세스 생성 등
    1. 프로세스 관리
    • 가동되고 있는 프로세스 관리와 CPU 이용 우선순위 등을 '스케줄링'
    • 프로세스/스레드의 명령을 처리할 수있는 CPU는 한정되어 있기 때문에 어떤 프로세스가 어느 정도의 CPU 코어를 이용할 수 있을지, 처리 우선순위 결정 등을 관리
    1. 메모리 관리
    • 서버 상의 메모리를 단위 크기(예: 4KB)의 블록으로 분할해서 프로세스에 할당
    • 독립 메모리 공간을 확보 및 독립성 관리(각 프로세스의 참조 영역을 지킴)
    1. 네트워크 스택
    2. 파일 시스템 관리
    • 파일 시스템 : 물리 디스크에 제공된 데이터를 관리하는 기능
    • 프로세스(스레드)는 편리성 때문에 모든 것을 파일 단위로 생각한다.
    • 디렉터리 구조 제공, 액세스 관리, 고속화, 안정성 향상
    1. 장치 드라이버
    • 디스크, NIC, HBA 등의 물리 장치와 작업
    • NIC(네트워크 인터페이스 컨트롤러): 컴퓨터를 네트워크에 연결하여 통신하기 위해 사용하는 하드웨어 장치
    • HBA(호스트 버스 어댑터): 서버와 장비 사이의 통신을 위해 서버에 장착하는 카드

참고