cs지식7 컴파일러와 인터프리터의 차이점 컴파일러 전체 소스코드를 보고 명령어 수집하고 재구성 고레벨 언어를 바로 기계어로 변환 인터프리터 소스코드의 각 행을 연속적으로 분석하며 실행 고레벨 언어를 바로 기계어로 번역하지 않고 중간 코드(바이트 코드)로 변환시킨 후 기계어로 변환 인터프리터의 특징 4가지 인터프리터는 고레벨 언어를 중간 코드로 변환하고 이를 각 행마다 실행한다. 컴파일러가 각 행마다 실행하는 특성을 가진 인터프리터보다 실행시간이 더 빠르다. 컴파일러는 전체 소스코드 변환 후 에러를 보고하지만 인터프리터는 각 행마다 실행하는 도중 에러가 보고되면 이후 작성된 코드를 보지 않는다. => 보안적인 관점에서 도움이 된다. 파이썬은 인터프리터 언어, C,C++은 컴파일 언어, 자바는 컴파일러와 인터프리터 모두 사용한다. Compiler와.. 2022. 2. 25. Java의 컴파일 과정 vs C++의 컴파일 과정 컴퓨터는 0과 1로만 이루어진 기계어만 이해할 수 있기 때문에 개발자가 만든 코드를 변환해 주어야 한다. 이 역할을 하는 것이 컴파일러이다. [Java] 컴파일 과정 자바는 OS에 독립적인 특징을 가지고 있다. 그게 가능한 이유는 JVM(Java Virtual Machine) 덕분이다. 자바 컴파일 순서 1. 개발자가 자바 소스코드(.java)를 작성한다. 2. 자바 컴파일러(Javac)가 자바 소스파일을 컴파일한다. 이 때 나오는 파일은 자바 바이트 코드(.class) 파일로 아직 컴퓨터가 읽을 수 없고 JVM이 이해할 수 있는 코드이다. ( 바이트 코드의 각 명령어는 1바이트 크기의 Opcode와 추가 피연산자로 이루어져 있다. ) 3. 컴파일된 바이트 코드를 JVM의 클래스로더(Class Loade.. 2022. 2. 25. 멀티쓰레드(Multi-Thread) 게임 서버에서 가장 중요한 것 안정성 성능 성능을 높이려면? 프로그램 최적화 멀티코어 활용 멀티코어를 활용하려면 멀티쓰레드 프로그래밍이 필요 온라인 게임을 만들려면? 소켓 프로그래밍 필요 다중 접속 서버를 만들려면? 서버에서 동접과 같은 수의 소켓을 관리하여야 한다 효율적인 다중 접속 관리는? IOCP가 필수 -> IOCP는 멀티쓰레드 프로그래밍을 요구한다. 프로세스와 쓰레드 프로세스 : 실행 중인 프로그램 쓰레드 : 프로그램(프로세스) 실행의 흐름 -> 프로세스 실행 중 프로그램이 쓰레드 생성 명령 실행 프로세스는 실행 중인 프로그램을 프로세스라고 한다. 스레드는 프로세스의 안에 있는 것이다. 멀티스레드 프로그래밍을 하지 않아도 스레드 1개는 있다(메인부터 해서 끝날때까지의 흐름). 병렬처리 하나의 작.. 2022. 2. 24. 비동기적(asynchronous) 실행과 동기적(synchronous) 실행의 차이 동기적 실행 ( syschronous execution ) 서브루틴 간에 명확한 실행 순서 존재 A,B,C의 세 가지 서브루틴이 존재하고 A,B,C 순으로 실행되기를 기대한다면 반드시 A->B->C 순서로 실행되어야 한다. 즉, B는 A가 실행 완료되기를 기다리고, C는 A와 B가 실행 완료되기를 기다린다. 동기적 실행은 프로그래밍을 처음 배울 때부터 익숙한 개념이다. 일반적으로 코드는 1번째 줄 -> 2번째 줄 ... 식으로 line by line으로 실행되며, 이 순서가 뒤바뀌지 않는다. 비동기적 실행 ( asynchronous execution ) 서브루틴 간에 명확한 실행 순서 존재 X A->B->C의 순서로 실행될 수도 있고, B->C->A의 순서로 실행될 수도 있다. 이런 경우 서브루틴이 완료.. 2022. 2. 24. 객체지향과 절차지향 절차지향(Procedural Programming)이란? 물이 위에서 아래로 흐르는 것처럼 순차적인 처리가 중요시 되며 프로그램 전체가 유기적으로 연결되도록 만드는 프로그래밍 기법이다. 대표적인 절차지향 언어에는 C언어가 있다. 이는 컴퓨터의 작업 처리 방식과 유사하기 때문에 객체지향 언어를 사용하는 것에 비해 더 빨리 처리되어 시간적으로 유리하다. 옛날에는 하드웨어와 소프트웨어의 개발 속도차이가 크지 않았다. 하지만 하드웨어의 빠른 발전을 통해 컴퓨팅 환경은 급속도로 증가했지만 소프트웨어 개발 시간이 따라가지 못하게 되고 이런 상황에 소프트웨어의 개발시간을 단축하되 하드웨어에 기본적인 사양을 잡아먹어도 더 이상 큰 단점이 아니기에 모듈화, 캡슐화해서 개념적으로 접근하는 형태를 갖는 객체지향 프로그래밍이.. 2022. 2. 23. 운영체제 프로세스와 스레드의 차이프로세스(Process)실행 중인 프로그램. 즉 디스크로부터 메모리에 적재되어 CPU의 할당을 받을 수 있는 것을 말한다.운영체제로부터 주소 공간, 파일, 메모리 등을 할당받으며 이것들을 총칭하여 프로세스라고 한다.프로세스 제어 블록 (Process Control Blcok, PCB) PCB는 특정 프로세스에 대한 중요한 정보를 저장하고 있는 운영체제의 자료구조이다. 운영체제는 프로세스를 관리하 기 위해 프로세스의 생성과 동시에 고유한 PCB를 생성한다. 프로세스는 CPU를 할당받아 작업을 처리하다가도 프로세스 전환이 발생하면 진행하던 작업을 저장하고 CPU를 반환해야 하는데, 이때 작업의 진행 상황을 모두 PCB에 저장하게 된다. 그리고 다시 CPU를 할당받게 되면 PCB에 .. 2022. 2. 20. 이전 1 2 다음