분류 전체보기 (60) 썸네일형 리스트형 useContext (typescript) useContext props를 app.tsx에서 각각 내려준다고 가정하자 이처럼 필요 없는 props를 내려주거나 하는 일이 발생할 수 있다. props에 해당되는 값들을 따로 모아 context를 만들어 주어 context 에서 직접적으로 props를 제공하는 역할을 하는 것이 useContext이다 context 셋업 특정 contextProvider 안에 있는 모든 childeren에서 theme라는 prop을 사용한다고 가정하자 theme props /* theme.ts */ export const theme = { primary: { main: '#3f5185', text: '#fff', }, secondary: { main: '#f50057'. text: '#fff', }, }; ThemeC.. Assembly - 레지스터 레지스터 프로세서 내부에 존재하는 저장공간 메모리에서 데이터를 읽어 들이는 것이 프로세서의 속도에 영향을 주기 때문에 프로세서 내부에 저장소(register)를 설치하여 운영하는 것 1. 종류 General registers Data registers 32 bit registers EAX EBX ECX EDX 16 bit registers AX : Primary Acc BX : base register CX : count register DX : data register 8 bit registers AH, AL BH, BL CH, CL DH, DL Pointer registers 32 bit EIP ESP EBP 16bit IP : instruction Pointer SP : Stack Pointer B.. real mode real mode 리얼 주소 모드 또는 호환 모드라고도 한다 80286 이후의 x86 호환 CPU의 운영 방식 최대 1메가바이트의 메모리가 기록될 수 있다 리얼모드 에서는 메모리의 절대주소를 계산하여 넣어주어야 부팅시 오류를 줄여 줄 수 있다 메모리 절대주소 계산 segment register의 주소에 16을 곱한 다음 offset을 더하면 된다 예제 Segment 0, offset 0x7CF 0x7CF * 16 = 0x7CF0 0x7CF0 + 0x0F = 0x7CFF 서로 다른 instruction은 다른 segment register을 사용한다 8086 segment register CS - Code segment SS - Stack segment DS - Data segment ES - Extra .. OS - 교착상태 교착상태 둘 이상의 프로세스들이 각각 자원을 점유한 상태에서 또 다른 프로세스가 현재 점유하고 있는 자원을 요구하며 상대 프로세스가 양보하기를 무한정 기다리는 현상 1. 필수조건 1.1. 상호배제 조건 하나의 프로세스가 사용 중이면 다른 프로세스는 반드시 기다려야 하는 경우 한 번에 한 프로세스만이 공유자원을 사용할 수 있어야 한다 1.2. 점유와 대기 조건 임의의 프로세스가 최소한 하나 이상의 자원을 할당받은 상태에서 다른 프로세스의 자원이 해제되기를 기다를 프로세스가 존재하는 경우 1.3. 비선점, 비중단 조건 프로세스에게 할당된 자원을 중간에 강제로 빼앗지 못함을 의미하는 것 자원이 임의의 프로세스에게 할당이 되면 프로세스가 작업을 끝내고 반납하기 전 까지는 돌이킬 수 없는 것 1.4. 환형대기 조.. OS - 병행 프로세스 문제 해결 병행 프로세스 문제 해결 * 동시에 두 개 이상의 프로세스들을 병행처리하면 여러 가지 문제가 발생 할 수 있다 * 상호배제 기법, 임계영역, 동기화 기법 등으로 해결 가능하다1. 비동기 병행 프로세스 1.1 상호배제 비동기 병행 프로세스들은 실행 시 메모리를 공유하여 사용하다 보니 어떤 프로세스가 메모리에 쓰고 있는 동안 다른 프로세스가 메모리를 읽는 현상이 발생되기도 한다. (경쟁조건) 가끔 순서에 따라 출력되는 결과가 달라질 수 있다 이러한 현상을 제어하기 위해 상호배제가 필요하다 한 프로세스가 공유 기억장치 또는 공유 기억 파일을 사용 중 일때 다른 프로세스들이 사용하지 못하도록 배제시키는 제어기법 임계영역의 개념을 이용하여 두 프로세스가 하나의 공유자원을 상호배타적으로 사용할 수 있게 하면서 동시.. OS - 병행 프로세스 병행 프로세스 * 상호 간 제어 없이 동시에 실행상태에 있는 두 개 이상의 프로세스를 의미 * 한정된 자원에 대한 사용순서 등 여러가지 문제가 발생할 수 있는 데 이 때 임계영역, 상호배제 기법, 동기화 기법 이용 1. 단일 프로세스 내의 병행수행 우선순위 그래프 (선행 그래프) 제약을 규칙적(논리적)으로 표현한 것 어떤 계산의 일부에 대한 우선순위 제약조건을 정의하는 데 유용한 방법이지만 2차원이므로 프로그래밍 언어에 사용하기는 어렵다 Fork, join 구조 병행을 언어적 표현으로 명시함으로써 프로그램을 구성하는 여러 문장의 선행관계를 표현할 수 있도록 함 Fork 프로그램에서 두 개의 병행수행을 만드는 명령어 단일연산을 두 개의 독립적인 연산으로 분할 join 병행하는 여러 개의 연산을 하나로 재결.. OS - 스케줄링 알고리즘 스케줄링 알고리즘 1. 기한부 스케줄링(deadline scheduling) 비선점 작업들을 마감시간까지 완성하도록 계획한 스케줄링 마감시간 이후 처리된 작업은 쓸모가 없다 2. 우선순위 스케줄링 알고리즘 비선점 프로세스 실행 중 실행순서가 우선순위에 따라 정해지는 것 우선순위가 높은 프로세스들이 계속 들어오면 우선순위가 낮은 프로세스들은 무한정 기다려야 한다 정적 우선순위 우선순위가 변하지 않는 방법 상대적으로 오버헤드가 작고 구현이 용이하다 동적 우선순위 우선순위를 상황에 맞게 계속 조정하여 사용한다 상대적으로 오버헤드가 크고 구현이 어렵다 3. FCFS 스케줄링 (FIFO) 비선점 준비 큐에 도착한 순서에 따라 디스패치되는 것 (First In First Out) 예측이 쉽다는 장점이 있으나 대화식.. OS - 프로세스 프로세스 * 현재 주기억공간(RAM)을 할당받아 CPU에 의해 실행 중인 프로그램 * 사용자의 요청에 의해 보조기억장치에 저장되어 있던 프로그램(수동적 개체, passive entity)이 사용자의 요청에 따라 능동적 개체(active entity, 프로세스)로 상태가 변화한 것 프로세스 = CPU, 프로세서 = 실행 중인 프로그램 프로세스의 종류 운영체제 프로세스 커널 프로세스 또는 시스템 프로세스라 불리기도 한다 프로세스 실행순서를 제어하고 사용 중인 프로세스가 다른 사용자나 운영체제 영역에 침범하지 못하도록 감시하는 기능 사용자 프로세스 생성, 입출력 프로세스 수행 등 시스템 운영에 필요한 작업을 수행한다 사용자 프로세스 사용자 코드를 수행한다 병행 프로세스 프로세스 여러 개가 동시에 실행되는 것 .. OS - 국부성 국부성 (locality) 프로세스가 실행되는 동안 주기억장치를 참조할 때 일부 페이지만 집중적으로 참조하는 성질이 있다는 특성 종류 시간 국부성 프로세스가 실행되면서 처음에 하나의 페이지를 일정 시간 집중적으로 엑세스하는 현상 한 번 참조한 페이지는 가까운 시간 내에 계속 참조할 가능성이 높음을 의미 Loop, 스택, sub routine, Counting, 집계에 사용되는 변수 등 공간 국부성 프로세스 실행 시 일정 위치의 페이지를 집중적으로 엑세스하는 현상 어느 하나의 페이지를 참조하면 그 근처의 페이지를 계속 참조할 가능성이 높음을 의미 배열 순회, 관련 변수를 근처에 선언하여 할당되는 기억장소, 순차적 코드의 실행, 같은 영역에 있는 변수를 참조 등 React - useReducer (in typescript) USEREDUCER useState가 여의치 못한 상황일 때 사용 (state 종류가 많던지 등의) reducer 함수 예시 function reducer(state: CounterState, action: CounterAction) { switch (action.type) { case 'INCREMENT': return { count: state.count + action.payload }; case 'DECREMENT': return { count: state.count - action.payload }; default: return state; } } 사용 예시 import { FC, useReducer } from 'react'; type CounterState = { count: number; .. 이전 1 2 3 4 5 6 다음