컴파일 타임(Compile Time) / 런타임(Runtime)
·
Development/개발 공부
프로그래밍을 공부하거나 코드를 직접 짜다 보면 컴파일 타임(Compile Time)과 런타임(Runtime)이라는 용어를 자주 접하게 된다.둘의 개념을 명확히 알아보도록 하자! 컴파일 타임(Compile Time)컴파일 타임은 컴파일러가 소스 코드를 기계어로 변환하는 과정을 의미한다.※ 소스 코드: C, Java 등과 같은 고급 언어로 작성된 코드 확장자가 .c인 소스 코드는 → 컴파일 과정을 거쳐 기계어로 번역된 실행 파일(.exe)을 생성한다.확장자가 .java인 소스 코드는 → 컴파일 과정을 거쳐 JVM이 이해할 수 있는 바이트 코드 파일(.class)을 생성한다. 컴파일 타임에 발생하는 오류는 문법 오류, 타입 오류, 선언되지 않은 변수, 잘못된 메소드 호출 등이 존재한다.만약 오류가 발생하게 ..
[OS] 메모리 관리- 페이징(Paging)과 세그먼테이션(Segmentation)
·
Computer Science/운영체제
메모리 관리 기법인 페이징(Paging)과 세그먼테이션(Segmentation)에 대해 알아보려 한다. ❓ 메모리는 왜 관리해야 할까?❗️ 일반적으로 컴퓨터는 한 프로세스만 실행하지 않고, 여러 프로세스를 동시에 번갈아 수행(Multi Programming)한다.이를 위해서는 주기억장치(Main Memory)에 여러 프로레스를 적재해야 한다.이때 메모리를 적절히 분할하지 않으면, 실행 속도가 느려지거나 일부 프로세스가 제대로 동작하지 않을 수 있기 때문에메모리 관리 기법을 통해 여러 프로세스가 원활히 실행되도록 해야 한다. 단편화(Fragmentation)페이징과 세그먼테이션에 대해 알아보기 전에, 먼저 단편화가 무엇인지 알아보자. 단편화란 "기억 장치의 빈 공간 또는 자료가 여러 조각으로 나뉘는 현상"..
[OS] 시스템 콜(System Call)
·
Computer Science/운영체제
시스템 콜(System Call)의 개념, 동작과 종류에 대해 알아보자! 시스템 콜(System Call) 개념 시스템 콜(System Call)은 서비스를 호출하는, 즉 커널에 접근하기 위한 인터페이스이다. user mode는 시스템 콜을 이용하여 kernel mode에서의 기능을 수행할 수 있다.C와 C++ 같은 고급 언어로 작성되는 API 함수를 호출하면 → API는 내부적으로 시스템 콜을 호출하여 OS 커널 기능을 수행한다. ❓ 왜 시스템 콜을 직접 호출하지 않고 API를 이용하여 간접적으로 호출할까?❗️시스템 콜은 하드웨어와 직접 상호작용하기 때문에, API 함수가 시스템 콜 호출을 추상화한다면 프로그래머가 함수 호출 만으로 시스템 콜을 수행할 수 있다. 따라서 시스템 콜에 대한 변경이나 에..
[OS] IPC(Inter-Process Communication)
·
Computer Science/운영체제
IPC(Inter-Process Communication)의 정의IPC(Inter-Process Communication)는 프로세스들 사이에 서로 데이터를 주고받는 행위를 의미한다. 운영체제 구조는 보다시피 user mode와 kernel mode로 나뉘어져 있다.user mode에는 여러 독립적인 프로세스들이 실행되는데, 이 프로세스들은 서로 직접적으로 통신할 수 없다.각 프로세스는 독립적인 메모리 공간을 가지기 때문이다. 프로세스란? >2025.06.19 - [CS/운영체제] - 프로세스 VS 스레드 프로세스 VS 스레드프로세스와 스레드에 대해서 알아보고, 둘의 차이를 기술하려 한다.프로세스(Process)프로세스를 알아보기 전에, 프로그램과 프로세스의 차이가 무엇인지 알아보자. ✅ 프로그램(Pro..
[OS] GC(Garbage Collection, 가비지 컬렉션)
·
Computer Science/운영체제
가비지 컬렉션(Garbage Collection)이란?가비지 컬렉션, 줄여서 GC란 메모리 내에서 더 이상 참조되지 않는 객체를 찾아 제거하는 메모리 관리 기법이다.C나 C++은 free(), delete, delete[]로 동적으로 할당한 메모리를 해제할 수 있다.하지만 Java, JavaScript 등은 이러한 메소드가 따로 존재하지 않는다!즉, 함수 호출을 따로 하지 않아도 Java의 JVM / JavaScript의 V8 내의 가비지 컬렉터가 자동으로 메모리를 회수한다. 가비지 컬렉션의 동작 과정그렇다면 메모리 내에서 존재하는 객체들 중 더 이상 참조되지 않는 객체를 찾아 제거한다고 했는데,그 객체는 어디 있고 어떻게 제거될까? 해답은 바로 프로세스의 Heap 영역이다!Heap은 동적으로 메모리를 ..
[OS] 프로세스(Process) vs 스레드(Thread)
·
Computer Science/운영체제
프로세스와 스레드에 대해서 알아보고, 둘의 차이를 기술하려 한다.프로세스(Process)프로세스를 알아보기 전에, 프로그램과 프로세스의 차이가 무엇인지 알아보자. ✅ 프로그램(Program) : 컴퓨터에서 실행할 수 있는 파일✅ 프로세스(Process): 실행 중인 프로그램 쉽게 말하면 프로그램은 저장 장치에 있는 정적인 파일로, 아직 메모리에 적재되지 않은 상태를 의미한다.반면, 프로세스는 그 프로그램이 실행되어 메모리에 올라가 실제로 동작 중인 상태를 의미한다. 프로세스는 메모리에 Stack / Heap / Data / Text 영역으로 적재되어 실행된다. Stack: 함수 호출, 지역 변수 등 임시 데이터가 저장되는 공간. 함수 호출에 따라 자동으로 메모리가 할당/해제된다...