운영체제
시스템 자원(하드웨어를 구성하는 일을 하는 CPU, 자료를 저장하는 RAM, 디스크)을 관리하는 주체 운영체제
운영체제가 없다면, 응용 프로그램이 실행될 수 없다
응용 프로그램은 컴퓨터를 이용해 다양한 작업을 하는 것이 목적
운영체제는 응용 프로그램이 하드웨어에게 일을 시킬 수 있도록 도와줌
운영 프로그램
운영체제를 통해 컴퓨터에게 일을 시키는 것
운영 프로그램이 운영체제가 제공하는 기능(컴퓨터를 조작할 수 있는)을 이용하기 위해서는
컴퓨터 조작 권한을 운영체제로부터 부여받아야 함
권한을 요청하기 위해서는 운영 체제와의 소통이 필요하다
=> 운영체제가 응용 프로그램을 위해 인터페이스(API)를 제공해야 함 (시스템 콜(System call))
시스템 콜(System call)?
응용 프로그램이 시스템 자원을 사용할 수 있도록, 운영체제 차원에서 다양한 함수를 제공하는 것
API는 시스템 콜로 이루어져 있음
프로그램
작업의 순서 / 파일이다
프로세스
운영체제에서는 실행 중인 하나의 애플리케이션을 프로세스라고 함
사용자가 애플리케이션을 실행하면, 운영체제로부터 실행에 필요한 메모리를 할당 받아 애플리케이션의 코드를 실행함
스레드
한 프로세스의 조각
스레드는 코드가 실행되는 하나의 흐름이기 때문에,
한 프로세스 내에 스레드가 두 개라면 코드가 실행되는 흐름이 두 개 생긴다는 의미
- 프로세스 내에서 실행되는 흐름의 단위
- 각 스레드마다 call stack이 존재(call stack: 실행중인 서브루틴을 저장하는 자료 구조)
- 스레드는 다른 스레드와 독립적으로 동작
멀티 스레드(Multi-Thread)
멀티 태스킹 => 두 가지 이상의 작업을 동시에 처리하는 것
멀티 스레드 => 하나의 프로세스가 두 가지 이상의 작업을 처리할 수 있는 것
멀티 프로세스가 애플리케이션 단위의 멀티 태스킹이라면, 멀티 스레드는 애플리케이션 내부에서의 멀티 태스킹
사용처
대용량 데이터의 처리시간을 줄이기 위해 데이터를 분할하여 병렬*로 처리하는 데에 사용
애플리케이션에서 네트워크 통신
장점
시스템의 처리량(Throughput)이 향상되고 자원 소모가 줄어들어 자연스럽게 프로그램의 응답 시간이 단
Heap 영역을 이용 => 프로세스 간 통신 방법(IPC)에 비해 스레드 간의 통신 방법이 훨씬 간단
단점
서로 다른 스레드가 같은 데이터에 접근하고, 힙 영역을 공유하기 때문에
서로 다른 스레드가 서로 사용중인 변수나 자료구조에 접근하여 엉뚱한 값을 읽어오거나 수정하는 일이 발생할 수 있다
단점 해결
멀티스레딩 환경에서는 동기화 작업이 필요합니다.
동기화를 통해 작업 처리 순서를 제어하고, 공유 자원에 대한 접근을 제어해야 함
* 동시성과 병렬성의 차이
동시에 돌릴 수 있는 스레드 수는 컴퓨터에 있는 코어 갯수로 제한됨
시분할 방식 => 운영체제(또는 가상 머신)는 각 스레드를 시간에 따라 분할하여, 여러 스레드가 일정 시간마다 돌아가면서 실행되도록 함
- Concurrency(동시성, 병행성): 여러 개의 스레드가 시분할 방식으로 동시에 수행되는 것처럼 착각을 불러일으킴
- Parallelism(병렬성): 멀티 코어 환경에서 여러 개의 스레드가 실제로 동시에 수행됨
가비지 컬렉션
가비지 컬렉션이란?
프로그램에서 더 이상 사용하지 않는 메모리를 자동으로 정리하는 것 즉 자동 청소 자바, C#, (자바스크립트에서 사용가능)
V8 엔진(크롬 브라우저 및 node.js)은 힙 메모리에 객체나 동적 데이터를 저장함
대표적인 방법
1) 트레이싱
한 객체에 flag를 두고, 가비지 컬렉션 사이클마다 flag에 표시 후 삭제하는 mark and sweep 방법
2) 레퍼런스 카운팅
한 객체를 참조하는 변수의 수를 추적하는 방법
캐시
많은 시간이나 연산이 필요한 작업의 결과를 저장해두는 것
컴퓨팅에서) 일반적으로 일시적인(temporarily) 데이터를 저장하기 위한 목적으로 존재하는 고속의 데이터 저장공간
캐시의 일반적인 작동원리
캐시의 데이터는 일반적으로 RAM(Random Access Memory)과 같이 빠르게 액세스할 수 있는 하드웨어에 저장되며,
소프트웨어 구성 요소와 함께 사용될 수도 있습니다. 캐시는 기본 스토리지 계층(SSD, HDD)에 액세스하여 데이터를
가져오는 더 느린 작업의 요구를 줄이고, 데이터 검색의 성능을 높입니다.
속도를 위해 용량을 절충하는 캐시는 일반적으로 데이터의 하위 집합을 일시적으로 저장합니다.
완전하고 영구적인 데이터가 있는 데이터베이스와는 대조적임
CPU를 비유를 통해 설명
1. 사람의 뇌
CPU= 사고를 담당하는 대뇌피질
RAM=단기기억을 담당
HDD(하드디스크)=장기기억을 담당
2. 행동
CPU= 머릿속에 있는 기억을 떠올리는 행동
RAM=책장에 꽂혀 있는 책을 찾아 읽는 행동
HDD(하드디스크)=지구 한 바퀴를 돌아서 특정한 내용을 찾아오는 행동
CPU
CPU는 PC의 기억, 해석, 연산, 제어를 하며, 프로그램의 명령어를 해석하여 데이터를 연산 및 처리하고 실행함
RAM 요약.
CPU가 HDD에 빠르게 접근할 수 있도록 하기 위하여 운영체제(OS)와 응용프로그램, 현재 사용 중인 데이터를 유지하고 있는 저장 장소
출처 : https://m.blog.naver.com/hagagoo/221748077404
장점
- 애플리케이션 성능 개선
- 데이터베이스 비용 절감
- 백엔드 부하 감소
- 예측 가능한 성능
- 데이터베이스 핫스팟 제거
- 읽기 처리량 증가
- 읽기 처리량: IOPS; Input/output operations per second. HDD, SSD 등의 컴퓨터 저장 장치의 성능 측정 단위
캐시 사용처
- 클라이언트: HTTP 캐시 헤더, 브라우저
- 네트워크: DNS 서버, HTTP 캐시 헤더, CDN, 리버스 프록시
- 서버 및 데이터베이스: 키-값 데이터 스토어(e.g. Redis), 로컬 캐시(인-메모리, 디스크)
댓글