프로세스와 스레드
- OS로 부터 시스템 자원을 할당 받아 메모리 공간에서 작동되는 프로그램을 프로세스 또는 스레드 라고 한다
- 시스템 자원 : CPU 시간, 주소공간, 메모리 공간
- 메모리 공간
- Text(Code): 실행할 프로그램의 코드가 저장되어 CPU가 하나씩 처리함(hex 또는 bin 파일 메모리)
- Data: 전역 변수, 정적 변수를 저장
- Heap: 프로세스가 실행 중 사용하려고 동적으로 할당 받은 공간(사용자가 할당 및 해제를 해야함)
- Stack: 지역 변수, 매개변수 등을 저장하는 영역으로 프로그램이 자동으로 사용하는 임시 메모리 영역(메모리에 프로세스가 메모리에 올라갈 때 스택 사이즈는 저장되어 있어서 런타임시 사이즈 변경 불가)
- 프로세스는 각각 독자적인 메모리 공간을 가지고 있다.
- 스레드는 프로세스의 메모리 공간을 사용하고 이 메모리 공간은 다른 스레드와 공유한다.
- 프로세스는 독자 메모리 공간을 가져 생성 시, CPU 부하가 스레드와 비교해 높아진다.
- 멀티 프로세스 애플리케이션에서는 프로세스 생성 부담을 낮추기 위해 미리 프로세스를 시작시킨다.
- 스레드는 스레드끼리 메모리 공간을 공유해서 사용하기 때문에, 의도치 않은 데이터 I/O 발생할 수 있다.
- 프로세스도 메모리 공간을 공유할 수 있는데, 오라클 DB에서는 공유메모리(SGA)에 디스크 상의 데이터 캐시나 실행 완료된 SQL 캐시, 테이블, 인덱스 등이 저장된다.
OS 커널
커널은 OS의 본질이며 커널 자체가 OS의 인프라 이다.
OS 처리는 원칙적으로 커널을 통해 이루어진다.
- OS : 자원(CPU, RAM, DISK)를 스케줄링
커널의 역할
- 시스템 콜 인터페이스
- 프로세스/스레드로부터 명령을 받는 인터페이스
- 시스템 콜 : 애플리케이션이 OS를 통해 어떤 처리를 원할 때 커널에 내리는 명령
- 어떤 처리의 예: 디스크 I/O, 네트워크 통신, 새로운 프로세스 생성 등
- 프로세스 관리
- 가동되고 있는 프로세스 관리와 CPU 이용 우선순위 등을 '스케줄링'
- 프로세스/스레드의 명령을 처리할 수있는 CPU는 한정되어 있기 때문에 어떤 프로세스가 어느 정도의 CPU 코어를 이용할 수 있을지, 처리 우선순위 결정 등을 관리
- 메모리 관리
- 서버 상의 메모리를 단위 크기(예: 4KB)의 블록으로 분할해서 프로세스에 할당
- 독립 메모리 공간을 확보 및 독립성 관리(각 프로세스의 참조 영역을 지킴)
- 네트워크 스택
- 파일 시스템 관리
- 파일 시스템 : 물리 디스크에 제공된 데이터를 관리하는 기능
- 프로세스(스레드)는 편리성 때문에 모든 것을 파일 단위로 생각한다.
- 디렉터리 구조 제공, 액세스 관리, 고속화, 안정성 향상
- 장치 드라이버
- 디스크, NIC, HBA 등의 물리 장치와 작업
- NIC(네트워크 인터페이스 컨트롤러): 컴퓨터를 네트워크에 연결하여 통신하기 위해 사용하는 하드웨어 장치
- HBA(호스트 버스 어댑터): 서버와 장비 사이의 통신을 위해 서버에 장착하는 카드
참고
'study > IT 인프라' 카테고리의 다른 글
Thread의 Process의 메모리 공유에 대한 문제점 (수정 중) (0) | 2020.02.16 |
---|---|
물리 서버 내부 구조 (3) | 2020.02.14 |
인프라 아키텍처의 종류 (0) | 2020.02.10 |