"이것이 취업을 위한 컴퓨터 과학이다 with CS 기술면접" 책을 참고했습니다.1. 배열 & 연결리스트프로그래밍 언어를 기반으로 학습을 단 한 번이라도 해봤다면 익숙한 자료구조인 배열과 연결리스트다. 배열과 연결리스트는 상황에 따라서 다른 자료구조를 만드는 재료로도 활용되기 때문에 깊게 이해하는 것이 좋다. 차근차근 알아보자.1-1 배열배열(Array)이란 일정한 메모리 공간을 차지하는 여러 요소들이 순차적으로 나열된 자료구조를 의미한다. 각 요소에는 0부터 시작하는 고유한 순서 번호인 인덱스가 매겨지며, 이 인덱스를 기준으로 요소들을 식별할 수 있다. 다음과 같은 특징을 지닌다.특정 요소 접근 시간은 요소의 개수와 무관하게 일정한 O(1)이다. 인덱스만 찾아서 조회하면 되기 때문.앞에서부터 차례대로 ..
컴퓨터 구조
"이것이 취업을 위한 컴퓨터 과학이다 with CS 기술면접" 책을 참고했습니다.1. 자료구조 개요자료구조는 말 그대로 데이터를 어떻게 효율적으로 관리하고 저장할지에 대해서 다루는 부분이다. 다양한 자료구조가 있겠지만, 대표적인 자료구조 위주로 학습할 예정이며 자료구조와 연관된 개념인 알고리즘, 그리고 시간, 공간 복잡도에 대해서도 차근차근 확인해보자.1-1 자료구조와 알고리즘앞에서 컴퓨터 구조와 운영체제를 학습하면서 자료구조에 대해서 간접적으로나마 다루었던 내용이 있었다. 예를 들어 메모리 내에 존재하는 스택 영역의 스택이나 CPU 스케줄링에 대해서 설명하면서 스케줄링 큐 같은 개념이 자료구조의 일종이었다.그렇다면 알고리즘은 무엇일까? 알고리즘은 간단하게 말하면 어떤 목적 달성을 위해 필요한 일련의 연..
"이것이 취업을 위한 컴퓨터 과학이다 with CS 기술면접" 책을 참고했습니다.1. 가상 메모리지난 시간까지 우리는 운영체제에서 어떻게 멀티프로세스나 멀티스레드 환경에서 통신을 관리하고, CPU 자원을 효율적으로 활용하는지에 대해서 알아봤었다. 이번에는 운영체제의 메모리 관리 기법인 가상 메모리가 무엇인지에 대해서 알아보자.앞의 내용을 본다면 자칫 CPU가 프로세스들이 메모리 속 어디에 저장되어 있는지 이미 알고 있다고 착각할지도 모른다. 하지만 그렇게 되면, 레지스터가 메모리만큼 커야 할 텐데 거기에는 무리가 있다. 또 사용 중이지 않은 프로세스는 메모리에서 해제된다. 그렇다면 어떻게 CPU는 메모리에 적재된 프로세스의 주소를 인식하고 관리할까? 이를 설명하기 위해 물리 주소와 논리 주소에 대해 먼저..
"이것이 취업을 위한 컴퓨터 과학이다 with CS 기술면접" 책을 참고했습니다.1. 운영체제의 큰 그림스마트폰의 운영체제인 안드로이드나 iOS나 데스크톱 PC의 윈도우나 맥OS의 경우 형태는 다른 것 같지만 제공하는 핵심적인 기능은 비슷하다. 이런 운영체제의 핵심적인 기능을 담당하는 부분을 커널(Kernel)이라고 하는데, 별다른 언급이 없다면 이제부터 운영체제라고 설명하는 부분은 이 커널을 지칭한다고 이해하면 된다.운영체제에는 2가지의 큰 핵심 기능이 있다. 하나는 자원을 할당하고 관리하는 역할이고, 다른 하나는 프로세스 및 스레드를 관리하는 역할이다. 이제 이 핵심 기능들을 차례대로 살펴보면서 전체적인 큰 그림을 그려보며 설명하겠다.1-2 운영체제의 역할운영체제에서 설명하는 자원이란 프로그램 실행에..
"이것이 취업을 위한 컴퓨터 과학이다 with CS 기술면접" 책을 참고했습니다.1. 컴퓨터 구조의 큰 그림컴퓨터의 구조는 크게 컴퓨터가 이해하는 정보(데이터와 명령어)와 컴퓨터의 핵심 부품(CPU, 메모리, 보조기억장치, 입출력장치)로 나눌 수 있다. 각각의 내용에 대해서 간략히 설명하면 다음과 같다.데이터 : 숫자, 문자, 이미지와 같은 정적 정보로 명령어의 재료명령어 : 수행할 동작과 대상으로 나누어져 있는 기능CPU(Central Processing Unit) : 정보(데이터, 명령어)를 읽고 해석해서 실행하는 부품핵심은 주요 구성 요소(ALU, 제어장치, register)와 빠른 명령어 처리를 위한 기술 정도만 이해하자.메인 메모리 : RAM, ROM이 있지만 주로 RAM을 의미하며, 현재 실행..