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 게시됨

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

[운영체제(OS)] CPU스케쥴링(CPU Scheduling) - 1

0. CPU 스케쥴링을 공부하기 전, 스케쥴러에 대해서 알아보고 가겠습니다. 우리가 흔히 얘기하는 스케쥴러 는 short term scheduler을 의미합니다. 그럼 long term scheduler도 있을까요? 물론입니다. 예전에는 스케쥴러를 long term , short term 스케쥴러가 나눠져 있었습니다. 그럼 long term은 왜 사용하지 않고 short term 만 남았는지 한 번 알아보겠습니다. 스케쥴러는 Long-term Scheduler, Short-term Scheduler, Medium-term Scheduler, 3개로 나눌 수 있는데요, 먼저 Long-term scheduler 에 대해서 알아보겠습니다. Long-term scheduler 는 하드 디스크에서 메모리로 프로세..

2021.12.31 게시됨

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

[운영체제(OS)] 쓰레드(Thread)와 멀티 쓰레드 프로그래밍(Multi Thread Programming) 이란?

지난 시간에는 프로세스와 컨텍스트 스위치에 대해서 알아봤습니다. 다시한번 정리해보면 프로세스는 '실행 중인 프로그램' 이라고 할 수 있죠. 하나의 프로그램에서 여러 가지 일을 동시에 실행한다면 일 처리를 위해 부모 프로세스는 자식 프로세스를 계속 생성하고 없애고를 반복할텐데요, 생성하고 없애는 과정에서 자원의 공유와 비용이 문제가 생길 수 있습니다. 그렇다면 프로세스를 생성하지 않고 어떻게 자원 공유를 쉽게 효율적으로 할 수 있을까요? 여기서 바로 쓰레드가 나옵니다. 쓰레드, 멀티쓰레드 프로그래밍 이란? 쓰레드는 프로세스의 실행 단위입니다. 프로세스와 마찬가지로 CPU의 작업 단위 중 하나이지만 프로세스와는 다르게 굉장히 가볍습니다. 하나의 프로세스는 여러개의 쓰레드로 구성이 가능하고, 같은 프로세스 내..

2021.12.22 게시됨