List # element들의 순서가 있음 # element 생성, 삭제, 수정 가능 # element가 없는 비어있는 list 표현 가능 # array와 가장 흡사 a = [] a = list() b = [1, 2, 3] c = [1, 2, ['Hello', 'world']] Tuple # element들의 순서가 있음 # element 생성, 삭제, 수정 불가능 a = (1, 2, 3) b = 3, 4, 5 c = ('a', 'b', ('ab', 'cd')) Dictionary # element들의 순서가 있음 # element 생성, 삭제, 수정 불가능 a = (1, 2, 3) b = 3, 4, 5 c = ('a', 'b', ('ab', 'cd')) Set # element들의 순서가 없음 # 중복..
Range # range(최종값) a = list(range(5)) # 0에서 4까지 연속된 숫자를 리스트 a에 저장한다. # 0, 1, 2, 3, 4 # range(초기값, 최종값) a = list(range(4,9)) # 4에서 8까지 연속된 숫자를 리스트 a에 저장한다. # 4, 5, 6, 7, 8 # range(초기값, 최종값, 증가값) a = list(range(1, 15, 3)) # 1에서 14까지 3씩 증가하는 숫자들을 리스트 a에 저장한다. # 1, 4, 7, 10, 13 a = list(range(9, 4, -1)) # 9에서 5까지 -1씩 감소하는 숫자들을 리스트 a에 저장한다. # 9, 8, 7, 6, 5 Slice a = ['a', 'b', 'c', 'd', 'e'] # [이상:미만..
페이지 교체 기법 페이지 부재(Page Fault): 주기억장치에 참조하려는 페이지가 없는 경우 페이지 폴트 발생 시 주기억장치 내에 어떤 페이지와 교체할 것인지 결정 필요함 최적 교체 (OPTimal Replacement): 가장 오랫동안 참조되지 않을 페이지 교체 FIFO (First In First Out): 메모리에 가장 먼저 올라온 페이지 먼저 교체 LRU (Least Recently Used): 참조된 지 가장 오래된 페이지 교체 LFU (Least Frequently Used): 사용 빈도가 가장 적은 페이지 교체 SCR (Second Chance Replacement): 참조 bit를 두어 프로세스가 참조한 페이지를 1로 세팅 NUR (Not Used Recently) : 두 개의 하드웨어..
가상기억장치 (Virtual Memory) : 주기억장치의 용량이 부족해 보조기억장치의 일부를 주기억장치처럼 사용함 프로그램을 작은 블록 단위로 나누어 가상(보조)기억장치에 보관 후, 프로그램 실행 시 요구되는 블록만 주기억장치에 불연속적으로 할당함 연속 할당 방식에서 발생하는 단편화 해결 기억장치의 활용도, 다중 프로그래밍 효율을 높임 단편화 (Fragmentation) 고정(정적) 분할 기억장치는 주기억장치 사용자 영역을 여러 개의 고정된 크기로 분할하여 관리함 내부 단편화 (Internal Fragmentation) 하나의 분할 영역에 작업을 할당하고 남은 공간 ex) 100MB 메모리에 70MB의 프로세스를 로드하면 20MB의 내부 단편화 발생 외부 단편화(External Fragmentation..
DoS 공격 (Denial of Service Attack) : 시스템을 악의적으로 공격해 해당 시스템의 자원을 부족하게 하여 시스템을 마비시킴 DDos 공격 (Distributed DoS) : 여러 대의 공격자를 분산 배치하여 동시에 동작하게 함으로써 특정 사이트 공격 Smurfing (ICMP Flooding) : ICMP의 특성을 이용하여 대량의 데이터를 한 사이트에 집중적으로 보냄으로써 네트워크 과부하 1. 공격자는 공격 대상이 속해있는 네트워크에 브로드캐스팅으로 ICMP echo 요청(request)함 발신 주소를 공격 대상 IP로 변경함 2. 네트워크 내에 존재하는 모든 호스트에게 ICMP echo 전달 3. 모든 호스트들이 공격 대상에게 응답(response) 패킷을 보냄 4. 공격 대상은 ..
분산 데이터베이스 : 논리적으로 하나의 시스템에 속하지만 물리적으로 네트워크를 통해 연결된 컴퓨터에 분산되어있는 DB 물리적으로 분산된 DB 시스템을 사용자가 하나의 중앙 집중 DB 시스템처럼 사용 가능 분산 데이터베이스의 목표 위치 투명성 (Location Transparency) 접근하려는 DB의 실제 위치를 알 필요 없이 논리적인 명칭만으로 접근 가능 중복 투명성 (Replication Transparency) 여러 곳에 중복된 데이터가 있어도 사용자는 하나의 데이터만 존재하는 것처럼 사용 시스템은 자동으로 여러 곳의 데이터에 대한 작업 수행 병행 투명성 (Concurrency Transparency) 다수의 트랜잭션들이 동시에 수행되어도 트랜잭션의 결과는 영향을 받지 않음 장애 투명성 (Failu..
인덱스 (Index) : 데이터베이스 테이블에 대한 검색 속도를 향상시켜주는 자료구조 RDBMS에서 사용, 자주 사용하는 칼럼에 대해 인덱스 관리를 하여 별도의 저장 공간이 필요함 사용자가 생성하고 시스템에 의해 자동 관리됨 정렬된 상태이기 때문에 index range scan을 통해 full scan보다 빠르게 데이터에 접근함 해시테이블 / B트리로 주로 구현함 인덱스가 사용되는 칼럼 - 삽입, 삭제, 갱신이 적음 - 정수형 - 데이터의 중복도가 낮음 (분포도가 좋음) - 검색, join 등이 자주 발생함 - 규모가 큰 테이블 자주 삽입, 삭제, 갱신되는 필드에는 인덱스를 정의하지 않는 것이 좋음 - Insert: 새로운 데이터에 인덱스를 추가해야 함 - Delete: 삭제하는 데이터의 인덱스를 사용하..
3 way handshaking - 네트워크 연결 과정 1. 클라이언트는 서버에 연결 요청을 위해 SYN 패킷을 보냄 2. 서버는 SYN을 받고 SYN+ACK을 보냄, 연결 요청 수락 3. 클라이언트는 SYN+ACK을 받고 ACK을 보낸 후 통신 시작 4 way handshaking - 네트워크 연결 해제 과정 1. 클라이언트는 서버에게 연결을 종료한다는 FIN 패킷을 보냄 2. 서버는 FIN을 확인했다는 ACK을 클라이언트에 보냄 3. 보낼 데이터가 남아있는 경우 모두 전송 후 FIN 보냄 4. 클라이언트는 FIN을 받고 ACK을 보냄, 서버는 ACK을 받은 후 소켓을 닫음, 이후 클라이언트도 소켓을 닫음 CLOSE-WAIT 서버는 ACK을 보내고 CLOSE-WAIT 상태에서 클라이언트에게 보낼 데이터..