1. 멀티 프로세싱

멀티프로세싱은 여러 개의 프로세스, 동시에 두 가지 이상의 일을 수행할 수 있는 것을 말합니다.

1-1. 웹 브라우저

웹 브라우저의 멀티프로세싱은 브라우저가 여러 개의 프로세스를 사용하여 웹 페이지를 로드하고 실행하는 것을 말합니다.

  • 브라우저 프로세스: 탭 바, 주소창, 북마크 바, 설정 메뉴 등 브라우저의 UI 요소를 렌더링
  • 렌더러 프로세스: 웹 페이지에서 보이는 부분의 모든 것을 제어
  • 플러그인 프로세스: PDF 뷰어, Flash Player 등의 브라우저 플러그인을 실행하기 위해 사용
  • GPU 프로세스: 웹 페이지의 그래픽 처리를 담당. WebGL, CSS, 애니메이션 등 GPU를 사용하는 작업을 처리.

1-2. IPC(Inter Process Communication)

멀티 프로세싱 환경에서 여러 프로세스가 동시에 작업을 수행하면서 서로 정보를 주고 받거나 동기화하는 것이 필수적인데, 이 때 사용되는 기술이 IPC입니다. 정리하자면, IPC는 프로세스들 사이에서 서로 데이터를 주고받는 행위 또는 그에 대한 방법이나 경로입니다.

 

IPC의 종류로는 공유 메모리, 파일, 소켓, 파이프, 메시지 큐가 있습니다.

 

공유 메모리

  • 개념: 여러 프로세스가 동일한 메모리 영역을 접근하여 데이터를 공유하는 방식

특징
- 각 프로세스의 메모리를 다른 프로세스가 접근할 수 없지만 공유 메모리를 통해 여러 프로세스가 하나의 메모리를 공유 가능
- 메모리 자체를 공유하기 때문에 불필요한 데이터 복사의 오버헤드가 발생하지 않아 가장 빠름
- 같은 메모리 영역을 여러 프로세스가 공유하기 때문에 공기화가 필요

 

파일

  • 개념: 파일 시스템을 통해 데이터를 주고 받는 방식
  • 특징
    - 영구적인 데이터 저장
    - 속도가 느림

소켓

  • 개념: 네트워크를 통해 프로세스 간 데이터를 주고 받는 방식
  • 특징
    - TCP와 UDP가 있음

파이프

  • 개념: 2개의 프로세스 입출력을 직렬 연결하여 데이터를 주고 받는 방식
  • 특징
    - 익명 파이프(Anonymous PIPE)명명된 파이프(Named PIPE) 존재

익명 파이프(Anonymous PIPE)

  • 개념: 부모-자식 프로세스 간에만 통신할 수 있는 파이프(자식 프로세스란 부모 프로세스에 의해 생성된 프로세스로 부모 프로세스의 코드를 복사하여 생성되므로 부모 프로세스의 일부 상태를 상속받음)
  • 특징
    - 프로세스 간에 FIFO 방식으로 읽히는 임시 공간
    - 단방향 통신으로 읽기 전용, 쓰기 전용 파이프를 만들어서 작동

명명된 파이프(Named PIPE)

  • 개념: 파이프 서버와 하나 이상의 파이프 클라이언트 간의 통신을 위한 이름있는 단방향/양방향 파이프
  • 특징
    - 단방향 또는 양방향 가능
    - 여러 파이프를 동시에 사용 가능
    - 컴퓨터의 프로세스끼리 또는 다른 네트워크상의 컴퓨터와도 통신 가능

메시지 큐

  • 개념: 메시지를 큐(queue) 데이터 구조 형태로 관리하는 것
  • 특징
    - 커널의 전역 변수 형태 등 커널에서 전역적으로 관리됨
    - 사용 방법이 매우 직관적이고 간단
    - 다른 코드의 수정 없이 단지 몇 줄의 코드를 추가시켜 간단하게 메시지 큐에 접근 가능

 

728x90

'운영체제' 카테고리의 다른 글

[운영체제] CPU 스케줄링 알고리즘  (0) 2024.05.10
[운영체제] 스레드  (0) 2024.05.10
[운영체제] 프로세스  (0) 2024.05.08
[운영체제] 메모리 관리  (0) 2024.05.05
[운영체제] 캐시(Cache)  (0) 2024.05.04

캐시(Cache)

