전체 글152 동기화(Synchoronization) 목차 동기화(Synchoronization) 동기화란? 동기화는 여러 프로세스나 스레드가 공유 자원에 동시에 접근할 때 발생할 수 있는 문제들을 해결하기 위한 방법입니다. 동기화에는 실행 순서 제어를 위한 동기화와 상호 배제(mutual exclusion)를 위한 동기화가 있습니다. 실행 순서 제어를 위한 동기화 Writer 프로세스는 Book.txt 파일에 값을 저장하는 프로세스이고, Reader 프로세스는 Book.txt 파일에 저장된 값을 읽어 들이는 프로세스라고 가정해 보겠습니다. 이럴 경우, 반드시 Writer 프로세스가 Reader 프로세스보다 먼저 실행되어야지 Reader 프로세스가 올바르게 Book.txt 파일의 값을 읽어올 수 있습니다. 상호 배제(mutual exclusion)를 위한 .. 2024. 4. 4. CPU 스케줄링 목차 CPU 스케줄링 CPU 스케줄링은 운영 체제가 여러 프로세스 또는 스레드가 CPU를 공유하여 사용할 수 있도록 관리하는 메커니즘입니다. CPU 스케줄링의 목적은 CPU 사용률을 최대화하고, 시스템 또는 사용자의 요구 사항에 맞춰 작업 처리 시간을 최적화하는 것입니다. CPU bound process , I/O bound process 일반적으로 프로세스는 CPU 작업과 I/O 작업을 반복하며 실행됩니다. CPU 버스트(burst) : CPU를 이용하는 작업 I/O 버스트(burst) : I/O를 기다리는 작업 각 프로그램마다 CPU 버스트와 I/O 버스트가 차지하는 비율이 균일하지 않습니다. 그중 한 부분의 비율이 유독 높은 프로세스를 CPU Bound process와 I/O bound proces.. 2024. 4. 3. 멀티프로세스와 멀티스레드 목차 멀티프로세스(multiprocess)와 멀티스레드(multithread) 멀티프로세스와 멀티스레드 방식으로 프로그래밍을 진행하게 되면 코어가 여러 개일 경우 병렬성을 가집니다. (컴퓨터 환경이 단일 코어일 경우에는 동시성만 가집니다.) 참고 : 병렬성, 동시성 개념 멀티프로세스 : 여러 프로세스를 동시에 실행하는 것 멀티스레드 : 여러 스레드로 하나의 프로세스를 동시에 실행하는 것 프로세스끼리는 기본적으로 자원을 공유하지 않지만, 스레드끼리는 같은 프로세스 내의 자원을 공유합니다. 멀티프로세스 멀티프로세스 프로세스를 fork하여 같은 작업을 하는 동일한 프로세스 두 개를 동시에 실행하면 코드 영역, 데이터 영역, 힙 영역 등을 비롯한 모든 자원이 복제되어 메모리에 적재됩니다. 한 마디로 PID, 저.. 2024. 4. 2. Python 메모리 관리 기법(Garbage Collection) 목차 Python 메모리 관리 기법 프로세스의 메모리 안의 힙 영역에서는 메모리 공간을 할당하면 언젠가는 해당 공간을 반환해주어야합니다. C/C++은 메모리를 직접 해제해줘야하지만 Python이나 Java의 경우 Garbage collection 방식을 적용하여 자동으로 쓰레기 메모리들을 정리해줍니다. 참고 : 파이썬의 장점 컴파일 안해도 됨. 메모리 관리 안해도 됨. (Garbage collection) 간단하다. Python의 Garbage collection 방식에는 참조 카운팅(Reference counting)방식과 Garbage Collector(GC) 방식이 있습니다. 이를 이용하여 메모리 관리를 진행합니다. 참조 카운팅(Reference counting) 참조 카운팅방식은 객체에 대한 참조.. 2024. 3. 31. 이전 1 ··· 7 8 9 10 11 12 13 ··· 38 다음