반응형

공부/OS 18

크리티컬 섹션(Critical Section)이란?

1. 크리티컬 섹션이란? 크리티컬 섹션은 공유 데이터에 액세스하는 코드 섹션입니다. 컴퓨터 프로그래밍에서 크리티컬 섹션은 원자 단위로 실행되어야 하는 코드 섹션 또는 프로그램의 일부를 의미합니다. 또한 두 개 이상의 스레드가 동시에 동일한 공유 데이터에 액세스하려고 하면 경쟁 조건이 발생할 수 있습니다. 그러므로 다른 스레드나 프로세스의 동시 실행으로 인해 중단되지 않아야 합니다. 크리티컬 섹션은 한 번에 하나의 스레드 또는 프로세스만 공유 리소스나 변수에 액세스하고 수정할 수 있도록 하여 경합 상태를 방지하고 데이터 무결성을 유지합니다. 만약 이를 유지하지 않을 경우 오류 및 예기치 않은 동작이 발생할 수 있습니다. 크리티컬 섹션은 한 번에 하나의 스레드만 실행하도록 설계된 코드 섹션입니다. 이렇게 하..

공부/OS 2023.06.10

멀티 프로세스와 멀티 스레드의 차이점

1. 멀티 프로세스와 멀티 스레드의 개념 멀티프로세싱과 멀티스레딩은 모두 여러 작업을 동시에 실행하는 방법입니다. 그러나 이를 달성하는 방법에는 차이가 있습니다. 멀티스레딩은 단일 프로세스 내에 여러 개의 스레드를 생성합니다. 스레드는 동일한 메모리 공간을 공유하지만 각 스레드에는 고유한 실행 스레드가 있습니다. 즉, 스레드는 동시에 실행될 수 있지만 동시에 다른 리소스에 액세스할 수는 없습니다. 멀티스레드 멀티스레드 시스템은 단일 프로세스 내에서 여러 스레드를 실행하여 동일한 메모리 공간을 공유합니다. 스레드는 프로세스보다 가볍기 때문에 더 효율적으로 생성하고 관리할 수 있습니다. 프로세스 내의 스레드는 메모리, 파일 설명자, 개방형 I/O 스트림과 같은 리소스를 공유하므로 데이터를 더 쉽게 통신하고 ..

공부/OS 2023.06.05

싱글 스레드와 멀티 스레드의 차이점

1. 싱글 스레드와 멀티 스레드의 차이점 싱글 스레드 프로그램은 실행 스레드가 하나만 있는 프로그램입니다. 즉, 프로그램은 한 번에 한 가지 작업만 수행할 수 있습니다. 반면에 멀티 스레드 프로그램은 실행 스레드가 여러 개 있습니다. 즉, 프로그램이 동시에 여러 가지 작업을 수행할 수 있습니다. 단일 스레드 단일 스레드 프로그램에는 실행 경로 또는 스레드가 하나만 있습니다. 프로그램의 명령은 선형적인 방식으로 순차적으로 하나씩 실행됩니다. 단일 스레드 프로그램은 여러 작업을 동시에 수행할 수 없습니다. 사용자 입력을 기다리거나 느린 I/O 장치에 액세스하는 등 차단 작업이 발생하면 작업이 완료될 때까지 전체 프로그램이 일시 중지됩니다. 단일 스레드 프로그램은 일반적으로 공유 데이터를 처리하기 위해 명시적..

공부/OS 2023.06.05

락(Lock)과 스레드(Thread)의 차이점

1. 락과 스레드의 차이점 스레드는 프로그램 내 실행 단위이며. 락은 한 번에 하나의 스레드만 공유 리소스에 액세스할 수 있도록 하는 메커니즘입니다. 락: 동시 프로그래밍에서 잠금(뮤텍스 또는 상호 제외라고도 함)은 공유 리소스에 대한 액세스를 제어하는 데 사용되는 동기화 메커니즘입니다. 한 번에 하나의 스레드 또는 프로세스만 공유 리소스에 액세스할 수 있도록 하여 데이터 경합을 방지하고 데이터 무결성을 유지합니다. 락은 상호 배타적 액세스를 제공합니다: 한 스레드가 잠금을 획득하면 리소스에 대한 독점적 소유권을 얻고 잠금이 해제될 때까지 다른 스레드가 리소스에 액세스하지 못하도록 차단합니다. 락은 경합 상태를 방지합니다: 잠금은 배타적 액세스를 강제함으로써 여러 스레드가 동시에 동일한 리소스에 액세스하..

