본문 바로가기

분류 전체보기

(78)
[OS] Main Memory Background 프로세스란 실행 중인 프로그램이며, main memory에 올라간 상태이다. 메모리 구성 바이트(비트 8개) 단위로 Array가 쭉 나열되있는 상태이며, 각 주소가 할당되어있다. CPU는 memory에서 instructions을 fecth해온다 → program counter에서 가져옴 가져온 메모리 역시 load 또는 store한다 메모리 구성 프로세스는 메모리 공간을 분할해서 사용한다 base register && limit register을 가지고 합법적인 주소를 할당한다 잘못짜면 segmentation fault 발생 Address Binding 우리는 상징적으로 메모리 번지(ex int n = 3)를 저장한다 해당 메모리를 컴파일러가 relocatable 주소라고 불리는 논리..
빅데이터를 지탱하는 기술 - Chapter5 빅데이터의 파이프라인 워크플로 관리 워크플로 기초 정의 정해진 업무를 정해진 스케줄에 따라 자동으로 실행하는 구조를 워크플로로 관리라고 한다. 워크플로 관리 도구 정기적인 태스크의 실행 비정상적인 상태 감지와 해결 태스크 데이터 파이프라인의 과정은 데이터가 이동하는 과정이다. 이때 이동하면서 이뤄지는 개별 처리를 태스크라고 한다. 빅데이터 파이프라인에 워크플로 도구가 필요한 이유 복잡해지고, 많은 수의 태스크에 오류가 생긴다면 복구하는 과정이 어렵다. 정기적인 태스크 수행과 보고. 태스크 간의 의존 관계 설정과 정해진 순서의 실행. 태스크 실행 결과의 보관과 오류 시 재실행. 모든 태스크를 일원 관리하는 것이 빅데이터에서 워크플로 관리 도구의 역할이다. 워크플로 관리 도구의 종류 - 선언 형, 스크립트 형 선언형 XML, Y..
빅데이터를 지탱하는 기술 - Chapter4 빅데이터의 축적 벌크 형과 스트리밍 형의 데이터 수집 - 4.1 객체 스토리지 빅데이터는 확장성이 높은 분산스토리지에 저장하지만, 기본은 대량으로 파일 저장을 위한 객체스토리지이다. ex)HDFS, Amazon S3 다수의 컴퓨터를 사용하여 파일을 여러 디스크에 복사 → 데이터의 중복화 부하분산 실현 네트워크를 통해 읽기 때문에 작은 파일을 자주 읽고 쓰는건, 통신 오버헤드가 크다. 데이터의 수집 시계열 데이터는 적당히 모아서 하나의 큰 파일로 만든다. 너무 큰 파일을 나눠서 처리한다. 단순 수집이 아닌 처리하기 쉽도록 위의 규칙을 지킨다. 수집 - 가공 - 구조화 - 분산스토리지의 장기적인 저장이 데이터 수집이다. 벌크 형 데이터 전송 생성 파일 서버, 웹 서비스에서 다양한 방식(SQL, API)으로 정리해 데이터를 ..
빅데이터를 지탱하는 기술 - Chapter3 빅 데이터의 분산 처리 대규모 분산 처리의 프레임워크 구조화 데이터 테이블의 칼럼, 데이터형, 테이블 간의 관계를 스키마라고 정의한다. 스키마가 명확한 데이터를 구조화된 데이터라고 한다. 비구조화 데이터 텍스트, 이미지 등 SQL로 집계 불가능한 데이터 보통 데이터레이크에 저장 후, 분산 시스템에서 처리한다. → 가공하면서 스키마 정의 & 구조화 스키마리스 데이터 CSV, JSON, XML, 파킷 등 서식은 있지만, 스키마가 없는 경우. JSON을 예시로 들자면, 다운로드 시 스키마를 정의하는건 효율적이지 않아 분석에 필요한 필드만을 따로 추출한다. 데이터 구조화의 파이프라인 데이터 소스 → 분산 스토리지(구조화가 필요한 상황) → 열 지향 스토리지 열 지향 스토리지는 MPP DB 전송 혹은 Hadoop 상에서 변환하면서 이루..
빅데이터를 지탱하는 기술 - Chapter2 빅데이터의 탐색 2-1 크로스 집계의 기본 크로스 테이블 : 행과 열이 교차하는 부분에 숫자 데이터가 들어간다 트렌젝션 테이블 : 행방향으로 데이터가 추가되는 기본적인 데이터베이스 구조 룩업 테이블 : 새롭게 속성을 추가하는 것이 아닌 key를 이용하여 속성 값을 연결 크로스 집계 방법 피벗 테이블 : 가장 쉬움 BI도구 : 자주 반복해야 할 경우 사용 SQL : 데이터가 큰 경우, SQL로 먼저 집계 후, 시각화 도구를 결합 데이터를 수백만건 이하로 줄일 수 있다면, 시각화도구에 한번에 업로드 가능하기에 특별한 시스템이 필요없다. 그게 아니라면 지연이 적은 데이터마트를 사용해야한다. 2-2 열 지향 스토리지에 의한 고속화 메모리가 부족할 대량의 데이터를 집계할 때는,미리 집계에 유리한 형태로 데이터베이스를 만들어 놓는..
[OS] Deadlocks System Model Deadlock이란? 모든 프로세스가 대기하고 있는 상태 해당 상태를 못 바꾼다. 다른 프로세스를 통해서 상태를 바꿔야하기에. 쓰레드가 리소스가 필요할 경우 동작 방식 Request - Use- Release 이며, Use단계에서 임계영역이 고려된다. Dead lock 발생할 때의 필요한 조건 상호배제가 필요할 때 Hold and Wait - 점유하고 대기를 할 때 No preemption - 자원을 못 뺏어오고, 선점이 불가할 때 Circular Wait - dependency 그래프가 순환할 때 Deadlock Characterization Resource-Allocation Graph T→R - T가 인스턴스 R을 요구한다 R→T - R이 T에 할당되어있다 데드락의 전형적인 ..
[OS] Synchronization Examples Classic Problems of Synchronization Bounded-Buffer Problem Producer-Consumer Problem C기준 wait, signal의 대칭 구조가 맞아야한다. Pthread로 해결하기 뮤텍스로 P-C모델을 구현한다 세마포어로 버퍼를 관리한다. sem_wait → 세마포어를 1개 감소시킨다. 여기에서 empty가 0이라면 1개가 증가할 때 까지 대기한다. sem_post → 세마포어를 하나 증가시킨다. empty, full의 세마포어로 버퍼 안에 여러개 쓸 수 있도록해주고 버퍼를 고칠 때는 mutex lock으로 상호배제가 되도록 하고있다. 세마포어의 wait, signal → 자바의 모니터락을 이용한 wait, notify Readers-Writers P..
[OS] Synchronization Tools - part2 Mutex Locks Soft : Peterson Hard : special instruction set → Atomic Variable은 어렵다. High level에서 좀 더 쉽게 다룰 수 있는 소프트웨어 툴이 있을까? Mutex Locks 특징 동기화를 간단하게 해주는 툴 열쇠를 획득 반납 하는 과정으로 상호배제를 보장 acquire, release로 섹션을 나누고 available 변수로 판단한다. 위 의 키워드의 atomically는 보장되야 하고, 어떻게 보장할지는 커널 개발자가 고민하자 문제점 busy waiting : acquire이 쓸데없이 CPU자원 사용한다. spin lock : CPU자원이 많다면, busy waiting덕분에 ready 상태로 기다릴수 있다. Semaphore Se..