This document provides an overview of the CS4109 Computer System Architecture course taught by Prof. K.Sridhar Patnaik at BIT Mesra, Ranchi. The course objectives are to learn how computers work, analyze performance, and understand computer design and modern processor issues. The knowledge is useful for tasks like designing computers, improving software performance, and providing embedded solutions. Key topics covered include performance, instruction set architecture, arithmetic logic units, processor construction, pipelining, memory systems, and input/output. The document also discusses computer organization versus architecture, Turing machines as a model of computation, and the Church-Turing thesis.
[소스 코드]
https://github.com/kyuuuunmi/DataStructure_TREE
[설명]
대학생 연합 IT 벤처 창업 동아리 S.O.P.T (Shout Our Passion Together - http://sopt.org) 에서 내부적으로 진행하는 전공 과목 기초 스터디 자료입니다.
이번주에 다룬 내용은 이진 트리 및 우선순위 큐에 대한 내용입니다.
스터디 자료는 다음과 같은 순서대로 올라갈 예정입니다.
1. 데이터 구조 및 알고리즘
2. 운영체제
3. 네트워크
This document provides an overview of the CS4109 Computer System Architecture course taught by Prof. K.Sridhar Patnaik at BIT Mesra, Ranchi. The course objectives are to learn how computers work, analyze performance, and understand computer design and modern processor issues. The knowledge is useful for tasks like designing computers, improving software performance, and providing embedded solutions. Key topics covered include performance, instruction set architecture, arithmetic logic units, processor construction, pipelining, memory systems, and input/output. The document also discusses computer organization versus architecture, Turing machines as a model of computation, and the Church-Turing thesis.
[소스 코드]
https://github.com/kyuuuunmi/DataStructure_TREE
[설명]
대학생 연합 IT 벤처 창업 동아리 S.O.P.T (Shout Our Passion Together - http://sopt.org) 에서 내부적으로 진행하는 전공 과목 기초 스터디 자료입니다.
이번주에 다룬 내용은 이진 트리 및 우선순위 큐에 대한 내용입니다.
스터디 자료는 다음과 같은 순서대로 올라갈 예정입니다.
1. 데이터 구조 및 알고리즘
2. 운영체제
3. 네트워크
4. 1.2 FAT file System
부트 레코드
파일 할당 테이블
루트 디렉터리
…
클러스터1
클러스터2
클러스터3
클러스터n
시스템 영역 데이터 영역
5. 1.3 UNIX(Linux) file System
부트
블럭
수퍼
블럭
… …
inode list 데이터 블럭
부트 블록: 운영체제를 주기억장치로 올리는 역할을 하는 프로그램이
들어있는 영역, 윈도우의 부트레코드와 유사
슈퍼블럭: 디스크에 대한 다양한 정보를 저장하고 있는 곳으로, 전체 블록의
수, 블록의 크기, 사용 중인 블록의 수, 사용할 수 있는 블록의 번호,
Inode 리스트의 크기, 사용할 수 있는 inode의 번호 등의 정보를 저장한다
Inode 리스트: inode들을 모아놓은 곳, 한 블록에 여러 개의 inode를 저장하고
있다
데이터 블록: 일반적인 파일과 디렉토리 그리고 간접 블록을 저장하는 영역
6. 1.4 Unix file system
inode(Index Node) 파일에 대한 다양한 정보를 저장하는 곳으로 파일마다
하나씩 부여 된다
파일형식
접근 권한
파일 소유자
파일 크기
변경 시간
접근 시간
:
파일 위치
:
10개의 직접 블록 포인터
단일 간접 블록 포인터
이중 간접 블록 포인터
삼중 간접 블록 포인터
7. 2.1 DATA Structure
데이터 구조(data structure)란 program에 의해 쉽게 이용되도록 구성된
데이터들간의 논리적인 관계
자료구조(資料構造, data structure)는 전산학에서 자료를 효율적으로 이용할 수
있도록 컴퓨터에 저장하는 방법이다. 신중히 선택한 자료구조는 보다
효율적인 알고리즘을 사용할 수 있게 한다. 이러한 자료구조의 선택문제는
대개 추상적 자료구조의 선택으로부터 시작하는 경우가 많다. 효과적으로 설계된
자료구조는 실행시간 혹은 메모리 용량과 같은 자원을 최소한으로 사용하면서
연산을 수행하도록 해준다
배열: Array
연결 리스트: Linked List
스택: Stack
큐: Queue
트리: Tree
등이 대표적인 자료 구조이다.
8. 2.2 배열 Array
Array: 같은 Type의 데이터형의 요소들이 동일한 크기로 순서를 갖고 나열되어
있는 집합
C언어의 경우 크기가 n인 arr의 첫번째 요소는 arr[0] … arr[n-1]
이때 arr을 배열이름, [ ]에 들어가는 숫자 또는 변수를 첨자 라고 한다.
다차원 배열
Arr[n][m] 과 같이 표현하고 n 차원까지 확장 가능하다
9. 2.2 선형 리스트 : Linear List
순서에 의해 나열된 데이터가 여러 개인 구조
- 일요일, 월요일, 화요일, 수요일, 목요일, 금요일, 토요일
- 빨강, 주황, 노랑, 초록, 파랑, 남색, 보라
연속리스트와 연결리스트가 있음
연속리스트(contiguous list)는 배열을 이용
연결 리스트(Linked list)는 포인터를 이용
연속리스트 – 삽입과 삭제: 각 데이터를 옮기는 작업이 필요
연결 리스트 – 노드라는 개념을 활용
데이터 영역
포인터 영역
해드 포인터: Head Pointer가 존재하며, 끝에는 NULL로 표현
10. 2.3 Linked List
Singly Linked List : 마지막 노드는 NULL
Circular Linked List : 마지막 노드는 다시 첫번째 노드
Doubly Linked List : 이전 노드 접근을 허용하기 위해 각 포인터는 양쪽을 가르킴
Doubly circular Linked List: 이중 연결 리스트에서 맨 마지막 노드가 맨 처음
노드를 가르키는 구조
11. 2.4 Stack
Stack을 배열로 구현할 수 있고, Linked List로 구현할 수 있다
이때 Stack Pointer 역할로 별도 변수를 배정한다 (TOP 등)
Linked List 구현 Stack은 Main Memory 용량이 허용하는 한 데이터를
삽입 할 수 있다는 장점이 있다.
12. 2.5 Queue
Queue: FIFO – Fist In First Out
배열, Linked List로 구현 가능
배열일 경우 2개의 변수로 구현 (Front, Rear)
13. 2.6 Tree (data sturcture)
Tree: 계층 구조를 표현하기에 적합
Link – 노드와 노드를 연결하는 선
Leaf node / Terminal node : 마지막에 위치한 노드 node
14. 2.7 Tree (data sturcture)
Binary Tree : 모든 노드들의 자식 노드가 두 개 이하인 트리
- Complete Binary tree
- Full binary Tree
순회: Traversal – 이진 노드의 모든 트리를 순서대로 한번씩 방문하는 것
- Preorder [노드방문 – 왼쪽 서브 트리 방문 – 오른쪽 서브 트리 방문]
- inorder[왼쪽 서브 트리 방문 – 노드방문 - 오른쪽 서브 트리 방문]
- postorder[왼쪽 서브 트리 방문 – 오른쪽 서브 트리 방문 - 노드방문]
이진탐색트리: Binary Search Tree
- 같은 데이터를 갖는 노드는 없어야 한다
- 왼쪽 서브트리에 있는 모든 데이터는 현재 노드의 데이터보다 작고
오른쪽 서브 트리에 있는 모든 데이터는 현재 노드의 데이터 보다
크다
- 왼쪽 서브트리 < 노드 < 오른쪽 서브트리
15. 3. Further Study
자료구조 구현
http://robodream.tistory.com/192
1의 보수 2의 보수
http://sk3010.tistory.com/entry/%EB%94%94%EC%A7%80%ED%84%B8-%EC%
16. Q&A
For further details, please contact us by e-mail
황태욱 : taewook.hwang@gmail.com
010.9576.5105
Kakao: Aldemaya