IPC(Inter Process Communication), 좀비 프로세스, 고아 프로세스
·
CS지식/운영체제
IPC(Inter-Process Communication)는 여러 프로세스가 서로 데이터를 주고받거나 자원을 공유하기 위해 사용되는 메커니즘을 의미합니다. 각 프로세스는 독립적인 메모리 공간을 가지므로, 프로세스 간 자원을 공유하거나 통신하려면 IPC 방식이 필요합니다. 다양한 IPC 방식은 프로세스 간 데이터 교환 및 동기화 문제를 해결하는 데 도움을 줍니다. 주요 IPC 방식과 함께 좀비 프로세스와 고아 프로세스에 대해서도 알아보겠습니다.1. IPC (Inter-Process Communication) 방식1.1. 공유 메모리 (Shared Memory)공유 메모리는 여러 프로세스가 동일한 메모리 공간을 공유하여 데이터를 전달하는 방식입니다. 각 프로세스는 해당 메모리 영역을 통해 서로 데이터를 읽거..
교착 상태(Deadlock)와 스레드 안전(Thread Safe)
·
CS지식/운영체제
멀티스레드 환경에서는 여러 프로세스나 스레드가 동시에 실행되면서 자원을 공유하는 일이 많습니다. 하지만 잘못된 동기화 기법이나 자원 관리로 인해 교착 상태(Deadlock)가 발생하거나, 스레드 안전(Thread Safe)이 보장되지 않는 문제가 생길 수 있습니다. 이 글에서는 교착 상태의 개념과 발생 조건, 해결 방법을 알아보고, 스레드 안전성을 유지하는 방법을 정리해 보겠습니다.교착 상태(Deadlock)란?교착 상태란, 둘 이상의 프로세스가 서로의 자원을 기다리며 무한히 멈춰 있는 상태를 의미합니다.즉, 프로세스 A는 프로세스 B가 가진 자원을 기다리고, 프로세스 B는 다시 프로세스 A가 가진 자원을 기다리는 상황이 발생하여 더 이상 진행할 수 없는 상태가 되는 것입니다.✅ 교착 상태 발생 조건 (..
프로세스 동기화
·
CS지식/운영체제
경쟁 상태(Race Condition)경쟁 상태(Race Condition)란 여러 프로세스 또는 스레드가 하나의 공유 자원에 접근할 때, 접근 순서에 따라 결과 값이 달라지는 현상을 의미합니다.멀티스레딩 환경에서 동기화가 적절히 이루어지지 않으면, 여러 스레드가 동시에 공유 자원을 수정하려고 시도하면서 의도치 않은 결과가 발생할 수 있습니다. 이는 데이터의 불일치와 예측 불가능한 동작을 초래할 수 있어 프로그램의 안정성을 해칠 수 있습니다.예제: 경쟁 상태 발생 코드#include #include int counter = 0;void increment() { for (int i = 0; i 위 코드에서는 두 개의 스레드가 counter 변수를 증가시키지만, 동기화가 없기 때문에 counter 값이..
동시성과 병렬성, 멀티 프로세스와 멀티 스레드
·
CS지식/운영체제
프로그램을 실행하는 방식에는 동시성(Concurrency) 과 병렬성(Parallelism) 이 존재합니다. 각각의 개념을 이해하면 멀티태스킹 환경에서 효율적인 프로그래밍이 가능합니다.동시성(Concurrency)동시성은 싱글 코어(Single Core) 환경에서 여러 작업을 번갈아 가면서 처리하는 방식입니다.  CPU는 한 번에 하나의 작업만을 실행할 수 있기 때문에, 여러 작업을 일정 시간 동안 실행한 후 다른 작업으로 전환하는 방식으로 동시성을 구현합니다.이러한 작업 전환 과정에서 콘텍스트 스위칭(Context Switching) 이 발생합니다. 이는 실행 중인 작업의 상태를 저장하고 새로운 작업의 상태를 복원하는 과정으로, 동시성 환경에서 필수적으로 수행됩니다.병렬성(Parallelism)병렬성은..
PCB(Process Control Block), 프로세스의 생성, 프로세스 상태도
·
CS지식/운영체제
PCB(Process Control Block)운영체제(OS)는 프로세스를 효율적으로 관리하고 제어하기 위해 각 프로세스의 중요한 정보를 저장하는 자료구조를 유지합니다. 이 자료구조를 PCB(Process Control Block) 라고 합니다. PCB는 운영체제가 각 프로세스를 식별하고 관리할 수 있도록 하는 핵심 요소이며, 프로세스의 실행과 관련된 다양한 정보를 포함합니다. PCB(Process Control Block)의 구성 요소PCB에는 프로세스를 관리하기 위한 다양한 정보가 포함됩니다. 주요 요소들은 다음과 같습니다.프로세스 상태 (Process State)프로세스는 실행(Running), 대기(Waiting), 준비(Ready) 등의 상태를 가지며, PCB에는 현재 프로세스의 상태 정보가 저..
프로세스, 메모리 구조
·
CS지식/운영체제
프로세스 vs 프로그램프로세스(process)는 컴퓨터에서 실행 중인 하나의 프로그램을 의미합니다.프로그램(program)은 특정 작업을 수행하기 위한 명령어의 집합입니다.메모리 구조OS는 프로그램을 실행하면서 디스크에 저장된 데이터를 메모리로 로드합니다. (메모리에 로드된 프로그램을 프로세스라고 합니다.) 프로세스는 OS로부터 독립된 메모리 영역(코드, 데이터, 스택, 힙)을 할당받으며 다른 프로세스의 메모리 영역에는 접근할 수 없습니다. 프로세스의 메모리 영역 구조를 간단히 표현하면 다음과 같습니다.참고로, Text(코드) 영역이 가장 낮은 주소 값을 가지며, Stack(스택) 영역이 가장 높은 주소 값을 가지고 있습니다.Code 영역 (Text)실행할 코드가 기계어로 컴파일되어 저장되어 있는 영역으..
운영체제, 커널, 시스템 콜
·
CS지식/운영체제
운영체제란?운영체제(OS, Operating System)는 하드웨어 위에 설치되어 하드웨어 계층과 다른 소프트웨어 계층을 연결하는 소프트웨어 계층입니다. 운영체제는 컴퓨터 시스템의 자원을 관리하고, 사용자가 컴퓨터를 사용할 수 있는 환경을 제공하는 역할을 수행합니다.운영체제의 목적운영체제는 한정된 컴퓨터 자원을 관리하는 시스템으로 다음과 같은 목적을 가지고 있습니다.처리 능력 향상 : OS는 자원 관리를 통해 일정 시간 내에 시스템이 처리하는 일의 양을 향상시킵니다.반환 시간 단축 : OS는 사용자가 시스템에 요청한 작업을 완료할 때까지 소요되는 시간을 단축시킵니다.사용 가능도 향상 : OS는 사용자가 컴퓨터를 사용해야 할 때 자원을 즉시사용할 수 있도록 합니다.신뢰도 향상 : OS는 입력 값에 대한 ..