Programming (136) 썸네일형 리스트형 1차원 배열 1. 배열 배열(array)은 여러 개의 변수들을 모아놓은 것이다. 단순히 여러 개의 변수를 선언한 것과는 차이가 있다. 예를 들어 다음과 같이 변수를 선언했다고 하자. 1 2 3 4 5 int num1; int num2; int num3; int num4; int num5; cs 이 때 메모리의 상태는 다음과 같다. 하지만 배열로 선언할 경우 다음과 같다. 배열은 말 그대로 변수들을 나열한 것, 즉 변수들의 배열이다. 그냥 변수를 여러 개 선언한 것과는 메모리에 할당되는 형태가 다르다. 따라서 선언하는 방법도, 접근하는 방법도 다르다. 배열은 다음과 같이 선언한다. int arr[5]; 이 선언문은 다음과 같이 구성된다. int: 배열을 이루는 요소(변수)들의 자료형 arr: 배열의 이름 [5]: 배열.. 메모리를 절약하는 방법 1. 가상 메모리만으로는 메모리 문제를 해결할 수 없다 ⒜GUI 기반인 윈도우는 그야말로 거대한 OS다.⒝MS-DOS의 초기 버전의 경우 128KB의 메모리만 있어도 충분했지만,현재의 윈도우는 512MB은 되어야 쾌적하게 사용할 수 있다.하지만 윈도우에 ⒞멀티태스킹 기능이 내장되면서 여러 개의 애플리케이션을 동시에 실행할 수 있게 되었고, 이에 따라 512MB조차 모자란 경우가 많아졌다. 가상 메모리로 이 문제를 어느정도 해결할 수 있지만, 이는 보완책에 불과하다.페이지 인과 페이지 아웃 작업이 시작되면, 디스크에 접근하게 된다. 디스크는 메모리보다 접근 속도가 느리기 때문에, 이는 프로그램 실행 속도 저하를 야기한다.이런 이유로 가상 메모리는 보완책일 뿐, 궁극적인 해결책이라고 할 수는 없는 것이다. .. 가상 메모리 1. 가상 메모리 디스크의 일부를 메모리처럼 사용하는 기술을 말한다. 메모리의 일부를 디스크처럼 사용하는 디스크 캐시가 가상 디스크인 것처럼, 디스크의 일부를 메모리처럼 사용하는 기술은 가상 메모리(Virtual memory)인 것이다. 가상 메모리는 메모리가 부족한 경우에도 크기가 큰 프로그램을 사용할 수 있게 한다. 그러니까 메모리 여유 공간이 5MB여도 10MB짜리 프로그램을 실행할 수 있다는 이야기다. 하지만 실행을 위해서는 실행되는 부분이 메모리 상에 있어야 한다. 그래서 가상 메모리를 구현하려면 ⒜실제 메모리와 가상 메모리의 내용을 서로 바꾸면서 프로그램을 실행해야 한다. 윈도우에서는 가상 메모리를 제공한다. 이는 ⒝OS 차원에서 지원되며, 큰 효과를 보고 있다. 가상 메모리 구현 기법에는 페.. 디스크 캐시 1. 디스크 캐시 디스크 ⒜캐시(disk cache)는 디스크로부터 읽은 내용을 일부 보존해두는 메모리 영역을 말한다. 나중에 같은 데이터를 읽어야 할 경우가 생기면 실제 디스크에서 읽는 게 아니라 디스크 캐시에서 빠르게 읽어낼 수 있다. 이는 메모리에서 읽는 속도가 디스크에서 읽는 속도보다 훨씬 빠르기 때문이다. 결론적으로 디스크 캐시에 의해 디스크 접근 속도가 향상된다고 할 수 있다. ⒜ 캐시(cache): 컴퓨터 과학에서 캐시는 데이터나 값을 미리 복사해 놓는 임시 장소를 뜻한다. 캐시에 데이터를 미리 복사해 놓으면 계산이나 접근 시간 없이 더 빠른 속도로 데이터에 접근할 수 있기 때문에, 시스템의 효율성을 위해 다양한 곳에서 쓰인다. 디스크 캐시를 활용하는 대표적인 OS는 윈도우(Windows)다.. 프로그램이 실행되는 순서 1. 내장 프로그래밍 초기에는 프로그램을 작성하는 데에 물리적인 방법이 사용되었다. 프로그램 실행을 위해서는 프로그래머가 ⒜진공관 회로의 연결 구조를 바꿔야 했다. 다시 말해 하드웨어 기능을 프로그래밍했다는 것이다. 이로 인해 회로의 문제가 컴퓨터의 문제로, 프로그래머의 실수가 전체 시스템의 문제로 번졌다. 게다가 회로의 연결 구조를 바꾸는 작업이 만만치 않았다. 하드웨어에 대한 깊은 이해가 필요한 일이니, 사실 당연한 일이다. 이를 위해 내장 프로그램(Stored program)이 고안되었다. 프로그램을 데이터처럼 숫자로 표현하고, 데이터와 같은 형태로 저장 장치에 저장하는 것이다. 현재 C 코드를 컴파일해 숫자로 이루어진 기계어로 변환해 저장하는 것이 이 방식이다. 지금이야 너무나도 당연한 이야기지만.. 변수 1. 변수 변수에 대한 이야기는 다 한 것 같지만, 사실 아직 하지 않은 이야기가 있다. 바로 변수는 선언된 위치에 따라 전역변수(global variable)와 지역변수(local variable)로 나뉜다는 것. 그리고 이 둘은 다음의 두 가지에 대해 차이점을 보인다. ① 메모리 상에 존재하는 기간 ② 변수에 접근할 수 있는 범위 전역변수는 프로그램이 실행되고 종료될 때까지 메모리 상에 존재한다. 또한 이름에서 알 수 있듯이, 어디서든 접근할 수 있다. 여기서 접근이란 변수에 담긴 값을 사용하거나 변경하는 것을 말한다. 지역변수는 특정 지역에서만 접근할 수 있고, 그 지역에 있을 때만 메모리 상에 존재한다. 2. 지역변수 사실 지역변수는 이미 많이 선언하고 사용해본 변수다. 지역이란 중괄호로 둘러싸인.. 메모리 1. 하드웨어로 본 메모리 우리가 메모리 공간이라고 부르는 것의 실체는 메모리 IC다. 크게 ⒜RAM과 ⒝ROM으로 나뉘고 RAM은 다시 ⒞SRAM과 ⒟DRAM으로 나뉜다. 여러가지 종류가 있지만 기본적인 구조는 같다. 메모리 IC는 기본적으로 전원, 주소 신호, 데이터 신호, 제어 신호 등을 입출력하기 위한 많은 핀을 갖는다. 여기서는 RAM을 예로 들겠다. ⒜RAM(Random Access Memory): 읽기/쓰기가 모두 가능한 메모리 ⒝ROM(Read Only Memory): 읽기만 가능한 메모리 ⒞SRAM(Static RAM): 내용을 보존하기 위해 리프레시(refresh) 작업이 필요없는 RAM ⒟DRAM(Dynamic RAM): 내용을 보존하기 위해 리프레시(refresh) 작업이 필요한 R.. 함수 1. 함수 함수는 기본적으로 다음과 같은 구조를 취한다. 1 2 3 4 5 6 int main() { } cs 4가지 부분으로 나누어 보면 다음과 같다. int: 반환형. main: 함수의 이름. (): *매개변수의 형태. 위와 같이 아무것도 없는 것은 매개변수 없음을 의미한다. {}: 함수의 몸체(body). 함수의 기능이 정의된다. *매개변수: 인자라고도 하며, 함수를 실행할 때 그 함수로 전달하는 값을 말한다. 예를 들어 두 정수를 입력받아 더한 값을 반환하는 함수는 다음과 같이 선언한다. 1 2 3 4 int add(int num1, int num2) { return (num1 + num2); } cs 함수를 호출하려면 다음과 같이 함수의 이름과 전달할 인자 값만 써주면 된다. 인자 값은 상수든 .. Prev 1 ··· 12 13 14 15 16 17 Next