컴파일이란? 인간이 이해할 수 있는 언어로 작성된 소스코드를 CPU가 이해할 수 있는 언어(기계어)로 변환 하는 작업을 말한다. 소스코드는 컴파일 과정을 통해 기계어로 이루어진 실행 파일이 되며 이 파일을 실행하면 실행 파일 내용이 운영체제의 Loader를 통해 메모리에 적재되어 프로그램이 동작한다. 컴파일 과정 컴파일 과정은 4가지 단계 전처리 과정 - 컴파일 과정 - 어셈블리 과정 - 링킹 과정으로 나뉜다. 전처리 과정(Pre-processing) 전처리기(Processor)를 통해 소스 코드 파일(*.c)을 전처리된 소스 코드 파일(*.i)로 변환하는 과정이다. 1) 주석 제거 2) 헤더 파일 삽입 #include 지시문을 만나면 해당하는 헤더 파일(e.g. stdio.h)를 찾아 헤더 파일에 있는..
프로세스란? 컴퓨터에서 실행 중인 하나의 프로그램을 의미하며 프로그램이 실행되는 과정은 아래와 같다. 디스크에 있는 프로그램이 운영 체제에 의해 메모리에 로드됨 - > 인스턴스화 메모리 관리 장치에 의해 할당된 메모리 공간으로 바이너리 실행 코드가 올라감 -> 프로세스화 (※ 프로세스에는 프로세스 ID와 같은 프로그램이 실행되는 데 필요한 모든 정보를 포함한다.) CPU에 의해서 프로세스가 실행되며 CPU 스케줄러에 따라 프로세스에 포함된 명령어들을 수행한다. 프로세스의 메모리 영역 프로세스는 프로그램의 코드를 실행하기 위해 필요한 RAM의 메모리 공간을 할당받으며 다음과 같이 분류된다. Code 영역 실행할 프로그램의 코드(명령어)가 기계어 형태로 저장되는 영역 Data 영역 코드에서 선언한 전역 변수..
컴퓨터란? 하드웨어 자원과 소프트웨어 자원을 기반으로 작동하는 기계 하드웨어 자원 컴퓨터의 물리적 구성 요소를 의미(e.g. CPU, 메모리, 하드 디스크, 그래픽 카드, 입출력 장치) 소프트웨어 자원 컴퓨터의 논리적 구성 요소를 의미(e.g. 운영체제, 응용 프로그램, 데이터베이스) 운영체제 (OS) 란? 사용자가 컴퓨터를 사용할 수 있도록 도와주는 소프트웨어이며 아래와 같은 역할을 한다. 사용자가 원하는 운영체제(e,g, Window, Ubuntu)를 부팅시 사용할 디스크에 설치를 통해 사용한다. 인터페이스 제공 사용자와 컴퓨터 간의 상호 작용을 위한 인터페이스(UI, UX)를 지원한다. 자원 관리 하드웨어, 소프트웨어 자원을 관리한다. 프로그램 실행 각종 프로그램이 실행될 수 있는 환경을 제공한다...
네트워크 두 개 이상의 노드가 링크를 통해 유선 또는 무선으로 서로 연결되어 있어 리소스(데이터)를 주고 받을 수 있는 시스템 ※ 노드 : PC, 프린터, 스캐너, 서버 등 통신이 필요한 각종 장비 ※ 링크 : LAN 선, 전선, WIfi, VPN 신호 등 유선 또는 무선으로 노드를 인터넷에 연결시킬 수 있는 도구 처리량 링크 내에서 성공적으로 전달된 데이터의 양을 의미 대역폭 주어진 시간 동안 네트워크 연결을 통해 흐를 수 있는 최대 비트 수(단위 : bps 초당 송/수신 bit 수) 트래픽 특정 시점에 링크 내에 ‘흐르는’ 데이터의 양 (※ 파일을 다운로드 할 때 발생되는 데이터의 누적량이며 처리량과는 다름) 지연 시간 요청이 처리되는 시간을 말하며 어떤 메세지가 두 장치 사이를 왕복하는 데 걸린 시..