분류 전체보기(39)
-
슬라이딩 윈도우 프로토콜::운영체제
슬라이딩 윈도우 프로토콜이란? 두 호스트 간 데이터 전송을 위한 일반적인 통신 프로토콜로 오류 제어와 흐름 제어를 지원하는 방식입니다. - 송신 호스트는 정보 프레임(전송 데이터, 오류 검출 코드 등)을 순서 번호에 따라 순차적으로 전송합니다. - 정보 프레임을 수신한 수신 호스트가 응답하는 순서 번호는 정상적으로 수신한 번호가 아닌 다음 수신하기를 기대하는 회신 번호를 사용합니다. - 송신 호스트는 송신한 정보 프레임을 자신의 내부 버퍼인 송신 윈도우를 유지해야 합니다. 송신 호스트가 관리하는 송신 윈도우는 전송되었지만, 긍정 응답(ACK)이 회신되지 않은 프레임을 보관합니다. - 수신 호스트는 수신한 정보 프레임을 보관하기 위한 내부 버퍼인 수신 윈도우를 유지해야 합니다. 수신 호스트가 관리하는 수신..
2020.06.30 -
프로세스(Process)와 스레드(Thread)::운영체제
1. 프로세스(Process) 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램을 의미합니다. 메모리에 올라와 실행되고 있는 프로그램의 인스턴스로 독립적인 개체입니다. 운영체제로부터 시스템 자원을 할당받는 작업의 단위입니다. 할당받는 시스템 자원 1) CPU 시간 2) 운영되기 위해 필요한 주소 공간 3) Code, Data, Stack, Heap 구조로 되어 있는 독립된 메모리 영역 특징 - 각각 독립된 메모리 영역을 할당받습니다. - 기본적으로 프로세스 당 최소 1개의 스레드(메인 스레드)를 가지고 있습니다. - 각 프로세스는 별도의 주소 공간에서 실행되며 한 프로세스는 다른 프로세스의 메모리 영역(변수, 자료구조 등)에 접근할 수 없습니다. - 한 프로세스가 다른 프로세스의 자원에 접근하려면 프로..
2020.06.30 -
[삼성SW역량테스트] 청소년 상어::알고리즘
2020 상반기 삼성전자 SW 역량테스트 문제 출처 : BOJ(https://www.acmicpc.net/problem/19236) 4 x 4 공간 안에 물고기 16마리가 존재하고, 상어가 (0, 0) 지점의 물고기부터 먹기 시작해 먹은 물고기 방향으로 나아가며 먹기를 반복하는 문제입니다. BFS로 4 x 4 공간인 map과 물고기의 정보를 단계마다 저장할 수 있도록 HashMap과 Key인 cnt를 활용해 문제를 풀었습니다. 사이클마다 계속해서 map이 변하고, 물고기의 이동 방향이 변하기 때문에 HsahMap에 저장하는 방법을 선택했습니다. 우선, 상어가 (0, 0) 자리에 들어오고, (0, 0) 자리에 있던 물고기의 번호(num)를 섭취하고, 방향(d)을 가지게 됩니다. 이후 그 방향에 있는 모든 ..
2020.06.29 -
디렉토리 트래버셜(Directory Traversal)::보안
디렉토리 트래버셜이란? 공격자가 요청 메시지의 URL이나 파라미터를 변경하여 정상적으로 허용하지 않은 기능을 실행하거나 다른 사용자의 리소스에 접근할 수 있는 공격입니다. ex) http://~.com/.../file 해당 웹 서버 내의 파일을 탐색하여 중요한 파일이 있을 경우 큰 타격을 받을 수 있습니다. 디렉토리 리스팅(Directory Listing)이란? 웹 서버에서 디렉토리로 접속할 때 해당 디렉토리 내의 파일과 리스트가 보이는 기능입니다. 원래 용도는 원하는 문서를 찾아갈 수 있도록 만들어졌지만, 최근에는 문서의 저장 및 열람이 가능하다는 취약점을 이용해 탈취 및 서버 공격이 일어나고 있습니다. ex) 파일 Upload 이후 다시 접속할 때 디렉토리 리스팅 기능 제거 Apache : "/con..
2020.06.28 -
Red-black Tree(with Java code)::자료구조
BST(Binary Search Tree)에서 높이를 log n으로 지향해 조금 더 균형 잡힌 트리로 만드는 기법입니다. - BST 조건을 만족하는 트리 구조 - 시간복잡도 O(log n) 1. Red-black Tree의 활용 자바 Collection에서 ArrayList의 내부적인 알고리즘이 RBT로 이루어져 있습니다. Map에서 HashMap의 Separate Chaining(충돌 처리 기법 중 하나, LinkedList로 Hash 충돌을 해결하는 방법)에서 사용됩니다. (Hash 충돌 기법에 대해서 더 알아보기 -> https://junboom.tistory.com/27) 2. Red-black Tree의 조건 - 모든 root 노드와 leaf 노드는 black의 색을 가집니다. - red의 색을..
2020.06.27 -
교착상태(Deadlock)::운영체제
교착상태(Deadlock)란? 첫 번째 스레드는 두 번째 스레드가 들고 있는 객체의 lock이 풀리기를 기다리고 있고, 두 번째 스레드 역시 첫 번째 스레드가 들고 있는 객체의 lock이 풀리기를 기다리는 상황을 말합니다. 두 스레드가 서로 lock이 풀리기를 기다리고 있기 때문에 무한 대기 상태에 빠지게 됩니다. 이러한 상황을 스레드가 교착상태에 빠졌다고 합니다. 교착상태의 4가지 조건 1) 상호 배제(Mutual Exclusion, Mutex) 공유 자원에 대한 접근 권한이 제한되기 때문에 한 번에 한 프로세스만 공유 자원을 사용할 수 있습니다. 2) 점유 대기(Hold and wait) 공유 자원에 대한 접근 권한을 갖고 있는 프로세스가 그 접근 권한을 양보하지 않은 상태에서 다른 자원에 대한 접근..
2020.06.26