CS/운영체제6 운영체제 스터디 7주차 - Mutex, Semaphore, Monitor, Liveness 저번 주차까지 프로세스(혹은 스레드) 동기화의 해결 방법으로 소프트웨어적으로는 피터슨 알고리즘, 하드웨어적으로는 test-and-set 등으로 atomic variable을 만드는 방법을 보았다. https://kyumcoding.tistory.com/102 운영체제 스터디 6주차 - 동기화 Background 프로세스들이 concurrent하게 데이터에 접근하여 수정을 할 경우 데이터 정합성(Data Inconsistency - 어떤 데이터들의 값이 서로 일치함)가 깨질 수도 있다. 서로 협력하는 프로세스의 요청들을 kyumcoding.tistory.com 이번에 알아볼 방법은 조금 더 하이레벨적인 솔루션들에 대해서 알아볼 예정이다. Mutex는 가장 심플한 동기화 툴이고(2개), Semaphore는 .. 2024. 1. 31. 운영체제 스터디 6주차 - 동기화 Background 프로세스들이 concurrent하게 데이터에 접근하여 수정을 할 경우 데이터 정합성(Data Inconsistency - 어떤 데이터들의 값이 서로 일치함)가 깨질 수도 있다. 서로 협력하는 프로세스의 요청들을 순서대로 처리해주는 것을 보장해줘야지 데이터의 정합성을 보장하는 것이 가능. 데이터의 무결성(Integrity of Data)도 고려해줘야 하는데 아래와 같은 환경이기 때문 1) 동시(Concurrent) 처리를 하는 경우: Instruction stream 중간의 어느 포인트에서 인터럽트가 발생해 컨텍스트 스위칭이 발생할지 모르고, 멀티 코어 프로그래밍을 하는 경우 컨텍스트 스위칭되었다고 하더라도 다른 코어에서 해당 프로세스를 할당하여 처리할 수도 있음 2) 병렬(Parall.. 2024. 1. 26. 운영체제 스터디 5주차 - CPU 스케쥴링 Basic Concepts CPU 스케쥴링은 멀티 프로그래밍(여러 개의 프로세스를 동시에 돌려서 궁극적으로 CPU의 활용도를 높이는 것)의 가장 기초적인 부분. 대부분의 프로세스의 작업은 CPU burst보다는 I/O burst 시간이 더 길다. 이는 프로세스가 I/O 처리를 위해 대기 상태에 들어가는 상황이 많다는 뜻이다. 만약 멀티 프로그래밍을 하지 않는다면 이 대기 시간 동안 CPU가 놀게 되므로 CPU 사용률이 급격히 떨어진다. 멀티 프로그래밍은 이 유휴 시간 동안 컨텍스트 스위칭 등으로 CPU가 프로세스를 계속해서 돌리게 하여 CPU의 가동률을 올린다. CPU 스케쥴링이란 유휴 상태가 되었을 때 어떤 프로세스로 컨텍스트 스위칭할 것인지 선택하는 과정이라고 볼 수 있다. Preemptive vs .. 2024. 1. 24. 운영체제 스터디 4주차 - 스레드 4.1 Overview 지금까지는 프로세스가 하나의 스레드를 가지는 실행 프로그램으로 가정하고 이야기하였으나, 실제 컴퓨터에서는 하나의 프로세스 안에서 여러 개의 스레드를 컨트롤할 수 있음. 스레드는 경량화된 프로세스(Lightweight Process, LWP)이면서 CPU의 가장 기본적인 단위가 됨. 그렇게 되면 실질적으로 CPU 점유는 프로세스 아이디(pid)가 아닌 스레드 아이디(thread ID)를 기준으로 진행됨. 스레드는 하나의 프로세스 안에서 코드, 데이터, 파일은 공유하지만 / 레지스터셋, 스택, 프로그램 카운터를 별도로 가지게 됨. 즉, 멀티 스레드 프로세스는 아래와 같이 표현 가능할 수 있음. (여기에서 주목할 점은 어떤 것을 공유하고 어떤 것을 따로 처리하는 가. 예를 들어 하나의 .. 2024. 1. 24. 이전 1 2 다음