Stack, Queue, List, set 등의 자료구조 사용 시 주의 사항
데이터 구조는 말 그대로, 어떻게 데이터를 효울적으로 저장(insert), 삭제(delete), 탐색(peek)할 것인지에 대한 방법론이 다. 특히 저장(insert)와 삭제(delete)가 주된 동작(Operation)이다. 그러나 저장과 삭제 구현 시 주의해야 할 사항이 있다. 저장(insert)(맨 처음 삽입, 중간 삽입, 끝 삽입마다 동작(구현)이 다를 수 있음에 주의!) ex) Queue가 있다고 하자. 그 Queue에 데이터를 저장(insert)하려고 하는데, 만약 Queue가 이미 사이즈만큼 다 찼다면??? JAVA에서는 이때 OutOfMemory라는 예외(Exception)이 발생한다. 삭제(delete)(처음 삭제, 중간 삭제, 끝 삭제마다 동작(구현)이 다를 수 있음에 주의!!) ex)..
더보기
온갖 Level에서의 Thread 총정리( 하드웨어 스레드, os 스레드, native 스레드, kernel 스레드, user 스레드, green 스레드), 자바 스레드 모델
우리가 만든 프로그램(user program)은 OS Kernel을 통해서 컴퓨터(Memory, cpu , 그 외의 devices)내에서 실행이 된다. 오늘은 이 각 Level에서 존재하는 thread에 대해 살펴 볼 것이다. Hardware Thread( hyper-threading과 비슷 ) 물리적인 core마다 하드웨어 스레드가 2개 이상일 때, 그 각각의 스레드를 hardware thread라고 불린다. -> cpu/core 입장에서는 고민이 하나 있다. 그것은 메모리로부터 데이터를 read/write할 때, 데이터를 가지고 오는 시간이 상대적으로 길어서 cpu/core가 유휴 상태에 들어 간다는 것이다. 그래서 Intel에서 최초로 hyper threading 기법으로 cpu/core가 메모리를..
더보기