공부/OS 2023.06.05

싱글 스레드(single thread)란?

1. 싱글 스레드란? 컴퓨터 과학에서 단일 스레드는 중앙 처리 장치(CPU)가 중단 없이 실행할 수 있는 명령어 시퀀스를 의미합니다. 명령어가 차례로 순차적으로 실행되는 프로그램 내의 단일 제어 흐름을 나타냅니다. 이는 프로세스가 취할 수 있는 실행 경로입니다. 단일 스레드 프로그램에는 실행 스레드가 하나만 있으므로 한 번에 하나의 작업만 수행할 수 있습니다. 2. 싱글 스레드의 특징 실행 흐름: 단일 스레드는 프로그램의 제어 흐름에 따라 순차적으로 명령어를 실행합니다. 각 명령은 다음 명령으로 넘어가기 전에 실행됩니다. 이러한 선형 실행을 통해 간단하고 예측 가능한 작업 순서가 가능합니다. 작업 차단: 단일 스레드가 사용자의 입력을 기다리거나 느린 I/O 장치에 액세스하는 등 블로킹 작업이 발생하면 일..

공부/OS 2023.06.05

뮤텍스(Mutex)와 세마포어(Semaphores)의 차이점

1. 뮤텍스와 세마포어의 차이 뮤텍스와 세마포어는 모두 멀티스레드 애플리케이션에서 공유 리소스에 대한 액세스를 조정하는 데 사용되는 동기화 기본 요소입니다. 하지만 서로 다른 목적을 가지고 있으며 구현 방식도 다릅니다. 다음은 뮤텍스와 세마포어의 주요 차이점을 요약한 표입니다 기능 뮤텍스 세마포어 목적 한 번에 하나의 스레드만 공유 리소스에 액세스할 수 있도록 보장 제한된 수의 리소스에 대한 액세스 제어 구현 플래그 변수 사용 카운터 변수 사용 동작 잠긴 뮤텍스를 얻으려는 스레드를 차단 한계에 도달한 세마포어를 획득하려는 스레드를 차단 사례 경쟁 조건을 방지하는 데 사용 제한된 리소스에 대한 액세스를 제어하는 데 사용 뮤텍스와 세마포어 중 어떤 것을 사용할지는 애플리케이션의 특정 요구사항에 따라 달라집니..

공부/OS 2023.06.04

뮤텍스(Mutex)란?

1. 뮤텍스란? 컴퓨터 과학에서 뮤텍스는 여러 스레드 또는 프로세스의 동시 액세스로부터 공유 리소스를 보호하는 데 사용되는 동기화 기본 요소입니다. 뮤텍스는 한 번에 하나의 스레드만 공유 리소스에 액세스할 수 있도록 하여 경합 상태를 방지하고 데이터 무결성을 유지합니다.이를 통해 여러 스레드가 동시에 동일한 리소스에 액세스하여 조정 없이 수정하려고 시도할 때 발생할 수 있는 경쟁 조건을 방지할 수 있습니다. 2. 뮤텍스의 개념 상호 제외: 뮤텍스의 주요 목적은 상호 배제를 시행하는 것입니다. 스레드 또는 프로세스가 공유 리소스에 대한 독점적 액세스를 획득할 수 있는 메커니즘을 제공합니다. 스레드나 프로세스가 뮤텍스를 잠그면 해당 스레드나 프로세스는 리소스에 대한 독점적 소유권을 얻게 되며, 뮤텍스가 해제..

공부/OS 2023.06.04

세마포어(semaphore)란?

