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에는 현재 프로세스의 상태 정보가 저..
[청년취업사관학교 SeSAC] 조기 취업 및 후기
·
일상
개요2024년 7월부터 11월까지 청년취업사관학교 강동 캠퍼스에서 진행된 언리얼 엔진 과정을 조기 수료하며 공부한 경험을 공유하고자 합니다. 조기 취업 후 회사에 적응하면서 SeSAC의 장점과 단점을 정리해 보았습니다.SeSAC 간단 소개서울특별시와 서울경제진흥원(SBA)은 SW혁신 인재의 양성과 적소공급을 위해 청년취업사관학교를 조성하였습니다.새싹(Seoul Software Academy, SeSAC)은 캠퍼스의 교육브랜드로 서울시에서 SW인재 양성을 위해 ‘싹’을 틔우고 성장시켜, 개발자를 꿈꾸는 청년들이 ‘SW개발자로 데뷔할 수 있도록 돕는 교육 프로그램을 의미합니다. SeSAC과 국비지원의 차이점기존에 S 아카데미의 정규반(6개월), 다른 S 아카데미의 국비지원반(1년)을 경험했지만, 개인적으로 ..
[백준 / C++] 소수의 연속합 (골드 3, 1644)
·
코딩테스트/백준 (Study)
https://www.acmicpc.net/problem/1644문제하나 이상의 연속된 소수의 합으로 나타낼 수 있는 자연수들이 있다. 몇 가지 자연수의 예를 들어 보면 다음과 같다.3 : 3 (한 가지)41 : 2+3+5+7+11+13 = 11+13+17 = 41 (세 가지)53 : 5+7+11+13+17 = 53 (두 가지)하지만 연속된 소수의 합으로 나타낼 수 없는 자연수들도 있는데, 20이 그 예이다. 7+13을 계산하면 20이 되기는 하나 7과 13이 연속이 아니기에 적합한 표현이 아니다. 또한 한 소수는 반드시 한 번만 덧셈에 사용될 수 있기 때문에, 3+5+5+7과 같은 표현도 적합하지 않다.자연수가 주어졌을 때, 이 자연수를 연속된 소수의 합으로 나타낼 수 있는 경우의 수를 구하는 프로그램..
[백준 / C++] 이분 그래프 (골드 4, 1707)
·
코딩테스트/백준 (Study)
https://www.acmicpc.net/problem/1707문제그래프의 정점의 집합을 둘로 분할하여, 각 집합에 속한 정점끼리는 서로 인접하지 않도록 분할할 수 있을 때, 그러한 그래프를 특별히 이분 그래프 (Bipartite Graph) 라 부른다.그래프가 입력으로 주어졌을 때, 이 그래프가 이분 그래프인지 아닌지 판별하는 프로그램을 작성하시오.입력입력은 여러 개의 테스트 케이스로 구성되어 있는데, 첫째 줄에 테스트 케이스의 개수 K가 주어진다. 각 테스트 케이스의 첫째 줄에는 그래프의 정점의 개수 V와 간선의 개수 E가 빈 칸을 사이에 두고 순서대로 주어진다. 각 정점에는 1부터 V까지 차례로 번호가 붙어 있다. 이어서 둘째 줄부터 E개의 줄에 걸쳐 간선에 대한 정보가 주어지는데, 각 줄에 인접..