프로그래밍/운영체제
운영체제 · 교착상태 (데드락)
교착상태 (Deadlock) 운영체제(또는 소프트웨어)에서 자원을 사용할 때, 두 개 이상의 작업이 순차적으로 상대방의 작업이 끝나기를 기다리면서, 아무것도 진행되지 않는 상태를 말한다. 교착상태 발생 조건 ✓ 교착상태는 다음 네 가지 조건이 모두 성립될 때 발생한다.상호 배제 (Mutual exclusion) : 한 번에 하나의 프로세스만 공유 자원을 사용할 수 있다.점유 대기 (Hold and wait) : 각 프로세스가 하나의 자원을 점유하고 있으면서, 다른 프로세스가 사용하고 있는 자원을 추가로 점유하기 위해 대기한다.비선점 (No preemption) : 각 프로세스는 다른 프로세스가 사용하고 있는 자원을 강제로 빼앗을 수 없다.순환 대기 (Circular wait) : 각 프로세스는 순환적으로..
운영체제 · 스핀락
스핀락 (Spinlock) ✓ 정의 : 임계 구역에 진입이 불가능할 때, 진입 가능할 때까지 루프를 돌면서 진입을 재시도하는 방식으로 구현된 락✓ 임계 구역에 진입하기 위해서는 락(Lock)이 필요하기 때문에, 락을 획득할 때까지 해당 프로세스(스레드)가 돌고 있다(Spin)는 것을 의미한다.✓ 스핀락은 바쁜 대기(Busy waiting)의 한 종류이다.✓ 스핀락은 운영체제의 스케줄링을 지원받지 않기 때문에, 해당 프로세스(스레드)에 대한 Context switch가 일어나지 않는다. ✓ 장점 : 임계 구역 진입을 짧은 시간 내에 할 수 있다면, Context switch를 하지 않아도 되므로 효율적이다.✓ 단점 : 오랜 시간 동안 스핀락을 진행하고 있다면, 스레드의 대기 시간이 길어지므로 비효율적이다...
운영체제 · 세마포어, 뮤텍스
세마포어와 뮤텍스의 차이점 ✓ 세마포어 : Signaling mechanism / 일종의 카운터로서 크리티컬 섹션에 프로세스(스레드)가 동시에 N개 접근할 수 있다. 카운터 값이 0과 1로만 제한되면 Binary semaphore이며, 그 이상의 값을 가지면 Counting semaphore이다.✓ 뮤텍스 : Locking mechanism / 락(Lock)을 가진 하나의 프로세스(스레드)만 크리티컬 섹션에 접근할 수 있다. Binary semaphore로 구현될 수 있다. 세마포어 (Semaphore) ✓ 각 프로세스에 제어 신호를 전달하여 순서대로 작업을 수행하도록 하는 동기화 기법이다.✓ 세마포어 S는 P와 V 연산으로만 접근 가능한 카운터 변수이며, 0 이상의 값을 가질 수 있다.✓ S의 값이 0..
운영체제 · 프로세스 동기화
프로세스 동기화 (Process Synchronization) ✓ 정의 : 협력하는 프로세스 사이에서 실행 순서 규칙을 정하여 공유 자원의 일관성을 보장하는 것✓ 프로세스가 서로 협력하며 공유 자원을 사용하는 상황에서, 경쟁 조건이 발생하면 공유 자원을 신뢰할 수 없게 만들 수 있다. 이를 방지하기 위해 프로세스들이 공유 자원을 사용할 때 특별한 규칙을 만드는 것이 프로세스 동기화이다. ✓ 경쟁 조건 (Race Condition) : 여러 프로세스(또는 스레드)가 공유 자원에 동시에 접근할 때, 공유 자원에 대한 접근 순서에 따라 실행 결과가 달라질 수 있는 상황✓ 임계 구역 (Critical Section) : 여러 프로세스(또는 스레드)가 자원을 공유하는 상황에서, 하나의 프로세스(스레드)만 접근할 ..
운영체제 · CPU 스케줄링
CPU 스케줄링 (CPU Scheduling, Processor Scheduling) ✓ 정의 : CPU(프로세서)를 사용하려 하는 프로세스들 사이에서 우선순위를 관리하는 일✓ 작업 처리율과 CPU 이용률을 향상시키기 위해 필요한 기법이다.✓ 비선점 스케줄링과 선점 스케줄링으로 나뉜다. 비선점 스케줄링 (Non-preemptive Scheduling) ✓ 정의 : 어떤 프로세스가 사용 중인 CPU를 다른 프로세스가 강제로 빼앗아 사용할 수 없는 스케줄링✓ 일괄 처리 시스템에 적합하며, 응답 시간 예측이 쉬운 장점이 있다.✓ 중요한 작업(짧은 작업)이 중요하지 않은 작업(긴 작업)을 기다리는 경우가 발생할 수 있는 단점이 있다. ✓ FCFS 스케줄링 (First-Come First-Served Schedu..
운영체제 · 프로세스 스케줄링
프로세스 스케줄링 (Process Scheduling) ✓ 정의 : 멀티 프로그래밍 환경에서 사용되는 것으로, 프로세스들에게 자원 할당을 적절히 함으로써 시스템의 성능을 개선하는 것✓ CPU 이용률을 극대화하여 다수의 프로세스를 처리할 수 있다. 스케줄러의 종류 ✓ 장기 스케줄러 (Long-term Scheduler)잡 스케줄러(Job Scheduler)라고도 하며, 디스크에 있는 프로세스들을 메모리로 적재하는 역할을 한다.즉, 장기 스케줄링은 생성된 프로세스들 중 어떤 프로세스에 메모리를 할당하여 준비 큐(Ready Queue)로 보내는 것이다.Unix, Microsoft Windows 등의 시분할 시스템에는 장기 스케줄러가 없다. ✓ 단기 스케줄러 (Short-term Scheduler)CPU 스케줄..
운영체제 · 프로세스 간 통신
프로세스 간 통신 (IPC, Inter Process Communication) ✓ 정의 : 프로세스끼리 자원이나 데이터를 서로 주고받는 행위 또는 그에 대한 방법이나 경로✓ 프로세스는 본래 독립적이나, 상황에 따라 프로세스끼리 협력해야 하는 경우가 있다. 이 경우, 프로세스 간 자원/데이터 공유가 필요한데, 이때 필요한 것이 IPC이다. IPC가 필요한 이유 ✓ 정보 공유 (Information sharing) : 여러 사용자가 동일한 정보를 필요로 할 수 있다.✓ 계산 가속화 (Computation speedup) : 특정 작업(task)를 빠르게 실행하기 위해, 해당 작업을 부분 작업(서브 태스크)으로 나눠서 병렬로 실행하게 할 수 있다. ✓ 모듈성 (Modularity) : 특정한 시스템 기능을 ..
운영체제 · 문맥 교환 (컨텍스트 전환)
컨텍스트 전환 (Context Switch) ✓ 정의 : 하나의 프로세스가 CPU를 점유한 상태에서, 다른 프로세스가 CPU를 사용하게 만들기 위해, 현재 프로세스의 정보(Context)를 저장하고, 새로운 프로세스의 정보를 CPU에 적재하는 작업✓ Context Switch를 직역하면 '문맥 교환'이지만, '컨텍스트 스위치' 또는 '컨텍스트 전환'으로 부르는 편이 명확하다.✓ 프로세스의 Context는 프로세스 제어 블록(PCB)에 저장되어 있다.✓ 문제점 : Context Switching 중에는 CPU가 작업을 수행할 수 없기 때문에, 문맥 교환이 잦으면 오버헤드가 커진다. Context Switch의 시점 ✓ 멀티 태스킹✓ 인터럽트 핸들링✓ 유저 모드와 커널 모드 간 전환