1. 세마포어란? 컴퓨터 과학에서 세마포어는 다중 스레드 또는 다중 프로세스 환경에서 공유 리소스에 대한 동시 액세스를 관리하는 데 사용되는 동기화 기본 요소입니다. 세마포어는 스레드 또는 프로세스가 경쟁 조건을 피하고 상호 배제를 보장하기 위해 통신하고 활동을 조정할 수 있도록 하는 신호 메커니즘입니다. 또한 멀티태스킹 운영 체제와 같은 동시 시스템에서 중요한 섹션 문제를 방지하는 데 사용되는 변수 또는 추상 데이터 유형입니다. 2. 세마포어의 속성 카운팅 세마포어: 카운팅 세마포어는 음수가 아닌 값을 취할 수 있는 정수 변수입니다. 사용 가능한 리소스의 수 또는 공유 리소스에 동시에 액세스할 수 있는 스레드 또는 프로세스의 최대 수를 나타냅니다. 세마포어의 초기 값은 사용 가능한 최대 리소스 수로 설..

공부/OS 2023.06.03

운영 체제(OS)란?

1. 운영 체제란? 운영체제(OS)는 컴퓨터 시스템의 하드웨어와 그 시스템에서 실행되는 소프트웨어 애플리케이션 사이의 중개자 역할을 하는 소프트웨어 구성 요소입니다. 운영 체제는 컴퓨터 시스템의 필수적인 부분이며 프로그램이 실행될 수 있는 환경을 제공하고 시스템의 하드웨어 리소스를 관리합니다. 운영 체제는 애플리케이션 실행을 위한 중요한 기반 역할을 하며 사용자와 기본 컴퓨터 하드웨어 간의 상호 작용을 용이하게 합니다. 2. 운영 체제의 주요 개념 프로세스 및 스레드 관리: 운영 체제는 프로세스를 생성, 예약 및 종료하여 프로그램 실행을 관리합니다. 프로세스는 실행 중인 프로그램의 인스턴스이며, 운영 체제는 리소스 할당, 메모리 관리, 여러 프로세스의 실행 조정과 같은 작업을 처리합니다. 프로세스 내에서..

공부/OS 2023.06.03

프로세스(Process)와 쓰레드(Thread)의 차이점

운영 체제에서는 프로세스와 스레드 모두 코드를 실행하고 작업을 수행하는 데 사용되지만, 몇 가지 점에서 차이가 있습니다. 1. 프로세스(Process)의 개념 프로세스는 컴퓨터에서 실행 중인 프로그램의 인스턴스입니다. 프로세스는 프로그램 코드와 데이터를 포함하는 메모리 공간과 CPU 시간, 파일, 네트워크 연결 및 기타 리소스를 포함한 시스템 리소스 집합으로 구성됩니다. 각 프로세스에는 고유한 메모리 공간이 있으므로 다른 프로세스의 메모리에 직접 액세스할 수 없습니다. 2. 쓰레드(Thread)의 개념 반면 스레드는 프로세스의 하위 집합입니다. 스레드는 프로세스 내에서 독립적인 실행 경로입니다. 프로세스 내에서 여러 스레드가 동시에 실행될 수 있으며 프로세스와 동일한 메모리 공간 및 시스템 리소스를 공유..

공부/OS 2023.04.09

프로세스(Process)란?

1. 프로세스란? 컴퓨터 운영 체제에서 프로세스는 현재 실행 중인 프로그램으로 정의할 수 있습니다. 프로세스는 운영 체제의 기본 개념이며 컴퓨터 시스템의 기본 작업 단위입니다. 컴퓨터에서 실행되는 모든 프로그램은 하나 이상의 프로세스를 생성합니다. 프로세스는 프로그램의 명령어, 데이터, 현재 실행 상태 등 프로그램을 실행하는 데 필요한 모든 정보를 담고 있는 컨테이너입니다. 각 프로세스에는 고유한 주소 공간이 있으므로 다른 프로세스의 메모리에 직접 액세스할 수 없습니다. 2. 프로세스의 구성 요소 프로세스에는 다음과 같은 여러 구성 요소가 있습니다: 프로그램 코드: 프로세스에서 실행되는 코드입니다. 여기에는 프로세스가 작업을 수행하는 데 필요한 지침과 데이터가 포함됩니다. 데이터: 프로세스가 실행하는 동..

