OS
-
기아상태(Starvation)란?Computer Science/OS 2024. 4. 6. 17:22
기아상태(Starvation)는 멀티스레딩 환경에서 특정 스레드가 CPU 시간이나 필요한 자원을 충분히 할당받지 못해 원하는 작업을 수행하지 못하는 상태를 말합니다. 이는 일반적으로 우선순위가 높은 작업에 자원이 계속 할당되어 우선순위가 낮은 작업이 무한히 대기 상태에 머무르게 될 때 발생합니다. 1. 기아상태란? 기아상태는 시스템 내의 자원 할당 정책으로 인해 발생할 수 있습니다. 예를 들어, 특정 스레드나 프로세스가 자원을 오랜 시간 동안 독점하고 있을 때, 다른 스레드는 그 자원을 사용할 기회를 얻지 못할 수 있습니다. 특히, 멀티스레딩 환경에서 스레드에 우선순위를 할당하여 작업을 스케줄링할 때 기아상태가 발생하기 쉽습니다. 2. 기아상태 코드 예시 Java 예시: Java에서는 Thread 클래스..
-
메모리 구조(Memory Structure)란?Computer Science/OS 2024. 4. 5. 11:21
메모리 구조는 프로그램이 실행되면서 사용하는 메모리의 구성을 설명합니다. 이 구조는 일반적으로 코드 영역, 데이터 영역, 힙 영역, 스택 영역으로 나누어집니다. 각 영역은 특정 유형의 정보를 저장하며, 프로그램의 성능과 안정성에 직접적인 영향을 미칩니다. 1. 코드(Code) 영역 코드 영역은 프로그램이 실행되기 위해 CPU가 직접 읽어서 실행할 수 있는 기계어 코드가 저장되는 메모리 영역입니다. 이 영역에는 프로그램의 모든 함수와 명령어가 포함되어 있으며, 프로그램 실행 동안 변경되지 않습니다. 코드 영역은 읽기 전용이므로, 프로그램 실행 중에 이 영역의 내용을 변경하려고 시도하면 실행 시간 오류가 발생할 수 있습니다. 보안상의 이유로도 코드 영역은 보호되며, 코드 주입과 같은 공격을 방지하는 데 중요..
-
라이브락(Livelock)이란?Computer Science/OS 2024. 4. 4. 21:59
1. 라이브락이란? 라이브락은 프로세스가 '진행 중' 상태이지만 실제로는 어떠한 유용한 작업도 수행하지 않는 상태를 말합니다. 이는 프로세스가 상호작용하는 방식 때문에 발생하며, 특정 조건을 만족시키기 위해 반복적으로 상태를 변경하지만, 결국은 원하는 결과를 달성하지 못하는 경우에 발생합니다. 데드락과 달리, 라이브락 상태의 프로세스는 실행 중인 상태를 유지하지만, 유용한 일을 하지 못합니다. 2. 라이브락 예시코드 구현에 앞서 라이브락을 명확히 보여주는 코드 예시는 데드락보다 구현하기 어렵습니다. 라이브락의 상황을 설명하기 위해, 두 개의 스레드(또는 고루틴)가 서로의 상태 변경을 지속적으로 감지하고, 그에 따라 자신의 상태를 변경하는 예를 들 수 있습니다. 이 과정에서 양쪽 모두 진행을 멈추지 않고 ..