All'alba vincerò

At dawn, I will win!

2025/05/15 4

교착 상태(deadlock, 데드락)

교착 상태(deadlock, 데드락): 여러 프로세스가 서로 다른 프로세스의 작업이 끝나기를 기다리다가 아무도 작업을 진행하지 못하는 상태 여러 프로세스가 서로 자원이 풀리길 기다리다가 아무 일도 진행되지 못하는 상태 ex) 퇴근길 교차로에서 차량들이 꼬리에 꼬리를 물고 정지해 아무도 움직일 수 없는 상황→ 도로(공유 자원)가 모두 점유되어 발생한 교착 상태교착 상태가 발생하는 이유 ⇒ 공유 자원어떤 자원을 여러 개의 프로세스가 공유하지 않으면 교착 상태가 발생하지 않음 X 교착 상태 예시식사하는 철학자 문제 (Dining Philosophers Problem)철학자 5명이 원형 식탁에 앉아 있고, 철학자 사이에는 포크가 하나씩 있음 (총 5개)철학자가 밥을 먹으려면 왼쪽과 오른쪽 포크 두 개가 필요..

CS/운영체제 2025.05.15

세마포어(Semaphore)

세마포어(Semaphore): 여러 프로세스나 쓰레드가 공유 자원에 안전하게 접근할 수 있도록 제어하는 동기화 도구상호 배제 메커니즘을 위한 도구 중 하나상호 배제 메커니즘: 하나의 공유 자원에 동시에 여러 프로세스나 스레드가 접근하지 못하게 막는 방법내부적으로는 정수값 변수로 구현됨여러 프로세스가 동시에 공유 자원에 접근하지 못하게 하여 동기화 문제를 예방함세마포어는 여러 개의 열쇠를 가질 수 있는 구조이기 때문에, 특정 수 만큼의 동시 접근도 제어 가능 세마포어의 기본 연산wait(s): 세마포어 s 값을 1 감소시킴→ 값이 0보다 작아지면 해당 프로세스는 대기 상태로 전환됨signal(s): 세마포어 s 값을 1 증가시킴→ 대기 중인 다른 프로세스가 있으면 그 중 하나를 깨움 세마포어의 단점w..

CS/운영체제 2025.05.15

공유 자원과 임계 구역

공유 자원 (Shared Resource): 프로세스 간 통신 시 공동으로 사용하는 변수나 파일 공유 자원은 여러 프로세스가 공유하고 있기 때문에 각 프로세스의 접근 순서에 따라 결과가 달라질 수 있음 운영체제는 시분할 방식으로 프로세스를 번갈아 실행하기 때문에, 프로세스의 정확한 실행 순서를 예측하기 어려움→ 이로 인해 연산 결과도 예측하기 어려운 현상 발생⇒ 이를 동기화 문제(Synchronization Problem) 라고 함 동기화 문제 예시게임에서 캐릭터 총 체력은 100, 현재 체력은 20인 상황(20/100)에서 적의 공격을 받는 중이고, 동시에 물약을 마시는 중공격 받는 코드 (먼저 실행)int currentHealth = GetHealth(); // 1 → 이후 컨텍스트 스위칭 발생(..

CS/운영체제 2025.05.15

프로세스 간 통신

프로세스 간 통신(Inter-Process Communication, IPC): 프로세스들이 서로 데이터를 주고받으며 상호작용하는 방식프로세스는 독립적으로 실행되지만, 때때로 다른 프로세스와 데이터를 주고 받으며 통신하는 경우도 있음통신은 한 컴퓨터 내의 다른 프로세스와 할 수도 있고, 네트워크로 연결된 다른 프로세스와 할 수도 있음 프로세스 간 통신의 종류1. 파일과 파이프를 이용하는 방법: 한 컴퓨터 내에서 프로세스 간 통신을 하는 방법파일을 이용하는 방법통신하려는 프로세스들이 하나의 파일을 공유하여 데이터를 읽고 쓰는 방법한 프로세스가 파일에 데이터를 쓰고, 다른 프로세스가 파일을 읽는 방식파이프를 이용하는 방법운영체제가 생성한 파이프를 이용해 데이터를 읽고 쓰는 방법일반적으로 부모-자식 프로세..

CS/운영체제 2025.05.15