전체 글132 [OS] 조건 변수와 모니터 기존 동기화 도구의 문제점은 세마포어를 누락하거나, wait과 signal 순서를 햇갈린 경우 등 실수를 할 수 있다는 것이다. 이런 것들을 방지하기 위해서 사용이 간편한 동기화 도구를 모니터라고 한다.(입출력장치의 모니터가 아닌 동기화도구 모니터임) 모니터 공유 자원에 접근하기 위한 인터페이스를 분리해둔 방식 정해진 인터페이스를 통해서만 공유자원에 접근할 수 있도록 만들어둔다. 이를 통해 상호 배제가 보장된다. 실행 순서 제어를 위한 동기화를 위해 조건 변수를 사용한다. 조건 변수 현재 프로세스의 상태를 상황에 따라 변경할 수 있는 특별한 변수로 wait(), signal()연산이 가능한 변수다. wait() : 호출한 프로세스를 대기 상태로 전환 signal() : 호출한 프로세스를 깨움 조건변수를 .. 2023. 9. 9. [OS] 뮤텍스 락과 세마포어 동기화를 하기 위해서 지켜야 하는 3가지 원칙 상호 배제 : 한 프로세스가 임계 구역에 진입했다면 다른 프로세스는 대기해야함 진행 : 어떤 프로세스라도 임계 구역에 진입하지 않았다면 진입이 가능해야함 유한 대기 : 한 프로세스가 임계 구역에 진입하기 위해 대기하고 있다면 언젠가 진입이 가능해야 함 뮤텍스 락 : 상호 배제를 위한 동기화 도구 상호 배제를 위한 동기화 도구로 한번에 하나의 프로세스만 자원에 접근할 수 있도록 하는 락 메커니즘을 제공한다. 뮤텍스 락은 acquire 함수와 release 함수를 사용한다. 자물쇠 잠그기 역할을 하는 acquire 함수 락을 얻기 위해 호출되며 락을 얻을 때 까지 대기하거나 스핀한다. 락을 획득했다면 임계구역에 진입한다. 여기서 락을 얻을 때 까지, 반복적으로 .. 2023. 9. 9. [OS] 프로세스 동기화 실행에 문맥을 갖고있는 모든 것들은 동기화 대상이다. 동시다발적으로 실행되는 프로세스(& 스레드)는 실행 순서와 자원의 일관성을 고려해야한다. 운영체제가 제공하는 동기화의 의미 1. 실행 순서 제어 : 프로세스를 올바른 순서로 실행하기 2. 상호 배제 : 자원의 일관성을 위해서 동시에 접근해서는 안되는 자원에 하나만 접근하기 운영체제에서 이야기하는 동기화 라는 것은 동시다발적으로 실행되는 프로세스와 스레드가 고려해야하는 것 중 하나인데 크게 실행 순서제어, 상호 배제로 나눌 수 있다. 실행 순서 제어는 프로세스 혹은 스레드를 올바른 순서대로 실행하는 것을 의미하고 상호 배제는 동시에 접근하면 안되는 자원에 하나만 접근하는 것을 의미한다. 실행 순서 제어를 위한 동기화의 예 다음과 같이 동시에 실행되는 프.. 2023. 9. 9. [OS] 리눅스 스케줄링 리눅스 스케줄링 정책 실시간 정책 스케줄링(우선순위 높음) SCHED_FIFO : 선입 선처리 스케줄링 SCHED_RR : 라운드로빈 스케줄링 일반정책 스케줄링(우선순위 낮음) SCHED_OTHER / SCHED_NORMAL SCHED_BATCH SCHED_IDLE 리눅스의 CFS 스케줄러 비실시간 프로세스를 대상으로 하는 스케줄링 → linux kernel 2.6.23 버전부터 사용(그 전에는 O(1) 사용했음) vruntime(virtual runtime) 프로세스가 그동안 실행한 시간을 정규화한 정보 vruntime이 작은 프로세스를 다음 실행할 프로세스로 삼는다. vruntime 별 태스크를 고르는 과정에서 RBtree를 사용 타임 슬라이스 nice 값에 비례해서 가중치를 할당, 가중치를 바탕으로.. 2023. 9. 8. [OS] CPU 스케줄링 알고리즘 CPU 스케줄링 알고리즘 선입 선처리 스케줄링 최단 작업 우선 스케줄링 라운드 로빈 스케줄링 최소 잔여 시간 우선 스케줄링 우선순위 스케줄링 다단계 큐 스케줄링 다단계 피드백 큐 스케줄링 선입 선처리 스케줄링(FIFO) CPU를 먼저 요청한 프로세스부터 CPU 할당 준비큐에 삽입된 순서되로 처리되는 비선점형 스케줄링이다. 부작용으로 호위효과가 있다. 호위효과 : 다른 프로세스들이 하나의 긴 프로세스가 CPU를 양도하기를 기다리는 것 최단 작업 우선 스케줄링(SJF 스케줄링) 준비 큐 프로세스 중 CPU 이용시간이 짧은 프로세스부터 실행 호위효과를 방지할 수 있다. 라운드 로빈 스케줄링 선입 선처리 스케줄링에 타임 슬라이스가 지정되어있는 방식이다. 레디 큐에 삽입된 순서로 실행하되 타임 슬라이스만큼 실행되.. 2023. 9. 8. [OS] CPU 스케줄링 운영체제가 프로세스, 스레드에게 CPU 자원을 할당하는 방법에 대해서 알아본다. 스케줄링 모든 프로세스 및 스레드는 합리적으로 자원을 필요로 한다. 운영체제가 프로세스에 자원을 적절히 배분하는 방법을 스케줄링 이라고 한다. CPU 스케줄링 스케줄링 중 운영체제가 공정하고 합리적으로 CPU를 배분하는 방법 CPU 자원은 한정되어 있고 실행중인 프로세스는 여러 개 일때 프로세스는 우선순위에 따라 실행된다. 프로세스마다 우선순위가 다르다. 우선순위는 PCB에 명시된다. 우선순위는 명령어로 확인가능 $ ps -el : RI, NI가 낮을수록 높은 우선순위 $ top : PR, NI가 낮을수록 높은 우선순위 우선순위의 차이를 보이는 대표적인 프로세스 유형 CPU를 사용하는 구간을 CPU burst, 입출력 장치를.. 2023. 9. 8. 이전 1 ··· 8 9 10 11 12 13 14 ··· 22 다음