donaricano-btn

배타적제어란 - 정의


1. 배타적 제어란?

- 여러 사람이 한 물건공유하는 상황에서 발생

- 동시에 사용할 시에 고장날 수 있다

- 병렬처리에서 필요

- 배타적제어 부분은 병목 현상이 발생할 수 있다


2. 배타적 제어의 예

1) 실 생활

- 회의실을 누군가 사용중이라면 사용중이라는 푯말을 놓는다

- 공실이라면 공실이라는 푯말을 놓는다

2) OS, DBMS

- 병렬처리를 위해 배타적 제어 사용

- 병렬처리시 공유데이터를 사용하면 부분적으로 직렬처리를 해야하는데 이때 배타적 제어 필요


3. 배타적 제어 특징

- 복수의 처리가 공유자(CPU, 메모리, 디스트 등)에 동시에 엑세스하면 불일치 발생하여 베타적 제어로 보호한다

- 특정 처리가 공유자원을 이용하고 있는 동안 다른 처리가 이용할 수 없게 해서 불일치가 발생하지 않도록 한다

- 필요 이상 배타적 제어를 사용하면 CPU가 여러 개 있더라도 하나밖에 사용할 수 없게된다

정말 필요한 곳만 배타적 제어를 하고 병렬처리를 늘린다



블로그 이미지

리딩리드

,
donaricano-btn

큐(queue)

- 대기행렬이라 한다

- 하드웨어, OS, 데이터 베이스, 애플리케이션 등 모든 곳에서 사용

- FIFO(First In First Out) 선입선출


1. 어디에 사용되나

1_1 웹 서버


0) 상황설명

- CPU에 코어가 두개 있으며 아파치 프로세스는 네개이다

1) 처리중 상태

- 프로세스 두개는 CPU의 (각각)코어에 의하여 처리 중에 있다

2) 처리 대기

- 프로세스 두개는 CPU 처리를 기다리고 있다

- 런큐에 두개의 프로세스가 있다

런큐(run-queue)

- CPU를 기다리는 프로세스 행렬을 런큐라고 한다

- 런큐에 쌓인 프로세스 수 / 코어 수 = 1 = 문제 없다

- 리눅스 : CPU에 처리 중인 프로세스도 런큐로 인식(앞에 상황에서 런큐는 4)

- OS 커널에 프로세스 스케출러 기능이 있어서 런큐를 관리한다

- CPU 처리를 기다리는 프로세스나 스레드 확인

a. 유닉스 계열 : vmstat 5(5초 간격의 리눅스 데이터) 명령어 입력

- 현재는 런큐가 0이다

- 만약 10이고 1CPU의 2코어라면 1코어당 네개의 프로세스 또는 스레드가 대기중 상태(처리지연 가능성)

b. window : 검색에 performance monitoring

- 1CPU 2코어에서 1코어당 16개의 프로세스 혹은 스레드가 대기중이다


1_2. 데이터베이스의 디스크 I/O

- 프로세스의 처리 대상이 CPU가 아닌 HDD 라는 점이 다르다

- vmstat 5의 b 열로 대기중인 프로세스가 스레드 수를 확인가능 하다



블로그 이미지

리딩리드

,
donaricano-btn

C10K 문제


1. C10K 란

- 하드웨어 성능상 문제가 없어도 클라이언트 수가 많아지면 서버가 고장나는 문제


2. 문제   

- 클라이언트 접속마다 프로세스를 생성하면 OS 파일 디스크립터나 프로세스 수가 최대치

- 1프로세스당 소비 메모리크기는 작지만 이것이 쌓여서 문제

- 프로세스 수가 만 단위 이상되어 콘텍스트 스위치 등에 사용되는 CPU 사용률 문제

- 프로세스 수가 많으면 프로세스를 관리하는 OS 커널 내의 관리용 데이터 크기 문제


3. 해결책

1) 논 블로킹 I/O(non-blocking I/O)

- 1프로세스 다수 접속 처리(학원 선생같음)

- 각 클라이언트와 통신시에 정말로 필요한 경우만 통신해서 변경

블로그 이미지

리딩리드

,
donaricano-btn

동기/ 비동기(asynchronous)


1. synchronous/asynchronous

1) 비동기(asynchronous)

- 누군가에게 일을 부탁하고 끝나면 말하라고 하고 다른일을 하는것

- 처리를 병행해서 가능

- 일이 끝났는지 알기 위해선 별도의 방법이 필요

2) 동기(synchronous)

- 누군가에게 일을 부탁하고 잠자코 기다리는 것

- 일처리가 끝난 것을 확실하게 알 수 있다


2. 이용되는 곳

1) 비동기

- Ajax, 구글 검색 하는 도중 키워드 

- 메시지 큐

- DBMS에서 비동기 I/O

a. DBMS는 HDD등의 저장소에서 비동기로 쓰기 처리를 할 수 있다(비동기I/O)


3. DBMS의 비동기 I/O

0) DBMS의 I/O

- DBMS에는 I/O를 전문적으로 하는 스레드나 프로세스가 존재한다

- I/O 병렬화 방식

a. 프로세스나 스레드를 복수로 사용 방식

b. 비동기 I/O 방식

1) 동기 I/O

- I/O가 끝날 때 까지 프로세스가 다음 처리 안함

2) 비동기 I/O

- I/O가 끝나지 않아도 다음 처리 진행

- DBMS에 적합

'IT_Infra > Architecture' 카테고리의 다른 글

[IT_Infra] 큐(queue)  (1) 2016.10.18
[IT_Infra] C10K 문제  (0) 2016.10.12
[IT_Infra] monolithic kernel(모놀리식) vs micro kernel(마이크로)  (0) 2016.09.19
[IT_Infra] OS kernel  (0) 2016.09.19
[IT_Infra] 프로세스와 스레드  (0) 2016.09.12
블로그 이미지

리딩리드

,