728x90 프로그래밍/운영체제9 [운영체제] Deadlock 들어가며Deadlock 현상은 Synchronization으로 인해 발생한다. Race Condition을 해결하기 위해 Synchronization이 필요하기 때문에, 우리는 Deadlock을 방지하고 해결할 수 있는 방법을 찾아야 한다. Deadlock서로가 서로에 의해 어느 프로세스도 실행되지 못하는 상황을 의미하며 한국어로는 교착 상태라고 한다. Dining Philosphier Problem을 떠올리면 된다. Deadlock의 성립 조건Mutual Exclusion : 공유 자원에 대해 한번에 하나의 프로세스만 접근한다.Hold and Wait : 자원을 쥐고있더라도 필요한 모든 자원을 얻은 후에 실행한다.No preemption : 스케쥴러에 의해 실행 권한을 빼앗기지 않는다.Circular .. 2024. 8. 14. [운영체제] Synchronization Examples 들어가며동기화가 필요한 상황에 동기화를 어떻게 적용했는지 알아봅시다.The Bounded-Buffer Problem (Producer-Consumer Problem)구성 요소N size buffer : 크기가 유한한 버퍼Producer thread : 버퍼에 데이터를 추가하는 쓰레드Consumer thread : 버퍼의 데이터를 소모하는 쓰레드 문제 상황버퍼가 비었을 때 Consumer thread가 데이터를 소모하려고 하거나, 버퍼가 가득 차있을 때 Producer thread가 데이터를 추가하는 것을 막아야 한다. 해결책당연한 이야기지만, 버퍼가 가득 차 있을 때는 Producer thread가 데이터를 추가하지 못하도록 막고, 버퍼가 비어있을 때는 Consumer thread가 데이터를 사용하지 못.. 2024. 8. 11. [운영체제] Synchronization 배경 지식Race Condition두 개 이상의 job이 Shared Memory의 데이터에 동시에 접근하여 실행 결과가 모호해지는 상태를 의미한다. 동시에 접근한다는 것의 의미프로그래머가 의도한 실행 절차가 끝나기 전에 해당 데이터를 사용하는 다른 코드가 중간에 실행되는 것을 의미한다.따라서 Race Condition은 Multicore 환경뿐만 아니라 Single-core 환경에서도 발생할 수 있다. 실행 순서가 보장되어 있지 않은 경우 모든 Shared Memory에 대해 Race Condition이 발생할 수 있다. Race Condition이 발생할 수 있는 Shared Memory 환경MultithreadIPC through shared MemoryKernel spaceSynchronizati.. 2024. 8. 2. [운영체제] Real-time CPU Scheduling Real-time OS에서 가장 중요한 일은 시간 안에 작업을 수행하여 즉각적으로 반응하는 것입니다.이로 인해, Real-time OS에서는 deadline내에 모든 작업을 수행하기 위해서 선점형 우선순위 기반 스케쥴링을 합니다. Real-time OS의 프로세스의 새로운 특징주기성(periodic) : 주기적으로 반복되어 실행됨 processing time (t) : CPU 사용 시간deadline (d) : 마감 시간period (p) : 반복 주기t Rate Montonic Scheduling선점형 우선순위 기반 스케쥴링 방법이며,CPU burst time이 짧을 수록 높은 우선순위를 가지는 스케쥴링 방법입니다.deadline 내에 실행되지 못한 작업은 다음 주기에 그 작업을 완료합니다. 문제점작.. 2024. 7. 23. [운영체제] Multiprocessor Scheduling CPU 스케쥴링 알고리즘을 학습할 때는 싱글 코어 프로세서를 가정했습니다.멀티 코어 프로세서는 어떻게 스케쥴링할까요? 멀티 코어 스케쥴링 방법Asymmetric multiprocessing (AMP) 하나의 프로세서에 특정한 역할을 부여하는 방식.해당 역할이 부여된 프로세서를 Master라고 하며 스케쥴링, I/O 작업 등을 전담합니다.Master 프로세서에 많은 역할이 가중되면 시스템 전체의 속도가 같이 느려질 수 있습니다. Symmetric multiprocessing (SMP)모든 프로세서가 동일한 역할을 수행하는 방식.각 코어마다 self-scheduling이 필요합니다.일반적으로 SMP 아키텍쳐를 사용합니다. SMP에 대해 더 다뤄보도록 하겠습니다. SMP에서는 코어가 여러개이기 때문에 각 코어.. 2024. 7. 23. [운영체제] CPU Scheduling CPU Scheduling이란 무엇인가CPU Scheduling이란 Ready Queue에 존재하는 작업들의 CPU 사용 시점을 결정하는 과정을 의미합니다.멀티 태스킹을 위해 필요한 운영 체제의 핵심 기능이며 효율적인 CPU 사용을 위한 다양한 스케쥴링 알고리즘이 있습니다. CPU SchedulerCPU Scheduling을 수행하기 위한 소스코드 모듈을 의미합니다.Ready Queue에 존재하는 작업들 중 다음에 실행할 작업을 선택합니다. DispatcherCPU Scheduler 중 context-switch를 담당하는 소스코드 모듈을 의미합니다.CPU Scheduler에 의해 선택된 작업에게 CPU의 제어권을 넘깁니다. (dispatch) 스케쥴링의 두 가지 방식1. 자진 반납 (Non-preemp.. 2024. 7. 20. [운영체제] 쓰레드 (Thread) 쓰레드 (Thread)란 무엇인가쓰레드란 regiseter, pc, stack으로 구성된 CPU Scheduling의 가장 최소 단위 입니다.동일 프로그램을 두 개 이상 실행하는 경우 자원을 효율적으로 사용하기 위해 개발되었습니다.한 프로세스 내에 다수의 쓰레드가 존재할 수 있으며, 프로세스 내의 일부 영역을 공유함으로써 컴퓨터 자원을 효율적으로 사용할 수 있습니다. 공유 하는 영역textdataheapOS resource공유 하지 않는 영역stackregisterpc(program counter) 멀티 쓰레드의 장점(1) 자원 공유 (Resource Sharing)멀티 프로세스를 사용하는 것보다 시스템 자원 소모량을 줄일 수 있고쓰레드끼리는 데이터나 heap영역을 통해 소통할 수 있기 때문에 IPC (.. 2024. 7. 20. [운영체제] 프로세스 (Process) Process란 무엇인가프로세스란 실행 중인 한 프로그램을 의미하며, 쓰레드(Thread) 다음으로 큰 실행 단위입니다.단위의 크기를 따진다면, 프로그램 > 프로세스 > 쓰레드 라고 볼 수 있습니다.job이나 task라는 이름으로도 불립니다.각 프로세스는 독립적이며 한 프로세스에서 다른 프로세스에 접근하는 것은 금지되어 있습니다. Process의 메모리 구조한 프로세스는 다음과 같은 영역들로 구성되어 있습니다.Text (Code) : 기계어 집합Data : 전역 변수 영역Heap : 동적 할당 변수 영역Stack : 지역 변수 영역 PCB (Process Control Block)PCB란 Kernel Process에 저장되는 프로세스의 정보를 뜻합니다.Kernel Process 또한 일반적인 프로세스와.. 2024. 7. 19. [운영체제] OS란 무엇인가 OS란 무엇일까OS란 Hardware Interface이다.OS는 사용자와 프로그램이 컴퓨터 자원을 사용할 수 있도록 중개하는 시스템 소프트웨어입니다.사용자에게는 User Interface를 제공하며, Kernel이라는 프로그램을 통해 프로그램의 하드웨어 사용을 관리합니다. (1) User InterfaceOS는 사람이 컴퓨터를 조작할 수 있도록 User Interface; UI를 제공합니다.GUI ( Graphical User Interface ) : 그래픽을 이용하여 직관적으로 컴퓨터를 조작하는 인터페이스이다. Windows, MacOS 등 대중적인 운영체제에서 주로 사용합니다.CLI ( Command Line Interface) : 명령어를 통해 컴퓨터를 조작하는 인터페이스이다. 전문적인 조작이.. 2024. 7. 14. 이전 1 다음 728x90