폴링과 인터럽트
·
Computer Science/Operating System
폴링특정 주기마다 스레드를 돌면서 시그널이 들어왔는지 확인하는 방식이다. (소프트웨어적으로 시그널을 확인하는 것) 이렇게 특정 주기마다 계속 확인해야 하기 때문에 시스템의 리소스를 많이 먹는다는 단점이 있다. 인터럽트프로그램 실행 도중에 예기치 않은 상황이 발생할 경우 현재 실행 중인 작업을 즉시 중단하고, 발생된 상황에 대한 우선 처리가 필요함을 CPU에게 알리는 것 (하드웨어적으로 시그널을 확인하는 것) 시그널이 들어온 정확한 타이밍을 알 수 있고, 반응 시간이 빠르며 시스템 부하가 적다.  인터럽트 처리 과정프로그램 실행 -> 인터럽트 요청 -> 프로그램 중단(수행중인 명령을 완료하고 PC, SR 저장) -> ISR 처리(인터럽트 벡터를 통하여 주소 접근) -> 프로그램 재시작(PC를 통해 접근) ..
시스템 콜
·
Computer Science/Operating System
시스템 콜이 무엇인가?시스템 콜은 응용 프로그램이 직접적으로접근하지 못하는 하드웨어 자원에 접근하기 위해 사용되는 인터페이스이다. 즉, 시스템 콜을 호출함으로서 해당 자원에 간접적으로 접근하게 된다.    우리가 사용하는 시스템 콜 예시와 동작 과정python의 import sys, time도 시스템 콜이고, 대표적으로 file I/O의 open, read, write 등이 있다. 한 파일에서 다른 파일로 데이터를 복사하는 프로그램을 예로 들어서 시스템 콜이 동작하는 과정을 살펴 본다.  시스템 콜 예시1. 아래 명령어와 같이, 복사할 input 파일과 output 파일의 이름을 작성한다.$ cp input.txt output.txt 2. 프로그램은 input 파일을 open(system call)하고,..
CORS(Cross-Origin Resource Sharing)
·
Computer Science/Network
CORS란Cross-Origin Resource Sharing으로 교차 출처 리소스 공유라는 뜻이다. 다른 출처에서 리소스를 요청할 때 지켜야하는 정책이다. 여기서 출처(Origin)은 protocol, host, port까지 의미한다.  CORS HTTP 요청 방식단순 요청을 보내는 것(Simple Request)예비 요청을 보내서 확인 후 보내는 것(Preflight)인증된 요청을 사용하는 방식(Credential Request) Simple Request예비요청없이 서버에 바로 요청을 보내는 방법이다. 서버에 바로 본요청을 보낸 뒤, 서버는 헤더에 ACCESS-CONTROL-ALLOW-ORIGIN 값 등을 붙혀서 보내주면 브라우저가 CORS 정책 위반 여부를 검사한다.조건GET, POST, HEAD..
Next Permutation
·
Computer Science/Algorithms
Next Permutation ? 다음 순열이란, 말 그래도 해당 숫자의 다음에 올 순열의 수를 의미한다. 123 -> 132, 132 -> 213, 213 -> 231 ... 와 같다. 그렇다면 우리는 123의 다음 순열인 132를 구하는 과정을 살펴보겠다. 1. 해당 수의 맨 오른쪽부터 왼쪽으로 차례대로 $ i $ > $  i -1 $  이고, $ A_{i} $ > $ A_{i-1} $인 수를 찾는다.$ ( $$ i $는 인덱스 번호, $ A_{i} $는 해당 자리의 값$ ) $  2. 두 수 분리하기. 찾은 두 수를 막대를 하나 긋고, 임의로 왼쪽, 오른쪽으로 분리시킨다. 3. 왼쪽 공간의 가장 오른쪽 숫자에 대하여 오른쪽 공간의 우측 끝 부분 부터 왼쪽으로 탐색하면서, 더 큰 수를 찾는다.  4...
TCP 3, 4 way handshake
·
Computer Science/Network
TCP와 UDP가 무엇인지(https://kimdozzi.tistory.com/271), 3, 4 way handshake(https://kimdozzi.tistory.com/270)가 왜 필요한 것인지 잘 모르다면, 해당 링크들을 읽고 오길 바란다. 이전에는 이론을 통해 SYN, ACK를 주고 받는 과정을 확인하였다면, 이번에는 실습을 통해 확인해보겠다. 인터넷 연결이 가능한 환경, 와이어샤크만 있으면 된다. 아래 링크에서 다운 받고 오자. 와이어샤크를 설치하다 보면, Npcap이라는 것도 같이 다운을 권장하는 창이 뜨게 되는데, 필요한 것인 같이 다운받아 주자. 와이어샤크를 실행하게 되면 지금 쓰고 있는 인터넷 수단을 찾아서 클릭해줘야 한다. 아마 Npcap이 없으면 이 부분이 실행이 안될 것이다....
TCP와 UDP 차이
·
Computer Science/Network
TCP - 전송 제어 프로토콜IP가 인터넷 프로토콜로서 복잡한 인터넷 망 속에서 클라이언트와 서버 간에 통신할 수 있게 IP 주소와 패킷과 같은 규칙을 통해 통신을 하게 하는 것이라면, TCP는 IP규칙으로만 통신하기에 부족하거나 불안정하던 여러 단점들(패킷 순서가 이상하거나 패킷이 유실)을 커버해, 패킷 전송을 제어하여 신뢰성을 보증하는 프로토콜로 보면 된다.IP 규칙에 써있는대로 목적지에 다다랐으면, TCP 규칙에 써있는대로 올바르게 도착했는지 정확히 누구에게 전달되야하는지 하나하나 따진다고 생각하면 된다. 그래서 은행 업무나 메일과 같은 반드시 수신자가 정보를 받아야 하는 신뢰성 있는 통신이 필요할 때 사용된다.전송 데이터가 포장되는 과정을 나열해보면 다음과 같다.전송 데이터를 TCP 포장한다.포장..
브라우저에 www.google.com을 일어나는 일
·
Computer Science/Network
1. 브라우저에 www.google.com 입력2. 캐시 체크먼저 브라우저 캐시가 있는데 기존에 google.com을 방문했다면, 방문한 기록이 남아 있어서 빠르게 접근할 수 있습니다.google.com에 방문한 적이 없다면, OS캐시를 찾아보게 됩니다. 말 그래도 운영체제 안에 있는 캐시로 systemcall을 통해 그 내용에 접근할 수 있습니다.세번째는 라우터 캐시를 확인합니다. 라우터는 집에서 사용하는 공유기를 생각하면 됩니다. 거기서도 DNS내용을 저장합니다.마지막으로 한국에서 인터넷을 제공하는 ISP(Internet Service Provider) 캐시입니다.  3. 요청한 URL이 캐시에 없으면 DNS로 IP주소 획득ISP 캐시에서까지 그 IP주소를 찾을 수 없었다면, 이제 ISP의 DNS S..
1, 2차원에서 구간 합 구하기 - 1
·
Computer Science/Algorithms
이 글은 https://movingbean.tistory.com/17 의 블로그에서 작성된 내용을 바탕으로 정리 + @한 글입니다. 누적 합에 대한 내용이 너무 잘 정리되어 있습니다!!!!!! 꼭 보시길 바랍니다. 1차원 공간 vs 2차원 공간점 업데이트 vs 구간 업데이트 점 쿼리 vs 구간 쿼리 (특정 위치에 대한 개수만을 묻는가? vs 어떤 구간의 총합을 묻는가?)오프라인 쿼리 vs 온라인 쿼리 (질문을 업데이트가 모두 끝나고 하는가? vs 업데이트 도중에 질문을 하는가?1. 1차원 공간, 점 업데이트, 오프라인 쿼리점 업데이트라는 것은 초기 값만 세팅하는 경우도 점 오프라인으로 볼 수 있다고 한다. 가장 기본적으로 누적 합(PrefixSum)을 구하는 것을 떠올릴 수 있다.  시간 복잡도는 누적 ..
[MYSQL] dbeaver 연결 시 Public Key Retrieval is not allowed 에러 해결하기
·
Computer Science/DataBase
발생한 상황Local 환경으로 Mysql 설치 후, DBeaver에 Test Connection을 시도했다. 'Public key Retrieval is not allowed' 라는 문구와 함께 연결에 실패했다. 찾아보니, MySQL 8.0 이상부터 생길 수 있는 문제라고 한다. (Mysql은 쓸 때 마다 에러가 생김.....)  해결하기 위한 방법으로 Driver properties 설정을 변경하자.  https://velog.io/@dailylifecoding/DBeaver-MySQL-connecting-error-Public-Key-Retrieval-is-not-allowed-solved
[Network] foward & reverse proxy server
·
Computer Science/Network
프록시 서버란 ?프록시, 웹 프록시라고도 하는 정방향 포록시는 클라이언트 시스템 그룹 앞에 위치하는 서버이다. 컴퓨터가 인터넷의 사이트 및 서비스에 요청하면 프록시 서버가 이러한 요청을 가로채고 중개자처럼 해당 클라이언트를 대신하여 웹 서버와 통신한다.ex)A : 사용자의 가정용 컴퓨터B : 정방향 프록시 서버C : 웹 사이트의 원본 서버(웹 사이트 데이터가 저장되는 곳) 표준 인터넷 통신에서는, 컴퓨터 A가 컴퓨터 C에 직접 연결하고 클라이언트는 원본 서버에 요청을 보내며 원본 서버가 클라이언트에 응답한다. 정방향 프록시가 설정되면 A가 대신 B에 요청을 보내고 B가 요청을 C로 전달한다. 그런 다음 C가 B에게 응답을 보내고 B가 응답을 A에게 다시 전달한다. 그렇다면, 정방향 프록시를 사용하는 이유..
그래프 표현 방법 간단한 정리
·
Computer Science/Algorithms
그래프(Graph)정점과 간선의 집합으로 구성되는 자료구조  방향 그래프간선에 방향이 있는 그래프A정점에서 B정점으로 향하는 간선과 B정점에서 A정점으로 향하는 간선이 서로 다를 수있다.무방향 그래프간선에 방향이 없는 그래프A-B를 연결하는 간선이 동일한 간선이다.가중치 그래프간선에 가중치(weight) 혹은 비용(cost)이 할당된 그래프연결된 정점들 간 탐색에 드는 비용이나, 연결 강도 등을 표현  그래프 표현 방법인접 행렬일반적으로 2차원 배열을 이용해서 표현adj[행][열] = 연결여부(or 가중치)공간 복잡도V개의 정점이 있다면, V*V 만큼의 공간을 사용한다.시간 복잡도연결관계(가중치) 조회/저장 : O(1)한 정점에 연결된 모든 간선 조회 : O(V)A와 B를 잇는 간선 존재 여부 확인 : ..
Monotonic Stack
·
Computer Science/Algorithms
모노토닉 스택 (Monotonic Stack) 원소가 Increasing / Decreasing으로 정렬되어 있는 배열을 의미한다. 정렬되어 있지 않은 배열을 Monotonic 하게 만들거나 Monotonic Stack에 새로운 원소가 입력되었을 때, 정렬하는 과정에서 발생하는 정보들이 유용하다. 추천 문제 [백준] 옥상 정원 꾸미기 : https://www.acmicpc.net/problem/6198 [백준] 오큰수 : https://www.acmicpc.net/problem/17298 17298번: 오큰수 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다. www.acm..