목록Operating System/Concept (3)
우노
쓰레드 세이프(Thread Safe)란? 멀티 쓰레드 프로그래밍에서, 어떤 공유 자원에 여러 쓰레드가 동시에 접근해도, 프로그램 실행에 문제가 없는 상태를 의미합니다. Thread Safe 를 지키기 위한 방법은 네 가지로 이루어져있습니다. Mutual exclusion (상호 배제) Atomic operation (원자 연산) Thread-local storage (쓰레드 지역 저장소) Re-entrancy (재진입성) Mutual exclusion (상호 배제) 공유자원에 하나의 Thread 만 접근할 수 있도록, 세마포어/뮤텍스로 락을 통제하는 방법입니다. 일반적으로 많이 사용되는 방식입니다. 적용 예제 Python 은 Thread Safe 하게 메모리 관리 하지 않으므로, GlL(Global In..
프로그램(Program)이란? 개념 파일이 저장 장치에만 저장되어 있고, 메모리에는 올라가 있지 않은 정적인 상태를 의미합니다. 즉, 아직 실행되지 않은 파일(코드 덩어리)을 의미합니다. 특징 모든 프로그램은, 운영체제가 해당 프로그램을 위한 메모리 공간을 할당한 뒤, 자원을 할당해줘야 실행할 수 있습니다. 프로세스(Process)란? 개념 운영체제로부터 자원을 할당 받은 작업의 단위를 의미합니다. 즉, 프로그램이 실행된 상태를 의미합니다. 특징 프로그램을 실행하는 순간, 해당 파일은 운영체제가 할당해준 메모리에 올라가게 되며, 운영체제로부터 시스템 자원을 할당받게 됩니다. 이때, 운영체제는 각 프로세스의 독립된 메모리 영역을 Code, Data, Stack, Heap의 형식으로 할당해줍니다. Code ..
C언어의 메모리 구조 프로그램을 실행시키면, 운영체제는 우리가 실행시킨 프로그램을 위해, 메모리 공간을 할당해줍니다. 프로그램이 운영체제로부터 할당받는 대표적인 메모리 공간은 4가지입니다. 코드(code) 영역 데이터(data) 영역 스택(stack) 영역 힙(heap) 영역 메모리 영역 시각화 코드(Code) 영역 코드(Code) 영역은, 실행할 프로그램의 코드가 저장되는 영역으로, 텍스트 영역이라고도 부릅니다. CPU 는 코드 영역에 저장된 명령어를 하나씩 가져가서 처리하게 됩니다. 데이터(Data) 영역 전역 변수와 static 변수가 할당되는 영역입니다. 프로그램의 시작과 동시에 메모리에 할당되고, 프로그램이 종료되면 메모리에서 소멸됩니다. 예제 코드 #include int a = 10; // 데..