본문 바로가기

컴퓨터공학기초 개념146

1. 리눅스의 배경 1. 리눅스의 특징 - UNIX 계열의 OS - 서버와 클라우트 컴퓨팅에서 많이 사용되는 OS - 프로그래밍에도 유용한 OS (ANSI C의 C언어 표준을 사용) 2. 리눅스의 역사 a) 리눅스의 시작 ▶ 리누스 토발즈 (리눅스 개발자) - 대학에 있는 UNIX 컴퓨터를 집에서도 사용하고 싶다는 개발동기 - 다중 사용자, 다중 작업(시분할 시스템, 멀티 태스킹)을 지원하는 UNIX와 유사한 OS를 개발하기 시작 b) GNU 프로젝트 ▶ GNU(Gnu is Not UNIX) - UNIX 운영체제는 여러회사에서 각자 개발되었고 서로 소스를 공유하지 않았다. ▶ 리차트 스톨만 - 초기 개발공동체의 상호협력적인 문화로 돌아가자는 GNU 선언문을 발표 - 최초의 컴퓨터 애니악을 개발할 때에는, 여러 개발자들이 상.. 2021. 9. 3.
27. 컴퓨터 구조 - 병렬처리시스템 0. 시작하기 전에 - 지금까지 컴퓨터 구조에 대해 배우면서 컴퓨터가 어떻게 동작하는지에 대해서 알아보았다. - 컴퓨터의 동작이나 연산 과정에 대해서 배울 때, 언제나 순차적으로 그 과정을 설명했다. - 하지만, 실제로 컴퓨터는 순차적으로 움직이지 않는다. 오히려 동시다발적으로 동작한다. - 이것이 가능한 이유는 컴퓨터가 병렬처리를 사용하기 때문이다. - 이번 포스팅에서는 병렬처리란 무엇인지, 병렬처리는 어떻게 구현되는지에 대해서 알아보자. 1. 병렬처리란? - 이전 포스팅에서 파이프라인과 병렬처리에 대해 배운 적이 있다. - 병렬처리란, 한개 또는 한개 이상의 CPU를 이용하여 여러 작업을 동시다발적으로 처리하는 시스템을 말한다. - 이러한 병렬처리시스템은 다양한 방식으로 구현되는데, 이를 이해하기 위.. 2021. 9. 1.
26. 입출력 구조 - 입출력 제어 0. 시작하기 전에 - 이전 포스팅에서 입출력 구조를 이해하기 위한 시스템 BUS에 대해서 알아보았다. - 시스템 BUS는 단방향 통신으로 주기억장치와 CPU내부의 레지스터들과의 소통을 위한 회로다. - 이번 포스팅에서는 시스템 BUS와 입출력 장치간의 어떤 과정이 이루어지는지 알아보자. 1. 입출력 장치와 소통하는 방식 - 컴퓨터의 마더보드에는 주소버스, 데이터버스, 제어버스가 존재한다. - 그러나 입출력을 제어하기 위한 또는 입출력 데이터를 전달하기 위한 입출력 버스는 존재하지 않는다. - 왜 그럴까? 함께 알아보자. a) 마더보드에 입출력 BUS가 없는 이유 - 마더보드에 존재하는 다양한 BUS는 고정되어 있는 회로다. - 회로를 추가하거나 삭제하거나 할 수 없기에 고정적이고 불변적이다. - 그러나.. 2021. 8. 26.
25. 입출력 구조 - 시스템 BUS 0. 시작하기 전에 - BUS에 대해서 배우기 전에, CPU에 어떤 레지스터와 처리장치들이 있는지 다시한번 복습하길 바란다. - BUS는 기억장치와 CPU간의 소통을 위한 것이기 때문이다. - CPU에 대해 알고 싶다면, 아래의 링크를 참고하자. https://devraphy.tistory.com/298 14. CPU 내부구조 - 레지스터 0. 시작하면서 - 이전 포스팅까지 논리회로에 대해서 배웠다. - 그리고 플립플롭이 여러개 모이면 레지스터라는 것을 알게 되었다. - 이번 포스팅에서는 레지스터간의 연결 방식과 동작방식에 대 devraphy.tistory.com 1. 시스템 BUS란 무엇인가? - BUS란 컴퓨터 내부의 기억장치와 중앙처리장치(CPU) 간의 소통을 위해 연결된 회로를 말한다. - 시스템.. 2021. 8. 26.
24. 컴퓨터 구조 - 캐시메모리의 동작원리 1. 캐시메모리가 사용되는 방식 - 일반적으로 캐시 메모리(L2)는 CPU와 주기억장치 사이에 위치한다. - 캐시 메모리는 CPU와 주기억장치 간의 속도차이를 극복하기 위해 사용되는 장치로 - CPU의 처리속도 만큼 빠른 속도를 보장한다. - 그러나 주기억장치 만큼 큰 용량을 갖지 못한다. 비싸기 때문이다. - 이와 같은 이유로, 캐시 메모리는 CPU가 사용할 데이터 또는 명령어의 일부분만 저장하게 된다. 2. CPU, 캐시메모리, 주기억장치의 상호작용 a) Word와 Block ▶ Word - 그림에서 캐시메모리와 주기억장치를 구성하는 한칸을 의미한다. - 한번에 레지스터에 옮길 수 있는 데이터 또는 명령어의 크기를 표현하는 단위다. - 주기억장치에서 레지스터로 한번에 옮길 수 있는 데이터의 단위 - .. 2021. 8. 25.
23. 컴퓨터 구조 - 메모리 시스템의 이해 1. 메모리란 무엇인가? - 메모리 또는 기억장치라 불리는 하드웨어는 CPU가 실행할 프로그램을 저장하는 곳이다. - 메모리는 다음과 같이 분류된다. ▶ 주기억장치 (Main Memory Unit) - RAM(휘발성)과 ROM(비휘발성)으로 구성된다. - 일반적으로 '메모리' 라고 말하면 RAM을 지칭하는 것이다. ▶ 보조기억장치 (Auxiliary Memory Unit) - 하드디스크, USB, CD-ROM 등을 지칭한다. - ROM과 함께 전원이 차단되어도 데이터를 저장하는 기억장치 ▶ 캐시 메모리 (Cache Memory) - 전원이 차단되면 데이터가 사라진다. (= 휘발성) - 주 기억장치와 CPU의 사이에 위치한 메모리 - 주 기억장치에서 실행할 프로그램의 일부분을 꺼내와서 CPU의 사용 직전에.. 2021. 8. 25.
22. 컴퓨터구조 - 파이프라인과 병렬처리 0. 시작하기 전에 - 이전 포스팅까지 프로그램과 소프트웨어의 정의에 대해서 배우면서, - 프로그래밍 언어의 발전과 종류, 이를 이용한 프로그램 구조설계(아키텍처)에 대해서 배웠다. - 듀얼코어, 쿼드코어 등 하드웨어의 발전에 맞춰 하드웨어를 더욱 잘 활용하기 위해 다양한 프로그래밍 기법이 개발되었다. - 이번 포스팅에서는 기존의 순차적 프로그래밍이 발전된 형태로, - 하드웨어를 더욱 효율적으로 사용할 수 있게 만드는 병렬처리와 파이프라인에 대해서 배워보자. 1. Flynn의 컴퓨터 분류 - 컴퓨터 내부적으로 명령어와 데이터를 처리하는 흐름의 개수에 따라 분류하는 방식 - 다음과 같이 분류된다. ▶ SISD(Single Instruction Stream Single Data Stream) - 단일 사용자.. 2021. 8. 19.
Brute-Force 알고리즘(완전탐색) 1. Brute-Force 알고리즘이란? - 브루트 포스 알고리즘은 이름의 뜻 처럼, 무식하게 푸는 방법이다. - 브루트 포스 알고리즘은 모든 경우의 수를 파악하여 문제를 푸는 방법이다. 이를 완전탐색이라고 부르기도 한다. - 예를 들어, 4자리 비밀번호를 푸는 문제가 있다면 0000부터 시작해서 비밀번호가 맞을 때까지 모든 조합을 확인해보는 방법이다. 2. Brute-Force(완전탐색)을 푸는 방법 - 완전탐색 문제를 푸는 알고리즘은 다음과 같다. ▶ 순열 ▶ 백트래킹 ▶ BFS - 문제의 접근 방법에 따라 활용할 수 있는 방법이 위의 3가지로 나뉜다. 3. 완전탐색을 구현하기 전에 - 완전탐색을 구현할 때는, 다음의 요소들을 주의해야 한다. ▶ 입력과 출력의 제한을 파악하자. - 모든 경우의 수를 .. 2021. 8. 18.
21. 컴퓨터 구조 - 소프트웨어 구조 0. 시작하기 전에 - 이전 포스팅에서 프로그램과 SW의 개념에 대해서 배웠다. - 그리고 SW / 프로그램을 구성하는 프로그래밍 언어에 대해서 알아보았다. - 이번 포스팅에서는 SW가 어떤 구조를 갖는지에 대해서 배워보자. 1. SW Architecture (소프트웨어의 구조) - 구조란 무엇을 의미할까? - 구조는 어떤 결과물의 구성요소간의 관계 또는 그 관계의 형태를 의미한다. - 그렇다면 SW는 구성요소간의 어떤 관계를 형성하고 있는지 알아보자. a) SW의 구성요소 - SW는 다음과 같은 구성요소를 갖는다. ▶ 모듈 - 기능의 집합 - 특정한 작업 또는 기능을 수행하는 최소 단위의 프로그램들의 집합 ▶ 컴포넌트 - 모듈의 집합 ▶ 라이브러리 - 컴포넌트의 집합 - 이와 같은 구성요소를 어떻게 배.. 2021. 8. 17.