Computer Science

CPU 메모리와 CPU의 관계 메모리는 CPU의 작업 공간으로 기능합니다. CPU는 메모리에 저장된 기계어 명령어를 클럭 사이클마다 읽어 실행합니다. CPU의 기본 작동 CPU는 매 클럭마다 하나의 인스트럭션을 읽고 실행합니다. CPU 내부에는 빠른 레지스터와 운영체제와 사용자 프로그램을 구분하는 mode bit이 있습니다. 인터럽트와 CPU 1. 인터럽트의 역할과 CPU CPU는 메모리에서 명령어를 실행한 후, 다음 명령어의 주소를 처리합니다. 키보드 입력 같은 외부 이벤트는 CPU에 인터럽트를 발생시켜, 즉각적인 반응이 필요한 상황을 알립니다. CPU는 인터럽트 라인을 통해, I/O 장치의 인터럽트를 알게 된다 2. CPU의 인터럽트 처리 과정 사용자 프로그램이 파일을 읽거나 쓸 때, CPU는 인터럽..
인터럽트 (Interrupt) 1. 인터럽트의 기본 개념 인터럽트는 CPU가 현재 실행 중인 작업을 잠시 중단하고, 다른 작업(예: 하드웨어 신호, 소프트웨어 요청)을 처리할 수 있도록 하는 메커니즘입니다. 인터럽트가 발생하면, CPU는 현재 작업의 상태(레지스터와 프로그램 카운터 값)를 저장한 후 인터럽트 처리 루틴으로 제어를 넘깁니다. 2. 인터럽트의 종류 Interrupt (하드웨어 인터럽트): 외부 하드웨어(예: 키보드, 마우스)에서 발생하는 인터럽트입니다. Trap (소프트웨어 인터럽트): 소프트웨어에 의해 의도적으로 발생하는 인터럽트입니다. System call: 사용자 프로그램이 운영체제의 서비스를 요청할 때 발생하는 인터럽트입니다. Exception: 프로그램 실행 중 발생하는 오류(예: ..
백트래킹 (Backtracking) 정의 백트래킹은 모든 가능한 경우의 수 중에서 특정 조건을 만족하는 경우만을 찾아내는 기법입니다. 해결 과정에서 더 이상 진행이 불가능하다고 판단되면, 이전의 분기점으로 돌아가 다른 가능성을 탐색합니다. 사용 예 문제: N-Queen, 순열, 조합 등 과정 설명 선택: 가능한 후보 중 하나를 선택합니다. 제약 조건 검사: 선택이 문제의 제약 조건에 위배되는지 확인합니다. 목표 확인: 현재 선택이 문제 해결의 목표에 도달했는지 확인합니다. 불가능한 경우 백트래킹: 선택이 불가능하다면 이전 단계로 돌아갑니다. Sudo Code def is_safe(board, row, col): # 해당 위치에 퀸을 놓을 수 있는지 확인하는 함수 def solve_n_queen(board..
너비 우선 탐색 (BFS, Breadth-First Search) BFS는 그래프의 모든 정점을 탐색하는 알고리즘 가장 가까운 정점부터 우선적으로 탐색하는 방식 특징 재귀적으로 동작하지 않는다 어떤 노드를 방문했었는지 여부를 반드시 검사해야 한다 (무한 루프의 위험) 방문한 노드들을 차례대로 저장 한 후 꺼낼 수 있는 자료 구조인 큐(Queue)를 사용한다 일반적으로 큐를 이용해서 반복적 형태로 구현하는 것이 가장 잘 동작한다 Prim 알고리즘, 다익스트라 알고리즘(Dijkstra’s Algorithm) 과정 설명 시작 정점 선택: 탐색을 시작할 정점을 선택합니다. 인접 정점 큐에 추가: 현재 정점에 인접한 모든 정점을 큐에 추가합니다. 큐에서 정점 추출: 큐에서 정점을 하나씩 추출하며 탐색합니다. 방문..
깊이 우선 탐색 (DFS, Depth-First Search) 정의 DFS는 그래프의 모든 정점을 탐색하는 알고리즘 중 하나로, 가장 깊은 부분을 우선적으로 탐색하는 방식입니다. 사용 예 문제: 그래프의 모든 정점 방문, 경로 탐색 등 과정 설명 시작 정점 선택: 탐색을 시작할 정점을 선택합니다. 인접 정점 탐색: 현재 정점에서 갈 수 있는 인접한 정점을 찾습니다. 깊이 우선 탐색: 인접한 정점 중 하나를 선택하여 더 깊게 탐색합니다. 방문 체크: 방문한 정점은 체크하여 중복 방문을 방지합니다. Sudo Code def dfs(graph, v, visited): visited[v] = True for i in graph[v]: if not visited[i]: dfs(graph, i, visited)
Netcat으로 HTTP 요청 보내기 안녕하세요! 오늘은 netcat이라는 유용한 네트워크 유틸리티를 사용하여 HTTP 요청을 보내는 방법에 대해 알아보겠습니다. 이 글에서는 netcat의 기본적인 사용법과 함께, Windows에서 WSL2를 사용한 예시까지 다루어 보겠습니다. 1. netcat이란? netcat은 네트워크 연결을 읽고 쓰는 간단한 유틸리티입니다. 이 도구는 디버깅과 네트워크 테스트에 매우 유용하며, TCP 또는 UDP 프로토콜을 사용하여 데이터를 전송할 수 있습니다. 2. netcat으로 HTTP 요청 보내기 사용된 커맨드와 HTTP 요청 아래의 코드 블록은 netcat을 사용하여 HTTP 요청을 보내는 예시입니다. 이 예시는 gaia.cs.umass.edu의 80번 포트에 연결하여 특..
엔티티 타입 어떻게 관리할까? 데이터 모델링을 하다보면, 여러 엔티티 타입 간의 관계가 도출 되고, 반대로 하나의 엔티티 타입 안에 비슷하지만 트랜잭션의 처리 패턴에 따라 다르게 처리되는 컬럼들이 뭉쳐져 설계되기도 한다 그러면 어떻게 해야 할가? 엔티티 타입의 통합과 분리도 단순하게 엔티티 타입의 모습 만을 보고 결정하는 것이 아니다 분석의 대상이 되는 업무 패턴은 먼저 이해하고 해당 업무에서 날아오는 트랜잭션의 패턴을 분석한 다음 엔티티 타입의 통합과 분리의 결정을 해야 한다 무조건 통합하지 말어라 엔티티 통합을 하면 일단 뭐가 좋을까? 복잡도가 낮아지고, 유지보수의 용이함이 생긴다 여기저기 비슷한 정보가 흩어져 있어 복잡해 보이는 데이터 모델을 단순하게 유도할 수 있고, 관리해야 할 테이블의 개수가 ..
데이터 모델링에서 속성 간의 관계를 설정하면서 부모의 PK 속성이 자식의 PK 속성으로 가야하는지 일반 속성으로 가야 하는지 논리적으로 결정 하는 것은 여러 관점에서 중요하다 식별자와 비식별자 간의 관계를 잘모르고 데이터 모델리을 진행하면 다음과 같은 오류에 빠질 수 있다 식별자 관계만을 이용하여 데이터 모델링을 전개한 경우 PK 속성의 숫자가 증가 할 수록 관련된 SQL 구문이 복잡해져서 복잡성으로 인한 개발 오류를 유발하게 된다 비식별자 관계만을 이용하여 데이터 모델링을 전개 할 경우 테이블 간의 과다한 조인을 유발하여 조인에 의한 성능 저하를 일으킬 수 있다 해결 방안 데이터 모델 관계 도출 시 식별자 관계와 비식별자 관계의 의미를 정확하게 이해 업무적 특징, 조인 관계, PK 구성을 고려하여 식별..
PK 여러 개 설정 될 수 있는가 하나의 테이블에는 오직 하나의 기본 키(Primary Key, PK)만 설정될 수 있습니다. 그러나 이 기본 키는 하나 이상의 칼럼으로 구성될 수 있으며, 이러한 경우를 복합 키(Composite Key)라고 합니다. 복합 키는 여러 개의 칼럼을 하나의 단위로 묶어 고유한 식별자로 사용하는 것이며, 이 경우 각 칼럼의 조합은 레코드를 유일하게 식별할 수 있어야 합니다. 정리하면, PK는 테이블 마다 하나이며, 하나 이상의 속성으로 구성된 복합키를 PK를 지정할 수 있다 복합 키? 인덱스가 떠오르지 않는가? 대부분의 RDBMS에서는 PK를 설정하면 유니크 인덱스를 생성한다 PK하면 그래서 인덱스가 떠오르고,당연히 복합키가 PK라면 복합 인덱스가 생성 될 것이다 복합 인덱스..
WebRTC Signaling 프로세스 - 심화 Intro 내 최종 목표는 미디어 스트림을 오디오/비디오와 분리해서 그룹 call을 하는 것이 목표이다. 이전 WebRTC Signaling 프로세스 - 기초 기반으로 MDN DOCS 프로세스 흐름도를 분석하자 흐름도 원본은 너무 커서 잘라서 리뷰하겠습니다 Signaling Process Naomi가 발신자, Priya가 수신자이다. 지금부터 왼쪽은 Naomi, 오른쪽은 Priya다 발신자 : Invite() - 수신자와 통신 준비 발신자는 가장 먼저 RTCPeerConnection을 생성한다. RTCPeerConnection은 피어 간의 WebRTC 연결 인터페이스로써 연결 유지, 모니터링, 메소드 제공등을 한다. getUserMedia()로 발신자 디바..
berom
'Computer Science' 카테고리의 글 목록