본문 바로가기

[OS]스레드 동기화 기법 스레드 동기화란? 쓰레드의 실행순서를 정의하고, 이 순서에 반드시 따르도록 하는 것(실행순서의 동기화) 특정 메모리영역에 둘 이상의 쓰레드가 동시에 접근할 때에는 문제가 발생(메모리 접근에 대한 동기화) 스레드 동기화 구분 유저 모드 동기화 동기화 시 커널의 힘을 빌리지 않는 동기화로 커널모드로 전환되지 않아 성능상 이점이 있지만 동시에 기능상 제한도 있음 크리티컬 섹션 기반의 동기화 : 열쇠기반, 예시) 화장실에 들어가기 전 열쇠로 문을 열고 들어가고, 나와서는 다른 사람을 위해 화장실 앞에 열쇠를 둔다 인터락 함수 기반의 동기화: 변수 하나에 대한 동기화를 할 때 유용 커널 모드 동기화 커널에서 제공하는 동기화 기능을 활용하는 방법 뮤텍스 기반의 동기화 세마포어 기반의 동기화 크리티컬 섹션과 뮤텍스 ..
[월간 코드 챌린지 시즌2]모두 0으로 만들기, 파이썬 문제 프로그래머스 모두 0으로 만들기 문제 링크 풀이 월간 코드 챌린지 시즌2 1, 2 번은 매우 쉬웠는데 3번에서 런타임에러가 나와서 4번은 풀지도 못했다. 3번이 레벨 3이기 때문에 3번까지는 무난히 풀 수 있어야 한다. 어쨌든 3번은 트리가 주어졌을 때 리프노드부터 탐색할 수 있는지 묻는 문제이다. 주어진 트리의 모든 노드 가중치 합이 0이 아니면 -1을 리턴한다, 0이라면 무조건 답을 구할 수 있다. 트리는 어떤 노드도 루트노드가 될 수 있기 때문에 시작점을 아무거나 잡아도 상관 없지만 길이가 2이상이라 편의상 0을 루트노드로 잡았다. 풀이 1의 경우 재귀를 사용했는데 파이썬은 기본 재귀 횟수를 1000으로 제한한다고 한다. 따라서 a의 최대 길이인 300,000으로 재귀 횟수 제한을 늘려주어야 ..
[CS]로드밸런싱, LoadBalancer(L2, L4, L7) 로드밸런서란? 대용량 서비스를 운영하려면 부하 분산이 필요함(한 서버에 트래픽이 몰리는 현상 해결) 로드밸런싱이란 기본적으로 부하를 나누는 것으로 서버 앞단에서 클라이언트의 요청을 여러 대의 컴퓨터에 작업을 나누는 것을 말함 로드 밸런서는 로드 밸런싱을 하는 소프트웨어/하드웨어를 칭함 운영체제 로드밸런서(물리적 프로세서-작업 스케줄링), 네트워크 로드밸런서(백엔드에서 네트워크 작업 스케쥴링) 로드밸런싱 알고리즘 Round Robin: 분할 시스템을 위해 설계된 선점형 스케줄링. 요청이 들어올 때 마다 일정한 순서대로 요청을 넘긴다. 서버 부하에 대한 고려가 없어 상황에 따라 비효율적인 부하 분산이 발생할 수도 있다. Weighed Round Robin, Least Connection Method, Lea..
[네트워크] DMZ, 포트주소변환(PAT), 네크워크주소변환(NAT) DMZ란? DMZ란 내부네크워크와 외부 네트워크 구간 사이에 위치한 서브넷으로, 침입차단시스템 등으로 접근 제한 등을 수행하지만 외부 네트워크에서 직접 접근이 가능한 영역 외부에 서비스 제공 시 내부 자원을 보호하기 위해 내부 네트워크 구간과 외부 네트워크 구간 사이에서 접근제한을 수행하는 영역 DMZ 안에 있는 호스트들은 내부 네트워크로 연결할 수 없음 DMZ에 있는 호스트들이 외부 네트워크로 서비스를 제공하면서 DMZ를 통한 침입으로부터 내부 네트워크를 보호 보통 메일 서버, 웹 서버, DNS 서버 등 외부에서 접근되어야 할 필요가 있는 서버들을 위해 사용 외부 네트워크에서 DMZ로 가는 연결은 포트주소변환(PAT)를 통해 이루어진다. 참고 NAPT(포트주소변환) NAPT : 포트 번호도 변환함으로써..
[네트워크] 쿠키와 세션 차이(..그리고 캐시) 쿠키와 세션은 왜 필요할까? 쿠키와 세션은 HTTP 프로토콜의 특징이자 약점을 보완하기 위해 사용합니다. HTTP 프로토콜은 connectionless, stateless한 특징이 있습니다. 요청과 응답이 끝나면 연결을 끊고, 그 순간 클라이언트와 서버는 상태를 유지하지 않습니다. 따라서 리소스 낭비가 줄어드는 장점이 있지만 통신 때마다 서버는 클라이언트를 확인하기 위한 인증과정을 거쳐야합니다. 하지만 로그인을 하고 로그인 상태를 유지한 채로 웹 서비스를 제공해야 하려면 어떻게 해야 할까요? 이처럼 이전 요청과 현재 요청이 같은 사용자에 의한 것인지 알기 위해 상태저장이 필요하며 이를 위해 쿠키와 세션이 필요한 것입니다. 쿠키(Cookie)란? 그렇다면 쿠키는 무엇인가요? 쿠키는 클라이언트(브라우저) 로..
[네트워크]REST와 RESTful API REST란? "Representational State Transfer(대표적인 상태 전달)"의 약자 자원을 이름(표현)을 중심으로 해당 자원의 상태(정보)를 처리하는 모든 것을 의미 웹(www)과 같은 시스템을 위한 소프트웨어 개발 아키텍처의 한 형식 네트워크 상에서 Client와 Server 사이의 통신 방식 중 하나(HTTP Method 등) REST 구체적 예시 HTTP URI를 통해 자원(Resource)을 표현, HTTP Method를 통해 해당 자원에 대한 상태를 전달 자원(Resource): Client는 URI를 이용해서 자원을 지정하고 해당 자원의 상태(정보)에 대한 조작을 Server에 요청 행위(Verb): HTTP Method(GET(조회), POST(생성), PUT(기존 enti..
[프로그래머스] 월간 코드 챌린지 - 스타 수열, 파이썬 문제 프로그래머스 스타수열 링크 풀이 난이도 : 레벨 3 월간 코드챌린지가 뭔지는 모르겠으나 기업 코딩테스트용-스타일 문제는 아니다. 주어지는 배열 a의 최대 길이가 500,000 이기 때문에 O(N^2)으로는 시간초과가 나온다. 부분수열은 순서를 바꿀 수 없기 때문에 순서대로 a 배열을 순환하며 조건에 맞게 딕셔너리에 값을 넣어준 후 나중에 비교하였다. [0, 1, 0, 1]과 같은 순서는 문제 없으나 [0, 1, 1, 0], [1, 1, 0, 1]과 같은 자료는 문제가 될 수 있다. 따라서 위 케이스 등을 고려해서 문제에서 요구한 답을 O(N)으로 구할 수 있도록 코드를 짰다. 코드 from collections import defaultdict def solution(a): N = len(a) if..
[네트워크] CORS란? CORS(Cross Origin Resource Sharing, 교차 출처 리소스 공유)란? Ajax에는 SOP가 있어 현재 브라우져에 보여지고 있는 HTML을 내려준 웹서버에만 Ajax 요청을 보낼 수 있음 추가적인 HTTP header를 사용해서 애플리케이션이 다른 origin의 리소스에 접근할 수 있도록 하는 메커니즘(브라우저에 알려줌) 웹 서버에게 보안 cross-domain 데이터 전송을 활성화하는 cross-domain 접근 제어권을 부여 HTML5 에서 다른 도메인 간 통신이 가능하도록 추가된 기능 배경 처음 전송되는 리소스의 도메인과 다른 도메인으로부터 리소스가 요청될 경우 해당 리소스는 cross-origin HTTP로 요청 (www.abc.com 과 www.qwe.com 사이의 요청은 ..