본문 바로가기

분류 전체보기

(25)
Operating System 이해를 위한 간단한 그림 OS (운영체제) 는 Operating System 의 약어로 컴퓨터를 사용함에 있어서 모든 컴퓨팅 리소스를 어떻게 제어하고 관리하며 운영할지를 결정하는 가장 기본적인 소프트웨어 입니다. 쉽게 말해 여러 프로그램들을 실행시키기 위한 다양한 하드웨어들로 구성된 컴퓨터에서, 프로그램과 하드웨어, 그리고 사용자 사이의 모든 중재 역할을 OS 가 담당하는 것입니다. 그 과정에서 사용자 혹은 주변장치가 컴퓨터를 쉽게 다룰 수 있게끔 'Interface (인터페이스)' 를 제공하고 컴퓨팅 리소스를 추상화하여 쉽게 접근할 수 있도록 조직하는 'File system(파일 시스템)' 과 프로세서(CPU)와 메모리, I/O devic 등의 하드웨어와 프로그램, file, 하드웨어 간의 주고받는 signal 등의 소프트웨어..
Cloud computing 이해를 위한 간단한 그림 Cloud computing (클라우드 컴퓨팅) Cloud computing 은 사용자가 직접적인 관리없이 추상화된 컴퓨팅 리소스를 인터넷을 통해 제공받고 사용하는 기술을 의미합니다. 즉 작업에 필요한 실질적인 컴퓨팅 리소스들은 Cloud computing 서비스를 제공하는 데이터 센터에 존재하고, 사용자는 인터넷만 연결된다면 어디서든 동일한 환경에서 원하는 작업을 할 수 있는 것입니다. 많은 이들이 Cloud computing 기술이 소프트웨어 비지니스 생태계에 좋은 영향을 준다고 말합니다. 수많은 소프트웨어 비지니스로 하여금 최소한의 관리 노력으로 빠른 release 를 가능하게 만들었고, Infrastructure (인프라스트럭처) 를 구축하는데 드는 시간과 비용을 절감시켜 그만큼 핵심 사업에 집중..
Cache memory 세부적인 이해를 위한 간단한 그림 ( ' Memory unit ' 의 기초적인 개념과 계층 구조를 이해하고 있다는 전제 하에 작성되었습니다. ) 이번 글에서는 현대 컴퓨터 과학에서 CPU의 성능 향상을 위해 아주아주 중요하며, 직접적인 역할을 하는 Cache memory 에 대해서 보다 자세하게 알아보도록 하겠습니다. Cache memory 는 속도 차이가 나는 두 장치들 사이에서 이를 극복하기 위해 탑재되는 중간 Memory Unit 입니다. 보통 Main memory 에서 미리 데이터를 복사해둠으로써 CPU 가 보다 빠른 속도로 데이터에 접근하고,처리할 수 있도록 도와줍니다. 사실 '중간 단계의 Memory' 라는 점에서 Main memory(주 기억 장치) 가 CPU 와 Auxiliary storage(보조 기억 장치) 사이에서 하..
RAM 세부적인 이해를 위한 간단한 그림 이번 글에서는 컴퓨터를 구매해보신 적이 있다면 한번은 들어봤을 그 이름! ' RAM ' 에 대해서 알아보도록 하겠습니다. RAM 은 Random Access Memory 의 약어로 Memory 공간 내의 어느 위치에든 동일한 접근 속도로 읽고 쓰는 것이 가능한 Memory unit 입니다. 전원이 들어와 있는 동안에만 데이터가 유지되는 휘발성 메모리이며, 그렇기 때문에 빠르고 자유롭게 데이터를 수정하는 것도 가능합니다. 이러한 RAM은 CPU 가 운영체제나 프로그램 같은 작업을 수행할 수 있도록 작업 공간이 되어주는 역할을 합니다. 작업 공간이 넓으면 훨씬 많은 작업들을 빠르게 처리할 수 있겠죠? 그래서 RAM 의 용량과 성능은 CPU 성능에 직접적인 영향을 줍니다. RAM 을 물리적 특성에 따라 분류하..
Memory unit 이해를 위한 간단한 그림 오늘은 Memory Unit (기억장치) 에 대해서 알아보겠습니다. Memory unit 은 컴퓨터에서 프로그램과 데이터를 저장하는 장치를 총칭하며, 용도와 용량 처리속도에 따라 Register(레지스터), Cache Memory(캐시 메모리), Main memory(주 기억 장치), Auxiliary storage(보조 기억 장치) 로 구분됩니다. Register 는 CPU 내부에 위치하는 Memory unit 으로 당장 처리할 데이터를 일시적으로 저장하는 저용량의 고속 Memory unit 입니다. Cache memory 는 CPU 와 Main memory 간의 속도 차이를 극복하기 위한 저용량의 고속 Memory unit 입니다. 보통 SRAM 으로 구성합니다. Main memory 는 CPU 와 ..
CPU 의 구조와 작동을 이해하기 위한 간단한 그림 ' CPU ' 는 Central Processing Unit (중앙 처리 장치) 의 약어로, Input device (입력 장치)로 부터 데이터를 받아서 Memory Unit (기억장치) 와 연계하여 처리하고 Output device (출력 장치)로 내보내는 모든 과정을 연산하고 제어하는 장치입니다. 오늘은 이러한 CPU 가 어떻게 구성되어 있고, 또 어떻게 작동하는지에 대해서 알아보도록 하겠습니다. CPU 의 구성 CPU 는 크게 Control Unit (제어 장치) 와 Arithmetic Logic Unit (산술 논리 연산 장치), Memory Unit (기억 장치)으로 구성됩니다. Control Unit 은 프로그램의 명령을 차례대로 실행하기 위해 명령어를 해독하여 Arithmetic Logic ..
계산 복잡도 이론 이해를 위한 간단한 그림 오늘은 알고리즘의 성능과 효율을 예측하고 분석하기 위해 탄생한 이론, '계산 복잡도' 에 대해서 알아보겠습니다. 계산 복잡도 이론은 주어진 문제에 대한 최적의 알고리즘을 찾는 것을 목표로 알고리즘의 복잡도를 분석하고 연구하는 이론입니다. 쉽게말해 특정 알고리즘이 문제를 해결하기 위해 필요로 하는 시공간적 리소스를 정량화하여 측정해보기 위한 것이죠. 이때 시간적 리소스, 그러니까 문제해결에 걸리는 시간을 분석하는 것을 ' 시간 복잡도 ' 라고 하고, 공간적 리소스, 그러니까 문제해결에 필요한 메모리 공간의 양을 분석하는 것을 ' 공간 복잡도 ' 라고 합니다. 계산 복잡도 이론은 세부적으로 시간 복잡도와 공간 복잡도로 나누어 지는 것이죠. 하지만 어떠한 알고리즘이 동작하는데 걸린 실제시간을 측정하거나 실제로..
자료구조로써의 Hash (해시) 개념 이해를 위한 간단한 그림 'Hash 해시' 는 크게 컴퓨터 공학에서 말하는 큰 개념으로서 Hash 와암호학에서의 의미(단방향 암호화의 한 종류인 Hash ),그리고 자료구조로써 활용되는 Hash 로 나누어 볼 수 있습니다. 결국 모두 같은 Hash 이므로 각 분야가 집중하는 기능/속성에 따라 활용법의 차이가 있는 것일 뿐입니다. 이번 시간에는  '자료구조로써 활용되는 Hash'  에 대해서 알아보겠습니다.    이번 글은 ' Hash ' 의 기본 개념을 이해하고 있다는 전제 하에 작성되었습니다.    컴퓨터 공학에서 말하는 큰 개념으로서 ' Hash ' 가 궁금하다면 아래글을 먼저 봐주세요. '해시 Hash' 개념 이해를 위한 간단한 그림'해시 Hash' 는 데이터를 다루는 기법 중 하나로, 일정한 규칙이나 기준이 없는 데이터를..
암호학에서의 Hash (해시) 개념 이해를 위한 간단한 그림 'Hash 해시' 는 크게 컴퓨터 공학에서 말하는 큰 개념으로서 Hash 와 암호학에서의 의미(단방향 암호화의 한 종류인 Hash ), 그리고 자료구조로써 활용되는 Hash 로 나누어 볼 수 있습니다. 결국 모두 같은 Hash 이므로 각 분야가 집중하는 기능/속성에 따라 활용법의 차이가 있는 것일 뿐입니다. 이번 시간에는 '암호학에서의 Hash' 에 대해서 알아보겠습니다. 컴퓨터 공학에서 말하는 큰 개념으로서 ' Hash ' 가 궁금하다면 아래글을 먼저 봐주세요. '해시 Hash' 개념 이해를 위한 간단한 그림 '해시 Hash' 는 데이터를 다루는 기법 중 하나로, 일정한 규칙이나 기준이 없는 데이터를 고정된 길이의 데이터로 매핑하는 것을 말합니다. 매핑 : 어떤 값을 다른 값에 대응시키는 과정을 총칭 ..
해시 Hash 개념 이해를 위한 간단한 그림 '해시 Hash' 는 데이터를 다루는 기법 중 하나로,일정한 규칙이나 기준이 없는 데이터를 고정된 길이의 데이터로 매핑하는 것을 말합니다. 매핑 : 어떤 값을 다른 값에 대응시키는 과정을 총칭 이러한 매핑을 수행하는 특정 방법을 '해시 알고리즘' (해시 함수) 이라고 하는 것이구요.     예를 들어, '어떤 수를 10 으로 나누고 나머지를 구하는 함수'도 아주 낮은 단계의 '해시 함수'입니다. 아무리 큰 숫자를 매핑해도 항상 "0~9 사이의 숫자 하나", 그러니까 '고정된 길이의 데이터'로 바꿔주기 때문이죠. '해시'의 개념이 조금은 이해가 되시나요?     이렇듯 임의의 데이터를 일정한 길이의 데이터로 바꿔주는 해시 함수는 아주 다양할 수 있습니다. 하지만 해시를 수행하는 '해시 알고리즘'이 얼마나 ..
git 이해를 위한 간단한 그림 'git' 은 소스코드의 변경점을 관리해주는 분산형 '버전 관리 시스템(VCS)' 입니다. 대부분의 협업 개발 및 버전 관리에서 사용되고 있는 아주 강력한 도구인 만큼 주요 기능과 특징에 대해 알아보도록 하겠습니다. 버전관리 쉽게 말해 코드가 누구에 의해서, 언제, 어떻게, 어디가 바뀌었는지를 감시하고 기록하며, 추적하는 것이 바로 '버전관리' 입니다. 개발자들은 그 이름에서 부터 그렇듯 끊임없이 디벨롭 develop 을 하는 사람들 입니다. 그런데 코드를 추가하거나 수정할 때마다 매번 새로운 파일을 저장해서 가지고 있어야 한다면 얼마나 힘들고 비효율적일까요 또 어떤 작업을 했는지 자세한 수정사항에 대해서도 따로 정리해야 할 수도 있습니다. 심지어 그렇게 쌓인 수많은 파일들을 관리하기란 불가능에 가까울 ..
객체와 클래스 개념 이해를 위한 간단한 그림 Python은 객체지향 프로그래밍(OOP) 이며, Python 에서는 모든 것이 객체입니다. 객체는 데이터와 기능을 하나로 묶어 표현하는 개념을 말합니다 예를 들어 자동차 한 대가 있다고 해봅시다. 그럼 이 자동차 라는 '개념' 안에는 어떤 엔진을 쓰는지, 어떤 바퀴를 쓰는지, 좌석이 얼마나 있는지, 핸들이 어느정도 돌아갔는지 등의 수많은 '데이터'들과, 이동하고 멈추고 방향전환을 하고 짐을 싣는 등 수많은 '기능'들이 있을 수 있습니다. 이런 데이터와 기능을 하나로 묶어 '자동차'라고 표현하는 개념과 '객체'의 개념이 크게 다르지 않습니다. 우리가 사는 물리 세계에서 위의 데이터와 기능을 묶어 자동차라는 개념으로 인식하듯이, 소프트웨어 세계에서는 데이터와 기능을 묶어 하나의 '객체'라는 개념으로 인식하..
개발자가 기본적인 Linux 명령어를 다룰 줄 알아야 하는 이유에 대한 간단한 그림 Linux 와 흔히 사용되는 Window, MacOS와 IOS, Android 등과 같은 GUI 운영체제의 차이점을 아주 간단히 표현하면 "뷔페"와 "코스 레스토랑"으로 비유할 수 있습니다. 코스 레스토랑을 가면 편하게 앉아 정해진 코스대로 나오는 완성도있는 음식들을 받아 먹을 수 있지만, 정해진 셰프의 레시피가 있고 메뉴의 선택에 있어 제한적일 수 있는데요. 반면 뷔페는 일어나서 직접 돌아다니며 자신의 접시를 채워야하는 노력이 필요하지만, 원하는 음식을 선택하고 조합할 수가 있습니다. Linux 는 높은 자유도와 개발 환경 제어에 강점이 있는 것 입니다. 또 뷔페에 가면 디저트만 먹는 사람도 있고, 해산물만 먹는 사람도 있는 것처럼 각자 원하는대로 뷔페를 즐기는 수많은 방식이 있습니다. 이처럼 Linu..
kurnel 이해를 위한 간단한 그림 커널 kurnel 은 컴퓨터에서 가장 낮은 단계의 소프트웨어 라고 할 수 있습니다. 운영체제의 가장 첫 부분이자 핵심이 되는 부분이죠. 마치 지휘자 처럼, 여러 하드웨어들로 구성된 컴퓨터라는 오케스트라를 지휘하는 것입니다. 지휘자가 여러 악보를 보고, 악보에 맞게 다양한 악기들이 언제 연주를 시작하고 얼마동안, 어느정도의 세기로 연주를 해야하는지 지시하듯이, 커널은 프로그램에 맞게 다양한 하드웨어들의 동작을 실행하고 관리합니다. 대표적으로 Linux 운영체제의 "Linux 커널"이 있습니다.
DataBase Management System 이해를 위한 간단한 그림 DBMS(데이터베이스 관리 시스템) 은 데이터베이스라는 데이터의 집합을 만들고, 편리하고 효율적으로 운영, 관리할 수 있는 기능을 제공하는 응용 프로그램입니다. 대부분은 'SQL쿼리 언어'를 지원하고 사용하며 'SQL 표준 구조'를 익히면 대부분의 DBMS 를 사용할 수 있습니다.
정보 시스템의 핵심에 대한 간단한 그림 여러 프로그래밍 언어를 포함하여 결국 모든 정보 시스템의 핵심은 정보를 생성할 수 있고 (Create), 읽을 수 있고 (Read), 수정할 수 있고 (Update), 삭제할 수 있는 (Delete) 것입니다. 'C.R.U.D' 를 이해하고 수행할 수 있다면 해당 시스템의 90%를 이해했다고 봐도 무방합니다!