반응형 Computer Science/운영체제13 Synchronization 1 멀티프로그래밍, 멀티쓰레드 환경에서는 다양한 문제가 발생할 수 있다. 예를 들어 프로세스들이 공유 메모리에 접근하려고 하기 때문에 실행 때마다 다른 결과가 나오는 race condition이 발생할 수 있다. 이같은 문제를 해결하기 위한 방법을 synchronization이라고 한다. synchronization이 필요한 이유를 예시로도 한번 살펴보자. Ex 1. Bank Account fig 1-1을 보자. 계좌(acct_t)들이 있고 이 계좌는 각각 잔액(balance)정보가 있다. 또 인출(trans_t)정보들이 있고 그 안에는 id(user account)나 amount(얼마를 인출할건지)등의 정보들이 있다. 그리고 이 잔액을 인출하는 debit 함수가 있다. 이를 보면 이 예제는 계좌의 잔액을 .. 2022. 4. 19. Scheduling 2 이전 글에서는 싱글코어 CPU가 여러 프로세스들을 다루는 방법을 알아봤다. 하지만 우리가 현재 쓰고 있는 컴퓨터들은 대부분 멀티코어를 사용한다. 그렇기 때문에 지금부터는 멀티코어에서 일어나는 스케줄링에 대해 알아볼 것이다. NUMA and CPU Scheduling fig 7-1을 보면 CPU를 볼 수 있는데(왼쪽 0, 오른쪽 1) 멀티코어는 CPU내부에 코어가 여러개 존재하는 것이다. 그리고 각 CPU는 직접적으로 연결된 메모리가 존재한다. 여기서 더 큰 스케일의 컴퓨터라면 이러한 CPU가 2개 이상 설치될 수도 있다. 이러한 상황에서 CPU의 코어는 인접한 다른 CPU의 메모리에도 접근할 수 있다. 하지만 이때의 속도는 직접적으로 연결된 메모리 접근속도보다 당연히 더 느릴 것이다. 이런 경우를 Non.. 2022. 4. 12. Scheduling 1 저번 글은 시스템 프로그래밍에서도 대부분 다뤘던 내용이라서 중간에 급하게 끝냈었다. 프로세스나 쓰레드는 CPU 자원을 공유하여 프로그램이 동시에 실행되는 것 같은 효과를 얻는다고 했었다. 이 글에서는 어떻게 CPU를 잘 사용하여 전체 시스템에 이로운 방향으로 갈 수 있는지 알아볼 것이다. CPU Scheduling 프로세스를 전환할 때 두 가지에 대해 생각해야 하는데 하나는 컨텍스트 스위칭 같이 '어떻게' 전환할 것인가(메커니즘)이고 다른 하나는 언제 전환할 것인가(정책)이다. CPU 스케줄링은 실행 가능한 프로세스 집합을 제공하여 다음에 실행할 프로세스를 결정하는 정책이다. 이것에 대해 어떻게 접근할지 살펴보자. Basic Approaches Non-preemptive scheduling 여기서 pre.. 2022. 4. 7. Processes & Threads 오늘 배울 내용은 프로세스에 관한 내용이다. 시스템 프로그래밍(참고)에서도 다뤘던 주제인지라 겹치는 내용이 꽤 있기 때문에 어느정도 진행하다가 뒷 내용은 생략할 것이다. What is a Process? 프로세스라는 말은 컴퓨터를 하면서 많이 접해봤을 것이다. 가령 프로그램이 먹통일 때 ctrl+alt+del을 눌러서 작업 관리자로 들어가 '프로세스' 탭에서 프로그램을 강제 종료할 때도 이를 볼 수 있다. 이와 연관지어 생각해보면 프로세스는 프로그램 실행의 단위라고 이해할 수도 있겠다. 그렇기 때문에 OS에서 관리하는 protection의 기본 단위이다. 또한 각 프로세스를 인식해야 하기에 프로세스는 PID라는 id로 인식된다. 이러한 프로세스에는 CPU 컨텍스트(레지스터 등 프로세스를 실행하고 있는 C.. 2022. 3. 24. 이전 1 2 3 4 다음 반응형