공부/OS 2023.04.09

단편화(Fragmentation)란?

1. 단편화란? 단편화는 메모리가 사용할 수 없는 작은 조각으로 나뉘어져 메모리를 비효율적으로 사용할 때 발생하는 메모리 관리의 일반적인 문제입니다. 조각화는 운영 체제에서 사용하는 물리적 메모리(RAM)와 가상 메모리 모두에서 발생할 수 있습니다. 2. 단편화의 종류 단편화에는 외부 단편화와 내부 단편화의 두 가지 유형이 있습니다. 외부 단편화는 할당된 메모리 블록 사이에 사용되지 않는 메모리의 작은 간격이 있어 새 프로세스에 연속된 큰 메모리 블록을 할당하기 어려울 때 발생합니다. 외부 단편화는 압축 및 페이징과 같은 메모리 할당 기술을 사용하여 줄일 수 있습니다. 압축은 할당된 메모리 블록을 이동하여 인접한 메모리 위치를 차지하고 그 사이에 간격을 두지 않는 것입니다. 할당된 메모리 블록을 모두 이..

공부/OS 2023.03.04

세그멘테이션(Segmentation)이란?

1. 세그멘테이션이란? 세그멘테이션은 UNIX 및 그 파생 제품을 포함한 일부 운영 체제에서 사용하는 또 다른 메모리 관리 기법입니다. 세그멘테이션에서 메모리는 가변 크기의 세그먼트로 나뉘며, 각 세그먼트는 프로그램 또는 데이터의 논리적 단위를 나타냅니다. 각 세그먼트에는 프로그램 코드, 스택, 힙 또는 데이터와 같은 특정 유형의 데이터 또는 코드가 포함됩니다. 메모리가 고정된 크기의 페이지로 분할되는 페이징과 달리 세그멘테이션의 세그먼트 크기는 프로그램의 필요에 따라 달라질 수 있습니다. 세그멘테이션은 다양한 메모리 요구 사항을 가진 프로그램을 보다 효율적으로 처리할 수 있으므로 페이징보다 더 유연한 기술입니다. 운영 체제는 세그먼트 테이블을 유지 관리하여 사용 가능한 메모리 세그먼트와 현재 사용 중인..

공부/OS 2023.03.04

페이징(Paging)이란?

