엘키의 주절 주절

소소한 개발 이야기

C프로그래머가 알아야 할 것들 - 08 프로세스와 스레드

프로세스와 스레드 스레드를 이해하려면 프로세스에 대한 이해가 선행되어야 합니다. 프로세스란 프로그램이 실행되는 단위를 말합니다. 지금 제가 이 문서를 작성하고 있는 OpenOffice도 프로세스고, 음악을 듣고 있는 aimp2도 프로세스, 메신져인 pidgin 모두 프로세스입니다. 일반적으로 프로그램의 실행 단위가 프로세스라고 보시면 됩니다. (한 프...

C프로그래머가 알아야 할 것들 - 07 어셈블리

어셈블리 언어 C언어는 다른 언어들 보다 어셈블리에 근접한 언어입니다. 인라인 어셈블리가 가능한 데다가, 메모리를 직접 다루는 것이 가능하며, C언어는 어셈블리어와 1:1대응까진 아니지만 대응 되는 언어이기 때문입니다. C언어로 작성한 코드는 컴파일러를 통해서 어셈블리어와 대응되는 오브젝트 파일로 반드시 변환이 되어야 해당 코드가 실행 될 수 있습니...

C프로그래머가 알아야 할 것들 - 06 자료 구조

자료 구조란? 프로그램이 어떤 일을 할 때에는, 그 일을 하기 위해 필요한 데이터가 존재 합니다. 예를 들어, 비디오 대여점 관리 프로그램을 작성한다고 생각해 봅시다. 우선 비디오 정보들이 필요합니다. 비디오의 정보에는, 비디오에 담긴 미디어의 작품 명, 감독, 출연진 (혹은 성우) 등과, 비디오의 위치, 대여료, 대여기일 등의 정보를 포함합니다....

C프로그래머가 알아야 할 것들 - 05 메모리와 포인터

메모리를 알자 우리가 계산을 할 때에 일반적으로 데이터와 연산자가 필요합니다. 예를 들어, 1 + 2 라는 식을 계산 하기 위해선, 1과 2라는 데이터가 필요하고, + 라는 연산자가 필요하죠. 우리가 노트에 계산을 할 때에는 계산 결과를 노트에 표기 합니다. 계산 결과를 기록해 두는 이유는 그 계산 결과를 가지고 다른 연산을 해야 하거나, 그 ...

C프로그래머가 알아야 할 것들 - 04 프로그램 언어

왜 문법을 배워야 하는가? 한국어를 할 줄 모르는 독일인과, 독일어를 할 줄 모르는 한국인과 대화가 가능할까요? 바디 랭귀지로 하면 되지 않느냐는 분도 계시겠지만 그것도 어느 정도 한계가 있기에, 제대로 된 의사소통은 불가능할겁니다. 컴퓨터는 0과 1 (2진수)밖에 인식하지 못한다고 배웠습니다. 컴퓨터에게 명령을 내릴 때, 1 00001110 01...

C프로그래머가 알아야 할 것들 - 03 운영 체제와 컴퓨터 원리

운영체제란? 초기에 컴퓨터는 컴퓨터를 키자마자 프로그램이 담겨 있는 디스크를 삽입해야만 했습니다. 그리고 특별한 경우를 제외하고는 다른 프로그램 사용시에는 재 부팅 시켜야만 했습니다. 이 방법은 매우 불편했습니다. (비디오 게임기들은 이 방식을 채용하고 있는 경우가 많습니다) 그래서 유닉스, MS-DOS등의 운영체제가 나오게 됐습니다. (참고로 M...

C프로그래머가 알아야 할 것들 - 02 비트의 법칙

비트가 뭐지? 비트란 이진수(Binary Digit )의 약자로써 컴퓨터에서 제어 가능한 데이터의 최소단위입니다. 하지만, 컴퓨터에서 입 출력할 때 사용하는 최소 단위는 바이트죠. 둘 다 최소단위라는 건 알겠는데 정확한 차이가 뭐냐고요? 비트란 저번 강좌에서 배웠던 2진수 10 (10진수 2)을 2비트(2진수 2자리 수이기에)로 표현 가능하고 제어...

C프로그래머가 알아야 할 것들 - 01 진법

왜 진법에 대하여 배워야 하는가? 진법이란, 수를 세는 방법을 의미합니다. 수를 셀 때, 0부터 몇까지 세는지를 의미한다고 생각하시면 됩니다. 우리가 수를 셀 때, 0~9까지 세지요? 이 것을 10진법이라고 부릅니다. 시간에서 분, 초 등을 셀 때 쓰이는 0~59까지 세는 방법을 60진법이라고 합니다. 이와 달리 컴퓨터는 전류가 흐를 때(1)와, ...