캐시란 자주 사용되는 데이터를 메인 메모리보다 접근 속도가 빠른 캐시 메모리에 임시로 저장해 놓는 장치입니다. 캐시를 사용하면 메인 메모리에 직접 접근하는 대신 캐시 메모리에서 데이터를 읽어올 수 있기 때문에 데이터 접근 시간을 단축할 수 있습니다.

  • 캐시 계층: 속도 차이를 해결하기 위해 계층과 계층 사이에 있는 계층(ex. 램과 CPU 사이의 속도 차이가 크기 때문에 그 중간에 레지스터 계층을 둬서 속도 차이 해결)

1. 지역성(Locality)의 원리

캐시 계층을 두지 말고 캐시를 직접 설정할 때는 자주 사용하는 데이터를 기반으로 설정해야 합니다. 이 데이터에 대하는 근거는 지역성입니다.

지역성의 원리는 캐시 메모리 설계와 최적화에 매우 중요한 역할을 합니다.

  1. 시간 지역성(Temporal Locality)
    프로그램이 최근에 액세스 한 메모리 위치를 가까운 미래에 다시 액세스 할 가능성이 높다는 것입니다. 예를 들어, 반복문 내에서 같은 변수를 반복적으로 사용하는 경우가 이에 해당합니다. 시간 지역성이 높으면 캐시 적중률이 높아집니다.
  2. 공간 지역성(Spatial Locality)
    최근 근접한 데이터를 이루고 있는 공간이나 그 가까운 공간에 접근하는 특성을 의미합니다. 예를 들어, 배열을 순차적으로 탐색하는 경우가 이에 해당합니다.

2. 캐시 Hit & 캐시 Miss

캐시가 효율적으로 동작하려면, 캐시의 적중률(Hit-rate)를 극대화해야 합니다.

캐시 메모리에 접근했을 때 원하는 정보가 있을 수도 없을 수도 있습니다. 이때 원하는 정보가 있다면 적중(Hit), 없다면 실패(Miss)했다고 합니다.

출처: https://velog.io/@skypinkhs0718/%EC%BA%90%EC%8B%9C-%EB%A9%94%EB%AA%A8%EB%A6%AC%EB%8A%94-%EB%AC%B4%EC%97%87%EC%9D%BC%EA%B9%8C

캐시 hit의 경우, 해당 데이터를 제어장치를 거쳐 가져오게 됩니다. 위치도 가깝고 CPU 내부에서 작동하기 때문에 빠릅니다.

반면 miss의 경우,  데이터를 메모리에서 가져오게 되는데 이는 시스템을 기반으로 작동하기 때문에 느립니다.

캐시 적중률 = 캐시 적중 횟수/ 전체 요청 횟수(적중률이 0.95~0.99일 때 우수하다고 함)

 

3. 캐시 매핑

캐시 매핑은 컴퓨터 시스템에서 메인 메모리의 데이터를 캐시 메모리에 어떻게 저장하고 검색할 것인지를 결정하는 방법을 의미합니다.

캐시 매핑에는 3가지 방법이 있습니다.

  1. 직접 매핑: 메인 메모리와 캐시를 똑같은 크기로 나누고 순서대로 매핑하는 것을 말합니다. 예를 들어 메모리가 1~100이 있고 캐시가 1~10이 있다면 각각을 10으로 나눠 1:1~10, 2:11~20 이런 식으로 매핑합니다. 구현이 간단하며 처리가 빠르지만 충돌 문제가 발생할 수 있습니다.
    직접 매핑 방식에서 캐시 메모리는 메인 메모리의 특정 블록에 직접 매핑됩니다. 이 매핑 방식의 특성상, 한 캐시 라인이 여러 메모리 블록과 연결될 수 있습니다. 따라서, CPU 다시 A 참조하려고 하면, 위치에는 이전에 덮어씌운 B 데이터만 존재하게 됩니다. 그래서 캐시에서 원하는 A 데이터를 찾을 없게 되는 것이죠. 이러한 상황을 '캐시 미스'라고 부르며, 때문에 CPU 다시 메인 메모리에서 A 찾아야 합니다. 과정은 상대적으로 느리기 때문에 성능 저하를 초래하게 됩니다.
    위의 예제에서 A와 B는 동일한 캐시 라인에 매핑되어 있다고 가정했습니다. 그래서 CPU가 A를 참조할 때 A는 캐시에 로드되며, 이후 B를 참조할 때 B는 같은 캐시 라인에 로드되어 기존의 A를 덮어씁니다.
  2. 연관 매핑: 순서를 일치시키지 않고 관련 있는 캐시와 메모리를 매핑합니다. 직접 매핑에서는 인덱스가 필요했지만 연관 매핑에서는 빈자리를 찾아가면 됩니다. 충돌은 적지만 모든 블록을 탐색해야 해서 속도가 느립니다.
  3. 집합 연관 매핑: 직접 매핑과 연관 매핑을 합쳐 놓은 것입니다. 순서는 일치시키지만 집합을 둬서 저장하며 블록화되어 있기 때문에 검색은 좀 더 효율적입니다. 예를 들어 메모리가 1~100이 있고 캐시가 1~10이 있다면 캐시 1~5는 1~50의 데이터를 무작위로 저장시키는 것을 말합니다.

