CS & Network/운영체제(OS) & 컴퓨터구조

[운영체제(OS)] 데드락(DeadLock), 교착상태 해결방법 -2

저번 시간에는 데드락이 무엇인지, 데드락이 왜 발생하는지, 데드락이 발생하기 위해서는 어떤 조건들이 갖춰져야 하는지에 대해 살펴봤습니다. 이번 시간에는 데드락이 발생했을 때 해결할 수 있는 방법들을 알아보려고 합니다. 0. 데드락 처리 방법 데드락 처리 방법은 약 3가지로 분류할 수 있습니다. 1. Ignore - 무시하자 말 그대로 다 무시해!입니다. 운영체제가 데드락을 전혀 신경 쓰지 않는 방법이죠. 따라서 개발자가 프로그램을 개발할 때 데드락이 걸릴 가능성을 하나부터 열까지 다 신경 써서 차단해야 하죠. 2. Deadlock Prevention - 데드락이 절대 발생하지 않게 해야지! 말 그대로 데드락이 발생될 가능성을 아예 예방하자!라는 의미입니다. 어떻게 예방할까요? 바로 데드락이 발생될 가능..

2022.01.16 게시됨

CS & Network/운영체제(OS) & 컴퓨터구조

[운영체제(OS)] 데드락(DeadLock), 교착상태 란? - 1

저번 포스팅에서는 동기화 이슈, 임계 구역(critical section)에 대해서 알아보고, 해결할 수 있는 방법들에서 대해서 알아보았습니다. 이번 시간에는 동기화 이슈처럼 비슷하게 공유 자원이 한정되어 있을 경우, 이 자원을 사용하고 싶은 프로세스들이 여러 개 있을 때 발생하게 되는 교착 상태, 데드락(Dead lock)에 대해서 정리해보려고 합니다. 0. 데드락(Dead lock), 교착 상태란? 교착 상태를 직관적으로 이해해보면 위 사진처럼 자동차 여러 대가 혼잡한 상황에서 먼저 가겠다고 양보하지 않고 직진만 하고 있는 상황이라고 할 수 있습니다. 생각만 해도 아찔하죠. 그렇다면 정의를 한번 볼까요? In an operating system, a deadlock occurs when a proce..

2022.01.14 게시됨

CS & Network/운영체제(OS) & 컴퓨터구조

[운영체제(OS)] 동기화(Synchronization) 와 임계구역 문제(Critical Section Problem) - 2

0. 들어가면서 저번 시간에는 운영체제에서의 동기화가 무엇인지 살펴보았고, 임계 구역 문제가 무엇인지 알아봤습니다. 이번 시간에는 임계구역을 어떻게 관리하는지, 동기화 문제를 어떻게 해결하는지 방법들을 알아보려고 합니다. 1. 임계구역 문제 SW 해결 방법들(Software-only-solution) 1 - 1. 먼저 프로세스가 두 개일 때의 해결 방법에 대해서 알아보겠습니다. //Process P1 do { while(turn!=i); //critical section turn = j //remainder section } 위의 코드를 살펴보겠습니다. turn이라는 공유 변수는 어떤 프로세스/쓰레드에 자원이 할당될지 넣어놓는 변수입니다. turn 변수가 자기 자신인 i를 가리키기 전까지 critical..

2022.01.10 게시됨

CS & Network/운영체제(OS) & 컴퓨터구조

[운영체제(OS)] 동기화(Synchronization) 와 임계구역 문제(Critical Section Problem) - 1

0. 동기화 문제란? 저번에 공부했듯이 컴퓨터 메모리에는 동시에 여러 프로세스가 존재하는데, 존재하는 프로세스들이 하나의 공유 메모리나 또 다른 프로세스에 접근할 때는 매우 신중해야 합니다. 저번에도 한 번 언급했었던 내용인데, 두 개의 프로세스 A, B 가 shared memory를 이용해서 데이터를 주고받는 과정에서 A 가 쓰면 그다음 B가 읽어 가야 하는데 A가 이미 쓴 메모리 영역인지, 이제 써야 할 메모리 영역인지 알 수가 없습니다. 때문에 A가 B에 '나 여기 다 썼다'라고 알려줘야 B가 읽어 갈 수 있죠. 프로세스 동기화의 핵심은 여러 프로세스가 공유하는 자원들의 일관성을 유지하는 것입니다. 하나의 공유자원에 여러 프로세스들이 동시에 접근할 때, 프로세스들의 순서를 정해서 동기화가 잘 이루어..

2022.01.09 게시됨