전공공부
-
기본정렬전공공부/알고리즘&자료구조 2020. 6. 11. 13:01
선택, 버블, 삽입, 쉘, 퀵, 합병, 힙, 계수, 기수 정렬 모두 오름차순을 기준으로 정렬 1. 선택 정렬 첫번째 원소부터 마지막 원소까지 정렬을 한다고 했을때 전체 배열 중 가장 작은 원소를 찾아 첫번째 원소부터 순서대로 교환해가며 최솟값을 차례대로 넣는 정렬이라고 할 수 있다. 그래서 총 n번, 나머지 원소들 n-1, n-2, n-3, ... 개의 원소와 비교하게 되므로 시간복잡도는 O(n^2)이다. 2. 버블 정렬 거품이 수중위로 올라가는 것처럼 인덱스를 첫번째에서 마지막으로 이동하는 도중 해당 위치에서의 값이 다음 인덱스의 값보다 크면 교환하여 값이 큰 원소를 마지막으로 계속해서 밀어내는 정렬 방법이라고 할 수 있다. 즉 마지막위치에 최댓값을 쌓아가는 방식으로 정렬한다. 시간복잡도는 O(n^2)..
-
11. RAID전공공부/운영체제 2020. 5. 14. 17:02
11.1. RAID왜 사용되나 하드디스크의 장애로 인한 데이터 손실을 방지하기 위해 사용한다. 하드디스크는 사실 상 소모품으로 분류되며 I/O가 많은 서버에는 고장이 잦은 것이 당연하다고 볼 수 있다. 하지만 서버에 저장되는 데이터의 경우 손실 또는 유출 되었을 때 치명적일 수 있다 (ex 은행, 금융, 군사적 목적의 데이터를 관리하는 곳의 경우) 이로 인해 백업이 절대적으로 필요한 경우가 있고 또한, 여분의 디스크가 있어 용량을 증설하려고 할 때 데이터 손실 없이 증설이 필요한 경우가 있다. 그래서 많은 서버 관리자는 RAID 구성을 통해 하드디스크의 가용성을 높이거나 서버 데이터의 안정성을 확보한다. 11.2. RAID란? RAID는 Redundant Array of Inexpensive Disks의..
-
오목 AI 제작 - MIN_MAX 전략을 통한 필승 수 구현전공공부/알고리즘&자료구조 2020. 4. 26. 14:09
탐색을 적용시킨 오목 AI를 구현해보고 싶어서 3일동안 AI 제작을 진행하게 됐습니다. 먼저 19*19 바둑판 맵을 다 탐색을 하여 돌의 연결상태를 확인한 후 각 돌의 연결 상황마다 가중치를 부여했습니다. 그 후 Search 함수를 통해 탐색 과정에서 AI끼리 각자 가지치기 방식으로 최적의 수를 두어나갑니다. 탐색 중 상대방이 이기는 경우가 발생 하면 return 하여 가지가 갈라지는 분기점으로 돌아가 재 탐색을 시작합니다. 그렇게 탐색하는 도중 자신의 AI가 이기는 상황이 발생하면 맨 처음 좌표값을 저장한 후 그 이후부터는 모든 상황에 대해 return하여 탐색을 종료시켜 제작하였습니다. 최대 깊이 탐색은 현재 시점으로부터 30수까지 설정해 놓았습니다. 그 이유는 웬만하면 승부가 나는 시점까지 도달하고..
-
7. 마이크로 프로그램된 제어전공공부/컴퓨터시스템구조 2020. 3. 28. 14:17
목차 1. 제어 메모리 2. 주소 시퀀싱 3. 마이크로 프로그램의 예 4. 제어 장치의 설계 7.1 제어 메모리 데이터 처리 동작을 수행하는 부분인 중앙 처리 장치인 CPU는 산술논리 연산장치라는 (ALU), 제어 장치 (CU), 레지스터로 구성되어 있다. 레지스터 집합은 명령어를 실행하는 데 필요한 중간 데이터를 보관하고, 산술 논리 장치 (ALU)는 명령어를 실행하기 위한 마이크로 연산을 수행한다. 그리고 제어 장치는 레지스터 사이의 정보 전송을 감시하거나 ALU에서 수행할 동작을 지시한다. 이 장에서는 어떤 데이터를 어떤 연산을 수행하고 어떤 레지스터에 저장할지 제어를 하는 제어장치(Control unit)에 대해 다룬다고 할 수 있다. 이 제어장치는 Hard-wired 된 방법과 micro pro..
-
6. 기본 컴퓨터 프로그래밍전공공부/컴퓨터시스템구조 2020. 3. 26. 14:43
목차 1. 개요 2. 기계어 3, 어셈블리 언어 4. 어셈블러 5. 프로그램 루프 6. 산술 및 논리 연산의 프로그래밍 7. 서브루틴 8. 입출력 프로그래밍 6.1 개요 전체 컴퓨터 시스템은 하드웨어와 소프트웨어로 구성되는데 하드웨어란 컴퓨터 실체 요소들과 관련된 장치들을 의미하고, 소프트웨어는 컴퓨터를 위해 쓰여진 프로그램들을 말한다. 프로그램을 작성하는 일은 일련의 기계 명령어를 직접 간접적으로 기술하는 것인데, 컴퓨터 내부의 기게어는 이진 형태로 되어 있으므로 이해하기가 힘들기 때문에 영자숫자 형태의 기호로 프로그램을 작성하는 것이 더욱 편리하다. 따라서 사용자 위주로 쓰여진 기호 프로그램을 하드웨어가 인지할 수 있는 이진 프로그램으로 옮길 필요가 있다. 이 장에서는 기본 프로그래밍 개념과 명령의 ..
-
5. 기본 컴퓨터의 구조와 설계전공공부/컴퓨터시스템구조 2020. 3. 25. 20:59
목차 1. 명령어 코드 2. 컴퓨터 레지스터 3. 컴퓨터 명령어 4. 타이밍과 제어 5. 명령어 사이클 6. 메모리 참조 명령어 7. 입출력과 인터럽트 8. 컴퓨터에 대한 완전한 기술 9. 기본 컴퓨터의 설계 10. 누산기 논리의 설계 5.1 명령어 코드 이 장에서는 레지스터 전송문으로 나타내어지는 기본 컴퓨터의 각 연산이 어떻게 동작하는지를 설명한다. 컴퓨터의 구조는 내부 레지스터, 타이밍과 제어구조, 명령어 집합에 의해서 정의된다. 디지털 시스템의 내부 조직은 레지스터 안에 저장된 데이터를 가지고 수행되는 마이크로 연산의 시퀀스에 의해서 정의된다. 디지털 컴퓨터는 범용(general purpose) 시스템으로서 다양한 마이크로 연산을 실행할 수 있으며 수행할 연산의 특수한 시퀀스를 명령할 수도 있다...
-
4. 레지스터 전송과 마이크로 연산전공공부/컴퓨터시스템구조 2020. 3. 25. 12:50
목차 1. 레지스터 전송 언어 2. 레지스터 전송 3. 버스와 메모리 전송 4. 산술 마이크로 연산 5. 논리 마이크로 연산 6. 시프트 마이크로 연산 7. 산술 논리 시프트 장치 4.1 레지스터 전송 언어 레지스터에 저장된 데이터를 가지고 실행되는 동작을 마이크로 연산(micro-operation)이라고 하며, 이것은 하나의 클럭 펄스 동안에 실행되는 기본적인 동작으로서 예를들어 시프트(shift), 카운트(count), 클리어(clear), 로드(load)등이 있다. 디지털 컴퓨터의 구조를 정의하기 위하여 1. 레지스터의 종류와 그 기능 2. 레지스터에 저장된 이진 정보를 가지고 수행되는 일련의 마이크로 연산들 3. 일련의 마이크로 연산을 시작시키는 제어 기능 등을 규정해야 하는데 레지스터간의 마이크..
-
3. 데이터의 표현전공공부/컴퓨터시스템구조 2020. 3. 23. 20:47
목차 1. 데이터의 종류 2. 보수 3. 고정 소숫점 표현 4. 부동 소숫점 표현 5. 기타 이진코드 6. 에러 검출코드 3.1 데이터의 종류 이 장에서는 가장 많이 쓰이는 데이터의 종류를 나열하고 여러 종류의 데이터가 컴퓨터 레지스터에 쓰이기 위하여 이진 코드로 어떻게 표시되는가를 알려준다. 데이터를 분류하면 다음과 같다. 1. 산술 연산에 쓰이는 숫자 2. 데이터 처리에 쓰이는 영문자 3. 특수 목적에 쓰이는 기호 이들 데이터들은 이진수의 형태로서 컴퓨터 레지스터에 들어가야 한다. 이진법은 디지털 컴퓨터에서 사용하기에 가장 자연스러운 진법이다. 그러나 때로는 다른 진법을 사용하는 것이 편리할 때가 있다. 즉 경우에 따라서는 사람이 산술 연산할 때 사용하는 십진수의 진법이 편리할 때도 있다. 8진수, ..