본문 바로가기

Computer Science17

[Data Structure] List & Tree 순차 리스트의 문제점 단순 배열로 구현하는 경우, 삽입/삭제 연산과정에서 메모리 배열을 이동시키는 경우 Node 연결 리스트에서 하나의 원소에 필요한 데이터를 갖고 있는 자료단위 Data 1. 원소의 값을 저장하는 자료구조 2. 저장할 원소의 종류나 크기에 따라 구조를 정의하여 사용 Link 1.다음노드의 주소를 저장하는 자료구조 Head 리스트의 처음 노드를 가리키는 레퍼런스 트리 자료구조 비선형 1:n관계 (부모에 여러 자식이 있을 수 있다, ex) 파일시스템) 계층관계 상->하 확장구조 이진트리 모든 노드들이 최대 2개의 서브트리를 갖는 트리 Index를 0부터 시작하면 안된다, 1부터 해야된다 2020. 8. 11.
[Data Structure] Queue Queue Queue는 interface이고, 내부는 전부 비어있다고 생각하면 된다 add 보다는 offer를 쓰는 것이 일반적이다 Queue는 collection을 상속 toArray()를 사용해서 배열로 만들 수 있다 Queue.toArray() 하지만 queue를 쓰는 이유를 생각해보면 굳이 배열로 바꿀 필요가 없다 Tip) 배열의 앞, 뒤로 원소를 넣지 못하는 문제를 deque를 사용하여 해결했다 2020. 8. 11.
[OS] 스케줄러 프로세스를 스케줄링하기 위한 Queue에는 세 가지 종류가 존재한다. Job Queue: 현재 시스템 내에 있는 모든 프로세스의 집합 Ready Queue: 현재 메모리 내에 있으면서 CPU를 잡아서 실행되기를 기다리는 프로세스의 집합 Device Queue: Deivce I/O 작업을 대기하고 있는 프로세스의 집합 각각의 Queue에 프로세스들을 넣고 빼주는 스케줄러에도 크게 세 가지 종류가 존재한다. 장기스케줄러(Long-term scheduler or job scheduler) 메모리는 한정되어 있는데 많은 프로세스들이 한꺼번에 메모리에 올라올 경우, 대용량 메모리(일반적으로 디스크)에 임시로 저장된다. 이 pool 에 저장되어 있는 프로세스 중 어떤 프로세스에 메모리를 할당하여 ready queu.. 2020. 4. 30.
[OS] 멀티 스레드(Multi Thread) 멀티 스레딩의 장점 프로세스를 이용하여 동시에 처리하던 일을 스레드로 구현할 경우 메모리 공간과 시스템 자원 소모가 줄어들게 된다. 스레드 간의 통신이 필요한 경우에도 별도의 자원을 이용하는 것이 아니라 전역 변수의 공간 또는 동적으로 할당된 공간인 Heap 영역을 이용하여 데이터를 주고받을 수 있다. 그렇기 때문에 프로세스 간 통신 방법에 비해 스레드 간의 통신 방법이 훨씬 간단하다. 심지어 스레드의 context switch는 프로세스 context switch와는 달리 캐시 메모리를 비울 필요가 없기 때문에 더 빠르다. 따라서 시스템의 throughput이 향상되고 자원 소모가 줄어들며 자연스럽게 프로그램의 응답 시간이 단축된다. 이러한 장점 때문에 여러 프로세스로 할 수 있는 작업들을 하나의 프로.. 2020. 4. 15.