본문 바로가기

Computer Science62

[자료구조] ep1+) 비트행렬로 배우는 시간복잡도의 중요성 그림과 같은 비트행렬 A가 있다고 하자, 1을 카운트하는 방법에는 다양한 방법들이 존재한다여기서 나는 2가지 방법을 얘기하려 한다 1. 가장 일반적인 방법으로 이중포문을 이용해 각 행마다 0이 나올 때까지 카운트를 하는 방법: O(n^2) 2. 제일 하단 좌측에서 시작해 우측 상단을 향해 지그재그 방식으로 올라오며 카운트를 하는 방법: O(n) 1번 방식은 시간복잡도가 O(n^2)이므로 n값이 커질수록 실행 시간은 제곱수로 증폭하게 된다반면에, 2번 방식은 시간복잡도가 O(n)이므로 n값이 커질 수록 실행 시간은 그저 선형적으로 증가하게 된다따라서 우리는 실행 시간의 측면에서 2번 방식이 압도적으로 더 좋은 것을 알 수가 있다그렇기에 우리는 상황에 맞는 자료구조와 알고리즘을 설계할 수 있는 능력을 길러야.. 2024. 4. 7.
[자료구조] ep1) 자료구조 기본 지식들 ㅇ다차원 배열- 3차원 배열 - 4차원 배열   ㅇ빅오(Big O) 표기법: 연산의 횟수를 대략적(점근적)으로 표기"최악의 case 실행시간을 고려한다" [예시](1) 7n-2: O(n)(2) 3n^3 + 20n^2 + 5: O(n^3)(3) 3log(n) + log(log(n)): O(log(n))(4-1) n까지의 반복문: O(n)(4-2) n까지의 이중반복문: O(n^2)(4-3) n까지의 삼중반복문: O(n^3)(5) 조건문에서의 실행시간은 최악의 case로 합산한다+ O(log*n)은 중첩 log(n)을 의미   함수 증가율의 상한을 표시!※ 빅오메가, 빅세타 표기법과 공간복잡도는 생략   ㅇ의사코드 or 수도코드(pseudo-code): 컴퓨터가 아닌 인간에게 읽히기 위해 알고리즘을 간략하게 .. 2024. 4. 7.
[컴퓨터 구조] 후기 컴퓨터 구조에 대한 복습 및 정리를 끝마치게 되었다회사 프리랜서일과 병행하느라 조금 디뎠지만, 그래도 이전에 한 번 깊숙이 배웠던 내용인지라 빠르게 진행할 수가 있었다세종대 전자정보통신공학과에는 스파르타라는 별명을 가지신  SoC 권위자 이성주교수님이 계신다 (지금은 반도체시스템공학과에 가신 걸로 알고 있습니다) 그 교수님의 컴퓨터구조론 강의평을 보면 컴퓨터 구조에 대해 아주 깊고 빠삭하게 배울 수 있지만 체감상 6~9학점에 스파르타식으로 너무 너무 힘들다는 강의평들이 여럿 적혀있다솔직히 보고 좀 겁이 났지만 컴퓨터 구조가 CS에 있어서 근간이 되는 중요한 과목이라 생각하여 수강신청 때 1순위로 신청을 하였다 솔직히 이제 와서 생각해 보면 수강하는 동안에는 많이 힘들었다 컴퓨터시스템구조론(William .. 2024. 3. 5.
[운영체제] ep1) 운영체제의 큰 그림 운영체제(Operating System): 실행할 프로그램에 자원을 할당하고, 프로그램이 올바르게 실행되도록 돕는 특별한 프로그램(컴퓨터에서 가장 중요한 프로그램이다)여기서 자원이란 시스템 자원으로써 프로그램 실행에 마땅히 필요한 요소들을 말한다 e.g. CPU, 메모리, 보조기억장치, I/O, 패킷, 파일 등 운영체제를 잘 알려면 커널의 개념을 확실하게 알고 가야 한다ㅇ커널(kernel): 운영체제의 핵심 서비스를 담당하는 부분메모리에는 커널 영역과 사용자 영역으로 나뉘어져 있으며, OS는 커널 영역에 적재되어 자원 할당과 프로그램 실행에 도움을 준다 앞으로 운영체제를 지칭할 때는 특별한 언급이 없는 이상 커널을 지칭한다고 생각하면 된다    대부분의 운영체제 서비스는 커널에 있지만 커널에 포함되지 않.. 2024. 3. 3.
[컴퓨터 구조] 추가지식2) SMP, 클러스터, NUMA, 클라우드 컴퓨팅 [병렬 프로세서 시스템의 유형]- 단일 명령어 + 단일 데이터 스트림: SISD(Single Instruction Single Data) - 단일 프로세서- 단일 명령어 + 다중 데이터 스트림: SIMD(Single Instruction Multiple Data) - 벡터, 배열 프로세서- 다중 명령어 + 단일 데이터 스트림: MISD(Multiple Instruction Single Data) - 거의 사용 x- 다중 명령어 + 다중 데이터 스트림: MIMD(Multiple Instruction Multiple Data) - 메모리 공유: SMP, NUMA 시스템 / 분산된 메모리: 클러스터  ※ thread: segment of processtask: Linux에서 칭하는 process 또는 thre.. 2024. 3. 2.
[컴퓨터 구조] 추가지식1) ROM, 바이오스, 펌웨어, QPI, SPEC, 임베디드 ROM에 대해 더 자세히 알아보자ROM → PROM → EPROM → EEPROMROM(Read Only Memory): 변경할 수 없는 데이터를 저장하는 데 사용 e.g. 바이오스PROM(Programmable ROM): 쓰기 기능 제공 ROM (한 번만 쓸 수 있다)EPROM(Erasable PROM): 삭제 가능한 PROMEEPROM(Electrically EPROM): 전기적으로 삭제 가능한 EPROM (더 매력적이다)  보통 ROM에는 바이오스(BIOS)가 있다ㅇ바이오스(Basic Input/Output System): 소프트웨어와 하드웨어 간의 정보 전달의 매개체 역할을 하는 펌웨어  메모리, 디스크, 모니터와 같은 주변기기 사이의 정보 전송을 관장하는 일종의 프로그램이다 컴퓨터의 가장 low.. 2024. 3. 2.
[컴퓨터 구조] ep8) 입출력장치(I/O) 이번 절에서는 장치 컨트롤러와 장치 드라이버라는 개념을 통해 다양한 외부 입출력장치가 컴퓨터 내부와 어떻게 연결이 되고 소통하는 지를 알아보겠다 참고로 이번 장에서 언급하는 입출력장치에는 보조기억장치도 포함된다 (보조기억장치가 컴퓨터 내부와 정보를 주고받는 방식은 입출력장치와 크게 다르지 않다) 장치 컨트롤러에 대해 알아보기 전에 먼저 I/O를 다루기 까다로운 이유 2가지를 알아야 한다 1. I/O에는 종류가 너무 많다 이 말은 곧 규격이 너무 많다는 것과 같다 비유하자면 CPU와 메모리가 한국어를 사용하지만, 프린터는 영어, 스피커는 중국어, 모니터는 일본어를 사용하는 상황과 같다 2. 보통 CPU와 메모리의 데이터 전송률은 높지만 I/O의 데이터 전송률은 낮다 여기서 전송률(transfer rate).. 2024. 3. 1.
[컴퓨터 구조] ep7) 보조기억장치 하드디스크와 플래시메모리같은 보조기억장치들은 개인 컴퓨터부터 서버구성 및 관리까지 다방면으로 사용되는 부품이기 때문에 잘 알아놔야 한다   ㅇ하드디스크 (HDD: Hard Disk Drive)하드디스크는 자기적 성질을 이용하는 자기디스크의 일종이다수많은 N극과 S극들이 0과 1의 역할을 수행한다 ※ RPM: Revolution Per Minutee.g. RPM이 15000이면 1분에 15000바퀴HDD는 여러겹의 플래터로 이루어져 있고 플래터 양면을 모두 사용할 수 있다보통 연속된 정보는 한 실린더에 기록한다(디스크 암이 움직일 필요가 없기 때문)  하드디스크가 저장된 데이터에 접근하는 시간은 크게 3가지로 나뉜다1. 탐색시간 (seek time): 접근하려는 데이터가 저장된 트랙까지 헤드를 이동시키는 .. 2024. 2. 24.
[컴퓨터 구조] ep3) 컴퓨터 구조의 큰 그림 우리가 앞으로 배워나갈 컴퓨터 구조의 큰 그림을 살펴보자컴퓨터 구조가 처음이라면 낯선 용어에 많이 힘들 수 있지만 뒤에 가서 또 자세하게 배운다 그러니 너무 낙심하지 말고 그냥 눈도장 찍는 느낌으로 재밌게 읽어보자 컴퓨터는 "명령어를 처리하는 기계"이다우리가 알아야 할 컴퓨터 구조 지식은 크게 두 갈래로 나뉜다1. 컴퓨터가 이해하는 정보(0과 1로만 표현된 정보): 데이터, 명령어2. 컴퓨터의 네 가지 핵심 부품: CPU(프로세서), 메모리(주기억장치), 보조기억장치, 입출력장치(I/O)※ 앞으로 메모리라는 용어가 나오면 특별한 언급이 없을 시 RAM을 생각하면 된다   ① 메인보드② 메인보드 안의 시스템 버스③ CPU: 메인보드 내 시스템 버스와 연결 ④ 메모리(RAM): 메인보드 내 시스템 버스와 연.. 2024. 2. 22.