1. 페이징이란? 페이징은 운영 체제에서 컴퓨터 시스템의 메모리를 관리하고 구성하는 데 사용하는 메모리 관리 기법입니다. 페이징은 이전 메모리 관리 기법에서 사용된 가변 크기 파티션으로 인한 메모리 조각화 문제를 해결하는 데 사용됩니다. 페이징에서 메모리는 일반적으로 4KB에서 64KB 범위의 특정 크기의 "페이지"라고 하는 고정 크기 청크로 나뉩니다. 그런 다음 페이지는 시스템에 데이터와 프로그램을 저장하는 데 사용됩니다. 운영 체제는 페이지 테이블을 유지 관리하여 사용 가능한 메모리 페이지와 현재 사용 중인 페이지를 추적합니다. 페이지 테이블은 프로세스에서 사용하는 가상 주소를 메모리에 있는 페이지의 실제 주소에 매핑하는 데이터 구조입니다. 페이지 테이블의 각 항목에는 페이지의 물리적 주소, 상태(예..

공부/OS 2023.03.04

데드락(Deadlock)이란?

1. 데드락(deadlock)의 개념 데드락(교착 상태)은 멀티프로세스나 멀티스레드 환경에서 발생하는 문제 중 하나입니다. 데드락이란 각 프로세스나 스레드가 서로 상대방이 가진 자원을 사용하고 있기 때문에 더 이상 진행할 수 없는 상태를 말합니다. 즉, 각 프로세스가 다른 프로세스가 계속 진행하기 위해 필요한 리소스를 보유하고 있기 때문에 순환 의존성이 발생하여 어느 프로세스도 진행할 수 없는 상황이 발생합니다. 2. 데드락(deadlock)의 예제 데드락의 간단한 예는 두 프로세스인 A와 B가 모두 공유 리소스에 액세스해야 하지만 서로 다른 순서로 리소스를 획득하고 보유하는 시스템에서 발생할 수 있습니다. 프로세스 A가 리소스 X를 획득한 후 리소스 Y를 획득하려고 하고, 프로세스 B가 리소스 Y를 획..

공부/OS 2023.03.02

멀티 쓰레드(multi-threading)란 무엇인가?

1. 멀티 쓰레드(multi-threading)란 무엇인가? 멀티 스레딩은 단일 프로세스 내에서 서로 다른 실행 스레드를 동시에 실행할 수 있는 프로그래밍 기법입니다. 스레드는 운영 체제에서 독립적으로 스케줄링할 수 있는 프로그램 내의 가벼운 실행 단위입니다. 여러 스레드를 사용하면 프로그램이 여러 작업을 동시에 수행하고 CPU 시간 및 메모리와 같은 사용 가능한 리소스를 더 잘 활용할 수 있습니다. 2. 멀티 쓰레드 동작 방식 멀티 스레드는 하나의 프로세스 내에서 여러 개의 스레드를 동시에 실행합니다. 또한 프로그램에서 각 스레드는 자체 프로그램 카운터, 스택 및 레지스터를 갖지만, 동일한 프로세스의 다른 스레드와 동일한 메모리 공간을 공유합니다. 따라서, 각 스레드는 다른 스레드에 의해 영향을 받을 ..

공부/OS 2023.03.01

멀티 프로세스(multi-process)란?

1. 멀티 프로세스(multi-process)란? 컴퓨팅에서 멀티 프로세스 시스템은 컴퓨터 시스템에서 여러 프로세스 또는 작업을 동시에 실행할 수 있는 시스템입니다. 이는 여러 개의 프로세서를 사용하거나, 단일 프로세서에서 여러 개의 프로세스를 번갈아가며 실행하여 구현됩니다. 각 프로세스는 자체 주소 공간을 가지므로 다른 프로세스의 실행을 방해하지 않고 독립적으로 실행할 수 있습니다. 멀티 프로세스 시스템에서는 운영 체제가 프로세스의 스케줄링을 관리하고 필요에 따라 메모리 및 CPU 시간과 같은 시스템 리소스를 각 프로세스에 할당합니다. 이를 통해 시스템 리소스를 효율적으로 활용할 수 있으며 전반적인 시스템 성능을 향상시킬 수 있습니다. 또한 멀티 프로세스는 또한 안정성을 향상시킵니다. 하나의 프로세스가..

공부/OS 2023.02.27

메모리 단편화란?

1. 메모리 단편화 메모리 단편화는 컴퓨터 시스템의 메모리가 사용되지 않은 공간의 작은 조각으로 분할될 때 발생합니다. 이는 운영 체제가 메모리를 다양한 응용 프로그램 및 서비스에 동적으로 할당 및 할당 해제하여 시스템 전체에 흩어져 있는 사용되지 않은 메모리의 작은 조각을 생성할 때 발생합니다. 메모리 단편화는 대규모 메모리 할당에 사용할 수 있는 연속 메모리의 양을 줄여 시스템이 할당할 여유 메모리 블록을 검색하는 데 더 많은 시간을 소비하게 하므로 시스템 성능에 상당한 영향을 미칠 수 있습니다. 이로 인해 큰 메모리 블록을 할당해야 하는 응용 프로그램의 대기 시간이 길어지고 메모리 부족으로 인해 시스템 안정성이 저하될 수도 있습니다. 메모리 단편화의 영향을 완화하기 위해 많은 운영 체제는 단편화를 ..

공부/OS 2023.02.11
반응형