전체 688

[AWS] VPC, 서브넷, 라우팅 테이블, 라우터, region

VPC란? - AWS 리소스를 이용할 수 있는 논리적으로 할당된 가상의 네트워크 공간 - VPC를 이용하여 리소스들을 쉽게 제어할 수 있음 - 하나의 리전에 대해 계정 당 하나의 VPC를 받는다. 서브넷이란? - VPC를 잘개 쪼갠 단위(VPC안에 있으므로 VPC보다 작은 아이피 범위를 갖는다). - 더 많은 네트워크 망을 만들기 위해 생성. - 서브넷 안에 EC2 인스턴스같은 리소스를 위치할 수 있음(여러개 있을 수도 있음) - 서브넷은 CICD 라우팅 기법을 이용한다. (VPC는 해당 VPC에 연결된 subnet보다 항상 더 적은 network범위 값을 갖는다 * CIDR : Classless Inter-domain Routing 클래스가 없는 도매인 간 라우팅 기법으로 특정 host가 어떤 ne..

AWS 2023.03.29

DEADLOCK의 정의, 조건, 해결책

DEADLOCK(교착상태) 이란 둘 이상의 프로세스가 각자 서로가 필요한 자원을 점유한 상태로 무한정 대기하는 상황 DEADLOCK 발생조건 다음 네 조건을 만족하면 데드락에 빠질 수 있는 가능성이 있다. 1. 상호배제 : 자원들은 한 프로세스만 점유할 수 있다. 2. 점유대기 : 특정 프로세스에게 쓰이고 있는 자원이 다른 프로세스에게도 필요하여 대기하는 다른 프로세스가 존재 3. 비선점 : 다른 프로세스가 자원을 점유하고 있을 때 강제로 뻇을 수 없다 4. 순환대기 : 프로세스 P0,P1,P2...Pn 이 존재할 때, Pk-1이 Pk가 필요한 자원을 가지고(Pn은 P0가 필요한 자원보유) 있는 상황 DEADLOCK 해결 1. 예방법(데드락 상태를 사전에 예방, 조건에 대한 부정) 1.1 상호배제 부정 ..

CS/운영체제 2023.03.16

전통적 동기화 예제들

생산자 소비자 문제(Producer and Consumer Problem) * 다른말로 유한버퍼문제(bounded buffer problem) - 생산자(producer)는 버퍼에 데이터를 생산하고, 소비자(consumer)는 버퍼에 데이터를 소비하는 상황 - 버퍼는 유한하기 때문에 버퍼에 데이터가 가득 차면 생산자가 생산할 수 없고, 비어있으면 소비자가 꺼내갈 수 없다.(이 상황에서 프로세스가 계속 대기하는 것을 busy waiting 이라고 한다) 독자 저자 문제(Readers Writers problem) - 독자(reader)는 데이터를 읽기만 하고, 저자(writer)는 읽고 수정하는 상황 - reader는 데이터를 읽기만 하기 때문에 임계구역 문제가 발생하지 않음. 따라서 writer에만 임계..

CS/운영체제 2023.03.16

임계구역(critical section)문제와 뮤텍스(mutex), 세마포어(semaphores)

임계구역 문제(the critical section problem) 멀티 프로세스가 공유자원을 사용하는 과정에서 발생하는 문제들. 다양한 프로세스가 공유자원(공통변수)를 건들이면서 데이터의 정합성이 깨지는 현상 * 임계구역 : 공유자원에 접근하는 코드 영역 임계구역 문제의 해결 조건 임계구역 문제를 해결하기 위해선 다음의 조건을 만족해야 한다. 1. 상호배제(mutual exclusion) : 특정 임계구역에서 프로세스가 실행되고 있으면, 다른 프로세스는 해당 임계구역에서 실행될 수 없음 2. 진행(progress) : 임계구역이 비어있을 때 프로세스는 무한정 기다리지 않고 순서에 맞게 진행된다. 3. 한정된 대기(bounded waiting) : 프로세스가 임계구역에 진입하려는 요청을 한 후 그 요청이..

CS/운영체제 2023.03.10

CPU 스케쥴링

CPU 스케쥴링 - CPU(특히 여러 코어의 CPU)의 이용률을 극대화 하기위해 CPU사용 순서 혹은 규칙을 정하는 알고리즘 디스패처 - CPU 코어의 제어를 CPU 스케줄러가 선택한 프로세스에 주는 모듈 - 한 프로세스에서 다른 프로세스로 문맥을 교환하는 일 - 사용자 모드로 전환하는 일 - 프로그램을 다시 시작하기 위해 사용자 프로그램의 적절한 위치로 이동하는 일 선점(preemptive)와 비선점(nonpreemptive) - cpu스캐쥴링에는 선점방식과 비선점 방식이 존재 - 선점 : 특정 프로세스가 작동중일 때 다른 프로세스가 CPU를 뺏어서 사용할 수 있는 방식 - 비전섬 : 특정 프로세스가 작동중일 때는 다른 프로세스가 CPU를 뺏지 못하고 원래 프로세스가 끝날때 까지 기다리는 방식 CPU스..

CS/운영체제 2023.03.08

싱글스레드, 멀테스레드

스레드란 - 프로세스가 할당받은 자원을 이용하는 실행 단위 싱글스레드, 멀티스레드 - code, data, file(heap)은 공통영역 - registers, stack, program counter은 개별영역 멀티스레드 장점 1. 응답성 : 작업의 일부가 중단되거나 긴 작업이 수행되더라도 프로그램의 수행이 계속됨 2. 자원공유성 : 자신이 속한 프로세스 내의 스레드들과 메모리와 자원을 공유 3. 경제성 : 프로세스를 새로 생성하는 비용보다 스레드를 새로 생성하는게 훨씬 경제적임. 4. 확장성 :멀티스레드의 경우 한 프로세스를 여러 프로세서에서 수행할 수 있음

CS/운영체제 2023.02.27

봉쇄형(blocking), 비봉쇄형(nonblocking), 동기식(synchronous), 비동기식(asynchronous),

봉쇄형, 비봉쇄형, 동기식, 비동기식* 봉쇄형(blocking) : 매인 프로세스가 다른 프로세스가 동작하는 동안 멈춤 * 비봉쇄형(non-blocking) : 메인프로세스가 다른 프로세스가 일하는 동안에도 멈추지 않음 * 동기식(synchronous) : 작업의 순서를 보장함. 작업의 순서를 보장해야하기 때문에 메인프로세스가 다른 프로세스의 작업완료를 지속적으로 확인함(관심을 가짐). * 비동기식(asynchronous) : 작업의 순서를 보장하지않음. 작업의 순서를 보장하지 않기때문에 메인프로세스가 다른 작업을 수행하고있고, 다른 프로세스 작업을 신경쓰지않음(비관심)

CS/운영체제 2023.02.17

소프트파싱, 하드파싱

라이브러리 캐시 - SGA(System Global Area) : 서버 프로세스, 백그라운드 프로세스가 공통으로 엑세스하는 데이터와 제어 구조를 캐싱하는 메모리공간 - 라이브러리 캐시 : SGA에 속해있는 내부 프로시저를 반복 재사용 할 수 있도록 캐싱해 두는 메모리 공간. 소프트파싱과 하드파싱 - SQL문을 실행하면, SQL이 라이브러리 캐시에 존재하는지 확인 - 이때 라이브러리 캐시에서 찾으면 곧바로 실행 => 소프트파싱 - 라이브러리 캐시에서 찾지 못하면, 최적화, 로우 소스 생성단계를 거침 => 하드파싱

DB/SQL 2023.02.12

옵티마이저 힌트 규칙

사용법 주석( /* */)에 +를 붙이는 방식으로 사용 SELECT /* +INDEX(table col) */ col1, col2, col3, col4 FROM table where col1==option1 주의사항 1. 인자를 나열할 때는 콤마 사용가능, 힌트와 힌트사이에는 사용 불가 아래는 가능 /* INDEX(a,b) INDEX(c,d)*/ 아래는 불가능(첫번째 힌트만 유효) /* INDEX(A), INDEX(B) */ 2. 태이블을 지정할 때 스키마명까지 명시하면 안됨 SELECT /*+ FULL(scima.table) */ FROM table 3. alias를 사용했으면, 힌트에서도 반드시 alias를 사용해야함 SELECT /*+ FULL(EMP) */ FROM EMP E

DB/SQL 2023.02.12

SQL 최적화 과정

SQL 최적화 과정 1. SQL파싱 1.1 파싱 트리 생성 : SQL문을 이루는 개별 구성요소를 분석해서 파싱 트리 생성 1.2. syntax 체크 : 문접적 오류가 있는지 확인 (사용 or 순서 바르지 않거나 누락된 키워드 확인) 1.3. semantic체크 : 의미상 오류가 있는지 확인 (존재하지 않는 테이블 사용 or 사용한 오브젝트 권한 있는지) 2. SQL최적화 : 옵티마이저가 통계정보를 바탕으로 다양한 실행경로를 생성하여 비교한 후 효율적인 방법 선택 3. 로우소스 생성 : SQL옵티마이저가 선택한 실행경로를 실제 실행 가능한 코드 또는 프로시저 형태로 포매팅 하는 단계 SQL 옵티마이저 최적화 단계 1. 사용자가 전달한 쿼리를 수행하는데 후보군이 될 만한 실행계획들을 찾음 2. 데이터 딕셔너..

DB/SQL 2023.02.12

웹브라우저의 캐시

쿠키 - 만료기한이 있는 key-value 저장소 - 4KB까지 저장가능 - 클라이언트와 서버 모두 만료기한 정할 수 있는데, 보통 서버에서 정함 로컬 스토리지 - 만료기한이 없는 key-value 저장소 - 10MB까지 저장가능 - 클라이엔트에서만 수정 가능 - 웹브라우저를 닫아도 유지되고, 도메인 단위로 유지되고 저장, 생성됨 - HTML5 지원하는 곳에서만 가능 세션 스토리지 - 만료기한이 없는 key-value 저장소 - 5MB까지 저장가능 - 클라이언트에서만 수정 가능 - 탭단위로 스토리지 생성, 탭 닫을 때 해당 데이터 삭제 - HTML5 지원하는 곳에서만 가능 비고 - 데이터베이스의 캐싱기능 - 메인 데이터베이스 위에 레디스(redis)데이터베이스 계층을 '캐싱계층'으로 둬서 성능향상

CS/운영체제 2023.02.04

메모리, 캐시

메모리란? - 데이터의 상태, 명령어를 기록하는 장치 - CPU(일꾼)가 계산을 담당하고, 메모리(작업장)은 기억을 담당 메모리의 계층 - RAM : 하드디스크로 부터 일정량의 데이터를 복사하여 임시저장하고, 이를 필요시마다 CPU에 빠르게 전달하는 역할 - 차수별 저장장치 (1) 1차 저장장치 : 휘발성 저장장치(레지스터, 캐시, 메인메모리) (2) 2차 저장장치 : 보조기억장치 (3) 3차 저장장치 : 백업 사본을 저장하기위해 다른 장치에 저장하는것(cd-rom, blue-ray) 캐시 1. 정의 - 데이터를 미리 복사해놓은 임시저장소. 빠른장치와 느린 장치의 속도차이에 따른 병목현상을 줄이기 위한 메모리 - 레지스터는 CPU와 램사이에 있는 캐시계층이고 램은 캐시메모리와 보조기억장치 사이에 있는 캐..

CS/운영체제 2023.02.04

CPU 구성요소 및 연산과정

CPU란? - CPU는 제어장치, 레지스터, 산술논리연산장치로 구성되어 있는 컴퓨터 장치를 말하며 인터럽트에 의해 단순히 메모리에 존재하는 명령어를 해석하는 일꾼. * 제어장치(CU: Control Unit) : 프로세스 조작을 지시하는 CPU의 한 부품 * 레지스터 : 레지스터는 CPU내부의 매우 빠른 임시기억장치를 가르킴. CPU와 직접 연결되어 있어 연산속도가 메모리보다 수십~수백배 빠름. CPU는 자체적 데이터 저장방법이 없으므로, 레지스터 거쳐 데이터 전달 * 산술논리연산장치 : 덧셈, 뺄셈 등 두 숫자의 산술연산과 베타적 논리합, 논리곱은 논리연산을 계산하는 디지털 회로 인터럽트 - 컨트롤러가 장치드라이버에게 작업이 완료됐다는 것을 알리고, CPU에게 이를 처리시키기 위해 CPU를 중지 시키는..

CS/운영체제 2023.02.03