4. 웹 브라우저의 캐시

웹 브라우저의 캐시(Cache)는 웹 페이지, 이미지, 스타일시트, 자바스크립트 등 웹 리소스를 임시로 저장해 두는 공간을 말합니다.

쿠키(Cookie), 로컬 스토리지(Local Storage), 세션 스토리지(Session Storage)가 있습니다. 쿠키, 로컬 스토리지, 세션 스토리지는 모두 웹 브라우저에서 사용하는 데이터 저장 기술입니다. 

4-1. 쿠키

  • 개념: 웹 사이트(웹 서버)가 사용자의 컴퓨터에 저장하는 작은 텍스트 파일
  • 특징
    • key-value 형태
    • 각 쿠키는 4KB까지 데이터 저장 가능
    • 사용자의 세션 ID, 로그인 정보, 사용자의 환경 설정 등을 저장하는데 주로 사용
    • 만료 기한 O -> 만료 날짜가 지나면 쿠키는 자동으로 삭제됨

4-2. 로컬 스토리지

  • 개념: 웹 브라우저에서 브라우징 도메인 내에서 데이터를 장기적으로 저장할 수 있는 텍스트 파일
  • 특징
    • key-value 형태
    • 한 브라우징 도메인 당 최대 5KB까지 데이터 저장 가능
    • 사용자 설정, 쇼핑 카트 정보, 로그인 정보 및 상태, 게임 데이터 저장하는데 주로 사용
    • 만료 기한 X -> 사용자가 직접 삭제하기 전까지 데이터 유지, 브라우저 종료해도 제거되지 않음

4-3. 세션 스토리지

  • 개념: 브라우징 도메인 내에서 시점에 따른 데이터를 저장하는 텍스트 파일
  • 특징
    • key-value 형태
    • 각 쿠키는 5KB까지 데이터 저장 가능
    • 사용자 입력, 일시적인 설정(사용자가 세션동안 선택한 테마 또는 언어 설정), 장바구니 등을 저장하는데 주로 사용
    • 만료 기한 O -> 브라우저를 닫으면 세션 스토리지의 모든 정보 사라짐

4. 데이터베이스의 캐싱 계층

데이터베이스 시스템을 구축할 대도 메인 데이터베이스 위에 레디스(redis, Remote Dictionary Server) 데이터베이스 계층을 '캐싱 계층'으로 둬서 성능을 향상시키기도 합니다.

데이터를 메모리에 저장하고 관리하여 빠른 응답 시간을 제공합니다.

출처: https://blog.cslee.co.kr/redis-remote-dictionary-system/

 

728x90

'운영체제' 카테고리의 다른 글

[운영체제] CPU 스케줄링 알고리즘  (0) 2024.05.10
[운영체제] 스레드  (0) 2024.05.10
[운영체제] 멀티 프로세싱  (0) 2024.05.09
[운영체제] 프로세스  (0) 2024.05.08
[운영체제] 메모리 관리  (0) 2024.05.05

1. 메모리란?

메모리는 현재 실행되는 프로그램의 명령어와 데이터를 저장하는 부품입니다. CPU는 메모리에 올라와 있는 프로그램의 명령어들을 실행할 뿐 입니다.


2. 메모리 계층

메모리를 필요에 따라 여러 가지 종류로 나누어 놓은 것을 메모리 계층 구조라고 합니다.

상단에 있을 수록 속도가 빠르지만 용량이 적으며 하단에 있을 수록 속도가 느리지만 용량이 큽니다.

  • 레지스터: CPU 안에 있는 메모리로 CPU가 요청을 처리하는데 필요한 데이터를 일시적으로 저장합니다.
  • 캐시(L1, L2, L3 캐시): 자주 사용하는 데이터나 값을 미리 복사해 놓는 임시 장소입니다.
  • 주기억장치: 메모리(RAM)를 의미합니다. 휘발성이며 CPU가 처리하고 있는 내용을 저장하고 있는 기억장치입니다.
  • 보조기억장치: Hard Disk Driver(HDD)와 Solid State Driver(SSD)를 의미합니다. 주기억장치의 용량 부족을 보완하기 위해 쓰는 외부 기억 장치입니다. 주기억장치와는 다르게 휘발성을 띠지 않아 컴퓨터의 전원이 꺼지더라고 유지됩니다.
728x90

+ Recent posts